Merge pull request #600 from tr8dr/master
authorRodrigo Kumpera <kumpera@gmail.com>
Sun, 21 Jul 2013 19:21:29 +0000 (12:21 -0700)
committerRodrigo Kumpera <kumpera@gmail.com>
Sun, 21 Jul 2013 19:21:29 +0000 (12:21 -0700)
Fix for bug 9250 (critical bug for embedded mono)

1861 files changed:
.gitignore
acinclude.m4
autogen.sh
configure.in
data/reactive.pc.in
eglib/acinclude.m4
eglib/configure.ac
eglib/src/eglib-config.h.in
eglib/src/gfile-posix.c
eglib/src/gmodule-unix.c
eglib/src/goutput.c
external/ikvm
ikvm-native/os.c
libgc/acinclude.m4
libgc/dyn_load.c
libgc/include/private/gc_locks.h
libgc/include/private/gcconfig.h
libgc/include/private/pthread_stop_world.h
libgc/misc.c
libgc/pthread_stop_world.c
libgc/pthread_support.c
man/mono.1
mcs/build/library.make
mcs/build/profiles/basic.make
mcs/build/rules.make
mcs/class/Accessibility/Accessibility-net_2_0.csproj
mcs/class/Accessibility/Accessibility-net_4_0.csproj
mcs/class/Accessibility/Accessibility-net_4_5.csproj
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-net_2_0.csproj
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-net_4_0.csproj
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-net_4_5.csproj
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-tests-net_2_0.csproj
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-tests-net_4_0.csproj
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-tests-net_4_5.csproj
mcs/class/Compat.ICSharpCode.SharpZipLib/Compat.ICSharpCode.SharpZipLib-net_2_0.csproj
mcs/class/Cscompmgd/Cscompmgd-net_2_0.csproj
mcs/class/Cscompmgd/Cscompmgd-net_4_0.csproj
mcs/class/Cscompmgd/Cscompmgd-net_4_5.csproj
mcs/class/Cscompmgd/Cscompmgd-tests-net_2_0.csproj
mcs/class/Cscompmgd/Cscompmgd-tests-net_4_0.csproj
mcs/class/Cscompmgd/Cscompmgd-tests-net_4_5.csproj
mcs/class/CustomMarshalers/CustomMarshalers-net_2_0.csproj
mcs/class/CustomMarshalers/CustomMarshalers-net_4_0.csproj
mcs/class/CustomMarshalers/CustomMarshalers-net_4_5.csproj
mcs/class/EntityFramework.SqlServer/EntityFramework.SqlServer-net_4_5.csproj
mcs/class/EntityFramework/EntityFramework-net_4_5.csproj
mcs/class/Facades/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Collections.Concurrent/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Collections.Concurrent/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Collections.Concurrent/System.Collections.Concurrent.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Collections.Concurrent/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Collections/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Collections/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Collections/System.Collections.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Collections/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.Annotations/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.Annotations/Makefile [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.Annotations/System.ComponentModel.Annotations.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.Annotations/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.EventBasedAsync/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.EventBasedAsync/Makefile [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.EventBasedAsync/System.ComponentModel.EventBasedAsync.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.EventBasedAsync/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel/Makefile [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel/System.ComponentModel.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Contracts/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Contracts/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Contracts/System.Diagnostics.Contracts.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Contracts/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Debug/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Debug/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Debug/System.Diagnostics.Debug.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Debug/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Tools/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Tools/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Tools/System.Diagnostics.Tools.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Tools/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Dynamic.Runtime/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Dynamic.Runtime/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Dynamic.Runtime/System.Dynamic.Runtime.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Dynamic.Runtime/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Globalization/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Globalization/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Globalization/System.Globalization.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Globalization/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.IO/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.IO/Makefile [new file with mode: 0644]
mcs/class/Facades/System.IO/System.IO.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.IO/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq.Expressions/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq.Expressions/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Linq.Expressions/System.Linq.Expressions.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Linq.Expressions/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq.Parallel/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq.Parallel/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Linq.Parallel/System.Linq.Parallel.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Linq.Parallel/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq.Queryable/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq.Queryable/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Linq.Queryable/System.Linq.Queryable.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Linq.Queryable/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Linq/System.Linq.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Linq/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Net.NetworkInformation/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Net.NetworkInformation/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Net.NetworkInformation/System.Net.NetworkInformation.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Net.NetworkInformation/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Net.Primitives/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Net.Primitives/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Net.Primitives/System.Net.Primitives.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Net.Primitives/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Net.Requests/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Net.Requests/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Net.Requests/System.Net.Requests.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Net.Requests/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.ObjectModel/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.ObjectModel/Makefile [new file with mode: 0644]
mcs/class/Facades/System.ObjectModel/System.ObjectModel.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.ObjectModel/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Extensions/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Extensions/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Extensions/System.Reflection.Extensions.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Extensions/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Primitives/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Primitives/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Primitives/System.Reflection.Primitives.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Primitives/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Reflection/System.Reflection.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Reflection/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Resources.ResourceManager/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Resources.ResourceManager/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Resources.ResourceManager/System.Resources.ResourceManager.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Resources.ResourceManager/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Extensions/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Extensions/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Extensions/System.Runtime.Extensions.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Extensions/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.InteropServices/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.InteropServices/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Runtime.InteropServices/System.Runtime.InteropServices.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Numerics/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Numerics/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Numerics/System.Runtime.Numerics.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Numerics/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Json/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Json/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Json/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Primitives/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Primitives/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Primitives/System.Runtime.Serialization.Primitives.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Primitives/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Xml/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Xml/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Xml/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Runtime/System.Runtime.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Runtime/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Security.Principal/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Security.Principal/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Security.Principal/System.Security.Principal.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Security.Principal/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Http/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Http/Makefile [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Http/System.ServiceModel.Http.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Http/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Primitives/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Primitives/Makefile [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Primitives/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding.Extensions/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding.Extensions/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding.Extensions/System.Text.Encoding.Extensions.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding.Extensions/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding/System.Text.Encoding.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Text.RegularExpressions/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Text.RegularExpressions/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Text.RegularExpressions/System.Text.RegularExpressions.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Text.RegularExpressions/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks.Parallel/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks.Parallel/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks.Parallel/System.Threading.Tasks.Parallel.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks.Parallel/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks/System.Threading.Tasks.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Threading/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Threading/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Threading/System.Threading.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Threading/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Xml.ReaderWriter/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Xml.ReaderWriter/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Xml.ReaderWriter/System.Xml.ReaderWriter.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Xml.ReaderWriter/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Xml.XDocument/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Xml.XDocument/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Xml.XDocument/System.Xml.XDocument.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Xml.XDocument/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Xml.XmlSerializer/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Xml.XmlSerializer/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Xml.XmlSerializer/System.Xml.XmlSerializer.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Xml.XmlSerializer/TypeForwarders.cs [new file with mode: 0644]
mcs/class/I18N/CJK/I18N.CJK-net_2_0.csproj
mcs/class/I18N/CJK/I18N.CJK-net_4_0.csproj
mcs/class/I18N/CJK/I18N.CJK-net_4_5.csproj
mcs/class/I18N/CJK/I18N.CJK-tests-net_2_0.csproj
mcs/class/I18N/CJK/I18N.CJK-tests-net_4_0.csproj
mcs/class/I18N/CJK/I18N.CJK-tests-net_4_5.csproj
mcs/class/I18N/Common/I18N-net_2_0.csproj
mcs/class/I18N/Common/I18N-net_4_0.csproj
mcs/class/I18N/Common/I18N-net_4_5.csproj
mcs/class/I18N/MidEast/I18N.MidEast-net_2_0.csproj
mcs/class/I18N/MidEast/I18N.MidEast-net_4_0.csproj
mcs/class/I18N/MidEast/I18N.MidEast-net_4_5.csproj
mcs/class/I18N/MidEast/I18N.MidEast-tests-net_2_0.csproj
mcs/class/I18N/MidEast/I18N.MidEast-tests-net_4_0.csproj
mcs/class/I18N/MidEast/I18N.MidEast-tests-net_4_5.csproj
mcs/class/I18N/Other/I18N.Other-net_2_0.csproj
mcs/class/I18N/Other/I18N.Other-net_4_0.csproj
mcs/class/I18N/Other/I18N.Other-net_4_5.csproj
mcs/class/I18N/Rare/I18N.Rare-net_2_0.csproj
mcs/class/I18N/Rare/I18N.Rare-net_4_0.csproj
mcs/class/I18N/Rare/I18N.Rare-net_4_5.csproj
mcs/class/I18N/West/I18N.West-net_2_0.csproj
mcs/class/I18N/West/I18N.West-net_4_0.csproj
mcs/class/I18N/West/I18N.West-net_4_5.csproj
mcs/class/I18N/West/I18N.West-tests-net_2_0.csproj
mcs/class/I18N/West/I18N.West-tests-net_4_0.csproj
mcs/class/I18N/West/I18N.West-tests-net_4_5.csproj
mcs/class/IBM.Data.DB2/IBM.Data.DB2-net_2_0.csproj
mcs/class/IBM.Data.DB2/IBM.Data.DB2-net_4_0.csproj
mcs/class/IBM.Data.DB2/IBM.Data.DB2-net_4_5.csproj
mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_2_0.csproj
mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_0.csproj
mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_5.csproj
mcs/class/Makefile
mcs/class/Managed.Windows.Forms/System.Windows.Forms-net_2_0.csproj
mcs/class/Managed.Windows.Forms/System.Windows.Forms-net_4_0.csproj
mcs/class/Managed.Windows.Forms/System.Windows.Forms-net_4_5.csproj
mcs/class/Managed.Windows.Forms/System.Windows.Forms-tests-net_2_0.csproj
mcs/class/Managed.Windows.Forms/System.Windows.Forms-tests-net_4_0.csproj
mcs/class/Managed.Windows.Forms/System.Windows.Forms-tests-net_4_5.csproj
mcs/class/Managed.Windows.Forms/System.Windows.Forms/UpDownBase.cs
mcs/class/Managed.Windows.Forms/build-csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildItem.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildItemGroup.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTask.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTaskItem.cs [new file with mode: 0644]
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTaskItemGroup.cs [new file with mode: 0644]
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTaskPropertyGroup.cs [new file with mode: 0644]
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionParser.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/IBuildTask.cs [new file with mode: 0644]
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Target.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/TargetBatchingImpl.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/TaskBatchingImpl.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_2_0.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_3_5.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_0.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_5.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-tests-net_2_0.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-tests-net_3_5.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-tests-net_4_0.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-tests-net_4_5.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine.dll.sources
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/BuildItemTest.cs
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/BuildPropertyGroupTest.cs
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/BuildPropertyTest.cs
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/ConsoleLoggerTest.cs
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/EngineTest.cs
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/ProjectTest.cs
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/TargetTest.cs
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/UsingTaskTest.cs
mcs/class/Microsoft.Build.Engine/Test/various/Conditions.cs
mcs/class/Microsoft.Build.Engine/Test/various/EvaluationOrder.cs
mcs/class/Microsoft.Build.Engine/Test/various/Items.cs
mcs/class/Microsoft.Build.Engine/Test/various/Properties.cs
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_2_0.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_3_5.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_0.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-tests-net_2_0.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-tests-net_3_5.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-tests-net_4_0.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-tests-net_4_5.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework.dll.sources
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework/ICancelableTask.cs [new file with mode: 0644]
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_2_0.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_3_5.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_4_0.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_4_5.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-tests-net_2_0.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-tests-net_3_5.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-tests-net_4_0.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-tests-net_4_5.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/GetReferenceAssemblyPaths.cs
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/ResolveAssemblyReference.cs
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_2_0.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_3_5.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_0.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_5.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-tests-net_2_0.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-tests-net_3_5.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-tests-net_4_0.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-tests-net_4_5.csproj
mcs/class/Microsoft.Build/Microsoft.Build-net_4_0.csproj
mcs/class/Microsoft.Build/Microsoft.Build-net_4_5.csproj
mcs/class/Microsoft.Build/Microsoft.Build-tests-net_4_0.csproj
mcs/class/Microsoft.Build/Microsoft.Build-tests-net_4_5.csproj
mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/Project.cs
mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/ProjectCollection.cs
mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/ProjectItem.cs
mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/ProjectProperty.cs
mcs/class/Microsoft.CSharp/Microsoft.CSharp-net_4_0.csproj
mcs/class/Microsoft.CSharp/Microsoft.CSharp-net_4_5.csproj
mcs/class/Microsoft.VisualC/Microsoft.VisualC-net_2_0.csproj
mcs/class/Microsoft.VisualC/Microsoft.VisualC-net_4_0.csproj
mcs/class/Microsoft.VisualC/Microsoft.VisualC-net_4_5.csproj
mcs/class/Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_0.csproj
mcs/class/Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj
mcs/class/Mono.C5/Mono.C5-net_2_0.csproj
mcs/class/Mono.C5/Mono.C5-net_4_0.csproj
mcs/class/Mono.C5/Mono.C5-net_4_5.csproj
mcs/class/Mono.C5/Mono.C5-tests-net_2_0.csproj
mcs/class/Mono.C5/Mono.C5-tests-net_4_0.csproj
mcs/class/Mono.C5/Mono.C5-tests-net_4_5.csproj
mcs/class/Mono.CSharp/Mono.CSharp-net_2_0.csproj
mcs/class/Mono.CSharp/Mono.CSharp-net_4_0.csproj
mcs/class/Mono.CSharp/Mono.CSharp-net_4_5.csproj
mcs/class/Mono.CSharp/Mono.CSharp-tests-net_2_0.csproj
mcs/class/Mono.CSharp/Mono.CSharp-tests-net_4_0.csproj
mcs/class/Mono.CSharp/Mono.CSharp-tests-net_4_5.csproj
mcs/class/Mono.CSharp/Mono.CSharp.dll.sources
mcs/class/Mono.CSharp/Test/Evaluator/ExpressionsTest.cs
mcs/class/Mono.Cairo/Mono.Cairo-net_2_0.csproj
mcs/class/Mono.Cairo/Mono.Cairo-net_4_0.csproj
mcs/class/Mono.Cairo/Mono.Cairo-net_4_5.csproj
mcs/class/Mono.Cairo/Mono.Cairo.dll.sources
mcs/class/Mono.Cairo/Mono.Cairo/CairoDebug.cs [new file with mode: 0644]
mcs/class/Mono.Cairo/Mono.Cairo/Color.cs [new file with mode: 0644]
mcs/class/Mono.Cairo/Mono.Cairo/Context.cs
mcs/class/Mono.Cairo/Mono.Cairo/DirectFBSurface.cs
mcs/class/Mono.Cairo/Mono.Cairo/Distance.cs [new file with mode: 0644]
mcs/class/Mono.Cairo/Mono.Cairo/FontFace.cs
mcs/class/Mono.Cairo/Mono.Cairo/FontOptions.cs
mcs/class/Mono.Cairo/Mono.Cairo/GlitzSurface.cs
mcs/class/Mono.Cairo/Mono.Cairo/Gradient.cs
mcs/class/Mono.Cairo/Mono.Cairo/ImageSurface.cs
mcs/class/Mono.Cairo/Mono.Cairo/LinearGradient.cs
mcs/class/Mono.Cairo/Mono.Cairo/Matrix.cs
mcs/class/Mono.Cairo/Mono.Cairo/NativeMethods.cs
mcs/class/Mono.Cairo/Mono.Cairo/PSSurface.cs
mcs/class/Mono.Cairo/Mono.Cairo/Path.cs
mcs/class/Mono.Cairo/Mono.Cairo/Pattern.cs
mcs/class/Mono.Cairo/Mono.Cairo/PdfSurface.cs
mcs/class/Mono.Cairo/Mono.Cairo/Point.cs [new file with mode: 0644]
mcs/class/Mono.Cairo/Mono.Cairo/PointD.cs [new file with mode: 0644]
mcs/class/Mono.Cairo/Mono.Cairo/RadialGradient.cs
mcs/class/Mono.Cairo/Mono.Cairo/Region.cs [new file with mode: 0644]
mcs/class/Mono.Cairo/Mono.Cairo/ScaledFont.cs
mcs/class/Mono.Cairo/Mono.Cairo/SolidPattern.cs
mcs/class/Mono.Cairo/Mono.Cairo/Surface.cs
mcs/class/Mono.Cairo/Mono.Cairo/SurfacePattern.cs
mcs/class/Mono.Cairo/Mono.Cairo/SvgSurface.cs
mcs/class/Mono.Cairo/Mono.Cairo/Win32Surface.cs
mcs/class/Mono.Cairo/Mono.Cairo/XcbSurface.cs
mcs/class/Mono.Cairo/Mono.Cairo/XlibSurface.cs
mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_2_0.csproj
mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_4_0.csproj
mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_4_5.csproj
mcs/class/Mono.Cecil/Mono.Cecil-net_2_0.csproj
mcs/class/Mono.Cecil/Mono.Cecil-net_4_0.csproj
mcs/class/Mono.Cecil/Mono.Cecil-net_4_5.csproj
mcs/class/Mono.CodeContracts/Mono.CodeContracts-net_4_5.csproj
mcs/class/Mono.CodeContracts/Mono.CodeContracts-tests-net_4_5.csproj
mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_2_0.csproj
mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_4_0.csproj
mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_4_5.csproj
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-net_2_0.csproj
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_0.csproj
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_5.csproj
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-tests-net_2_0.csproj
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-tests-net_4_0.csproj
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-tests-net_4_5.csproj
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteDataReader.cs
mcs/class/Mono.Data.Tds/Mono.Data.Tds-net_2_0.csproj
mcs/class/Mono.Data.Tds/Mono.Data.Tds-net_4_0.csproj
mcs/class/Mono.Data.Tds/Mono.Data.Tds-net_4_5.csproj
mcs/class/Mono.Data.Tds/Mono.Data.Tds-tests-net_2_0.csproj
mcs/class/Mono.Data.Tds/Mono.Data.Tds-tests-net_4_0.csproj
mcs/class/Mono.Data.Tds/Mono.Data.Tds-tests-net_4_5.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-net_2_0.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-net_4_0.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-net_4_5.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-tests-net_2_0.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-tests-net_4_0.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-tests-net_4_5.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/CustomAttributeDataMirror.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodMirror.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs
mcs/class/Mono.Debugger.Soft/Test/dtest-app.cs
mcs/class/Mono.Debugger.Soft/Test/dtest.cs
mcs/class/Mono.Http/Mono.Http-net_2_0.csproj
mcs/class/Mono.Http/Mono.Http-net_4_0.csproj
mcs/class/Mono.Http/Mono.Http-net_4_5.csproj
mcs/class/Mono.Management/Mono.Management-net_2_0.csproj
mcs/class/Mono.Management/Mono.Management-net_4_0.csproj
mcs/class/Mono.Management/Mono.Management-net_4_5.csproj
mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-net_2_0.csproj
mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-net_4_0.csproj
mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-net_4_5.csproj
mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-tests-net_2_0.csproj
mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-tests-net_4_0.csproj
mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-tests-net_4_5.csproj
mcs/class/Mono.Messaging/Mono.Messaging-net_2_0.csproj
mcs/class/Mono.Messaging/Mono.Messaging-net_4_0.csproj
mcs/class/Mono.Messaging/Mono.Messaging-net_4_5.csproj
mcs/class/Mono.Messaging/Mono.Messaging-tests-net_2_0.csproj
mcs/class/Mono.Messaging/Mono.Messaging-tests-net_4_0.csproj
mcs/class/Mono.Messaging/Mono.Messaging-tests-net_4_5.csproj
mcs/class/Mono.Options/Mono.Options-net_2_0.csproj
mcs/class/Mono.Options/Mono.Options-net_4_0.csproj
mcs/class/Mono.Options/Mono.Options-net_4_5.csproj
mcs/class/Mono.Options/Mono.Options-tests-net_2_0.csproj
mcs/class/Mono.Options/Mono.Options-tests-net_4_0.csproj
mcs/class/Mono.Options/Mono.Options-tests-net_4_5.csproj
mcs/class/Mono.Parallel/Mono.Parallel-net_4_0.csproj
mcs/class/Mono.Parallel/Mono.Parallel-net_4_5.csproj
mcs/class/Mono.Parallel/Mono.Parallel-tests-net_4_0.csproj
mcs/class/Mono.Parallel/Mono.Parallel-tests-net_4_5.csproj
mcs/class/Mono.Posix/Mono.Posix-build.csproj
mcs/class/Mono.Posix/Mono.Posix-net_2_0.csproj
mcs/class/Mono.Posix/Mono.Posix-net_4_0.csproj
mcs/class/Mono.Posix/Mono.Posix-net_4_5.csproj
mcs/class/Mono.Posix/Mono.Posix-tests-net_2_0.csproj
mcs/class/Mono.Posix/Mono.Posix-tests-net_4_0.csproj
mcs/class/Mono.Posix/Mono.Posix-tests-net_4_5.csproj
mcs/class/Mono.Posix/Mono.Unix.Native/NativeConvert.cs
mcs/class/Mono.Posix/Mono.Unix.Native/NativeConvert.generated.cs
mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs
mcs/class/Mono.Posix/Mono.Unix/Catalog.cs
mcs/class/Mono.Security.Win32/Mono.Security.Win32-net_2_0.csproj
mcs/class/Mono.Security.Win32/Mono.Security.Win32-net_4_0.csproj
mcs/class/Mono.Security.Win32/Mono.Security.Win32-net_4_5.csproj
mcs/class/Mono.Security/Mono.Math/BigInteger.cs
mcs/class/Mono.Security/Mono.Security-build.csproj
mcs/class/Mono.Security/Mono.Security-net_2_0.csproj
mcs/class/Mono.Security/Mono.Security-net_4_0.csproj
mcs/class/Mono.Security/Mono.Security-net_4_5.csproj
mcs/class/Mono.Security/Mono.Security-tests-net_2_0.csproj
mcs/class/Mono.Security/Mono.Security-tests-net_4_0.csproj
mcs/class/Mono.Security/Mono.Security-tests-net_4_5.csproj
mcs/class/Mono.Security/Mono.Security.Authenticode/AuthenticodeDeformatter.cs
mcs/class/Mono.Security/Mono.Security.Authenticode/PrivateKey.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/ARC4Managed.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/CryptoConvert.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/KeyPairPersistence.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/MD2.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/MD2Managed.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/MD4.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/MD4Managed.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/PKCS1.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/PKCS8.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/RC4.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/SymmetricTransform.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/TlsHMAC.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/MessageBase.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/NtlmFlags.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type1Message.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type2Message.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type3Message.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/CipherAlgorithmType.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/CipherSuite.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HashAlgorithmType.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureDeformatter.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureFormatter.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SecurityCompressionType.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SecurityProtocolType.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslCipherSuite.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslHandshakeHash.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs
mcs/class/Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs
mcs/class/Mono.Security/Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs
mcs/class/Mono.Security/Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs
mcs/class/Mono.Security/Mono.Security.X509.Extensions/SubjectAltNameExtension.cs
mcs/class/Mono.Security/Mono.Security.X509/ITrustAnchors.cs
mcs/class/Mono.Security/Mono.Security.X509/PKCS12.cs
mcs/class/Mono.Security/Mono.Security.X509/X509CRL.cs
mcs/class/Mono.Security/Mono.Security.X509/X509Certificate.cs
mcs/class/Mono.Security/Mono.Security/StrongName.cs
mcs/class/Mono.Security/Test/Mono.Security.Cryptography/ARC4ManagedTest.cs
mcs/class/Mono.Security/Test/Mono.Security.Cryptography/MD2ManagedTest.cs
mcs/class/Mono.Security/Test/Mono.Security.Cryptography/MD2Test.cs
mcs/class/Mono.Security/Test/Mono.Security.Cryptography/MD4ManagedTest.cs
mcs/class/Mono.Security/Test/Mono.Security.Cryptography/MD4Test.cs
mcs/class/Mono.Security/Test/Mono.Security.X509/X509CertificateTest.cs
mcs/class/Mono.Simd/Mono.Simd-net_2_0.csproj
mcs/class/Mono.Simd/Mono.Simd-net_4_0.csproj
mcs/class/Mono.Simd/Mono.Simd-net_4_5.csproj
mcs/class/Mono.Tasklets/Mono.Tasklets-net_2_0.csproj
mcs/class/Mono.Tasklets/Mono.Tasklets-net_4_0.csproj
mcs/class/Mono.Tasklets/Mono.Tasklets-net_4_5.csproj
mcs/class/Mono.Web/Mono.Web-net_2_0.csproj
mcs/class/Mono.Web/Mono.Web-net_4_0.csproj
mcs/class/Mono.Web/Mono.Web-net_4_5.csproj
mcs/class/Mono.WebBrowser/Mono.WebBrowser-net_2_0.csproj
mcs/class/Mono.WebBrowser/Mono.WebBrowser-net_4_0.csproj
mcs/class/Mono.WebBrowser/Mono.WebBrowser-net_4_5.csproj
mcs/class/Moonlight.Build.Tasks/Moonlight.Build.Tasks-net_2_0.csproj
mcs/class/Moonlight.Build.Tasks/Moonlight.Build.Tasks-net_4_0.csproj
mcs/class/Moonlight.Build.Tasks/Moonlight.Build.Tasks-net_4_5.csproj
mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-net_2_0.csproj
mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-net_4_0.csproj
mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-net_4_5.csproj
mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-tests-net_2_0.csproj
mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-tests-net_4_0.csproj
mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-tests-net_4_5.csproj
mcs/class/Npgsql/Npgsql-net_2_0.csproj
mcs/class/Npgsql/Npgsql-net_4_0.csproj
mcs/class/Npgsql/Npgsql-net_4_5.csproj
mcs/class/Npgsql/Npgsql-tests-net_2_0.csproj
mcs/class/Npgsql/Npgsql-tests-net_4_0.csproj
mcs/class/Npgsql/Npgsql-tests-net_4_5.csproj
mcs/class/OpenSystem.C/OpenSystem.C-net_2_0.csproj
mcs/class/OpenSystem.C/OpenSystem.C-net_4_0.csproj
mcs/class/OpenSystem.C/OpenSystem.C-net_4_5.csproj
mcs/class/PEAPI/PEAPI-net_2_0.csproj
mcs/class/PEAPI/PEAPI-net_4_0.csproj
mcs/class/PEAPI/PEAPI-net_4_5.csproj
mcs/class/RabbitMQ.Client/src/client/RabbitMQ.Client-net_2_0.csproj
mcs/class/RabbitMQ.Client/src/client/RabbitMQ.Client-net_4_0.csproj
mcs/class/RabbitMQ.Client/src/client/RabbitMQ.Client-net_4_5.csproj
mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/GenerationServices.cs
mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/System/ComponentModel/Composition/MetadataViewGenerator.cs
mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/System/ComponentModel/Composition/MetadataViewProvider.cs
mcs/class/System.ComponentModel.Composition/System.ComponentModel.Composition-net_4_0.csproj
mcs/class/System.ComponentModel.Composition/System.ComponentModel.Composition-net_4_5.csproj
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_2_0.csproj
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_0.csproj
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-tests-net_2_0.csproj
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-tests-net_4_0.csproj
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-tests-net_4_5.csproj
mcs/class/System.Configuration.Install/System.Configuration.Install-net_2_0.csproj
mcs/class/System.Configuration.Install/System.Configuration.Install-net_4_0.csproj
mcs/class/System.Configuration.Install/System.Configuration.Install-net_4_5.csproj
mcs/class/System.Configuration/System.Configuration-net_2_0.csproj
mcs/class/System.Configuration/System.Configuration-net_4_0.csproj
mcs/class/System.Configuration/System.Configuration-net_4_5.csproj
mcs/class/System.Configuration/System.Configuration-tests-net_2_0.csproj
mcs/class/System.Configuration/System.Configuration-tests-net_4_0.csproj
mcs/class/System.Configuration/System.Configuration-tests-net_4_5.csproj
mcs/class/System.Configuration/System.Configuration/AppSettingsSection.cs
mcs/class/System.Configuration/System.Configuration/CallbackValidator.cs
mcs/class/System.Configuration/System.Configuration/CallbackValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/ClientConfigurationSystem.cs
mcs/class/System.Configuration/System.Configuration/CommaDelimitedStringCollection.cs
mcs/class/System.Configuration/System.Configuration/CommaDelimitedStringCollectionConverter.cs
mcs/class/System.Configuration/System.Configuration/ConfigInfo.cs
mcs/class/System.Configuration/System.Configuration/ConfigXmlTextReader.cs
mcs/class/System.Configuration/System.Configuration/Configuration.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationAllowDefinition.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationAllowExeDefinition.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationCollectionAttribute.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationConverterBase.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationElement.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationElementCollection.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationElementCollectionType.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationElementProperty.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationErrorsException.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationFileMap.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationLocation.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationLocationCollection.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationLockCollection.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationManager.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationPermission.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationPermissionAttribute.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationProperty.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationPropertyAttribute.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationPropertyCollection.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationPropertyOptions.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationRemoveElement.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationSaveEventArgs.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationSaveEventHandler.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationSaveMode.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationSection.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationSectionCollection.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationSectionGroup.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationSectionGroupCollection.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationUserLevel.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationValidatorBase.cs
mcs/class/System.Configuration/System.Configuration/ConnectionStringSettings.cs
mcs/class/System.Configuration/System.Configuration/ConnectionStringSettingsCollection.cs
mcs/class/System.Configuration/System.Configuration/ConnectionStringsSection.cs
mcs/class/System.Configuration/System.Configuration/ContextInformation.cs
mcs/class/System.Configuration/System.Configuration/DefaultSection.cs
mcs/class/System.Configuration/System.Configuration/DefaultValidator.cs
mcs/class/System.Configuration/System.Configuration/DpapiProtectedConfigurationProvider.cs
mcs/class/System.Configuration/System.Configuration/ElementInformation.cs
mcs/class/System.Configuration/System.Configuration/ExeConfigurationFileMap.cs
mcs/class/System.Configuration/System.Configuration/ExeContext.cs
mcs/class/System.Configuration/System.Configuration/GenericEnumConverter.cs
mcs/class/System.Configuration/System.Configuration/IgnoreSection.cs
mcs/class/System.Configuration/System.Configuration/InfiniteIntConverter.cs
mcs/class/System.Configuration/System.Configuration/InfiniteTimeSpanConverter.cs
mcs/class/System.Configuration/System.Configuration/IntegerValidator.cs
mcs/class/System.Configuration/System.Configuration/IntegerValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/InternalConfigurationFactory.cs
mcs/class/System.Configuration/System.Configuration/InternalConfigurationHost.cs
mcs/class/System.Configuration/System.Configuration/InternalConfigurationRoot.cs
mcs/class/System.Configuration/System.Configuration/KeyValueConfigurationCollection.cs
mcs/class/System.Configuration/System.Configuration/KeyValueConfigurationElement.cs
mcs/class/System.Configuration/System.Configuration/KeyValueInternalCollection.cs
mcs/class/System.Configuration/System.Configuration/LongValidator.cs
mcs/class/System.Configuration/System.Configuration/LongValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/NameValueConfigurationCollection.cs
mcs/class/System.Configuration/System.Configuration/NameValueConfigurationElement.cs
mcs/class/System.Configuration/System.Configuration/PositiveTimeSpanValidator.cs
mcs/class/System.Configuration/System.Configuration/PositiveTimeSpanValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/PropertyInformation.cs
mcs/class/System.Configuration/System.Configuration/PropertyInformationCollection.cs
mcs/class/System.Configuration/System.Configuration/PropertyValueOrigin.cs
mcs/class/System.Configuration/System.Configuration/ProtectedConfiguration.cs
mcs/class/System.Configuration/System.Configuration/ProtectedConfigurationProvider.cs
mcs/class/System.Configuration/System.Configuration/ProtectedConfigurationProviderCollection.cs
mcs/class/System.Configuration/System.Configuration/ProtectedConfigurationSection.cs
mcs/class/System.Configuration/System.Configuration/ProtectedProviderSettings.cs
mcs/class/System.Configuration/System.Configuration/ProviderSettings.cs
mcs/class/System.Configuration/System.Configuration/ProviderSettingsCollection.cs
mcs/class/System.Configuration/System.Configuration/RegexStringValidator.cs
mcs/class/System.Configuration/System.Configuration/RegexStringValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/RsaProtectedConfigurationProvider.cs
mcs/class/System.Configuration/System.Configuration/SectionGroupInfo.cs
mcs/class/System.Configuration/System.Configuration/SectionInfo.cs
mcs/class/System.Configuration/System.Configuration/SectionInformation.cs
mcs/class/System.Configuration/System.Configuration/StringValidator.cs
mcs/class/System.Configuration/System.Configuration/StringValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/SubclassTypeValidator.cs
mcs/class/System.Configuration/System.Configuration/SubclassTypeValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/TimeSpanMinutesConverter.cs
mcs/class/System.Configuration/System.Configuration/TimeSpanMinutesOrInfiniteConverter.cs
mcs/class/System.Configuration/System.Configuration/TimeSpanSecondsConverter.cs
mcs/class/System.Configuration/System.Configuration/TimeSpanSecondsOrInfiniteConverter.cs
mcs/class/System.Configuration/System.Configuration/TimeSpanValidator.cs
mcs/class/System.Configuration/System.Configuration/TimeSpanValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/TypeNameConverter.cs
mcs/class/System.Configuration/System.Configuration/ValidatorCallback.cs
mcs/class/System.Configuration/System.Configuration/WhiteSpaceTrimStringConverter.cs
mcs/class/System.Configuration/System.Configuration_test_net_2_0.dll.config [new symlink]
mcs/class/System.Configuration/System.Configuration_test_net_4_0.dll.config [new symlink]
mcs/class/System.Configuration/System.Configuration_test_net_4_5.dll.config [new symlink]
mcs/class/System.Configuration/Test/App.config [new file with mode: 0644]
mcs/class/System.Configuration/Test/System.Configuration/ConfigurationManagerTest.cs
mcs/class/System.Core/System.Core-build.csproj
mcs/class/System.Core/System.Core-net_2_0.csproj
mcs/class/System.Core/System.Core-net_4_0.csproj
mcs/class/System.Core/System.Core-net_4_5.csproj
mcs/class/System.Core/System.Core-tests-net_2_0.csproj
mcs/class/System.Core/System.Core-tests-net_4_0.csproj
mcs/class/System.Core/System.Core-tests-net_4_5.csproj
mcs/class/System.Core/System.Linq/Enumerable.cs
mcs/class/System.Core/System/TimeZoneInfo.Android.cs
mcs/class/System.Core/System/TimeZoneInfo.MonoTouch.cs
mcs/class/System.Core/System/TimeZoneInfo.cs
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_Call.cs
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_Coalesce.cs
mcs/class/System.Core/Test/System.Linq/EnumerableMoreTest.cs
mcs/class/System.Core/basic_System.Core.dll.sources
mcs/class/System.Core/monodroid_System.Core.dll.sources
mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-net_2_0.csproj
mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-net_4_0.csproj
mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-net_4_5.csproj
mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-tests-net_2_0.csproj
mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-tests-net_4_0.csproj
mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-tests-net_4_5.csproj
mcs/class/System.Data.Linq/System.Data.Linq-net_2_0.csproj
mcs/class/System.Data.Linq/System.Data.Linq-net_4_0.csproj
mcs/class/System.Data.Linq/System.Data.Linq-net_4_5.csproj
mcs/class/System.Data.Linq/System.Data.Linq-tests-net_2_0.csproj
mcs/class/System.Data.Linq/System.Data.Linq-tests-net_4_0.csproj
mcs/class/System.Data.Linq/System.Data.Linq-tests-net_4_5.csproj
mcs/class/System.Data.OracleClient/System.Data.OracleClient-net_2_0.csproj
mcs/class/System.Data.OracleClient/System.Data.OracleClient-net_4_0.csproj
mcs/class/System.Data.OracleClient/System.Data.OracleClient-net_4_5.csproj
mcs/class/System.Data.OracleClient/System.Data.OracleClient-tests-net_2_0.csproj
mcs/class/System.Data.OracleClient/System.Data.OracleClient-tests-net_4_0.csproj
mcs/class/System.Data.OracleClient/System.Data.OracleClient-tests-net_4_5.csproj
mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci/OciCalls.cs
mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleParameter.cs
mcs/class/System.Data.Services.Client/System.Data.Services.Client-net_2_0.csproj
mcs/class/System.Data.Services.Client/System.Data.Services.Client-net_4_0.csproj
mcs/class/System.Data.Services.Client/System.Data.Services.Client-net_4_5.csproj
mcs/class/System.Data.Services/System.Data.Services-net_2_0.csproj
mcs/class/System.Data.Services/System.Data.Services-net_4_0.csproj
mcs/class/System.Data.Services/System.Data.Services-net_4_5.csproj
mcs/class/System.Data.Services/System.Data.Services-tests-net_2_0.csproj
mcs/class/System.Data.Services/System.Data.Services-tests-net_4_0.csproj
mcs/class/System.Data.Services/System.Data.Services-tests-net_4_5.csproj
mcs/class/System.Data/System.Data-net_2_0.csproj
mcs/class/System.Data/System.Data-net_4_0.csproj
mcs/class/System.Data/System.Data-net_4_5.csproj
mcs/class/System.Data/System.Data-tests-net_2_0.csproj
mcs/class/System.Data/System.Data-tests-net_4_0.csproj
mcs/class/System.Data/System.Data-tests-net_4_5.csproj
mcs/class/System.Data/System.Data.Common/DbCommand.cs
mcs/class/System.Data/System.Data.Common/DbConnection.cs
mcs/class/System.Data/System.Data.Common/DbDataReader.cs
mcs/class/System.Data/System.Data.Common/TaskHelper.cs [new file with mode: 0644]
mcs/class/System.Data/System.Data.dll.sources
mcs/class/System.Data/System.Data/DataRow.cs
mcs/class/System.Data/System.Data/DataTableCollection.cs
mcs/class/System.Data/Test/System.Data.Common/DBDataPermissionAttributeTest.cs
mcs/class/System.Data/Test/System.Data.Common/DBDataPermissionTest.cs
mcs/class/System.Data/Test/System.Data.Common/DbConnectionStringBuilderTest.cs
mcs/class/System.Data/Test/System.Data.SqlClient/SqlClientPermissionAttributeTest.cs
mcs/class/System.Data/Test/System.Data.SqlClient/SqlClientPermissionTest.cs
mcs/class/System.Data/Test/System.Data/DataRowTest.cs
mcs/class/System.Data/Test/System.Data/DataSetReadXmlTest.cs
mcs/class/System.Data/Test/System.Data/DataSetTest2.cs
mcs/class/System.Data/Test/System.Data/DataTableTest.cs
mcs/class/System.Data/mobile_System.Data.dll.sources
mcs/class/System.Design/System.Design-net_2_0.csproj
mcs/class/System.Design/System.Design-net_4_0.csproj
mcs/class/System.Design/System.Design-net_4_5.csproj
mcs/class/System.Design/System.Design-tests-net_2_0.csproj
mcs/class/System.Design/System.Design-tests-net_4_0.csproj
mcs/class/System.Design/System.Design-tests-net_4_5.csproj
mcs/class/System.DirectoryServices/System.DirectoryServices-net_2_0.csproj
mcs/class/System.DirectoryServices/System.DirectoryServices-net_4_0.csproj
mcs/class/System.DirectoryServices/System.DirectoryServices-net_4_5.csproj
mcs/class/System.DirectoryServices/System.DirectoryServices-tests-net_2_0.csproj
mcs/class/System.DirectoryServices/System.DirectoryServices-tests-net_4_0.csproj
mcs/class/System.DirectoryServices/System.DirectoryServices-tests-net_4_5.csproj
mcs/class/System.Drawing.Design/System.Drawing.Design-net_2_0.csproj
mcs/class/System.Drawing.Design/System.Drawing.Design-net_4_0.csproj
mcs/class/System.Drawing.Design/System.Drawing.Design-net_4_5.csproj
mcs/class/System.Drawing/System.Drawing-net_2_0.csproj
mcs/class/System.Drawing/System.Drawing-net_4_0.csproj
mcs/class/System.Drawing/System.Drawing-net_4_5.csproj
mcs/class/System.Drawing/System.Drawing-tests-net_2_0.csproj
mcs/class/System.Drawing/System.Drawing-tests-net_4_0.csproj
mcs/class/System.Drawing/System.Drawing-tests-net_4_5.csproj
mcs/class/System.Dynamic/System.Dynamic-net_4_0.csproj
mcs/class/System.Dynamic/System.Dynamic-net_4_5.csproj
mcs/class/System.EnterpriseServices/System.EnterpriseServices-net_2_0.csproj
mcs/class/System.EnterpriseServices/System.EnterpriseServices-net_4_0.csproj
mcs/class/System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj
mcs/class/System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_2_0.csproj
mcs/class/System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_0.csproj
mcs/class/System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_5.csproj
mcs/class/System.IdentityModel/System.IdentityModel-net_2_0.csproj
mcs/class/System.IdentityModel/System.IdentityModel-net_4_0.csproj
mcs/class/System.IdentityModel/System.IdentityModel-net_4_5.csproj
mcs/class/System.IdentityModel/System.IdentityModel-tests-net_2_0.csproj
mcs/class/System.IdentityModel/System.IdentityModel-tests-net_4_0.csproj
mcs/class/System.IdentityModel/System.IdentityModel-tests-net_4_5.csproj
mcs/class/System.Json.Microsoft/System.Json.Microsoft-net_4_0.csproj
mcs/class/System.Json.Microsoft/System.Json.Microsoft-net_4_5.csproj
mcs/class/System.Json/System.Json-net_2_0.csproj [new file with mode: 0644]
mcs/class/System.Json/System.Json-net_4_0.csproj
mcs/class/System.Json/System.Json-net_4_5.csproj
mcs/class/System.Json/System.Json-tests-net_4_0.csproj
mcs/class/System.Json/System.Json-tests-net_4_5.csproj
mcs/class/System.Management/System.Management-net_2_0.csproj
mcs/class/System.Management/System.Management-net_4_0.csproj
mcs/class/System.Management/System.Management-net_4_5.csproj
mcs/class/System.Messaging/System.Messaging-net_2_0.csproj
mcs/class/System.Messaging/System.Messaging-net_4_0.csproj
mcs/class/System.Messaging/System.Messaging-net_4_5.csproj
mcs/class/System.Messaging/System.Messaging-tests-net_2_0.csproj
mcs/class/System.Messaging/System.Messaging-tests-net_4_0.csproj
mcs/class/System.Messaging/System.Messaging-tests-net_4_5.csproj
mcs/class/System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj
mcs/class/System.Net.Http.WebRequest/Assembly/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/System.Net.Http.WebRequest/Makefile [new file with mode: 0644]
mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest.dll.sources [new file with mode: 0644]
mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest/WebRequestHandler.cs [new file with mode: 0644]
mcs/class/System.Net.Http/Assembly/AssemblyInfo.cs
mcs/class/System.Net.Http/System.Net.Http-net_4_5.csproj
mcs/class/System.Net.Http/System.Net.Http-tests-net_4_5.csproj
mcs/class/System.Net.Http/System.Net.Http.Headers/MediaTypeHeaderValue.cs
mcs/class/System.Net.Http/System.Net.Http/HttpClient.cs
mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs
mcs/class/System.Net.Http/Test/System.Net.Http/HttpClientTest.cs
mcs/class/System.Net/System.Net-net_2_0.csproj
mcs/class/System.Net/System.Net-net_4_0.csproj
mcs/class/System.Net/System.Net-net_4_5.csproj
mcs/class/System.Numerics/System.Numerics-net_4_0.csproj
mcs/class/System.Numerics/System.Numerics-net_4_5.csproj
mcs/class/System.Numerics/System.Numerics-tests-net_4_0.csproj
mcs/class/System.Numerics/System.Numerics-tests-net_4_5.csproj
mcs/class/System.Numerics/System.Numerics/BigInteger.cs
mcs/class/System.Numerics/System.Numerics/ChangeLog
mcs/class/System.Numerics/System.Numerics/Complex.cs
mcs/class/System.Numerics/System.Numerics_test.dll.sources
mcs/class/System.Numerics/Test/System.Numerics/BigIntegerTest.cs
mcs/class/System.Numerics/Test/System.Numerics/ChangeLog
mcs/class/System.Numerics/Test/System.Numerics/ComplexTest.cs [new file with mode: 0644]
mcs/class/System.Reactive.Core/Makefile
mcs/class/System.Reactive.Core/System.Reactive.Core-net_4_5.csproj
mcs/class/System.Reactive.Debugger/Makefile
mcs/class/System.Reactive.Debugger/System.Reactive.Debugger-net_4_5.csproj
mcs/class/System.Reactive.Experimental/Makefile
mcs/class/System.Reactive.Experimental/System.Reactive.Experimental-net_4_5.csproj
mcs/class/System.Reactive.Interfaces/Makefile
mcs/class/System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj
mcs/class/System.Reactive.Linq/Makefile
mcs/class/System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj
mcs/class/System.Reactive.PlatformServices/Makefile
mcs/class/System.Reactive.PlatformServices/System.Reactive.PlatformServices-net_4_5.csproj
mcs/class/System.Reactive.Providers/Makefile
mcs/class/System.Reactive.Providers/System.Reactive.Providers-net_4_5.csproj
mcs/class/System.Reactive.Runtime.Remoting/Makefile
mcs/class/System.Reactive.Runtime.Remoting/System.Reactive.Runtime.Remoting-net_4_5.csproj
mcs/class/System.Reactive.Windows.Forms/Makefile
mcs/class/System.Reactive.Windows.Forms/System.Reactive.Windows.Forms-net_4_5.csproj
mcs/class/System.Reactive.Windows.Threading/Makefile
mcs/class/System.Reactive.Windows.Threading/System.Reactive.Windows.Threading-net_4_5.csproj
mcs/class/System.Runtime.Caching/System.Runtime.Caching-net_4_0.csproj
mcs/class/System.Runtime.Caching/System.Runtime.Caching-net_4_5.csproj
mcs/class/System.Runtime.Caching/System.Runtime.Caching-tests-net_4_0.csproj
mcs/class/System.Runtime.Caching/System.Runtime.Caching-tests-net_4_5.csproj
mcs/class/System.Runtime.Caching/System.Runtime.Caching/MemoryCacheEntryPriorityQueue.cs
mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-net_4_0.csproj
mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-net_4_5.csproj
mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-tests-net_4_0.csproj
mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-tests-net_4_5.csproj
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-net_2_0.csproj
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-net_4_0.csproj
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-net_4_5.csproj
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-tests-net_2_0.csproj
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-tests-net_4_0.csproj
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-tests-net_4_5.csproj
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-tests-net_2_0.csproj
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-tests-net_4_0.csproj
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-tests-net_4_5.csproj
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-net_2_0.csproj
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-net_4_0.csproj
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-tests-net_2_0.csproj
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-tests-net_4_0.csproj
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-tests-net_4_5.csproj
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/KnownTypeCollection.cs
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlObjectSerializer.cs
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization_test.dll.sources
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/DataContractSerializerTest_InvalidCharacters.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/XmlObjectSerializerTest.cs
mcs/class/System.Security/System.Security-net_2_0.csproj
mcs/class/System.Security/System.Security-net_4_0.csproj
mcs/class/System.Security/System.Security-net_4_5.csproj
mcs/class/System.Security/System.Security-tests-net_2_0.csproj
mcs/class/System.Security/System.Security-tests-net_4_0.csproj
mcs/class/System.Security/System.Security-tests-net_4_5.csproj
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-net_4_0.csproj
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-net_4_5.csproj
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-tests-net_4_0.csproj
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-tests-net_4_5.csproj
mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing-net_4_0.csproj
mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing-net_4_5.csproj
mcs/class/System.ServiceModel.Web/Makefile
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-net_2_0.csproj
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-net_4_0.csproj
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-net_4_5.csproj
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-tests-net_2_0.csproj
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-tests-net_4_0.csproj
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-tests-net_4_5.csproj
mcs/class/System.ServiceModel/System.ServiceModel-net_2_0.csproj
mcs/class/System.ServiceModel/System.ServiceModel-net_4_0.csproj
mcs/class/System.ServiceModel/System.ServiceModel-net_4_5.csproj
mcs/class/System.ServiceModel/System.ServiceModel-tests-net_2_0.csproj
mcs/class/System.ServiceModel/System.ServiceModel-tests-net_4_0.csproj
mcs/class/System.ServiceModel/System.ServiceModel-tests-net_4_5.csproj
mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelFactory.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpCookieContainerBindingElement.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpRequestChannel.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpTransportBindingElement.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels/IHttpCookieContainer.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels/TextMessageEncoder.cs
mcs/class/System.ServiceModel/System.ServiceModel/BasicHttpBinding.cs
mcs/class/System.ServiceModel/System.ServiceModel/ChannelFactory.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/WsdlExporterTest.cs
mcs/class/System.ServiceModel/net_4_0_System.ServiceModel.dll.sources
mcs/class/System.ServiceProcess/System.ServiceProcess-net_2_0.csproj
mcs/class/System.ServiceProcess/System.ServiceProcess-net_4_0.csproj
mcs/class/System.ServiceProcess/System.ServiceProcess-net_4_5.csproj
mcs/class/System.ServiceProcess/System.ServiceProcess-tests-net_2_0.csproj
mcs/class/System.ServiceProcess/System.ServiceProcess-tests-net_4_0.csproj
mcs/class/System.ServiceProcess/System.ServiceProcess-tests-net_4_5.csproj
mcs/class/System.ServiceProcess/System.ServiceProcess/ServiceBase.cs
mcs/class/System.ServiceProcess/System.ServiceProcess/ServiceController.cs
mcs/class/System.ServiceProcess/System.ServiceProcess_test.dll.sources
mcs/class/System.ServiceProcess/Test/System.ServiceProcess/ServiceBaseTest.cs [new file with mode: 0644]
mcs/class/System.ServiceProcess/Test/System.ServiceProcess/ServiceControllerTest.cs
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-net_4_5.csproj
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-tests-net_4_5.csproj
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/ReceivingTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/TransformManyBlockTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/WriteOnceBlockTest.cs
mcs/class/System.Transactions/System.Transactions-net_2_0.csproj
mcs/class/System.Transactions/System.Transactions-net_4_0.csproj
mcs/class/System.Transactions/System.Transactions-net_4_5.csproj
mcs/class/System.Transactions/System.Transactions-tests-net_2_0.csproj
mcs/class/System.Transactions/System.Transactions-tests-net_4_0.csproj
mcs/class/System.Transactions/System.Transactions-tests-net_4_5.csproj
mcs/class/System.Web.Abstractions/System.Web.Abstractions-net_2_0.csproj
mcs/class/System.Web.Abstractions/System.Web.Abstractions-net_4_0.csproj
mcs/class/System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj
mcs/class/System.Web.Abstractions/System.Web.Abstractions-tests-net_2_0.csproj
mcs/class/System.Web.Abstractions/System.Web.Abstractions-tests-net_4_0.csproj
mcs/class/System.Web.Abstractions/System.Web.Abstractions-tests-net_4_5.csproj
mcs/class/System.Web.ApplicationServices/System.Web.ApplicationServices-net_2_0.csproj
mcs/class/System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_0.csproj
mcs/class/System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj
mcs/class/System.Web.DynamicData/System.Web.DynamicData-net_2_0.csproj
mcs/class/System.Web.DynamicData/System.Web.DynamicData-net_4_0.csproj
mcs/class/System.Web.DynamicData/System.Web.DynamicData-net_4_5.csproj
mcs/class/System.Web.DynamicData/System.Web.DynamicData-tests-net_2_0.csproj
mcs/class/System.Web.DynamicData/System.Web.DynamicData-tests-net_4_0.csproj
mcs/class/System.Web.DynamicData/System.Web.DynamicData-tests-net_4_5.csproj
mcs/class/System.Web.Extensions.Design/System.Web.Extensions.Design-net_2_0.csproj
mcs/class/System.Web.Extensions.Design/System.Web.Extensions.Design-net_4_0.csproj
mcs/class/System.Web.Extensions.Design/System.Web.Extensions.Design-net_4_5.csproj
mcs/class/System.Web.Extensions.Design_1.0/System.Web.Extensions.Design_1.0-net_2_0.csproj
mcs/class/System.Web.Extensions/System.Web.Extensions-net_2_0.csproj
mcs/class/System.Web.Extensions/System.Web.Extensions-net_4_0.csproj
mcs/class/System.Web.Extensions/System.Web.Extensions-net_4_5.csproj
mcs/class/System.Web.Extensions/System.Web.Extensions-tests-net_2_0.csproj
mcs/class/System.Web.Extensions/System.Web.Extensions-tests-net_4_0.csproj
mcs/class/System.Web.Extensions/System.Web.Extensions-tests-net_4_5.csproj
mcs/class/System.Web.Extensions_1.0/System.Web.Extensions_1.0-net_2_0.csproj
mcs/class/System.Web.Http.SelfHost/System.Web.Http.SelfHost-net_4_5.csproj
mcs/class/System.Web.Http.WebHost/Makefile [new file with mode: 0644]
mcs/class/System.Web.Http.WebHost/System.Web.Http.WebHost.dll.sources [new file with mode: 0644]
mcs/class/System.Web.Http/System.Web.Http-net_4_5.csproj
mcs/class/System.Web.Mvc/System.Web.Mvc-net_2_0.csproj
mcs/class/System.Web.Mvc2/System.Web.Mvc2-net_2_0.csproj
mcs/class/System.Web.Mvc2/System.Web.Mvc2-net_4_0.csproj
mcs/class/System.Web.Mvc2/System.Web.Mvc2-net_4_5.csproj
mcs/class/System.Web.Mvc3/System.Web.Mvc3-net_4_5.csproj
mcs/class/System.Web.Razor/System.Web.Razor-net_4_5.csproj
mcs/class/System.Web.Routing/System.Web.Routing-net_2_0.csproj
mcs/class/System.Web.Routing/System.Web.Routing-net_4_0.csproj
mcs/class/System.Web.Routing/System.Web.Routing-net_4_5.csproj
mcs/class/System.Web.Routing/System.Web.Routing-tests-net_2_0.csproj
mcs/class/System.Web.Routing/System.Web.Routing-tests-net_4_0.csproj
mcs/class/System.Web.Routing/System.Web.Routing-tests-net_4_5.csproj
mcs/class/System.Web.Routing/System.Web.Routing/PatternParser.cs
mcs/class/System.Web.Routing/Test/System.Web.Routing/RouteTest.cs
mcs/class/System.Web.Services/System.Web.Services-net_2_0.csproj
mcs/class/System.Web.Services/System.Web.Services-net_4_0.csproj
mcs/class/System.Web.Services/System.Web.Services-net_4_5.csproj
mcs/class/System.Web.Services/System.Web.Services-tests-net_2_0.csproj
mcs/class/System.Web.Services/System.Web.Services-tests-net_4_0.csproj
mcs/class/System.Web.Services/System.Web.Services-tests-net_4_5.csproj
mcs/class/System.Web.Services/Test/System.Web.Services.Description/ServiceDescriptionTest.cs
mcs/class/System.Web.WebPages.Deployment/System.Web.WebPages.Deployment-net_4_5.csproj
mcs/class/System.Web.WebPages.Razor/System.Web.WebPages.Razor-net_4_5.csproj
mcs/class/System.Web.WebPages/System.Web.WebPages-net_4_5.csproj
mcs/class/System.Web/System.Web-net_2_0.csproj
mcs/class/System.Web/System.Web-net_4_0.csproj
mcs/class/System.Web/System.Web-net_4_5-1.csproj
mcs/class/System.Web/System.Web-net_4_5-2.csproj
mcs/class/System.Web/System.Web-net_4_5.csproj
mcs/class/System.Web/System.Web-tests-net_4_5.csproj
mcs/class/System.Web/System.Web.Configuration_2.0/HttpRuntimeSection.cs
mcs/class/System.Web/System.Web.Configuration_2.0/LruCache.cs [new file with mode: 0644]
mcs/class/System.Web/System.Web.Configuration_2.0/WebConfigurationManager.cs
mcs/class/System.Web/System.Web.dll.sources
mcs/class/System.Web/System.Web/HttpRuntime.cs
mcs/class/System.Web/System.Web/MimeMapping.cs [new file with mode: 0644]
mcs/class/System.Web/Test/System.Web.Util/MachineKeySectionUtilsTest.cs
mcs/class/System.Web/net_4_5_System.Web.dll.sources
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-net_4_0.csproj
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-net_4_5.csproj
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-tests-net_4_0.csproj
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-tests-net_4_5.csproj
mcs/class/System.Windows/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/System.Windows/Makefile [new file with mode: 0644]
mcs/class/System.Windows/System.Windows.dll.sources [new file with mode: 0644]
mcs/class/System.Windows/TypeForwarders.cs [new file with mode: 0644]
mcs/class/System.XML/System.Xml-build.csproj
mcs/class/System.XML/System.Xml-net_2_0.csproj
mcs/class/System.XML/System.Xml-net_4_0.csproj
mcs/class/System.XML/System.Xml-net_4_5-1.csproj
mcs/class/System.XML/System.Xml-net_4_5.csproj
mcs/class/System.XML/System.Xml-tests-net_2_0.csproj
mcs/class/System.XML/System.Xml-tests-net_4_0.csproj
mcs/class/System.XML/System.Xml-tests-net_4_5.csproj
mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaTests.cs
mcs/class/System.XML/Test/System.Xml.Serialization/XmlReflectionImporterTests.cs
mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs
mcs/class/System.XML/Test/System.Xml/XmlReaderCommonTests.cs
mcs/class/System.XML/Test/System.Xml/XmlValidatingReaderTests.cs
mcs/class/System.Xaml/System.Xaml-net_4_0.csproj
mcs/class/System.Xaml/System.Xaml-net_4_5.csproj
mcs/class/System.Xaml/System.Xaml-tests-net_4_0.csproj
mcs/class/System.Xaml/System.Xaml-tests-net_4_5.csproj
mcs/class/System.Xml.Linq/System.Xml.Linq-net_2_0.csproj
mcs/class/System.Xml.Linq/System.Xml.Linq-net_4_0.csproj
mcs/class/System.Xml.Linq/System.Xml.Linq-net_4_5.csproj
mcs/class/System.Xml.Linq/System.Xml.Linq-tests-net_2_0.csproj
mcs/class/System.Xml.Linq/System.Xml.Linq-tests-net_4_0.csproj
mcs/class/System.Xml.Linq/System.Xml.Linq-tests-net_4_5.csproj
mcs/class/System.Xml.Serialization/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/System.Xml.Serialization/Makefile [new file with mode: 0644]
mcs/class/System.Xml.Serialization/System.Xml.Serialization.dll.sources [new file with mode: 0644]
mcs/class/System.Xml.Serialization/TypeForwarders.cs [new file with mode: 0644]
mcs/class/System/Makefile
mcs/class/System/Microsoft.CSharp/CSharpCodeGenerator.cs
mcs/class/System/Mono.Http/NtlmClient.cs
mcs/class/System/System-build.csproj
mcs/class/System/System-net_2_0.csproj
mcs/class/System/System-net_4_0.csproj
mcs/class/System/System-net_4_5-1.csproj
mcs/class/System/System-net_4_5-2.csproj
mcs/class/System/System-net_4_5.csproj
mcs/class/System/System-tests-net_2_0.csproj
mcs/class/System/System-tests-net_4_0.csproj
mcs/class/System/System-tests-net_4_5.csproj
mcs/class/System/System.Collections.Generic/SortedList.cs
mcs/class/System/System.Diagnostics/Switch.cs
mcs/class/System/System.Diagnostics/TraceImpl.cs
mcs/class/System/System.Diagnostics/TraceSource.cs
mcs/class/System/System.Net.Mail/SmtpClient.cs
mcs/class/System/System.Net.NetworkInformation/NetworkChange.cs
mcs/class/System/System.Net.NetworkInformation/NetworkInterface.cs
mcs/class/System/System.Net.Security/LocalCertificateSelectionCallback.cs
mcs/class/System/System.Net.Security/SslStream.cs
mcs/class/System/System.Net.Sockets/Socket.cs
mcs/class/System/System.Net.WebSockets/ClientWebSocket.cs
mcs/class/System/System.Net/DigestClient.cs
mcs/class/System/System.Net/Dns.cs
mcs/class/System/System.Net/EndPointListener.cs
mcs/class/System/System.Net/HttpConnection.cs
mcs/class/System/System.Net/HttpListenerRequest.cs
mcs/class/System/System.Net/HttpUtility.cs
mcs/class/System/System.Net/HttpWebRequest.cs
mcs/class/System/System.Net/ServicePointManager.cs
mcs/class/System/System.Net/WebClient.cs
mcs/class/System/System.Net/WebConnection.cs
mcs/class/System/System.Net/WebConnectionStream.cs
mcs/class/System/System.Net/WebRequest.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/OSX509Certificates.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/PublicKey.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X500DistinguishedName.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509BasicConstraintsExtension.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509Certificate2.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509Chain.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509EnhancedKeyUsageExtension.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509ExtensionCollection.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509KeyUsageExtension.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509Store.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509SubjectKeyIdentifierExtension.cs
mcs/class/System/System.Security.Cryptography/AsnEncodedData.cs
mcs/class/System/System.Text.RegularExpressions/Regex.cs
mcs/class/System/System/Platform.cs
mcs/class/System/System/Uri.cs
mcs/class/System/Test/System.Collections.Concurrent/ConcurrentBagTests.cs
mcs/class/System/Test/System.ComponentModel.Design.Serialization/InstanceDescriptorTest.cs
mcs/class/System/Test/System.ComponentModel/ComponentConverterTests.cs
mcs/class/System/Test/System.ComponentModel/TypeDescriptorTests.cs
mcs/class/System/Test/System.Diagnostics/ProcessTest.cs
mcs/class/System/Test/System.Diagnostics/TraceSourceTest.cs
mcs/class/System/Test/System.Net.Sockets/UdpClientTest.cs
mcs/class/System/Test/System.Net/HttpWebRequestTest.cs
mcs/class/System/Test/System.Net/WebClientTest.cs
mcs/class/System/Test/System.Net/WebPermissionAttributeTest.cs
mcs/class/System/Test/System.Net/WebPermissionTest.cs
mcs/class/System/Test/System.Net/WebUtilityTest.cs
mcs/class/System/Test/System.Security.Cryptography.X509Certificates/X509ChainTest.cs
mcs/class/System/Test/System.Threading/SemaphoreTest.cs
mcs/class/System/Test/System/UriTest.cs
mcs/class/System/Test/System/UriTest3.cs
mcs/class/System/mobile_System.dll.sources
mcs/class/System/monotouch_System.dll.sources
mcs/class/SystemWebTestShim/SystemWebTestShim-net_2_0.csproj
mcs/class/SystemWebTestShim/SystemWebTestShim-net_4_0.csproj
mcs/class/SystemWebTestShim/SystemWebTestShim-net_4_5.csproj
mcs/class/WebMatrix.Data/WebMatrix.Data-net_4_0.csproj
mcs/class/WebMatrix.Data/WebMatrix.Data-net_4_5.csproj
mcs/class/WebMatrix.Data/WebMatrix.Data-tests-net_4_0.csproj
mcs/class/WebMatrix.Data/WebMatrix.Data-tests-net_4_5.csproj
mcs/class/WindowsBase/System.Windows/DependencyObject.cs
mcs/class/WindowsBase/Test/System.Windows/DependencyObjectTest.cs
mcs/class/WindowsBase/WindowsBase-net_2_0.csproj
mcs/class/WindowsBase/WindowsBase-net_4_0.csproj
mcs/class/WindowsBase/WindowsBase-net_4_5.csproj
mcs/class/WindowsBase/WindowsBase-tests-net_2_0.csproj
mcs/class/WindowsBase/WindowsBase-tests-net_4_0.csproj
mcs/class/WindowsBase/WindowsBase-tests-net_4_5.csproj
mcs/class/build-rx-dll-sources.sh
mcs/class/corlib/Makefile
mcs/class/corlib/Mono.Math.Prime.Generator/ChangeLog [deleted file]
mcs/class/corlib/Mono.Math.Prime.Generator/NextPrimeFinder.cs [deleted file]
mcs/class/corlib/Mono.Math.Prime.Generator/PrimeGeneratorBase.cs [deleted file]
mcs/class/corlib/Mono.Math.Prime.Generator/SequentialSearchPrimeGeneratorBase.cs [deleted file]
mcs/class/corlib/Mono.Math.Prime/ChangeLog [deleted file]
mcs/class/corlib/Mono.Math.Prime/ConfidenceFactor.cs [deleted file]
mcs/class/corlib/Mono.Math.Prime/PrimalityTests.cs [deleted file]
mcs/class/corlib/Mono.Math/BigInteger.cs [deleted file]
mcs/class/corlib/Mono.Math/ChangeLog [deleted file]
mcs/class/corlib/Mono.Security.Authenticode/AuthenticodeBase.cs [deleted file]
mcs/class/corlib/Mono.Security.Authenticode/AuthenticodeDeformatter.cs [deleted file]
mcs/class/corlib/Mono.Security.Authenticode/ChangeLog [deleted file]
mcs/class/corlib/Mono.Security.Cryptography/CryptoConvert.cs [deleted file]
mcs/class/corlib/Mono.Security.Cryptography/CryptoTools.cs [deleted file]
mcs/class/corlib/Mono.Security.Cryptography/KeyPairPersistence.cs [deleted file]
mcs/class/corlib/Mono.Security.Cryptography/PKCS1.cs [deleted file]
mcs/class/corlib/Mono.Security.Cryptography/PKCS8.cs [deleted file]
mcs/class/corlib/Mono.Security.Cryptography/RSAManaged.cs [deleted file]
mcs/class/corlib/Mono.Security.Cryptography/SymmetricTransform.cs [deleted file]
mcs/class/corlib/Mono.Security.X509.Extensions/BasicConstraintsExtension.cs [deleted file]
mcs/class/corlib/Mono.Security.X509.Extensions/ChangeLog [deleted file]
mcs/class/corlib/Mono.Security.X509.Extensions/KeyUsageExtension.cs [deleted file]
mcs/class/corlib/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/ChangeLog [deleted file]
mcs/class/corlib/Mono.Security.X509/ITrustAnchors.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/PKCS12.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/TestAnchors.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/TrustAnchors.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X501Name.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509CRL.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509Certificate.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509CertificateCollection.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509Chain.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509ChainStatusFlags.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509Extension.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509Extensions.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509Store.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509StoreManager.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509Stores.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X520Attributes.cs [deleted file]
mcs/class/corlib/Mono.Security/ASN1.cs [deleted file]
mcs/class/corlib/Mono.Security/ASN1Convert.cs [deleted file]
mcs/class/corlib/Mono.Security/BitConverterLE.cs [deleted file]
mcs/class/corlib/Mono.Security/ChangeLog [deleted file]
mcs/class/corlib/Mono.Security/PKCS7.cs [deleted file]
mcs/class/corlib/Mono.Security/StrongName.cs [deleted file]
mcs/class/corlib/System.Collections.ObjectModel/Collection.cs
mcs/class/corlib/System.Collections/Stack.cs
mcs/class/corlib/System.Collections/StructuralComparisons.cs
mcs/class/corlib/System.Diagnostics/ConditionalAttribute.cs
mcs/class/corlib/System.Diagnostics/DebuggableAttribute.cs
mcs/class/corlib/System.Globalization/CultureInfo.cs
mcs/class/corlib/System.Globalization/RegionInfo.MonoTouch.cs
mcs/class/corlib/System.IO/Directory.cs
mcs/class/corlib/System.IO/FileStream.cs
mcs/class/corlib/System.IO/Path.cs
mcs/class/corlib/System.IO/StreamWriter.cs
mcs/class/corlib/System.Reflection.Emit/ConstructorBuilder.cs
mcs/class/corlib/System.Reflection.Emit/DynamicMethod.cs
mcs/class/corlib/System.Reflection.Emit/ILGenerator.cs
mcs/class/corlib/System.Reflection.Emit/MethodBuilder.cs
mcs/class/corlib/System.Reflection/MonoMethod.cs
mcs/class/corlib/System.Reflection/MonoProperty.cs
mcs/class/corlib/System.Reflection/ParameterInfo.cs
mcs/class/corlib/System.Runtime.CompilerServices/ConditionalWeakTable.cs
mcs/class/corlib/System.Runtime.CompilerServices/TaskAwaiter.cs
mcs/class/corlib/System.Runtime.CompilerServices/TaskAwaiter_T.cs
mcs/class/corlib/System.Runtime.CompilerServices/YieldAwaitable.cs
mcs/class/corlib/System.Runtime.InteropServices/Marshal.cs
mcs/class/corlib/System.Security.Cryptography/CryptoConfig.fullaot.cs
mcs/class/corlib/System.Security.Cryptography/DSACryptoServiceProvider.cs
mcs/class/corlib/System.Security.Cryptography/DSASignatureDeformatter.cs
mcs/class/corlib/System.Security.Cryptography/DSASignatureFormatter.cs
mcs/class/corlib/System.Security.Cryptography/HMAC.cs
mcs/class/corlib/System.Security.Cryptography/HMACMD5.cs
mcs/class/corlib/System.Security.Cryptography/HMACRIPEMD160.cs
mcs/class/corlib/System.Security.Cryptography/HMACSHA1.cs
mcs/class/corlib/System.Security.Cryptography/HMACSHA256.cs
mcs/class/corlib/System.Security.Cryptography/HMACSHA384.cs
mcs/class/corlib/System.Security.Cryptography/HMACSHA512.cs
mcs/class/corlib/System.Security.Cryptography/MACTripleDES.cs
mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs
mcs/class/corlib/System.Security.Cryptography/RSAPKCS1SignatureDeformatter.cs
mcs/class/corlib/System.Security.Cryptography/RSAPKCS1SignatureFormatter.cs
mcs/class/corlib/System.Security.Cryptography/ToBase64Transform.cs
mcs/class/corlib/System.Security/SecurityException.cs
mcs/class/corlib/System.Threading.Tasks/Task.cs
mcs/class/corlib/System.Threading.Tasks/TaskContinuation.cs
mcs/class/corlib/System.Threading/SemaphoreSlim.cs
mcs/class/corlib/System.Threading/Thread.cs
mcs/class/corlib/System.Threading/ThreadPool.cs
mcs/class/corlib/System.Threading/Timer.cs
mcs/class/corlib/System/AggregateException.cs
mcs/class/corlib/System/AppDomain.cs
mcs/class/corlib/System/Array.cs
mcs/class/corlib/System/BitConverter.cs
mcs/class/corlib/System/Console.cs
mcs/class/corlib/System/Console.iOS.cs [new file with mode: 0644]
mcs/class/corlib/System/Convert.cs
mcs/class/corlib/System/DateTime.cs
mcs/class/corlib/System/DateTimeUtils.cs
mcs/class/corlib/System/Delegate.cs
mcs/class/corlib/System/Enum.cs
mcs/class/corlib/System/Int32.cs
mcs/class/corlib/System/Int64.cs
mcs/class/corlib/System/IntPtr.cs
mcs/class/corlib/System/MulticastDelegate.cs
mcs/class/corlib/System/NumberFormatter.cs
mcs/class/corlib/System/String.cs
mcs/class/corlib/System/TimeSpan.cs
mcs/class/corlib/System/Type.cs
mcs/class/corlib/System/UInt32.cs
mcs/class/corlib/System/UInt64.cs
mcs/class/corlib/System/Variant.cs
mcs/class/corlib/Test/System.Collections/StructuralComparisonsTest.cs [new file with mode: 0644]
mcs/class/corlib/Test/System.Globalization/CultureInfoTest.cs
mcs/class/corlib/Test/System.Globalization/DateTimeFormatInfoTest.cs
mcs/class/corlib/Test/System.Globalization/RegionInfoTest.cs
mcs/class/corlib/Test/System.IO/DirectoryTest.cs
mcs/class/corlib/Test/System.IO/FileStreamTest.cs
mcs/class/corlib/Test/System.IO/StreamWriterTest.cs
mcs/class/corlib/Test/System.Reflection/MethodInfoTest.cs
mcs/class/corlib/Test/System.Reflection/PropertyInfoTest.cs
mcs/class/corlib/Test/System.Runtime.CompilerServices/TaskAwaiterTest.cs
mcs/class/corlib/Test/System.Runtime.CompilerServices/TaskAwaiterTest_T.cs
mcs/class/corlib/Test/System.Runtime.CompilerServices/YieldAwaitableTest.cs
mcs/class/corlib/Test/System.Runtime.InteropServices/MarshalTest.cs
mcs/class/corlib/Test/System.Security.Principal/WindowsIdentityTest.cs
mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs
mcs/class/corlib/Test/System.Threading/ThreadPoolTest.cs [new file with mode: 0644]
mcs/class/corlib/Test/System.Threading/ThreadTest.cs
mcs/class/corlib/Test/System.Threading/TimerTest.cs
mcs/class/corlib/Test/System/AggregateExceptionTests.cs
mcs/class/corlib/Test/System/AppDomainTest.cs
mcs/class/corlib/Test/System/ConsoleTest.cs
mcs/class/corlib/Test/System/DateTimeTest.cs
mcs/class/corlib/Test/System/DecimalTest.cs
mcs/class/corlib/Test/System/DoubleTest.cs
mcs/class/corlib/Test/System/Int32Test.cs
mcs/class/corlib/Test/System/Int64Test.cs
mcs/class/corlib/Test/System/MulticastDelegate.cs
mcs/class/corlib/Test/System/NumberFormatterTest.cs
mcs/class/corlib/Test/System/StringTest.cs
mcs/class/corlib/Test/System/TimeSpanTest.cs
mcs/class/corlib/Test/System/UInt32Test.cs
mcs/class/corlib/Test/System/UInt64Test.cs
mcs/class/corlib/corlib-build.csproj
mcs/class/corlib/corlib-net_2_0.csproj
mcs/class/corlib/corlib-net_4_0.csproj
mcs/class/corlib/corlib-net_4_5.csproj
mcs/class/corlib/corlib-tests-net_2_0.csproj
mcs/class/corlib/corlib-tests-net_4_0.csproj
mcs/class/corlib/corlib-tests-net_4_5.csproj
mcs/class/corlib/corlib.dll.sources
mcs/class/corlib/corlib_test.dll.sources
mcs/class/corlib/monotouch_corlib.dll.sources [new file with mode: 0644]
mcs/class/monodoc/Makefile
mcs/class/monodoc/Monodoc.Ecma/EcmaDesc.cs
mcs/class/monodoc/Monodoc.Ecma/EcmaUrlTokenizer.cs
mcs/class/monodoc/Monodoc/RootTree.cs
mcs/class/monodoc/Monodoc/RootTree_Legacy.cs
mcs/class/monodoc/Monodoc/generators/html/Ecma2Html.cs
mcs/class/monodoc/Monodoc/providers/EcmaDoc.cs
mcs/class/monodoc/Monodoc/providers/ecma-provider.cs
mcs/class/monodoc/Resources/mdoc-sections-css.xsl
mcs/class/monodoc/Test/Monodoc.Ecma/EcmaUrlTests.cs
mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs [new file with mode: 0644]
mcs/class/monodoc/Test/Monodoc/EcmaDocTests.cs [new file with mode: 0644]
mcs/class/monodoc/Test/Monodoc/HelpSourceTests.cs
mcs/class/monodoc/jay.sh [new file with mode: 0755]
mcs/class/monodoc/monodoc-net_4_0.csproj
mcs/class/monodoc/monodoc-net_4_5.csproj
mcs/class/monodoc/monodoc-tests-net_4_0.csproj
mcs/class/monodoc/monodoc-tests-net_4_5.csproj
mcs/class/monodoc/monodoc_test.dll.sources
mcs/class/project_template_android.txt
mcs/class/project_template_ios.txt
mcs/docs/compiler.txt
mcs/errors/CS0012-21-lib.il [new file with mode: 0644]
mcs/errors/Makefile
mcs/errors/cs0012-19.cs [new file with mode: 0644]
mcs/errors/cs0012-20.cs [new file with mode: 0644]
mcs/errors/cs0012-21.cs [new file with mode: 0644]
mcs/errors/cs0019-34.cs [deleted file]
mcs/errors/cs0019-51.cs [deleted file]
mcs/errors/cs0019-69.cs [new file with mode: 0644]
mcs/errors/cs0019-70.cs [new file with mode: 0644]
mcs/errors/cs0029-34.cs [new file with mode: 0644]
mcs/errors/cs0034-6.cs [new file with mode: 0644]
mcs/errors/cs0075.cs
mcs/errors/cs0118-11.cs [changed mode: 0644->0755]
mcs/errors/cs0118-12.cs [deleted file]
mcs/errors/cs0119-2.cs [new file with mode: 0644]
mcs/errors/cs0119-8.cs [changed mode: 0755->0644]
mcs/errors/cs0120-19.cs [new file with mode: 0644]
mcs/errors/cs0154-5.cs [new file with mode: 0644]
mcs/errors/cs0161-4.cs [new file with mode: 0644]
mcs/errors/cs0162-17.cs [new file with mode: 0644]
mcs/errors/cs0185-2.cs [new file with mode: 0644]
mcs/errors/cs0185.cs
mcs/errors/cs0266-27.cs [new file with mode: 0644]
mcs/errors/cs0266-28.cs [new file with mode: 0644]
mcs/errors/cs0458-14.cs [new file with mode: 0644]
mcs/errors/cs0458-15.cs [new file with mode: 0644]
mcs/errors/cs0458-16.cs [new file with mode: 0644]
mcs/errors/cs0464-4.cs [new file with mode: 0644]
mcs/errors/cs0464.cs
mcs/errors/cs0472-4.cs
mcs/errors/cs0534-10.cs [new file with mode: 0644]
mcs/errors/cs0534-9.cs
mcs/errors/cs0647-15.cs
mcs/errors/cs0647-20.cs [new file with mode: 0644]
mcs/errors/cs0658-3.cs [new file with mode: 0644]
mcs/errors/cs0761-2.cs [new file with mode: 0644]
mcs/errors/cs0761.cs [new file with mode: 0644]
mcs/errors/cs1001-8.cs [new file with mode: 0644]
mcs/errors/cs1502-17.cs [new file with mode: 0644]
mcs/errors/cs1502-18.cs [new file with mode: 0644]
mcs/errors/cs1519-5.cs [new file with mode: 0644]
mcs/errors/cs1525-52.cs [new file with mode: 0644]
mcs/errors/cs1525-53.cs [new file with mode: 0644]
mcs/errors/cs1525-54.cs [new file with mode: 0644]
mcs/errors/cs1534-3.cs [new file with mode: 0644]
mcs/errors/cs1661-2.cs
mcs/errors/cs1661-3.cs [new file with mode: 0644]
mcs/errors/cs1705-2.cs [new file with mode: 0644]
mcs/errors/cs1997-2.cs [new file with mode: 0644]
mcs/ilasm/parser/ILParser.jay
mcs/mcs/anonymous.cs
mcs/mcs/argument.cs
mcs/mcs/assembly.cs
mcs/mcs/assign.cs
mcs/mcs/async.cs
mcs/mcs/attribute.cs
mcs/mcs/cfold.cs
mcs/mcs/class.cs
mcs/mcs/codegen.cs
mcs/mcs/complete.cs
mcs/mcs/const.cs
mcs/mcs/constant.cs
mcs/mcs/context.cs
mcs/mcs/convert.cs
mcs/mcs/cs-parser.jay
mcs/mcs/cs-tokenizer.cs
mcs/mcs/decl.cs
mcs/mcs/delegate.cs
mcs/mcs/driver.cs
mcs/mcs/dynamic.cs
mcs/mcs/ecore.cs
mcs/mcs/enum.cs
mcs/mcs/eval.cs
mcs/mcs/expression.cs
mcs/mcs/field.cs
mcs/mcs/flowanalysis.cs
mcs/mcs/generic.cs
mcs/mcs/ikvm.cs
mcs/mcs/import.cs
mcs/mcs/iterators.cs
mcs/mcs/linq.cs
mcs/mcs/literal.cs
mcs/mcs/location.cs
mcs/mcs/mcs-build.csproj
mcs/mcs/mcs-net_4_5.csproj
mcs/mcs/mcs.csproj
mcs/mcs/mcs.exe.sources
mcs/mcs/membercache.cs
mcs/mcs/method.cs
mcs/mcs/modifiers.cs
mcs/mcs/module.cs
mcs/mcs/namespace.cs
mcs/mcs/nullable.cs
mcs/mcs/parameter.cs
mcs/mcs/pending.cs
mcs/mcs/property.cs
mcs/mcs/report.cs
mcs/mcs/settings.cs
mcs/mcs/statement.cs
mcs/mcs/support.cs
mcs/mcs/typemanager.cs
mcs/mcs/typespec.cs
mcs/mcs/visit.cs
mcs/tests/dtest-001.cs
mcs/tests/gtest-274.cs
mcs/tests/gtest-545.cs
mcs/tests/gtest-581-lib.cs [new file with mode: 0644]
mcs/tests/gtest-581.cs [new file with mode: 0644]
mcs/tests/gtest-582-lib.cs [new file with mode: 0644]
mcs/tests/gtest-582.cs [new file with mode: 0644]
mcs/tests/gtest-583-lib.il [new file with mode: 0644]
mcs/tests/gtest-583.cs [new file with mode: 0644]
mcs/tests/gtest-584.cs [new file with mode: 0644]
mcs/tests/gtest-585.cs [new file with mode: 0644]
mcs/tests/gtest-586.cs [new file with mode: 0644]
mcs/tests/gtest-587.cs [new file with mode: 0644]
mcs/tests/gtest-588.cs [new file with mode: 0644]
mcs/tests/gtest-589.cs [new file with mode: 0644]
mcs/tests/gtest-etree-04.cs
mcs/tests/gtest-exmethod-46.cs [new file with mode: 0644]
mcs/tests/gtest-iter-29.cs [new file with mode: 0644]
mcs/tests/gtest-partial-06.cs [new file with mode: 0644]
mcs/tests/gtest-partial-07.cs [new file with mode: 0644]
mcs/tests/gtest-partial-08.cs [new file with mode: 0644]
mcs/tests/gtest-partial-09.cs [new file with mode: 0644]
mcs/tests/test-181.cs
mcs/tests/test-285.cs
mcs/tests/test-476.cs
mcs/tests/test-867.cs [new file with mode: 0644]
mcs/tests/test-868.cs [new file with mode: 0644]
mcs/tests/test-869.cs [new file with mode: 0644]
mcs/tests/test-anon-124.cs
mcs/tests/test-anon-171.cs [new file with mode: 0644]
mcs/tests/test-async-22.cs
mcs/tests/test-async-42.cs [new file with mode: 0644]
mcs/tests/test-async-46.cs [new file with mode: 0644]
mcs/tests/test-async-47.cs [new file with mode: 0644]
mcs/tests/test-async-48.cs [new file with mode: 0644]
mcs/tests/test-debug-01-ref.xml
mcs/tests/test-debug-02-ref.xml
mcs/tests/test-debug-03-ref.xml
mcs/tests/test-debug-04-ref.xml
mcs/tests/test-debug-05-ref.xml
mcs/tests/test-debug-06-ref.xml
mcs/tests/test-debug-07-ref.xml
mcs/tests/test-debug-08-ref.xml
mcs/tests/test-debug-09-ref.xml
mcs/tests/test-debug-10-ref.xml
mcs/tests/test-debug-11-ref.xml
mcs/tests/test-debug-12-ref.xml
mcs/tests/test-debug-13-ref.xml
mcs/tests/test-debug-14-ref.xml
mcs/tests/test-debug-15-ref.xml
mcs/tests/test-debug-16-ref.xml
mcs/tests/test-debug-17-ref.xml
mcs/tests/test-debug-18-ref.xml
mcs/tests/test-debug-19-ref.xml
mcs/tests/test-debug-20-ref.xml
mcs/tests/test-debug-21-ref.xml
mcs/tests/test-debug-22-ref.xml
mcs/tests/test-debug-23-ref.xml
mcs/tests/test-debug-24-ref.xml
mcs/tests/test-debug-25-ref.xml
mcs/tests/test-debug-26-ref.xml [new file with mode: 0644]
mcs/tests/test-debug-26.cs [new file with mode: 0644]
mcs/tests/test-debug-27-ref.xml [new file with mode: 0644]
mcs/tests/test-debug-27.cs [new file with mode: 0644]
mcs/tests/test-partial-31.cs [new file with mode: 0644]
mcs/tests/ver-il-net_4_5.xml
mcs/tools/csharp/repl.cs
mcs/tools/ildasm/DataConverter.cs [deleted file]
mcs/tools/ildasm/Makefile [deleted file]
mcs/tools/ildasm/ildasm.cs [deleted file]
mcs/tools/ildasm/ildasm.exe.sources [deleted file]
mcs/tools/ildasm/tables.cs [deleted file]
mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs
mcs/tools/mdoc/Mono.Documentation/exceptions.cs
mcs/tools/mdoc/Mono.Documentation/monodocer.cs
mcs/tools/mdoc/Mono.Documentation/monodocs2slashdoc.cs
mcs/tools/mdoc/Mono.Documentation/webdoc.cs
mcs/tools/mdoc/Resources/defaulttemplate.xsl
mcs/tools/mdoc/Test/en.expected.delete/Mono.DocTest.Generic/GenericBase`1.xml
mcs/tools/mdoc/Test/en.expected.delete/Mono.DocTest/DocAttribute.xml
mcs/tools/mdoc/Test/en.expected.delete/Mono.DocTest/DocValueType.xml
mcs/tools/mdoc/Test/en.expected.delete/Mono.DocTest/UseLists.xml
mcs/tools/mdoc/Test/en.expected.delete/Mono.DocTest/Widget.xml
mcs/tools/mdoc/Test/en.expected.delete/System/Array.xml
mcs/tools/mdoc/Test/en.expected.delete/System/Environment.xml
mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Array.xml
mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Environment.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/DocAttribute.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/DocValueType.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/UseLists.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Array.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Environment.xml
mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1.xml
mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/DocAttribute.xml
mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/DocValueType.xml
mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/UseLists.xml
mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml
mcs/tools/mdoc/Test/en.expected.since/System/Array.xml
mcs/tools/mdoc/Test/en.expected.since/System/Environment.xml
mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1.xml
mcs/tools/mdoc/Test/en.expected/Mono.DocTest/DocAttribute.xml
mcs/tools/mdoc/Test/en.expected/Mono.DocTest/DocValueType.xml
mcs/tools/mdoc/Test/en.expected/Mono.DocTest/UseLists.xml
mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget.xml
mcs/tools/mdoc/Test/en.expected/System/Array.xml
mcs/tools/mdoc/Test/en.expected/System/Environment.xml
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/Extensions.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/Func`2.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/GenericBase`1+NestedCollection.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/GenericBase`1.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/IFoo`1.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/MyList`1+Helper`2.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/MyList`1.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/MyList`2.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Color.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/D.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/DocAttribute.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/DocValueType.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/IProcess.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/UseLists.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+Del.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+Direction.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+IMenuItem.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+NestedClass+Double+Triple.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+NestedClass+Double.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+NestedClass.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+NestedClass`1.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget.html
mcs/tools/mdoc/Test/html.expected/NoNamespace.html
mcs/tools/mdoc/Test/html.expected/System/Action`1.html
mcs/tools/mdoc/Test/html.expected/System/Array.html
mcs/tools/mdoc/Test/html.expected/System/AsyncCallback.html
mcs/tools/mdoc/Test/html.expected/System/Environment+SpecialFolder.html
mcs/tools/mdoc/Test/html.expected/System/Environment.html
mcs/tools/mdoc/Test/msxdoc-expected.importslashdoc.xml
mcs/tools/mkbundle/Makefile
mcs/tools/mkbundle/mkbundle.cs
mcs/tools/mkbundle/mkbundle.exe.sources
mcs/tools/mkbundle/template_z.c
mcs/tools/mono-service/mono-service.cs
mcs/tools/tuner/Mono.Tuner/CustomizeActions.cs
mcs/tools/xbuild/Makefile
mcs/tools/xbuild/xbuild/2.0/Microsoft.Common.targets
mcs/tools/xbuild/xbuild/3.5/Microsoft.Common.targets
mcs/tools/xbuild/xbuild/4.0/Microsoft.Common.targets
mcs/tools/xbuild/xbuild/4.0/Microsoft.Portable.CSharp.targets [new file with mode: 0644]
mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.targets [deleted file]
mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.tasks [deleted file]
mcs/tools/xbuild/xbuild/4.5/Microsoft.Portable.CSharp.targets [new file with mode: 0644]
mcs/tools/xbuild/xbuild/Microsoft.CSharp.targets
mcs/tools/xbuild/xbuild/Microsoft.Portable.CSharp.targets
mcs/tools/xbuild/xbuild_targets.make
mono-core.spec.in
mono/arch/Makefile.am
mono/arch/arm/Makefile.am
mono/arch/arm/arm-codegen.h
mono/arch/arm/arm-fpa-codegen.h [deleted file]
mono/arch/arm/arm-vfp-codegen.h
mono/arch/arm/fpa_macros.th [deleted file]
mono/arch/arm/fpam_macros.th [deleted file]
mono/arch/arm/fpaops.sh [deleted file]
mono/arch/s390/.gitignore [deleted file]
mono/arch/s390/ChangeLog [deleted file]
mono/arch/s390/Makefile.am [deleted file]
mono/arch/s390/s390-codegen.h [deleted file]
mono/arch/s390/tramp.c [deleted file]
mono/arch/s390x/s390x-codegen.h
mono/arch/x86/x86-codegen.h
mono/dis/dump.c
mono/io-layer/Makefile.am
mono/io-layer/atomic.c [deleted file]
mono/io-layer/atomic.h [deleted file]
mono/io-layer/collection.c
mono/io-layer/critical-sections.c
mono/io-layer/critical-sections.h
mono/io-layer/error.c
mono/io-layer/event-private.h
mono/io-layer/events.c
mono/io-layer/handles-private.h
mono/io-layer/handles.c
mono/io-layer/io-layer.h
mono/io-layer/io-portability.c
mono/io-layer/io.c
mono/io-layer/io.h
mono/io-layer/macros.h
mono/io-layer/mono-mutex.c [deleted file]
mono/io-layer/mono-mutex.h [deleted file]
mono/io-layer/mutexes.c
mono/io-layer/processes.c
mono/io-layer/semaphores.c
mono/io-layer/shared.c
mono/io-layer/sockets.c
mono/io-layer/wait.c
mono/io-layer/wapi.h
mono/io-layer/wthreads.c
mono/metadata/Makefile.am.in
mono/metadata/appdomain.c
mono/metadata/assembly.c
mono/metadata/boehm-gc.c
mono/metadata/class-internals.h
mono/metadata/class.c
mono/metadata/cominterop.c
mono/metadata/console-win32.c
mono/metadata/culture-info-tables.h
mono/metadata/debug-helpers.c
mono/metadata/decimal.c
mono/metadata/domain-internals.h
mono/metadata/domain.c
mono/metadata/exception.c
mono/metadata/file-io.c
mono/metadata/gc-internal.h
mono/metadata/gc.c
mono/metadata/icall-def.h
mono/metadata/icall.c
mono/metadata/image.c
mono/metadata/marshal.c
mono/metadata/marshal.h
mono/metadata/metadata-internals.h
mono/metadata/metadata-verify.c
mono/metadata/metadata.c
mono/metadata/method-builder.c
mono/metadata/monitor.c
mono/metadata/mono-config.c
mono/metadata/mono-cq.c
mono/metadata/mono-debug.c
mono/metadata/mono-debug.h
mono/metadata/mono-endian.h
mono/metadata/mono-perfcounters.c
mono/metadata/mono-wsq.c
mono/metadata/nacl-stub.c
mono/metadata/null-gc.c
mono/metadata/object-internals.h
mono/metadata/object.c
mono/metadata/pedump.c
mono/metadata/rand.c
mono/metadata/reflection.c
mono/metadata/runtime.c
mono/metadata/runtime.h
mono/metadata/security-core-clr.c
mono/metadata/security-manager.c
mono/metadata/security-manager.h
mono/metadata/sgen-alloc.c
mono/metadata/sgen-bridge.c
mono/metadata/sgen-cardtable.c
mono/metadata/sgen-cardtable.h
mono/metadata/sgen-debug.c
mono/metadata/sgen-fin-weak-hash.c
mono/metadata/sgen-gc.c
mono/metadata/sgen-gc.h
mono/metadata/sgen-gray.c
mono/metadata/sgen-internal.c
mono/metadata/sgen-los.c
mono/metadata/sgen-marksweep.c
mono/metadata/sgen-nursery-allocator.c
mono/metadata/sgen-os-posix.c
mono/metadata/sgen-pinning.c
mono/metadata/sgen-protocol.c
mono/metadata/sgen-protocol.h
mono/metadata/sgen-stw.c
mono/metadata/sgen-workers.c
mono/metadata/socket-io.c
mono/metadata/threadpool.c
mono/metadata/threadpool.h
mono/metadata/threads-types.h
mono/metadata/threads.c
mono/metadata/threads.h
mono/metadata/verify.c
mono/mini/.gitignore
mono/mini/Makefile.am.in
mono/mini/aot-compiler.c
mono/mini/aot-runtime.c
mono/mini/arrays.cs
mono/mini/basic-calls.cs
mono/mini/basic-float.cs
mono/mini/basic-long.cs
mono/mini/basic-math.cs
mono/mini/basic.cs
mono/mini/cpu-amd64.md
mono/mini/cpu-arm.md
mono/mini/cpu-mips.md
mono/mini/cpu-s390.md [deleted file]
mono/mini/cpu-s390x.md
mono/mini/cpu-x86.md
mono/mini/debug-mini.c
mono/mini/debugger-agent.c
mono/mini/debugger-agent.h
mono/mini/declsec.c
mono/mini/declsec.h
mono/mini/decompose.c
mono/mini/driver.c
mono/mini/dwarfwriter.c
mono/mini/dwarfwriter.h
mono/mini/exceptions-arm.c
mono/mini/exceptions-s390.c [deleted file]
mono/mini/exceptions.cs
mono/mini/fsacheck.c [deleted file]
mono/mini/generics.cs
mono/mini/genmdesc.c
mono/mini/graph.c
mono/mini/gshared.cs
mono/mini/helpers.c
mono/mini/ir-emit.h
mono/mini/jit-icalls.c
mono/mini/jit-icalls.h
mono/mini/ldscript
mono/mini/main-sgen.c [new file with mode: 0644]
mono/mini/main.c
mono/mini/method-to-ir.c
mono/mini/mini-amd64.c
mono/mini/mini-amd64.h
mono/mini/mini-arch.h
mono/mini/mini-arm.c
mono/mini/mini-arm.h
mono/mini/mini-codegen.c
mono/mini/mini-darwin.c
mono/mini/mini-exceptions.c
mono/mini/mini-gc.c
mono/mini/mini-generic-sharing.c
mono/mini/mini-ia64.c
mono/mini/mini-llvm-cpp.cpp
mono/mini/mini-llvm.c
mono/mini/mini-llvm.h
mono/mini/mini-mips.c
mono/mini/mini-ops.h
mono/mini/mini-posix.c
mono/mini/mini-ppc.c
mono/mini/mini-s390.c [deleted file]
mono/mini/mini-s390.h [deleted file]
mono/mini/mini-s390x.c
mono/mini/mini-s390x.h
mono/mini/mini-sparc.c
mono/mini/mini-sparc.h
mono/mini/mini-trampolines.c
mono/mini/mini-x86.c
mono/mini/mini-x86.h
mono/mini/mini.c
mono/mini/mini.h
mono/mini/nacl.cs
mono/mini/objects.cs
mono/mini/patch-info.h
mono/mini/regalloc.h
mono/mini/trace.c
mono/mini/tramp-amd64.c
mono/mini/tramp-arm.c
mono/mini/tramp-mips.c
mono/mini/tramp-ppc.c
mono/mini/tramp-s390.c [deleted file]
mono/mini/tramp-s390x.c
mono/mini/tramp-x86.c
mono/mini/wapihandles.c
mono/mini/xdebug.c
mono/monograph/monograph.c
mono/profiler/Makefile.am
mono/profiler/decode.c
mono/profiler/mono-profiler-iomap.c
mono/profiler/proflog.c
mono/tests/.gitignore
mono/tests/Makefile.am
mono/tests/cominterop.cs
mono/tests/finalizer-wait.cs
mono/tests/gc-descriptors/Makefile.am
mono/tests/libtest.c
mono/tests/load-exceptions.cs
mono/tests/load-missing.il
mono/tests/marshal2.cs
mono/tests/runtime-invoke.cs
mono/tests/sgen-domain-unload-2.cs [new file with mode: 0644]
mono/tests/sgen-suspend.cs [new file with mode: 0644]
mono/tests/unload-appdomain-on-shutdown.cs [new file with mode: 0644]
mono/tests/verifier/badmd_constraint_must_be_visible.il [new file with mode: 0644]
mono/tests/verifier/invalid_bad_catch_clause_type.il [new file with mode: 0755]
mono/tests/verifier/unverifiable_merge_concrete_types_with_shared_iface.il [new file with mode: 0644]
mono/tests/verifier/valid_delegate_return_variant_iface.cs [new file with mode: 0644]
mono/tests/verifier/valid_merge_boxed_values.il [new file with mode: 0644]
mono/utils/Makefile.am
mono/utils/atomic.c [new file with mode: 0644]
mono/utils/atomic.h [new file with mode: 0644]
mono/utils/lock-free-alloc.c
mono/utils/lock-free-array-queue.c
mono/utils/lock-free-queue.c
mono/utils/mach-support-amd64.c
mono/utils/mach-support-arm.c
mono/utils/mach-support-unknown.c
mono/utils/mach-support-x86.c
mono/utils/mach-support.h
mono/utils/mono-codeman.c
mono/utils/mono-codeman.h
mono/utils/mono-compiler.h
mono/utils/mono-context.c
mono/utils/mono-dl.h
mono/utils/mono-error-internals.h
mono/utils/mono-error.c
mono/utils/mono-hwcap-arm.c [new file with mode: 0644]
mono/utils/mono-hwcap-arm.h [new file with mode: 0644]
mono/utils/mono-hwcap-empty.c [new file with mode: 0644]
mono/utils/mono-hwcap-ia64.c [new file with mode: 0644]
mono/utils/mono-hwcap-ia64.h [new file with mode: 0644]
mono/utils/mono-hwcap-mips.c [new file with mode: 0644]
mono/utils/mono-hwcap-mips.h [new file with mode: 0644]
mono/utils/mono-hwcap-ppc.c [new file with mode: 0644]
mono/utils/mono-hwcap-ppc.h [new file with mode: 0644]
mono/utils/mono-hwcap-s390x.c [new file with mode: 0644]
mono/utils/mono-hwcap-s390x.h [new file with mode: 0644]
mono/utils/mono-hwcap-sparc.c [new file with mode: 0644]
mono/utils/mono-hwcap-sparc.h [new file with mode: 0644]
mono/utils/mono-hwcap-x86.c [new file with mode: 0644]
mono/utils/mono-hwcap-x86.h [new file with mode: 0644]
mono/utils/mono-hwcap.c [new file with mode: 0644]
mono/utils/mono-hwcap.h [new file with mode: 0644]
mono/utils/mono-linked-list-set.c
mono/utils/mono-membar.h
mono/utils/mono-memory-model.h
mono/utils/mono-mmap.c
mono/utils/mono-mutex.c [new file with mode: 0644]
mono/utils/mono-mutex.h [new file with mode: 0644]
mono/utils/mono-path.c
mono/utils/mono-poll.c
mono/utils/mono-proclib.c
mono/utils/mono-semaphore.c
mono/utils/mono-semaphore.h
mono/utils/mono-threads-mach.c
mono/utils/mono-threads-posix.c
mono/utils/mono-threads-windows.c
mono/utils/mono-threads.c
mono/utils/mono-threads.h
mono/utils/monobitset.c
msvc/libmonoruntime.vcxproj
msvc/libmonoutils.vcxproj
msvc/scripts/net_4_5.sln
msvc/scripts/order.xml
nacl/README [new file with mode: 0644]
nacl/common.sh [new file with mode: 0644]
nacl/config-nacl-runtime.cache [new file with mode: 0644]
nacl/config-nacl-runtime64.cache [new file with mode: 0644]
nacl/nacl-runtime-mono.sh [new file with mode: 0755]
nacl/nacl_interp_loader_sdk.sh [new file with mode: 0755]
po/mcs/Makefile.in.in
runtime/Makefile.am
runtime/mono-wrapper.in
scripts/Makefile.am
support/Makefile.am
support/dirent.c
support/fcntl.c
support/mac-reachability.c [new file with mode: 0644]
support/map.c
support/map.h
support/nl.c
support/pwd.c
support/signal.c
support/sys-mman.c
support/sys-stat.c
support/sys-uio.c [new file with mode: 0644]
support/unistd.c
tools/locale-builder/Driver.cs
tools/locale-builder/Makefile.am
tools/locale-builder/NumberFormatEntry.cs
tools/locale-builder/Patterns.cs
tools/sgen/sgen-grep-binprot.c

index bce6a59c239936f3a08e5b804742f0a7dbbc78bd..8c899ab014b01789ccfab56844f2bf821b7e9f0d 100644 (file)
@@ -55,7 +55,7 @@ _ReSharper*/
 ~$*
 
 # Autotools-generated files
-Makefile
+/Makefile
 Makefile.in
 aclocal.m4
 autom4te.cache
index 161bf7dccf74b51e076fb8227ff5ef84749e7a70..5b38b2fe3ef8108083daa3a4b959b5f5b795c029 100644 (file)
@@ -23,13 +23,13 @@ if test x$GCC != xyes; then
 fi
 case $host in
 i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
-|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*)
+|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*|x86_64-apple-darwin*)
     pic_options='-fPIC'
     ;;
 ?86-pc-cygwin*|i?86-pc-cygwin*)
     pic_options='-DDLL_EXPORT'
     ;;
-i?86-apple-darwin*)
+i?86-apple-darwin*|arm-apple-darwin*)
     pic_options='-fno-common'
     ;;
 *)
index 3a51ad424c8e6efb91e74fe08f085fce547af8a2..8fc51d24df070776c14a3ba73fd310cba639610a 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/usr/bin/env bash
 # Run this to generate all the initial makefiles, etc.
 # Ripped off from GNOME macros version
 
index 099c56eecf1969e4d14f6102545c32388253cf16..bb513debf0f6c6712416c3b1ea8179b4e6f7ce18 100644 (file)
@@ -1,7 +1,7 @@
 # Process this file with autoconf to produce a configure script.
 #AC_PREREQ([2.62])
 
-AC_INIT(mono, [3.0.8],
+AC_INIT(mono, [3.3.0],
         [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono])
 
 AC_CONFIG_SRCDIR([README])
@@ -72,6 +72,9 @@ no_version_script=no
 # Set to yes if Unix sockets cannot be created in an anonymous namespace
 need_link_unlink=no
 
+#Set to extra linker flags to be passed to the runtime binaries (mono /mono-sgen)
+extra_runtime_ldflags=""
+
 # Thread configuration inspired by sleepycat's db
 AC_MSG_CHECKING([host platform characteristics])
 libgc_threads=no
@@ -171,9 +174,8 @@ case "$host" in
                AC_DEFINE(PTHREAD_POINTER_ID, 1, [pthread is a pointer])
                libdl=
                libgc_threads=pthreads
-               # This doesn't seem to work as of 7.0 on amd64
-               with_sigaltstack=no
                use_sigposix=yes
+               has_dtrace=yes
                ;;
        *-*-*openbsd*)
                host_win32=no
@@ -314,14 +316,19 @@ case "$host" in
                        dnl Snow Leopard and newer config.guess reports as this
                        i*86-*-darwin*)
                                BROKEN_DARWIN_FLAGS="-arch i386 -D_XOPEN_SOURCE"
-                               CPPFLAGS="$CPPFLAGS $BROKEN_DARWIN_FLAGS"
+                               BROKEN_DARWIN_CPPFLAGS="-D_XOPEN_SOURCE"
+                               CPPFLAGS="$CPPFLAGS $BROKEN_DARWIN_CPPFLAGS"
                                CFLAGS="$CFLAGS $BROKEN_DARWIN_FLAGS"
                                CXXFLAGS="$CXXFLAGS $BROKEN_DARWIN_FLAGS"
                                CCASFLAGS="$CCASFLAGS $BROKEN_DARWIN_FLAGS"
-                               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC $BROKEN_DARWIN_FLAGS"
+                               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC $BROKEN_DARWIN_CPPFLAGS"
                                CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC $BROKEN_DARWIN_FLAGS"
-                               CPPFLAGS_FOR_EGLIB="$CPPFLAGS_FOR_EGLIB $BROKEN_DARWIN_FLAGS"
+                               CPPFLAGS_FOR_EGLIB="$CPPFLAGS_FOR_EGLIB $BROKEN_DARWIN_CPPFLAGS"
                                CFLAGS_FOR_EGLIB="$CFLAGS_FOR_EGLIB $BROKEN_DARWIN_FLAGS"
+                               extra_runtime_ldflags="-stack_size,0x800000"
+                               ;;
+                       x*64-*-darwin*)
+                               extra_runtime_ldflags="-stack_size,0x800000"
                                ;;
                        arm*-darwin*)
                                has_dtrace=no
@@ -351,6 +358,7 @@ if test x$need_link_unlink = xyes; then
    AC_DEFINE(NEED_LINK_UNLINK, 1, [Define if Unix sockets cannot be created in an anonymous namespace])
 fi
 
+AC_SUBST(extra_runtime_ldflags)
 AM_CONDITIONAL(HOST_WIN32, test x$host_win32 = xyes)
 AM_CONDITIONAL(TARGET_WIN32, test x$target_win32 = xyes)
 AM_CONDITIONAL(PLATFORM_LINUX, echo x$target_os | grep -q linux)
@@ -490,6 +498,20 @@ AC_CHECK_HEADERS(linux/magic.h)
 # not 64 bit clean in cross-compile
 AC_CHECK_SIZEOF(void *, 4)
 
+AC_CACHE_CHECK([for clang],
+       mono_cv_clang,[
+       AC_TRY_COMPILE([], [
+               #ifdef __clang__
+               #else
+               #error "FAILED"
+               #endif
+               return 0;
+       ],
+       [mono_cv_clang=yes],
+       [mono_cv_clang=no],
+       [])
+])
+
 WARN=''
 if test x"$GCC" = xyes; then
         WARN='-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes  -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value'
@@ -510,7 +532,7 @@ if test x"$GCC" = xyes; then
 
                ORIG_CFLAGS=$CFLAGS
                # Check for the normal version, since gcc ignores unknown -Wno options
-               CFLAGS="$CFLAGS -Wunused-but-set-variable"
+               CFLAGS="$CFLAGS -Wunused-but-set-variable -Werror"
                AC_MSG_CHECKING(for -Wno-unused-but-set-variable option to gcc)
                AC_TRY_COMPILE([],[
                                return 0;
@@ -521,6 +543,12 @@ if test x"$GCC" = xyes; then
                   AC_MSG_RESULT(no)
                   CFLAGS=$ORIG_CFLAGS
                ])
+
+               if test "x$mono_cv_clang" = "xyes"; then
+                  # https://bugzilla.samba.org/show_bug.cgi?id=8118
+                  WARN="$WARN -Qunused-arguments"
+                  WARN="$WARN -Wno-unused-function -Wno-tautological-compare"
+               fi
 else
        # The Sun Forte compiler complains about inline functions that access static variables
        # so disable all inlining.
@@ -533,20 +561,6 @@ fi
 CFLAGS="$CFLAGS -g $WARN"
 CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -g"
 
-AC_CACHE_CHECK([for clang],
-       mono_cv_clang,[
-       AC_TRY_COMPILE([], [
-               #ifdef __clang__
-               #else
-               #error "FAILED"
-               #endif
-               return 0;
-       ],
-       [mono_cv_clang=yes],
-       [mono_cv_clang=no],
-       [])
-])
-
 # Where's the 'mcs' source tree?
 if test -d $srcdir/mcs; then
   mcsdir=mcs
@@ -743,7 +757,7 @@ DISABLED_FEATURES=none
 AC_ARG_ENABLE(minimal, [  --enable-minimal=LIST      drop support for LIST subsystems.
      LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug, appdomains, verifier, 
      reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, perfcounters, normalization, assembly_remapping, shared_perfcounters, remoting,
-        sgen_remset, sgen_marksweep_par, sgen_marksweep_fixed, sgen_marksweep_fixed_par, sgen_copying.],
+        security, sgen_remset, sgen_marksweep_par, sgen_marksweep_fixed, sgen_marksweep_fixed_par, sgen_copying.],
 [
        for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do
                eval "mono_feature_disable_$feature='yes'"
@@ -887,6 +901,11 @@ if test "x$mono_feature_disable_remoting" = "xyes"; then
        AC_MSG_NOTICE([Disabled remoting])
 fi
 
+if test "x$mono_feature_disable_security" = "xyes"; then
+       AC_DEFINE(DISABLE_SECURITY, 1, [Disable CAS/CoreCLR security])
+       AC_MSG_NOTICE([Disabled CAS/CoreCLR security manager (used e.g. for Moonlight)])
+fi
+
 if test "x$mono_feature_disable_sgen_remset" = "xyes"; then
        AC_DEFINE(DISABLE_SGEN_REMSET, 1, [Disable wbarrier=remset support in SGEN.])
        AC_MSG_NOTICE([Disabled wbarrier=remset support in SGEN.])
@@ -1074,6 +1093,8 @@ AC_TRY_COMPILE([
        AC_DEFINE_UNQUOTED(MONO_ZERO_LEN_ARRAY, 1, [Length of zero length arrays])
 ])
 
+AC_CHECK_HEADERS(nacl/nacl_dyncode.h)
+
 if test x$target_win32 = xno; then
 
        dnl hires monotonic clock support
@@ -1129,6 +1150,8 @@ if test x$target_win32 = xno; then
 
        AC_CHECK_HEADERS(execinfo.h)
 
+       AC_CHECK_HEADERS(sys/auxv.h)
+
        AC_CHECK_FUNCS(getgrgid_r)
        AC_CHECK_FUNCS(getgrnam_r)
        AC_CHECK_FUNCS(getpwnam_r)
@@ -1542,8 +1565,7 @@ if test x$target_win32 = xno; then
                AC_MSG_RESULT(ok)
        ], [
                AC_MSG_RESULT(no)
-               AC_MSG_WARN(Using mono_mutex_t for recursive mutexes)
-               AC_DEFINE(USE_MONO_MUTEX, 1, [Use mono_mutex_t])
+               AC_ERROR(Posix system lacks support for recursive mutexes)
        ])
        AC_CHECK_FUNCS(pthread_attr_setstacksize)
        AC_CHECK_FUNCS(pthread_attr_getstack pthread_attr_getstacksize)
@@ -1784,11 +1806,13 @@ if test x$target_win32 = xno; then
        dnl **********************************
        dnl *** epoll                      ***
        dnl **********************************
-       AC_CHECK_HEADERS(sys/epoll.h)
-       haveepoll=no
-       AC_CHECK_FUNCS(epoll_ctl, [haveepoll=yes], )
-       if test "x$haveepoll" = "xyes" -a "x$ac_cv_header_sys_epoll_h" = "xyes" ; then
-               AC_DEFINE(HAVE_EPOLL, 1, [epoll supported])
+       if test "x$ac_cv_header_nacl_nacl_dyncode_h" = "xno"; then
+               AC_CHECK_HEADERS(sys/epoll.h)
+               haveepoll=no
+               AC_CHECK_FUNCS(epoll_ctl, [haveepoll=yes], )
+               if test "x$haveepoll" = "xyes" -a "x$ac_cv_header_sys_epoll_h" = "xyes"; then
+                       AC_DEFINE(HAVE_EPOLL, 1, [epoll supported])
+               fi
        fi
 
        havekqueue=no
@@ -1959,6 +1983,9 @@ if test x$target_win32 = xno; then
        AC_CHECK_FUNCS(lockf)
        AC_CHECK_FUNCS(swab)
        AC_CHECK_FUNCS(setusershell endusershell)
+       AC_CHECK_FUNCS(futimens utimensat)
+       AC_CHECK_FUNCS(fstatat mknodat readlinkat)
+       AC_CHECK_FUNCS(readv writev preadv pwritev)
        AC_CHECK_SIZEOF(size_t)
        AC_CHECK_TYPES([blksize_t], [AC_DEFINE(HAVE_BLKSIZE_T)], , 
                [#include <sys/types.h>
@@ -1973,6 +2000,8 @@ if test x$target_win32 = xno; then
        AC_CHECK_TYPES([struct flock], [AC_DEFINE(HAVE_STRUCT_FLOCK)], ,
                [#include <unistd.h>
                 #include <fcntl.h>])
+       AC_CHECK_TYPES([struct iovec], [AC_DEFINE(HAVE_STRUCT_IOVEC)], ,
+               [#include <sys/uio.h>])
        AC_CHECK_TYPES([struct pollfd], [AC_DEFINE(HAVE_STRUCT_POLLFD)], ,
                [#include <sys/poll.h>])
        AC_CHECK_TYPES([struct stat], [AC_DEFINE(HAVE_STRUCT_STAT)], ,
@@ -2002,6 +2031,11 @@ if test x$target_win32 = xno; then
                [struct statfs.f_flags],,, 
                [#include <sys/types.h>
                 #include <sys/vfs.h>])
+       AC_CHECK_MEMBERS(
+               [struct stat.st_atim, struct stat.st_mtim, struct stat.st_ctim],,, 
+               [#include <sys/types.h>
+                #include <sys/stat.h>
+                #include <unistd.h>])
 
        dnl Favour xattr through glibc, but use libattr if we have to
        AC_CHECK_FUNC(lsetxattr, ,
@@ -2294,16 +2328,32 @@ AC_ARG_ENABLE(nacl_codegen, [  --enable-nacl-codegen      Enable Native Client c
 AC_ARG_ENABLE(nacl_gc, [  --enable-nacl-gc           Enable Native Client garbage collection], enable_nacl_gc=$enableval, enable_nacl_gc=no)
 
 AM_CONDITIONAL(NACL_CODEGEN, test x$enable_nacl_codegen != xno)
+
+dnl
+dnl Hack to use system mono for operations in build/install not allowed in NaCl.
+dnl
+nacl_self_host=""
+if test "x$ac_cv_header_nacl_nacl_dyncode_h" = "xyes"; then
+   nacl_self_host="nacl_self_host"
+fi
+AC_SUBST(nacl_self_host)
+
 if test "x$enable_nacl_codegen" = "xyes"; then
    MONO_NACL_ALIGN_MASK_OFF=1
-   CPPFLAGS="$CPPFLAGS -D__native_client_codegen__"
    AC_DEFINE(TARGET_NACL, 1, [...])
+   AC_DEFINE(__native_client_codegen__, 1, [...])
 else
    MONO_NACL_ALIGN_MASK_OFF=0
-   CPPFLAGS="$CPPFLAGS -D__default_codegen__"
+   AC_DEFINE(__default_codegen__, 1, [...])
 fi
 if test "x$enable_nacl_gc" = "xyes"; then
-   CPPFLAGS="$CPPFLAGS -finstrument-for-thread-suspension -D__native_client_gc__"
+   if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then
+      INSTRUMENT_CFLAG="-finstrument-for-thread-suspension"
+   else
+      # Not yet implemented
+      INSTRUMENT_CFLAG=""
+   fi
+   CPPFLAGS="$CPPFLAGS $INSTRUMENT_CFLAG -D__native_client_gc__"
 fi
 AC_SUBST(MONO_NACL_ALIGN_MASK_OFF)
 
@@ -2462,6 +2512,10 @@ case "$host" in
                TARGET=AMD64;
                arch_target=amd64;
                JIT_SUPPORTED=yes
+               if test "x$ac_cv_sizeof_void_p" = "x4"; then
+                       AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
+                       sizeof_register=8
+               fi
                case $host_os in
                  linux*)
                        sgen_supported=true
@@ -2540,9 +2594,9 @@ case "$host" in
                arch_target=arm;
                ACCESS_UNALIGNED="no"
                JIT_SUPPORTED=yes
-               CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1 -D__ARM_EABI__ -DHAVE_ARMV6=1"
+               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
                # libgc's gc_locks.h depends on this
-           NESTED_LIBGC_FLAGS="$NESTED_LIBGC_FLAGS -DHAVE_ARMV6"
+           CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC"
                sgen_supported=true
                ;;
        arm*-linux*)
@@ -2552,23 +2606,19 @@ case "$host" in
                JIT_SUPPORTED=yes
                sgen_supported=true
                AOT_SUPPORTED="yes"
-               if test "x$cross_compiling" != "xno"; then
-                  # Provide sane defaults when cross-compiling
-                  CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1 -D__ARM_EABI__ -DHAVE_ARMV6=1"
-                  NESTED_LIBGC_FLAGS="$NESTED_LIBGC_FLAGS -DHAVE_ARMV6"
-               fi
-               ;;
-       s390-*-linux*)
-               TARGET=S390;
-               arch_target=s390;
-               ACCESS_UNALIGNED="yes"
-               JIT_SUPPORTED=yes
-               sgen_supported=true
-               # Required CFLAGS for s390[x].  USE_STRING_INLINES is automatic with gcc 4.1
-               CFLAGS="$CFLAGS -mbackchain -D__USE_STRING_INLINES"
+               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
                ;;
+# TODO: make proper support for NaCl host.
+#        arm*-*nacl)
+#              TARGET=ARM;
+#              arch_target=arm;
+#              ACCESS_UNALIGNED="no"
+#              JIT_SUPPORTED=yes
+#              sgen_supported=true
+#              AOT_SUPPORTED="no"
+#              ;;
        s390x-*-linux*)
-               TARGET=S390x;
+               TARGET=S390X;
                arch_target=s390x;
                ACCESS_UNALIGNED="yes"
                JIT_SUPPORTED=yes
@@ -2588,7 +2638,7 @@ if test "x$host" != "x$target"; then
                arch_target=arm;
                ACCESS_UNALIGNED="no"
                JIT_SUPPORTED=yes
-               CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1 -D__ARM_EABI__ -DHAVE_ARMV6=1"
+               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
                jit_wanted=true
                # Can't use tls, since it depends on the runtime detection of tls offsets
                # in mono-compiler.h
@@ -2622,13 +2672,34 @@ if test "x$host" != "x$target"; then
                AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
                sizeof_register=8
                ;;
-   *-*-nacl)
+# TODO: make proper support for NaCl target.
+#   arm*-*nacl)
+#              TARGET=ARM
+#              arch_target=arm
+#              AC_DEFINE(TARGET_ARM, 1, [...])
+#              ACCESS_UNALIGNED="no"
+#              JIT_SUPPORTED=yes
+#              sizeof_register=4
+#               CPPFLAGS="$CPPFLAGS \
+#                    -D__ARM_EABI__ \
+#                    -D__arm__ \
+#                    -D__portable_native_client__ \
+#                    -Dtimezone=_timezone \
+#                    -DDISABLE_SOCKETS \
+#                    -DDISABLE_ATTACH \
+#                    -DUSE_NEWLIB"
+#              jit_wanted=true
+               # Can't use tls, since it depends on the runtime detection of tls offsets
+               # in mono-compiler.h
+#              with_tls=pthread
+#              ;;
+   i686-*-nacl)
                TARGET=X86
                arch_target=x86
                AC_DEFINE(TARGET_X86, 1, [...])
                sizeof_register=4
                ;;
-   arm*-unknown-linux-*)
+   arm*-linux-*)
                TARGET=ARM;
                arch_target=arm;
                AC_DEFINE(TARGET_ARM, 1, [...])
@@ -2643,11 +2714,11 @@ if test "x$host" != "x$target"; then
                case "$target" in
                armv7l-unknown-linux-gnueabi*)
                        # TEGRA
-                       CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1"
+                       CPPFLAGS="$CPPFLAGS"
                        ;;
                armv5-*-linux-androideabi*)
                        AC_DEFINE(TARGET_ANDROID, 1, [...])
-                       CPPFLAGS="$CPPFLAGS -DARM_FPU_NONE"
+                       CPPFLAGS="$CPPFLAGS"
                        ;;
                esac
                ;;
@@ -2656,7 +2727,6 @@ if test "x$host" != "x$target"; then
        esac
 fi
 
-# FIXME: Define the others as well
 case "$TARGET" in
 X86)
        AC_DEFINE(TARGET_X86, 1, [...])
@@ -2674,14 +2744,32 @@ POWERPC64)
        AC_DEFINE(TARGET_POWERPC, 1, [...])
        AC_DEFINE(TARGET_POWERPC64, 1, [...])
        ;;
-S390x)
+S390X)
        AC_DEFINE(TARGET_S390X, 1, [...])
        ;;
 MIPS)
        AC_DEFINE(TARGET_MIPS, 1, [...])
        ;;
+IA64)
+       AC_DEFINE(TARGET_IA64, 1, [...])
+       ;;
+SPARC)
+       AC_DEFINE(TARGET_SPARC, 1, [...])
+       ;;
+SPARC64)
+       AC_DEFINE(TARGET_SPARC64, 1, [...])
+       ;;
 esac
 
+dnl Use GCC atomic ops if they work on the target.
+if test x$GCC = "xyes"; then
+       case $TARGET in
+       X86 | AMD64 | ARM | POWERPC | POWERPC64 | MIPS)
+               AC_DEFINE(USE_GCC_ATOMIC_OPS, 1, [...])
+               ;;
+       esac
+fi
+
 if test "x$target_mach" = "xyes"; then
    if test "x$TARGET" = "xARM"; then
          AC_DEFINE(TARGET_IOS,1,[The JIT/AOT targets iOS])
@@ -2870,7 +2958,7 @@ mono_debugger_supported=no
 AC_MSG_CHECKING(if the Mono Debugger is supported on this platform)
 if test "x$mono_debugger_supported" = "xyes"; then
        BOEHM_DEFINES="$BOEHM_DEFINES -DMONO_DEBUGGER_SUPPORTED"
-       NESTED_LIBGC_FLAGS="-DMONO_DEBUGGER_SUPPORTED"
+       CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DMONO_DEBUGGER_SUPPORTED"
 fi
 AM_CONDITIONAL(MONO_DEBUGGER_SUPPORTED, test x$mono_debugger_supported = xyes)
 AC_MSG_RESULT($mono_debugger_supported)
@@ -2890,11 +2978,6 @@ if test "x$icall_tables" = "xno"; then
    AC_DEFINE(DISABLE_ICALL_TABLES, 1, [Icall tables disabled])
 fi
 
-if test "x$mono_cv_clang" = "xyes"; then
-   # FIXME: This causes many compilation errors
-   with_tls=pthread
-fi
-
 if test "x$with_tls" = "x__thread"; then
        AC_DEFINE(HAVE_KW_THREAD, 1, [Have __thread keyword])
        # Pass the information to libgc
@@ -2903,55 +2986,122 @@ if test "x$with_tls" = "x__thread"; then
        AC_TRY_COMPILE([static __thread int foo __attribute__((tls_model("initial-exec")));], [
                ], [
                        AC_MSG_RESULT(yes)
-                       # CLANG doesn't support this yet, and it prints warnings about it
-                       if test "x$mono_cv_clang" = "xno"; then
-                               AC_DEFINE(HAVE_TLS_MODEL_ATTR, 1, [tld_model available])
-                       fi
+                       AC_DEFINE(HAVE_TLS_MODEL_ATTR, 1, [tls_model available])
                ], [
                        AC_MSG_RESULT(no)
        ])
 fi
 
-if test ${TARGET} = ARM && test x$cross_compiling = xno && test x$enable_mcs_build != xno; then
+if test ${TARGET} = ARM; then
        dnl ******************************************
        dnl *** Check to see what FPU is available ***
        dnl ******************************************
        AC_MSG_CHECKING(which FPU to use)
 
+       #
+       # This is a bit tricky:
+       #
+       # if (__ARM_PCS_VFP) {
+       #       /* mfloat-abi=hard == VFP with hard ABI */
+       # } elif (!__SOFTFP__) {
+       #       /* mfloat-abi=softfp == VFP with soft ABI */
+       # } else {
+       #       /* mfloat-abi=soft == no VFP */
+       # }
+       #
+       # The exception is iOS (w/ GCC) where none of the above
+       # are defined (but iOS always uses the 'softfp' ABI).
+       #
+       # No support for FPA.
+       #
+
        fpu=NONE
-       if gcc -v 2>&1 | grep -q -- '--with-float=hard'; then
-          fpu=VFP_HARD
+
+       # iOS GCC always uses the 'softfp' ABI.
+       if test x"$GCC" = xyes && test x$platform_darwin = xyes; then
+               fpu=VFP
        fi
 
+       # Are we using the 'hard' ABI?
        if test x$fpu = xNONE; then
-          ORIG_CFLAGS=$CFLAGS
-          CFLAGS="$CFLAGS -mfpu=vfp -mfloat-abi=softfp"
-          AC_TRY_RUN([
-                               int main () { __asm__ ("faddd   d7, d6, d7"); return 0; }
-                               ], fpu=VFP, fpu=NONE)
-          CFLAGS=$ORIG_CFLAGS
+               AC_TRY_COMPILE([], [
+                       #ifndef __ARM_PCS_VFP
+                       #error "Float ABI is not 'hard'"
+                       #endif
+                       return 0;
+               ], [
+                       fpu=VFP_HARD
+               ], [
+                       fpu=NONE
+               ])
        fi
 
+       # No 'hard' ABI. 'soft' or 'softfp'?
        if test x$fpu = xNONE; then
                AC_TRY_COMPILE([], [
-                       __asm__ ("ldfd f0, [r0]");
-                       ], fpu=FPA, fpu=NONE)
+                       #ifdef __SOFTFP__
+                       #error "Float ABI is not 'softfp'"
+                       #endif
+                       return 0;
+               ], [
+                       fpu=VFP
+               ], [
+                       fpu=NONE
+               ])
        fi
 
        AC_MSG_RESULT($fpu)
        CPPFLAGS="$CPPFLAGS -DARM_FPU_$fpu=1"
        unset fpu
 
-       AC_MSG_CHECKING(for ARMV6)
-       AC_TRY_RUN([
-               int main () { __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r" (0) : "memory"); return 0; }
-                       ], armv6=yes, armv6=no)
+       dnl *********************************************
+       dnl *** Check which ARM version(s) we can use ***
+       dnl *********************************************
+       AC_MSG_CHECKING(which ARM version to use)
 
-       AC_MSG_RESULT($armv6)
-       if test ${armv6} = yes; then
-          AC_DEFINE(HAVE_ARMV6, 1, "Host supports ARMV6 instructions")
-          # libgc's gc_locks.h depends on this
-          NESTED_LIBGC_FLAGS="$NESTED_LIBGC_FLAGS -DHAVE_ARMV6"
+       AC_TRY_COMPILE([], [
+               #if !defined(__ARM_ARCH_5T__) && !defined(__ARM_ARCH_5TE__) && !defined(__ARM_ARCH_5TEJ__)
+               #error Not on ARM v5.
+               #endif
+               return 0;
+       ], [
+               arm_v5=yes
+       ], [])
+
+       AC_TRY_COMPILE([], [
+               #if !defined(__ARM_ARCH_6J__) && !defined(__ARM_ARCH_6ZK__) && !defined(__ARM_ARCH_6K__) && !defined(__ARM_ARCH_6T2__) && !defined(__ARM_ARCH_6M__)
+               #error Not on ARM v6.
+               #endif
+               return 0;
+       ], [
+               arm_v5=yes
+               arm_v6=yes
+       ], [])
+
+       AC_TRY_COMPILE([], [
+               #if !defined(__ARM_ARCH_7A__) && !defined(__ARM_ARCH_7R__) && !defined(__ARM_ARCH_7EM__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7S__)
+               #error Not on ARM v7.
+               #endif
+               return 0;
+       ], [
+               arm_v5=yes
+               arm_v6=yes
+               arm_v7=yes
+       ], [])
+
+       if test x$arm_v5 = xyes; then
+               AC_DEFINE(HAVE_ARMV5, 1, [ARM v5])
+               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV5=1"
+       fi
+
+       if test x$arm_v6 = xyes; then
+               AC_DEFINE(HAVE_ARMV6, 1, [ARM v6])
+               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV6=1"
+       fi
+
+       if test x$arm_v7 = xyes; then
+               AC_DEFINE(HAVE_ARMV7, 1, [ARM v7])
+               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV7=1"
        fi
 fi
 
@@ -2979,7 +3129,7 @@ case "x$gc" in
                # The problem with this approach, is that during a reconfigure, the main
                # configure scripts gets invoked with these arguments, so we use separate
                # variables understood by libgc's configure to pass CPPFLAGS and CFLAGS.
-               TMP_CPPFLAGS="$CPPFLAGS $NESTED_LIBGC_FLAGS"
+               TMP_CPPFLAGS="$CPPFLAGS $CPPFLAGS_FOR_LIBGC"
                if test x$TARGET = xSPARC -o x$TARGET = xSPARC64; then
                        TMP_CPPFLAGS=`echo $TMP_CPPFLAGS | sed -e 's/-D_FILE_OFFSET_BITS=64//g'`
                fi
@@ -3069,7 +3219,7 @@ fi
 if test "x$enable_shared" = "xno" -a "x$enable_executables" = "xyes"; then
    LIBMONO_LA=libmini-static.la
 else
-   LIBMONO_LA=libmono-$API_VER.la
+   LIBMONO_LA=libmonosgen-$API_VER.la
 fi
 AC_SUBST(LIBMONO_LA)
 
@@ -3122,13 +3272,11 @@ AM_CONDITIONAL(SPARC64, test x$TARGET = xSPARC64)
 AM_CONDITIONAL(X86, test x$TARGET = xX86)
 AM_CONDITIONAL(AMD64, test x$TARGET = xAMD64)
 AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
-AM_CONDITIONAL(M68K, test x$TARGET = xM68K)
 AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS)
 AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC)
 AM_CONDITIONAL(POWERPC64, test x$TARGET = xPOWERPC64)
 AM_CONDITIONAL(ARM, test x$TARGET = xARM)
-AM_CONDITIONAL(S390, test x$TARGET = xS390)
-AM_CONDITIONAL(S390x, test x$TARGET = xS390x)
+AM_CONDITIONAL(S390X, test x$TARGET = xS390x)
 AM_CONDITIONAL(HOST_X86, test x$HOST = xX86)
 AM_CONDITIONAL(HOST_AMD64, test x$HOST = xAMD64)
 AM_CONDITIONAL(HOST_ARM, test x$HOST = xARM)
@@ -3320,7 +3468,6 @@ mono/arch/x86/Makefile
 mono/arch/amd64/Makefile
 mono/arch/ppc/Makefile
 mono/arch/sparc/Makefile
-mono/arch/s390/Makefile
 mono/arch/s390x/Makefile
 mono/arch/arm/Makefile
 mono/arch/ia64/Makefile
@@ -3395,6 +3542,11 @@ if test x$host_win32 = xyes; then
    sed -e "s,-mno-cygwin,,g" libtool > libtool.new; mv libtool.new libtool; chmod 755 libtool
 fi
 
+if test x$platform_darwin = xyes; then
+   # This doesn't seem to be required and it slows down parallel builds
+   sed -e 's,lock_old_archive_extraction=yes,lock_old_archive_extraction=no,g' < libtool > libtool.new && mv libtool.new libtool && chmod +x libtool
+fi
+
 (
   case $prefix in
   NONE) prefix=$ac_default_prefix ;;
index 264015165698d0bfab4b8a68acd09f7f1df1fcd7..ed159ba25ebe24f694056d12f77153f1d162e3bb 100644 (file)
@@ -1,12 +1,4 @@
 Name: Reactive Extensions
 Description: Reactive Extensions
 Version: @VERSION@
-Libs: 
--r:@prefix@/lib/mono/4.5/System.Reactive.Interfaces.dll
--r:@prefix@/lib/mono/4.5/System.Reactive.Core.dll
--r:@prefix@/lib/mono/4.5/System.Reactive.Linq.dll
--r:@prefix@/lib/mono/4.5/System.Reactive.PlatformServices.dll
--r:@prefix@/lib/mono/4.5/System.Reactive.Providers.dll
--r:@prefix@/lib/mono/4.5/System.Reactive.Debugger.dll
--r:@prefix@/lib/mono/4.5/System.Reactive.Experimental.dll
--r:@prefix@/lib/mono/4.5/System.Reactive.Runtime.Remoting.dll
+Libs: -r:@prefix@/lib/mono/4.5/System.Reactive.Interfaces.dll -r:@prefix@/lib/mono/4.5/System.Reactive.Core.dll -r:@prefix@/lib/mono/4.5/System.Reactive.Linq.dll -r:@prefix@/lib/mono/4.5/System.Reactive.PlatformServices.dll -r:@prefix@/lib/mono/4.5/System.Reactive.Providers.dll -r:@prefix@/lib/mono/4.5/System.Reactive.Debugger.dll -r:@prefix@/lib/mono/4.5/System.Reactive.Experimental.dll -r:@prefix@/lib/mono/4.5/System.Reactive.Runtime.Remoting.dll
index e32d464dbbe4fccda68a0a0e08b515bbe8f18769..526d00c1be7822b1cfa9de6a821dd5c7ed0795e8 100644 (file)
@@ -29,7 +29,7 @@ i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
 ?86-pc-cygwin*|i?86-pc-cygwin*)
     pic_options='-DDLL_EXPORT'
     ;;
-i?86-apple-darwin*)
+i?86-apple-darwin*|arm-apple-darwin*)
     pic_options='-fno-common'
     ;;
 *)
index dfe9ec4856d4aa02c27427fdbf8ac130f67ad7ab..fdbce134b9767857b4641d0991cf384fc9911696 100644 (file)
@@ -136,10 +136,16 @@ AC_CHECK_SIZEOF(long)
 AC_CHECK_SIZEOF(long long)
 AC_CHECK_FUNCS(strlcpy stpcpy strtok_r rewinddir vasprintf)
 
+#
+# Mono currently supports 10.6, but strndup is not available prior to 10.7; avoiding
+# the detection of strndup on OS X so Mono built on 10.7+ still runs on 10.6. This can be
+# removed once support for 10.6 is dropped.
 #
 # iOS detection of strndup and getpwuid_r is faulty for some reason so let's simply avoid it
 #
-if test x$target_ios = xno; then
+if test x$target_osx = xyes; then
+AC_CHECK_FUNCS(getpwuid_r)
+elif test x$target_ios = xno; then
 AC_CHECK_FUNCS(strndup getpwuid_r)
 fi
 
index 19e4f4d59e249c893c45027634c6498a3b329898..ba0f93f9be53ddad6d9470987036458efb4df91e 100644 (file)
@@ -37,9 +37,6 @@ typedef signed   @GSIZE@ gssize;
 #endif
 
 #if defined (__native_client__)
-#define sem_trywait(x) sem_wait(x)
-#define sem_timedwait(x,y) sem_wait(x)
-#define getdtablesize() (32768)
 #undef G_BREAKPOINT
 #define G_BREAKPOINT()
 #endif
index 48a9192ab69fad8ea0d2ce2d195549af6442982e..d52ad9488029ce44211dca08a75c78bd0d857d23 100644 (file)
@@ -154,6 +154,15 @@ g_file_open_tmp (const gchar *tmpl, gchar **name_used, GError **error)
 gchar *
 g_get_current_dir (void)
 {
+#ifdef __native_client__
+       char *buffer;
+       if ((buffer = getenv("NACL_PWD"))) {
+               buffer = g_strdup(buffer);
+       } else {
+               buffer = g_strdup(".");
+       }
+       return buffer;
+#else
        int s = 32;
        char *buffer = NULL, *r;
        gboolean fail;
@@ -172,4 +181,5 @@ g_get_current_dir (void)
         * so we return the buffer here since it has a pointer to the valid string
         */
        return buffer;
+#endif
 }
index 87eb27aef2a4e5465ac29c180cf7cd4f0d9ca785..9dd5eaa3d543be12f59583fe0d439bfbaece2b32 100644 (file)
  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
+#include <config.h>
+
 #include <glib.h>
 #include <gmodule.h>
 
-#if defined(__native_client__)
-GModule *
-g_module_open (const gchar *file, GModuleFlags flags)
-{
-       printf("dlopen() not supported on Native Client.\n");
-       return NULL;
-}
-
-
-gboolean
-g_module_symbol (GModule *module, const gchar *symbol_name, gpointer *symbol)
-{
-       return FALSE;
-}
-
-
-const gchar*
-g_module_error(void)
-{
-       return "dlopen not supported on Native Client.";
-}
-
-gboolean
-g_module_close (GModule *module)
-{
-       return FALSE;
-}
-
-gchar*
-g_module_build_path (const gchar *directory, const gchar *module_name)
-{
-       return NULL;
-}
-
-#else
-
-#ifdef G_OS_UNIX
+#if defined(G_OS_UNIX) && defined(HAVE_DLFCN_H)
 #include <dlfcn.h>
 
 /* For Linux and Solaris, need to add others as we port this */
@@ -322,5 +288,3 @@ g_module_build_path (const gchar *directory, const gchar *module_name)
        return g_strdup_printf ("%s%s" LIBSUFFIX, lib_prefix, module_name); 
 }
 
-#endif /* __native_client__ */
-
index c3dff59d891e981649c26de4bc17524b47cb8462..aff9f460c57c6ce3e675e00640e1d0ff01c396c5 100644 (file)
@@ -148,6 +148,12 @@ g_logv (const gchar *log_domain, GLogLevelFlags log_level, const gchar *format,
        if (vasprintf (&msg, format, args) < 0)
                return;
 
+#ifdef G_OS_WIN32
+       printf ("%s%s%s\n",
+            log_domain != NULL ? log_domain : "",
+            log_domain != NULL ? ": " : "",
+            msg);
+#else
 #if MONOTOUCH
        FILE *target = stderr;
 #else
@@ -158,6 +164,7 @@ g_logv (const gchar *log_domain, GLogLevelFlags log_level, const gchar *format,
                log_domain != NULL ? log_domain : "",
                log_domain != NULL ? ": " : "",
                msg);
+#endif
        free (msg);
        if (log_level & fatal){
                fflush (stdout);
index 822de0117a079369b9404429662e120bd24245d4..10b8312c8024111780ee382688cd4c8754b1f1ac 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 822de0117a079369b9404429662e120bd24245d4
+Subproject commit 10b8312c8024111780ee382688cd4c8754b1f1ac
index 65d49e2a2aeea33e77a21dc118c4b8359cec3c45..9f2115f712ba6c2726969e963ebe4aa246048529 100644 (file)
 
        JNIEXPORT int JNICALL ikvm_msync(void* address, jint size)
        {
+#if defined(__native_client__) && defined(USE_NEWLIB)
+               g_assert_not_reached ();
+               return -1;
+#else
                return msync(address, size, MS_SYNC);
+#endif
        }
 #endif
index e32d464dbbe4fccda68a0a0e08b515bbe8f18769..526d00c1be7822b1cfa9de6a821dd5c7ed0795e8 100644 (file)
@@ -29,7 +29,7 @@ i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
 ?86-pc-cygwin*|i?86-pc-cygwin*)
     pic_options='-DDLL_EXPORT'
     ;;
-i?86-apple-darwin*)
+i?86-apple-darwin*|arm-apple-darwin*)
     pic_options='-fno-common'
     ;;
 *)
index e4be3c7d183e31d4410d2f99c4c5ec32d4676a15..ca7ce54f19461e6f38f49c57c9ed49c849b8a935 100644 (file)
@@ -26,7 +26,7 @@
  * None of this is safe with dlclose and incremental collection.
  * But then not much of anything is safe in the presence of dlclose.
  */
-#if defined(__linux__) && !defined(_GNU_SOURCE)
+#if (defined(__linux__) || defined(__native_client__)) && !defined(_GNU_SOURCE)
     /* Can't test LINUX, since this must be define before other includes */
 #   define _GNU_SOURCE
 #endif
@@ -54,7 +54,7 @@
 #if !defined(SUNOS4) && !defined(SUNOS5DL) && !defined(IRIX5) && \
     !defined(MSWIN32) && !defined(MSWINCE) && \
     !(defined(ALPHA) && defined(OSF1)) && \
-    !defined(HPUX) && !(defined(LINUX) && defined(__ELF__)) && \
+    !defined(HPUX) && !((defined(LINUX) || defined(NACL)) && defined(__ELF__)) && \
     !defined(RS6000) && !defined(SCO_ELF) && !defined(DGUX) && \
     !(defined(FREEBSD) && defined(__ELF__)) && \
     !(defined(OPENBSD) && (defined(__ELF__) || defined(M68K))) && \
@@ -91,7 +91,7 @@
 #   define ELFSIZE ARCH_ELFSIZE
 #endif
 
-#if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
+#if (defined(LINUX) || defined(NACL)) && defined(__ELF__) || defined(SCO_ELF) || \
     (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
     (defined(OPENBSD) && defined(__ELF__)) || \
     (defined(NETBSD) && defined(__ELF__)) || defined(HURD)
@@ -297,7 +297,7 @@ void GC_register_dynamic_libraries()
 # endif /* !USE_PROC ... */
 # endif /* SUNOS */
 
-#if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
+#if (defined(LINUX) || defined(NACL)) && defined(__ELF__) || defined(SCO_ELF) || \
     (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
     (defined(OPENBSD) && defined(__ELF__)) || \
     (defined(NETBSD) && defined(__ELF__)) || defined(HURD)
@@ -394,7 +394,7 @@ GC_bool GC_register_main_static_data()
 /* For glibc 2.2.4+.  Unfortunately, it doesn't work for older */
 /* versions.  Thanks to Jakub Jelinek for most of the code.    */
 
-# if defined(LINUX) /* Are others OK here, too? */ \
+# if (defined(LINUX) || defined(NACL)) /* Are others OK here, too? */ \
      && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
          || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) 
 
index 8705d07a1bbc072365c40381008c9e178821eea3..e3c89c1fe9bb4a0e14d52d041efc84bf6d4d3cdd 100644 (file)
 #       define GC_CLEAR_DEFINED
 #    endif /* ALPHA */
 #    ifdef ARM32
+#       ifdef __native_client__
+#          define MASK_REGISTER(reg, cond) "bic" cond " " reg ", " reg ", #0xc0000000\n"
+#          define NACL_ALIGN() ".align 4\n"
+#       else
+#          define MASK_REGISTER(reg, cond)
+#          define NACL_ALIGN()
+#       endif
         inline static int GC_test_and_set(volatile unsigned int *addr) {
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__)
-          int ret, tmp;
-          __asm__ __volatile__ (
-                                 "1:\n"
-                                 "ldrex %0, [%3]\n"
-                                 "strex %1, %2, [%3]\n" 
-                                 "teq %1, #0\n"
-                                 "bne 1b\n"
-                                 : "=&r" (ret), "=&r" (tmp)
-                                 : "r" (1), "r" (addr)
-                                 : "memory", "cc");
-          return ret;
-#else
-          int oldval;
-          /* SWP on ARM is very similar to XCHG on x86.  Doesn't lock the
-           * bus because there are no SMP ARM machines.  If/when there are,
-           * this code will likely need to be updated. */
-          /* See linuxthreads/sysdeps/arm/pt-machine.h in glibc-2.1 */
-          __asm__ __volatile__("swp %0, %1, [%2]"
-                            : "=&r"(oldval)
-                            : "r"(1), "r"(addr)
-                            : "memory");
-          return oldval;
-#endif
+                 __sync_lock_test_and_set (addr, 1);
         }
 #       define GC_TEST_AND_SET_DEFINED
       inline static void GC_clear(volatile unsigned int *addr) {
-#ifdef HAVE_ARMV6
-                 /* Memory barrier */
-                 __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r" (0) : "memory");
-#endif
+                 __sync_synchronize ();
+
                  *(addr) = 0;
       }
 #     define GC_CLEAR_DEFINED
+#     undef NACL_ALIGN
+#     undef MASK_REGISTER
 #    endif /* ARM32 */
 #    ifdef CRIS
         inline static int GC_test_and_set(volatile unsigned int *addr) {
index ec53e3a95eab84e5de67b9b3247c96516ee74e70..418e046ae1267715dd3022625f839cf81d302dd8 100644 (file)
 /* Determine the machine type: */
 # if defined(__native_client__)
 #    define NACL
-#    define I386
-#    define mach_type_known
+#    if !defined(__portable_native_client__) && !defined(__arm__)
+#        define I386
+#        define mach_type_known
+#    else
+         /* Here we will rely upon arch-specific defines. */
+#    endif
 # endif
 # if defined(__arm__) || defined(__thumb__)
 #    define ARM32
-#    if !defined(LINUX) && !defined(NETBSD) && !defined(DARWIN)
+#    if defined(NACL)
+#      define mach_type_known
+#    elif !defined(LINUX) && !defined(NETBSD) && !defined(DARWIN)
 #      define NOSYS
 #      define mach_type_known
 #    endif
 #   endif
 # endif
 
+
+# ifdef NACL
+#   define OS_TYPE "NACL"
+#   if defined(__GLIBC__)
+#      define DYNAMIC_LOADING
+#   endif
+#   define DATASTART ((ptr_t)0x10020000)
+    extern int _end[];
+#   define DATAEND (_end)
+#   ifdef STACK_GRAN
+#      undef STACK_GRAN
+#   endif /* STACK_GRAN */
+#   define STACK_GRAN 0x10000
+#   define HEURISTIC1
+#   define USE_MMAP
+#   define USE_MUNMAP
+#   define USE_MMAP_ANON
+#   ifdef USE_MMAP_FIXED
+#      undef USE_MMAP_FIXED
+#   endif
+#   define GETPAGESIZE() 65536
+#   define MAX_NACL_GC_THREADS 1024
+# endif
+
 # ifdef VAX
 #   define MACH_TYPE "VAX"
 #   define ALIGNMENT 4 /* Pointers are longword aligned by 4.2 C compiler */
 #        define HEAP_START DATAEND
 #      endif /* USE_MMAP */
 #   endif /* DGUX */
-#   ifdef NACL
-#      define OS_TYPE "NACL"
-       extern int etext[];
-//#    define DATASTART ((ptr_t)((((word) (etext)) + 0xfff) & ~0xfff))
-#       define DATASTART ((ptr_t)0x10000000)
-       extern int _end[];
-#      define DATAEND (_end)
-#      ifdef STACK_GRAN
-#        undef STACK_GRAN
-#      endif /* STACK_GRAN */
-#      define STACK_GRAN 0x10000
-#      define HEURISTIC1
-#      ifdef USE_MMAP
-#        undef USE_MMAP
-#      endif
-#      ifdef USE_MUNMAP
-#        undef USE_MUNMAP
-#      endif
-#      ifdef USE_MMAP_ANON
-#        undef USE_MMAP_ANON
-#      endif
-#      ifdef USE_MMAP_FIXED
-#        undef USE_MMAP_FIXED
-#      endif
-#      define GETPAGESIZE() 65536
-#      define MAX_NACL_GC_THREADS 1024
-#   endif
 #   ifdef LINUX
 #      ifndef __GNUC__
          /* The Intel compiler doesn't like inline assembly */
 #       define OS_TYPE "LINUX"
 #       define LINUX_STACKBOTTOM
 #       define DYNAMIC_LOADING
-       extern int __data_start[];
+       extern int __data_start[] __attribute__((weak));
 #       define DATASTART ((ptr_t)(__data_start))
-    extern int _end[];
-#   define DATAEND (_end)
-#   define CACHE_LINE_SIZE 256
-#   define GETPAGESIZE() 4096
+        extern int _end[] __attribute__((weak));
+#       define DATAEND (_end)
+#       define CACHE_LINE_SIZE 256
+#       define GETPAGESIZE() 4096
 #   endif
 # endif
 
 # endif
 
 # ifdef ARM32
-#   define CPP_WORDSZ 32
+# if defined( NACL )
+#   define MACH_TYPE "NACL"
+# else
 #   define MACH_TYPE "ARM32"
+# endif
+#   define CPP_WORDSZ 32
 #   define ALIGNMENT 4
 #   ifdef NETBSD
 #       define OS_TYPE "NETBSD"
index bd72739f580bb71c87c71ab39671a8f5ee6a01c2..e285a9a24ba3e4ca794e0abbcdcdccc2f2034fb2 100644 (file)
@@ -13,7 +13,12 @@ struct thread_stop_info {
 /* the instrumented function uses any callee saved registers, they may  */
 /* be pushed to the stack much earlier.  Also, on amd64 'push' puts 8   */
 /* bytes on the stack even though our pointers are 4 bytes.             */
+#ifdef __arm__
+/* For ARM we save r4-r8, r10-r12, r14 */
+#define NACL_GC_REG_STORAGE_SIZE 9
+#else
 #define NACL_GC_REG_STORAGE_SIZE 20
+#endif
     ptr_t reg_storage[NACL_GC_REG_STORAGE_SIZE];
 #endif
 };
index 5b2868d808b691d90fd521f01e6b28757f5c86f9..53d47c53dbc86338b6b06c00141da1b8a8766098 100644 (file)
@@ -1003,7 +1003,11 @@ long a, b, c, d, e, f;
     buf[1024] = 0x15;
     (void) sprintf(buf, format, a, b, c, d, e, f);
     if (buf[1024] != 0x15) ABORT("GC_printf clobbered stack");
+#ifdef NACL
+    WRITE(GC_stdout, buf, strlen(buf));
+#else
     if (WRITE(GC_stdout, buf, strlen(buf)) < 0) ABORT("write to stdout failed");
+#endif
 }
 
 void GC_err_printf(format, a, b, c, d, e, f)
@@ -1015,13 +1019,21 @@ long a, b, c, d, e, f;
     buf[1024] = 0x15;
     (void) sprintf(buf, format, a, b, c, d, e, f);
     if (buf[1024] != 0x15) ABORT("GC_err_printf clobbered stack");
+#ifdef NACL
+    WRITE(GC_stderr, buf, strlen(buf));
+#else
     if (WRITE(GC_stderr, buf, strlen(buf)) < 0) ABORT("write to stderr failed");
+#endif
 }
 
 void GC_err_puts(s)
 GC_CONST char *s;
 {
+#ifdef NACL
+    WRITE(GC_stderr, s, strlen(s));
+#else
     if (WRITE(GC_stderr, s, strlen(s)) < 0) ABORT("write to stderr failed");
+#endif
 }
 
 #if defined(LINUX) && !defined(SMALL_CONFIG)
index e6ac64b62a8ee24f5a94a1e3040f9e6ae4d6197b..334ff1de219a3dc0c9af66d4271706fd52f806fd 100644 (file)
 #endif
 
 #ifdef NACL
-int nacl_park_threads_now = 0;
+volatile int __nacl_thread_suspension_needed = 0;
 pthread_t nacl_thread_parker = -1;
 
-int nacl_thread_parked[MAX_NACL_GC_THREADS];
-int nacl_thread_used[MAX_NACL_GC_THREADS];
-int nacl_thread_parking_inited = 0;
-int nacl_num_gc_threads = 0;
+volatile int nacl_thread_parked[MAX_NACL_GC_THREADS];
+volatile int nacl_thread_used[MAX_NACL_GC_THREADS];
+volatile int nacl_thread_parking_inited = 0;
+volatile int nacl_num_gc_threads = 0;
 pthread_mutex_t nacl_thread_alloc_lock = PTHREAD_MUTEX_INITIALIZER;
 __thread int nacl_thread_idx = -1;
 __thread GC_thread nacl_gc_thread_self = NULL;
@@ -471,7 +471,7 @@ static void pthread_stop_world()
     GC_printf1("pthread_stop_world: num_threads %d\n", nacl_num_gc_threads - 1);
     #endif
     nacl_thread_parker = pthread_self();
-    nacl_park_threads_now = 1;
+    __nacl_thread_suspension_needed = 1;
     
     while (1) {
        #define NACL_PARK_WAIT_NANOSECONDS 100000
@@ -513,31 +513,49 @@ static void pthread_stop_world()
 
 #define NACL_STORE_REGS()  \
     do {                  \
-       asm("push %rbx");\
-       asm("push %rbp");\
-       asm("push %r12");\
-       asm("push %r13");\
-       asm("push %r14");\
-       asm("push %r15");\
-       asm("mov %%esp, %0" : "=m" (nacl_gc_thread_self->stop_info.stack_ptr));\
+       __asm__ __volatile__ ("push %rbx");\
+       __asm__ __volatile__ ("push %rbp");\
+       __asm__ __volatile__ ("push %r12");\
+       __asm__ __volatile__ ("push %r13");\
+       __asm__ __volatile__ ("push %r14");\
+       __asm__ __volatile__ ("push %r15");\
+       __asm__ __volatile__ ("mov %%esp, %0" : "=m" (nacl_gc_thread_self->stop_info.stack_ptr));\
         memcpy(nacl_gc_thread_self->stop_info.reg_storage, nacl_gc_thread_self->stop_info.stack_ptr, NACL_GC_REG_STORAGE_SIZE * sizeof(ptr_t));\
-       asm("add $48, %esp");\
-        asm("add %r15, %rsp");\
+        __asm__ __volatile__ ("naclasp $48, %r15");\
     } while (0)
 
 #elif __i386__
 
 #define NACL_STORE_REGS()  \
     do {                  \
-       asm("push %ebx");\
-       asm("push %ebp");\
-       asm("push %esi");\
-       asm("push %edi");\
-       asm("mov %%esp, %0" : "=m" (nacl_gc_thread_self->stop_info.stack_ptr));\
+       __asm__ __volatile__ ("push %ebx");\
+       __asm__ __volatile__ ("push %ebp");\
+       __asm__ __volatile__ ("push %esi");\
+       __asm__ __volatile__ ("push %edi");\
+       __asm__ __volatile__ ("mov %%esp, %0" : "=m" (nacl_gc_thread_self->stop_info.stack_ptr));\
         memcpy(nacl_gc_thread_self->stop_info.reg_storage, nacl_gc_thread_self->stop_info.stack_ptr, NACL_GC_REG_STORAGE_SIZE * sizeof(ptr_t));\
-       asm("add $16, %esp");\
+       __asm__ __volatile__ ("add $16, %esp");\
     } while (0)
 
+#elif __arm__
+
+#define NACL_STORE_REGS()  \
+    do {                   \
+       __asm__ __volatile__ (                      \
+               ".align 4\n\t"                      \
+               "bic %0, %0, #0xc0000000\n\t"       \
+               "str sp, [%0]\n\t"                  \
+               "bic %1, %1, #0xc0000000\n\t"       \
+               "stm %1, {r4-r8,r10-r12,lr}\n\t"    \
+                       :                                               \
+                       : "r" (&nacl_gc_thread_self->stop_info.stack_ptr), \
+                        "r"(nacl_gc_thread_self->stop_info.reg_storage) \
+                       : "memory");                 \
+    } while (0)
+#else
+
+#error "Please port NACL_STORE_REGS"
+
 #endif
 
 void nacl_pre_syscall_hook()
@@ -550,6 +568,8 @@ void nacl_pre_syscall_hook()
     }
 }
 
+void __nacl_suspend_thread_if_needed();
+
 void nacl_post_syscall_hook()
 {
     /* Calling __nacl_suspend_thread_if_needed() right away should guarantee we don't mutate the GC set. */
@@ -560,7 +580,7 @@ void nacl_post_syscall_hook()
 }
 
 void __nacl_suspend_thread_if_needed() {
-    if (nacl_park_threads_now) {
+    if (__nacl_thread_suspension_needed) {
         pthread_t self = pthread_self();
         int local_dummy = 0;
         /* Don't try to park the thread parker. */
@@ -579,7 +599,7 @@ void __nacl_suspend_thread_if_needed() {
             nacl_gc_thread_self->stop_info.stack_ptr = (ptr_t)(&local_dummy);
         }
         nacl_thread_parked[nacl_thread_idx] = 1;
-        while (nacl_park_threads_now)
+        while (__nacl_thread_suspension_needed)
             ; /* spin */
         nacl_thread_parked[nacl_thread_idx] = 0;
 
@@ -689,7 +709,7 @@ static void pthread_start_world()
 #   if DEBUG_THREADS
     GC_printf0("World starting\n");
 #   endif
-    nacl_park_threads_now = 0;
+    __nacl_thread_suspension_needed = 0;
     if (GC_notify_event)
         GC_notify_event (GC_EVENT_POST_START_WORLD);
 #endif /* NACL */
index ccafb3b1169e96fa6847a794ea4b01d1421ba8b1..b302688a76e589fc603da7c0ce126696f842579e 100644 (file)
@@ -687,10 +687,10 @@ void GC_mark_thread_local_free_lists(void)
 static struct GC_Thread_Rep first_thread;
 
 #ifdef NACL
-extern int nacl_thread_parked[MAX_NACL_GC_THREADS];
-extern int nacl_thread_used[MAX_NACL_GC_THREADS];
-extern int nacl_thread_parking_inited;
-extern int nacl_num_gc_threads;
+extern volatile int nacl_thread_parked[MAX_NACL_GC_THREADS];
+extern volatile int nacl_thread_used[MAX_NACL_GC_THREADS];
+extern volatile int nacl_thread_parking_inited;
+extern volatile int nacl_num_gc_threads;
 extern pthread_mutex_t nacl_thread_alloc_lock;
 extern __thread int nacl_thread_idx;
 extern __thread GC_thread nacl_gc_thread_self;
@@ -699,10 +699,20 @@ extern void nacl_pre_syscall_hook();
 extern void nacl_post_syscall_hook();
 extern void nacl_register_gc_hooks(void (*pre)(), void (*post)());
 
+#include <stdio.h>
+
+struct nacl_irt_blockhook {
+  int (*register_block_hooks)(void (*pre)(void), void (*post)(void));
+};
+
+extern size_t nacl_interface_query(const char *interface_ident,
+                            void *table, size_t tablesize);
+
 void nacl_initialize_gc_thread()
 {
     int i;
-    nacl_register_gc_hooks(nacl_pre_syscall_hook, nacl_post_syscall_hook);
+    static struct nacl_irt_blockhook gc_hook;
+
     pthread_mutex_lock(&nacl_thread_alloc_lock);
     if (!nacl_thread_parking_inited)
     {
@@ -710,6 +720,10 @@ void nacl_initialize_gc_thread()
             nacl_thread_used[i] = 0;
             nacl_thread_parked[i] = 0;
         }
+        // TODO: replace with public 'register hook' function when
+        // available from glibc
+        nacl_interface_query("nacl-irt-blockhook-0.1", &gc_hook, sizeof(gc_hook));
+        gc_hook.register_block_hooks(nacl_pre_syscall_hook, nacl_post_syscall_hook);
         nacl_thread_parking_inited = 1;
     }
     GC_ASSERT(nacl_num_gc_threads <= MAX_NACL_GC_THREADS);
@@ -942,6 +956,7 @@ int GC_segment_is_thread_stack(ptr_t lo, ptr_t hi)
 /* Return the number of processors, or i<= 0 if it can't be determined.        */
 int GC_get_nprocs()
 {
+#ifndef NACL
     /* Should be "return sysconf(_SC_NPROCESSORS_ONLN);" but that      */
     /* appears to be buggy in many cases.                              */
     /* We look for lines "cpu<n>" in /proc/stat.                       */
@@ -971,6 +986,9 @@ int GC_get_nprocs()
     }
     close(f);
     return result;
+#else /* NACL */
+    return sysconf(_SC_NPROCESSORS_ONLN);
+#endif
 }
 #endif /* GC_LINUX_THREADS */
 
@@ -1362,12 +1380,10 @@ int WRAP_FUNC(pthread_join)(pthread_t thread, void **retval)
 }
 
 #ifdef NACL
-/* Native Client doesn't support pthread cleanup functions, */
-/* so wrap pthread_exit and manually cleanup the thread.    */
+/* TODO: remove, NaCl glibc now supports pthread cleanup functions. */
 void
 WRAP_FUNC(pthread_exit)(void *status)
 {
-    GC_thread_exit_proc(0); 
     REAL_FUNC(pthread_exit)(status);
 }
 #endif
index 1afc37ea6704702e97ad4efe9f1aa112b8133847..bd784cd85e86a4cd8bdff624ead49b66bac4f369 100644 (file)
@@ -3,10 +3,11 @@
 .\" Copyright 2003 Ximian, Inc. 
 .\" Copyright 2004-2011 Novell, Inc. 
 .\" Copyright 2011-2012 Xamarin Inc
+.\" Copyright 2013 7digital Media Ltd.
 .\" Author:
 .\"   Miguel de Icaza (miguel@gnu.org)
 .\"
-.TH Mono "Mono 2.11"
+.TH Mono "Mono 3.0"
 .SH NAME
 mono \- Mono's ECMA-CLI native code generator (Just-in-Time and Ahead-of-Time)
 .SH SYNOPSIS
@@ -570,7 +571,8 @@ itself, and not typically of interest to runtime users or developers.
 \fB--break method\fR
 Inserts a breakpoint before the method whose name is `method'
 (namespace.class:methodname).  Use `Main' as method name to insert a
-breakpoint on the application's main method.
+breakpoint on the application's main method.  You can use it also with
+generics, for example "System.Collections.Generic.Queue`1:Peek"
 .TP
 \fB--breakonex\fR
 Inserts a breakpoint on exceptions.  This allows you to debug your
@@ -897,6 +899,18 @@ above locations. If you don't want the mapping to be performed you can set this
 variable in your environment before starting the application and no action will
 be taken.
 .TP
+\fBMONO_ASPNET_WEBCONFIG_CACHESIZE\fR
+Mono has a cache of ConfigSection objects for speeding up WebConfigurationManager
+queries. Its default size is 100 items, and when more items are needed, cache
+evictions start happening. If evictions are too frequent this could impose
+unnecessary overhead, which could be avoided by using this environment variable
+to set up a higher cache size (or to lower memory requirements by decreasing it).
+.TP
+\fBMONO_CAIRO_DEBUG_DISPOSE\fR
+If set, causes Mono.Cairo to collect stack traces when objects are allocated,
+so that the finalization/Dispose warnings include information about the
+instance's origin.
+.TP
 \fBMONO_CFG_DIR\fR
 If set, this variable overrides the default system configuration directory
 ($PREFIX/etc). It's used to locate machine.config file.
@@ -1176,6 +1190,11 @@ are allocated (clear-at-gc).   The consistency check ensures that
 there are no major to minor references that are not on the remembered
 sets. 
 .TP
+\fBmod-union-consistency-check\fR
+Checks that the mod-union cardtable is consistent before each
+finishing major collection pause.  This check is only applicable to
+concurrent major collectors.
+.TP
 \fBcheck-mark-bits\fR
 Checks that mark bits in the major heap are consistent at the end of
 each major collection.  Consistent mark bits mean that if an object is
@@ -1609,6 +1628,10 @@ for example, to see managed frame names on gdb backtraces.
 Enables the maximum JIT verbosity for the specified method. This is
 very helpfull to diagnose a miscompilation problems of a specific
 method.
+.TP
+\fBMONO_VERBOSE_HWCAP\fR
+If set, makes the JIT output information about detected CPU features
+(such as SSE, CMOV, FCMOV, etc) to stdout.
 .SH VALGRIND
 If you want to use Valgrind, you will find the file `mono.supp'
 useful, it contains the suppressions for the GC which trigger
index bfec495336f213c2cde7696e263022b8d279c5a9..8c43d43d62c7f98804ae3ff663b560380a534883 100644 (file)
@@ -53,7 +53,11 @@ else
 lib_dir = lib
 endif
 
+ifdef LIBRARY_SUBDIR
+the_libdir = $(topdir)/class/$(lib_dir)/$(PROFILE)/$(LIBRARY_SUBDIR)/
+else
 the_libdir = $(topdir)/class/$(lib_dir)/$(PROFILE)/
+endif
 ifdef LIBRARY_NEEDS_POSTPROCESSING
 build_libdir = fixup/$(PROFILE)/
 else
index 853d88fc363778820d5b6a6b5be1718c7690f00c..c270cc81ccf0f562604f81c10869e5364d426577 100644 (file)
@@ -66,7 +66,7 @@ do-profile-check: $(depsdir)/.stamp
            else \
                echo "*** The compiler '$(BOOTSTRAP_MCS)' doesn't appear to be usable." 1>&2; \
                 echo "*** You need Mono version 2.4 or better installed to build MCS" 1>&2 ; \
-                echo "*** Read INSTALL.txt for information on how to bootstrap a Mono installation." 1>&2 ; \
+                echo "*** Check mono README for information on how to bootstrap a Mono installation." 1>&2 ; \
                exit 1; fi; fi
 
 
index d1d2832be4df8cb35e793f000d2bfc86761bbdf1..7c7a36c353e4bb00cebc57d6dbd04f2c853cae8b 100644 (file)
@@ -80,9 +80,12 @@ include $(topdir)/build/config-default.make
 # Default PLATFORM and PROFILE if they're not already defined.
 
 ifndef PLATFORM
+$(info *** PLATFORM is not defined.)
 ifeq ($(OS),Windows_NT)
+$(info *** Assuming PLATFORM is 'win32'.)
 PLATFORM = win32
 else
+$(info *** Assuming PLATFORM is 'linux'.)
 PLATFORM = linux
 endif
 endif
index ced64e7a9c83d0e8471fa0d1e118c6b5c29972b2..1ea648c900b56c821fbfb206b4a294a9571bf9d5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BA19643F-7F03-4902-9BB6-E94F4467F56A}</ProjectGuid>\r
+    <ProjectGuid>{6088F0A1-9658-4B71-86DB-8685B9279154}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Accessibility-net_2_0</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3099fa21d5ac788bb891f069eacc80b244b5b41f..224ce9a3c5e6f80c16c48d898ab5d9aa6fc4748e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}</ProjectGuid>\r
+    <ProjectGuid>{3C0E9135-1458-47F6-9076-17FFB1E3E32F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Accessibility-net_4_0</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6303537d9c9ddb8b9951b3d3c5b0c8dc2dfda479..34dba8ba83f8bd1a2ea6c7f80f4f2a00d39bf2c6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}</ProjectGuid>\r
+    <ProjectGuid>{121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Accessibility-net_4_5</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 04cf7f28e291eba7fb70de460a78d51417267972..8312c6a4cd37e6331ac51bd3b40f9671d08d9180 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7F3ADC13-F208-4BA1-A5A8-90B2DD086A60}</ProjectGuid>\r
+    <ProjectGuid>{543FE97D-6C85-42C7-9C19-A4106C878F73}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Commons.Xml.Relaxng-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a6435e6c7ebbe0f43f247c6010367d31c1a77eca..8c44c79bd82f77da608178ca47d304b16623437f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1EEAA095-97DA-4B89-AF86-75420EA398DA}</ProjectGuid>\r
+    <ProjectGuid>{2F70B549-EA84-4C1D-93C0-05CEA551DDFF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Commons.Xml.Relaxng-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3f3ec76e4785d0db62fbe388cde57820b05333a1..978d6e3fa3dcd90d60e5346244f4d38a309838b6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4B2DAC6F-0527-4042-97C0-0B576ECA1A1C}</ProjectGuid>\r
+    <ProjectGuid>{0C6297C3-66BE-4FD1-B9B0-057950B32E94}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Commons.Xml.Relaxng-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 06fd2a6914c5730242b2760c815333a8cfcd792a..47087046305dc7deb4e7bd0df2a92ec488d8795d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2D856822-75AF-4D0C-A6CD-72FE9713AA75}</ProjectGuid>\r
+    <ProjectGuid>{09A994B6-D73D-4BB1-B0EE-3AB1DFFF2DA1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Commons.Xml.Relaxng-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_2_0.csproj">\r
-      <Project>{7F3ADC13-F208-4BA1-A5A8-90B2DD086A60}</Project>\r
+      <Project>{543FE97D-6C85-42C7-9C19-A4106C878F73}</Project>\r
       <Name>Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2e25f6f1041fc02627e435a1fc24ee6c6c388add..70bcf17b23a7f381cd1e7a362612a3fbf46dfd29 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0AA64685-B2E8-4DAC-B440-E48167BCCA00}</ProjectGuid>\r
+    <ProjectGuid>{07D36D76-142D-4C8D-80CD-CA073A31E1DE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Commons.Xml.Relaxng-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_4_0.csproj">\r
-      <Project>{1EEAA095-97DA-4B89-AF86-75420EA398DA}</Project>\r
+      <Project>{2F70B549-EA84-4C1D-93C0-05CEA551DDFF}</Project>\r
       <Name>Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a40dea6e8ab10ca219a5491497473ec53769ad0c..f9317c6d73cf59ee91558f3c1f1f793bd9f1ef98 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BA4C18A4-EF3B-42DD-957A-5C1BF4EE6359}</ProjectGuid>\r
+    <ProjectGuid>{7694FE57-6BB7-478E-BB4E-C5187167804F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Commons.Xml.Relaxng-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_4_5.csproj">\r
-      <Project>{4B2DAC6F-0527-4042-97C0-0B576ECA1A1C}</Project>\r
+      <Project>{0C6297C3-66BE-4FD1-B9B0-057950B32E94}</Project>\r
       <Name>Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2dda204c1cb190fdaa744f24734998bde305c037..230d9117dc81ab1a0bd3274fbc82132f17bbde8a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1F0602E2-AFBD-4229-A647-2E9D8EDB3C81}</ProjectGuid>\r
+    <ProjectGuid>{A98EAB08-7C3E-40CE-898E-3DF9A0939DB5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Compat.ICSharpCode.SharpZipLib-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0543daf00cf65f70ccd14f35bfba5334c3486995..0b5bf7def1c2c4839ab9de5ab9d546a26b67c19d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{50F09AFF-918B-442C-8380-A2398448E2DF}</ProjectGuid>\r
+    <ProjectGuid>{9E7D403F-232E-4126-ADF8-0897129C037F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Cscompmgd-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4f6a7e8f607cbe50c06c80b873c2d095ff51dc2d..2b9fcf7b07125fde68133eee8fe3915f94522991 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D5048C45-AD07-4E36-92FB-128208775B14}</ProjectGuid>\r
+    <ProjectGuid>{DCF7BFCB-23B0-41F0-94A3-0AEFA87EC799}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Cscompmgd-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 30b7abbfb7ac17d8eaddad1275e0e09773148bc1..be96a790732221bf1fa8664d3663b55c486ce826 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AD666708-4CC0-4822-B670-26D59A2D32AF}</ProjectGuid>\r
+    <ProjectGuid>{C67F17EE-7E1C-4B87-B58B-11458749DD70}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Cscompmgd-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4d8ef5ed0e3b72bcae80c0ef3772f608ea76e0e6..47d588418df3a0094c03966db39c7be839ccb8ab 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3B0B4F90-D5C5-4A93-9642-CF9D871D03AC}</ProjectGuid>\r
+    <ProjectGuid>{09C1F680-F5E0-421A-9040-D98664AF9895}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Cscompmgd-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Cscompmgd\Cscompmgd-net_2_0.csproj">\r
-      <Project>{50F09AFF-918B-442C-8380-A2398448E2DF}</Project>\r
+      <Project>{9E7D403F-232E-4126-ADF8-0897129C037F}</Project>\r
       <Name>Cscompmgd\Cscompmgd-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4df613ea77c808b8834608779bac41f1f8e004b9..56eeaaa49d333322ec3061448e6363208ba5f5db 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FD37F2F7-E709-4D8D-BDD1-CF48E25B3447}</ProjectGuid>\r
+    <ProjectGuid>{7E92EB42-C1FD-4AE4-AE19-FA7F534FFCA1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Cscompmgd-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Cscompmgd\Cscompmgd-net_4_0.csproj">\r
-      <Project>{D5048C45-AD07-4E36-92FB-128208775B14}</Project>\r
+      <Project>{DCF7BFCB-23B0-41F0-94A3-0AEFA87EC799}</Project>\r
       <Name>Cscompmgd\Cscompmgd-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 12a886770fa39024a93fea0666cefc53e3bfea1c..84d30761ef6b90b7cc9b4c9d2f6c37a908f27661 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C5D5DEB9-74DC-42FF-93C7-3316E4567B0E}</ProjectGuid>\r
+    <ProjectGuid>{C7D8B744-96E6-42A0-82C0-C191C686D485}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Cscompmgd-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Cscompmgd\Cscompmgd-net_4_5.csproj">\r
-      <Project>{AD666708-4CC0-4822-B670-26D59A2D32AF}</Project>\r
+      <Project>{C67F17EE-7E1C-4B87-B58B-11458749DD70}</Project>\r
       <Name>Cscompmgd\Cscompmgd-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5ca9640b515be30ed2e1363ffa83f8772426a21f..877f2fef582637b86f4e9ff68e8a34d9fc1ae05e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F2034C25-2454-42D9-8C41-0A16FA51B707}</ProjectGuid>\r
+    <ProjectGuid>{E580684B-ECFC-41D9-9AC7-FDDD0FDBD399}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\CustomMarshalers-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3176e459a822111f49c7df2de0c893d0dab6d544..e6e7f52da71a268d99501725a02cec074af01781 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FE886389-19C6-4F73-BE30-E6124F28FD57}</ProjectGuid>\r
+    <ProjectGuid>{974FC570-0B07-4912-A06A-99DF7B82DCF7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\CustomMarshalers-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 213ef0fd13953493c4c5dd83c4bf246434bb0860..3d5bc18396fcf10b129536d8e8a8eab1f1209965 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{69C23F98-A766-46FB-B83F-2F22BFC3E897}</ProjectGuid>\r
+    <ProjectGuid>{417E7FEB-E054-44F0-81FF-A896F4018DC7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\CustomMarshalers-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f3cfd1b0c612b58118b7786506d67715668c20c0..2c2ff46b9cdfc0e9961f18c4fb4b9eae818b9295 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0CEF008D-47D4-49DC-9B67-C1CC73F40D77}</ProjectGuid>\r
+    <ProjectGuid>{2D2DDD2D-5AE7-458B-B626-4475D671A7F9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\EntityFramework.SqlServer-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\EntityFramework\EntityFramework-net_4_5.csproj">\r
-      <Project>{AABFEC11-0171-447F-9093-6E118257D22C}</Project>\r
+      <Project>{7AC4183B-FA37-45D9-9069-47336EB37D0A}</Project>\r
       <Name>EntityFramework\EntityFramework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6b368623313640b3e72e0458862794c3ef313a0c..cb8829641fa3b2922aee39d3e142600e6cf6be69 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AABFEC11-0171-447F-9093-6E118257D22C}</ProjectGuid>\r
+    <ProjectGuid>{7AC4183B-FA37-45D9-9069-47336EB37D0A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\EntityFramework-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.CSharp\Microsoft.CSharp-net_4_5.csproj">\r
-      <Project>{94E8FEFF-9695-4F77-A8AB-85370336FE0D}</Project>\r
+      <Project>{AC2AB4A1-8005-4458-8B2B-614DA9BBC644}</Project>\r
       <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
diff --git a/mcs/class/Facades/Makefile b/mcs/class/Facades/Makefile
new file mode 100644 (file)
index 0000000..6d18c6c
--- /dev/null
@@ -0,0 +1,23 @@
+thisdir = class/Facades
+
+net_4_5_SUBDIRS = System.Runtime System.Linq System.Xml.XmlSerializer \
+       System.ServiceModel.Primitives System.Xml.ReaderWriter System.Diagnostics.Debug \
+       System.Runtime.Extensions System.Diagnostics.Tools System.Collections \
+       System.ComponentModel.EventBasedAsync System.ComponentModel System.ObjectModel \
+       System.Text.RegularExpressions System.Threading System.Runtime.InteropServices \
+       System.Reflection System.Globalization System.IO System.Reflection.Primitives \
+       System.Resources.ResourceManager System.Security.Principal System.Text.Encoding \
+       System.Text.Encoding.Extensions System.Linq.Queryable System.Linq.Expressions \
+       System.Net.Primitives System.Net.Requests System.Net.NetworkInformation \
+       System.Runtime.Serialization.Primitives System.Runtime.Serialization.Xml \
+       System.Runtime.Serialization.Json System.ServiceModel.Http \
+       System.Xml.XDocument System.Threading.Tasks System.Diagnostics.Contracts \
+       System.Dynamic.Runtime System.ComponentModel.Annotations System.Runtime.Numerics \
+       System.Linq.Parallel System.Collections.Concurrent System.Threading.Tasks.Parallel \
+       System.Reflection.Extensions
+
+SUBDIRS = $(net_4_5_SUBDIRS)
+
+include ../../build/rules.make
+
+dist-local: dist-default
diff --git a/mcs/class/Facades/System.Collections.Concurrent/AssemblyInfo.cs b/mcs/class/Facades/System.Collections.Concurrent/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..685be80
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Collections.Concurrent.dll")]
+[assembly: AssemblyDescription ("System.Collections.Concurrent.dll")]
+[assembly: AssemblyDefaultAlias ("System.Collections.Concurrent.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Collections.Concurrent/Makefile b/mcs/class/Facades/System.Collections.Concurrent/Makefile
new file mode 100644 (file)
index 0000000..bb8e26b
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Collections.Concurrent
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Collections.Concurrent.dll
+LIB_MCS_FLAGS = /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Collections.Concurrent/System.Collections.Concurrent.dll.sources b/mcs/class/Facades/System.Collections.Concurrent/System.Collections.Concurrent.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Collections.Concurrent/TypeForwarders.cs b/mcs/class/Facades/System.Collections.Concurrent/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..4103861
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.BlockingCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.ConcurrentBag<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.ConcurrentDictionary<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.IProducerConsumerCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.ConcurrentQueue<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.ConcurrentStack<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.Partitioner<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.OrderablePartitioner<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.Partitioner))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.EnumerablePartitionerOptions))]
+
diff --git a/mcs/class/Facades/System.Collections/AssemblyInfo.cs b/mcs/class/Facades/System.Collections/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..a96857e
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Collections.dll")]
+[assembly: AssemblyDescription ("System.Collections.dll")]
+[assembly: AssemblyDefaultAlias ("System.Collections.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Collections/Makefile b/mcs/class/Facades/System.Collections/Makefile
new file mode 100644 (file)
index 0000000..58797f2
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Collections
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Collections.dll
+LIB_MCS_FLAGS = /r:System /r:System.Core
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Collections/System.Collections.dll.sources b/mcs/class/Facades/System.Collections/System.Collections.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Collections/TypeForwarders.cs b/mcs/class/Facades/System.Collections/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..716fe5c
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.LinkedList<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.LinkedListNode<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.Queue<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.Stack<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.BitArray))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.Comparer<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.Dictionary<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.EqualityComparer<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.List<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.HashSet<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.SortedDictionary<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.SortedSet<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.StructuralComparisons))]
+
diff --git a/mcs/class/Facades/System.ComponentModel.Annotations/AssemblyInfo.cs b/mcs/class/Facades/System.ComponentModel.Annotations/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..8aa8cbc
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.ComponentModel.Annotations.dll")]
+[assembly: AssemblyDescription ("System.ComponentModel.Annotations.dll")]
+[assembly: AssemblyDefaultAlias ("System.ComponentModel.Annotations.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.ComponentModel.Annotations/Makefile b/mcs/class/Facades/System.ComponentModel.Annotations/Makefile
new file mode 100644 (file)
index 0000000..2d9f7b1
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.ComponentModel.Annotations
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.ComponentModel.Annotations.dll
+LIB_MCS_FLAGS = /r:System.ComponentModel.DataAnnotations
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.ComponentModel.Annotations/System.ComponentModel.Annotations.dll.sources b/mcs/class/Facades/System.ComponentModel.Annotations/System.ComponentModel.Annotations.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.ComponentModel.Annotations/TypeForwarders.cs b/mcs/class/Facades/System.ComponentModel.Annotations/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..0bc80b3
--- /dev/null
@@ -0,0 +1,52 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.AssociationAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ConcurrencyCheckAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ValidationAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.CustomValidationAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.DataType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.DataTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.DisplayAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.DisplayColumnAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.DisplayFormatAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.EditableAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.EnumDataTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.FilterUIHintAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.KeyAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.RangeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.RegularExpressionAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.RequiredAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.StringLengthAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.TimestampAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.UIHintAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ValidationContext))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ValidationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ValidationResult))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.Validator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption))]
+
diff --git a/mcs/class/Facades/System.ComponentModel.EventBasedAsync/AssemblyInfo.cs b/mcs/class/Facades/System.ComponentModel.EventBasedAsync/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..85cfdb9
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.ComponentModel.EventBasedAsync.dll")]
+[assembly: AssemblyDescription ("System.ComponentModel.EventBasedAsync.dll")]
+[assembly: AssemblyDefaultAlias ("System.ComponentModel.EventBasedAsync.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.ComponentModel.EventBasedAsync/Makefile b/mcs/class/Facades/System.ComponentModel.EventBasedAsync/Makefile
new file mode 100644 (file)
index 0000000..479bd20
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.ComponentModel.EventBasedAsync
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.ComponentModel.EventBasedAsync.dll
+LIB_MCS_FLAGS = /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.ComponentModel.EventBasedAsync/System.ComponentModel.EventBasedAsync.dll.sources b/mcs/class/Facades/System.ComponentModel.EventBasedAsync/System.ComponentModel.EventBasedAsync.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.ComponentModel.EventBasedAsync/TypeForwarders.cs b/mcs/class/Facades/System.ComponentModel.EventBasedAsync/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..df5c85a
--- /dev/null
@@ -0,0 +1,31 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.AsyncCompletedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.AsyncCompletedEventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.ProgressChangedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.ProgressChangedEventHandler))]
+
diff --git a/mcs/class/Facades/System.ComponentModel/AssemblyInfo.cs b/mcs/class/Facades/System.ComponentModel/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..828b771
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.ComponentModel.dll")]
+[assembly: AssemblyDescription ("System.ComponentModel.dll")]
+[assembly: AssemblyDefaultAlias ("System.ComponentModel.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.ComponentModel/Makefile b/mcs/class/Facades/System.ComponentModel/Makefile
new file mode 100644 (file)
index 0000000..6806602
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.ComponentModel
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.ComponentModel.dll
+LIB_MCS_FLAGS = /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.ComponentModel/System.ComponentModel.dll.sources b/mcs/class/Facades/System.ComponentModel/System.ComponentModel.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.ComponentModel/TypeForwarders.cs b/mcs/class/Facades/System.ComponentModel/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..238ceac
--- /dev/null
@@ -0,0 +1,32 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.CancelEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.IChangeTracking))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.IEditableObject))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.IRevertibleChangeTracking))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IServiceProvider))]
+
diff --git a/mcs/class/Facades/System.Diagnostics.Contracts/AssemblyInfo.cs b/mcs/class/Facades/System.Diagnostics.Contracts/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..2fc9947
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Diagnostics.Contracts.dll")]
+[assembly: AssemblyDescription ("System.Diagnostics.Contracts.dll")]
+[assembly: AssemblyDefaultAlias ("System.Diagnostics.Contracts.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Diagnostics.Contracts/Makefile b/mcs/class/Facades/System.Diagnostics.Contracts/Makefile
new file mode 100644 (file)
index 0000000..a6ffb84
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Diagnostics.Contracts
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Diagnostics.Contracts.dll
+LIB_MCS_FLAGS =
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Diagnostics.Contracts/System.Diagnostics.Contracts.dll.sources b/mcs/class/Facades/System.Diagnostics.Contracts/System.Diagnostics.Contracts.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Diagnostics.Contracts/TypeForwarders.cs b/mcs/class/Facades/System.Diagnostics.Contracts/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..ac2cc3d
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.Contract))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractClassAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractClassForAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractFailureKind))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractInvariantMethodAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractVerificationAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.PureAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractFailedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractAbbreviatorAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractArgumentValidatorAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractOptionAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ContractHelper))]
+
diff --git a/mcs/class/Facades/System.Diagnostics.Debug/AssemblyInfo.cs b/mcs/class/Facades/System.Diagnostics.Debug/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..f1e987d
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Diagnostics.Debug.dll")]
+[assembly: AssemblyDescription ("System.Diagnostics.Debug.dll")]
+[assembly: AssemblyDefaultAlias ("System.Diagnostics.Debug.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Diagnostics.Debug/Makefile b/mcs/class/Facades/System.Diagnostics.Debug/Makefile
new file mode 100644 (file)
index 0000000..440c475
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Diagnostics.Debug
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Diagnostics.Debug.dll
+LIB_MCS_FLAGS = /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Diagnostics.Debug/System.Diagnostics.Debug.dll.sources b/mcs/class/Facades/System.Diagnostics.Debug/System.Diagnostics.Debug.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Diagnostics.Debug/TypeForwarders.cs b/mcs/class/Facades/System.Diagnostics.Debug/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..e829ac7
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Debug))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Debugger))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggerBrowsableAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggerBrowsableState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggerDisplayAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggerHiddenAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggerNonUserCodeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggerStepThroughAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggerTypeProxyAttribute))]
+
diff --git a/mcs/class/Facades/System.Diagnostics.Tools/AssemblyInfo.cs b/mcs/class/Facades/System.Diagnostics.Tools/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..b6db9a1
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Diagnostics.Tools.dll")]
+[assembly: AssemblyDescription ("System.Diagnostics.Tools.dll")]
+[assembly: AssemblyDefaultAlias ("System.Diagnostics.Tools.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Diagnostics.Tools/Makefile b/mcs/class/Facades/System.Diagnostics.Tools/Makefile
new file mode 100644 (file)
index 0000000..24a69af
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Diagnostics.Tools
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Diagnostics.Tools.dll
+LIB_MCS_FLAGS = /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Diagnostics.Tools/System.Diagnostics.Tools.dll.sources b/mcs/class/Facades/System.Diagnostics.Tools/System.Diagnostics.Tools.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Diagnostics.Tools/TypeForwarders.cs b/mcs/class/Facades/System.Diagnostics.Tools/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..a07fed0
--- /dev/null
@@ -0,0 +1,29 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.CodeDom.Compiler.GeneratedCodeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.CodeAnalysis.SuppressMessageAttribute))]
+
diff --git a/mcs/class/Facades/System.Dynamic.Runtime/AssemblyInfo.cs b/mcs/class/Facades/System.Dynamic.Runtime/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..0853332
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Dynamic.Runtime.dll")]
+[assembly: AssemblyDescription ("System.Dynamic.Runtime.dll")]
+[assembly: AssemblyDefaultAlias ("System.Dynamic.Runtime.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Dynamic.Runtime/Makefile b/mcs/class/Facades/System.Dynamic.Runtime/Makefile
new file mode 100644 (file)
index 0000000..ed5c735
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Dynamic.Runtime
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Dynamic.Runtime.dll
+LIB_MCS_FLAGS =
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Dynamic.Runtime/System.Dynamic.Runtime.dll.sources b/mcs/class/Facades/System.Dynamic.Runtime/System.Dynamic.Runtime.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Dynamic.Runtime/TypeForwarders.cs b/mcs/class/Facades/System.Dynamic.Runtime/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..2a7a27c
--- /dev/null
@@ -0,0 +1,28 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ConditionalWeakTable<,>))]
+
diff --git a/mcs/class/Facades/System.Globalization/AssemblyInfo.cs b/mcs/class/Facades/System.Globalization/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..e924712
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Globalization.dll")]
+[assembly: AssemblyDescription ("System.Globalization.dll")]
+[assembly: AssemblyDefaultAlias ("System.Globalization.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Globalization/Makefile b/mcs/class/Facades/System.Globalization/Makefile
new file mode 100644 (file)
index 0000000..6a9fb37
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Globalization
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Globalization.dll
+LIB_MCS_FLAGS =
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Globalization/System.Globalization.dll.sources b/mcs/class/Facades/System.Globalization/System.Globalization.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Globalization/TypeForwarders.cs b/mcs/class/Facades/System.Globalization/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..9f27991
--- /dev/null
@@ -0,0 +1,41 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.Calendar))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CalendarWeekRule))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CharUnicodeInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CompareInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CompareOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CultureInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.DateTimeFormatInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.NumberFormatInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.RegionInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.StringInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.TextElementEnumerator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.TextInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.UnicodeCategory))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CultureNotFoundException))]
+
diff --git a/mcs/class/Facades/System.IO/AssemblyInfo.cs b/mcs/class/Facades/System.IO/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..f87e3ce
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.IO.dll")]
+[assembly: AssemblyDescription ("System.IO.dll")]
+[assembly: AssemblyDefaultAlias ("System.IO.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.IO/Makefile b/mcs/class/Facades/System.IO/Makefile
new file mode 100644 (file)
index 0000000..a59d448
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.IO
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.IO.dll
+LIB_MCS_FLAGS = /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.IO/System.IO.dll.sources b/mcs/class/Facades/System.IO/System.IO.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.IO/TypeForwarders.cs b/mcs/class/Facades/System.IO/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..1a3d866
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.BinaryReader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.BinaryWriter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.IOException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.EndOfStreamException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.FileNotFoundException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Stream))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.MemoryStream))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.SeekOrigin))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.TextReader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.StreamReader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.TextWriter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.StreamWriter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.StringReader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.StringWriter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.InvalidDataException))]
+
diff --git a/mcs/class/Facades/System.Linq.Expressions/AssemblyInfo.cs b/mcs/class/Facades/System.Linq.Expressions/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..6f25c83
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Linq.Expressions.dll")]
+[assembly: AssemblyDescription ("System.Linq.Expressions.dll")]
+[assembly: AssemblyDefaultAlias ("System.Linq.Expressions.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Linq.Expressions/Makefile b/mcs/class/Facades/System.Linq.Expressions/Makefile
new file mode 100644 (file)
index 0000000..1883c91
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Linq.Expressions
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Linq.Expressions.dll
+LIB_MCS_FLAGS = /r:System.Core /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Linq.Expressions/System.Linq.Expressions.dll.sources b/mcs/class/Facades/System.Linq.Expressions/System.Linq.Expressions.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Linq.Expressions/TypeForwarders.cs b/mcs/class/Facades/System.Linq.Expressions/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..ea174d8
--- /dev/null
@@ -0,0 +1,73 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IQueryable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IOrderedQueryable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IQueryable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IOrderedQueryable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IQueryProvider))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.Expression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.BinaryExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.ConditionalExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.ConstantExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.ElementInit))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.LambdaExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.Expression<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.ExpressionType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.ExpressionVisitor))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.InvocationExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.ListInitExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MemberBinding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MemberAssignment))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MemberBindingType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MemberExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MemberInitExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MemberListBinding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MemberMemberBinding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MethodCallExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.NewArrayExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.NewExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.ParameterExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.TypeBinaryExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.UnaryExpression))]
+
+#if !MONOTOUCH
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.BlockExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.CatchBlock))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.DebugInfoExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.DefaultExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.GotoExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.GotoExpressionKind))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.IndexExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.LabelExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.LabelTarget))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.LoopExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.RuntimeVariablesExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.SwitchCase))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.SwitchExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.SymbolDocumentInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.TryExpression))]
+#endif
diff --git a/mcs/class/Facades/System.Linq.Parallel/AssemblyInfo.cs b/mcs/class/Facades/System.Linq.Parallel/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..5824fc0
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Linq.Parallel.dll")]
+[assembly: AssemblyDescription ("System.Linq.Parallel.dll")]
+[assembly: AssemblyDefaultAlias ("System.Linq.Parallel.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Linq.Parallel/Makefile b/mcs/class/Facades/System.Linq.Parallel/Makefile
new file mode 100644 (file)
index 0000000..bf9069a
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Linq.Parallel
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Linq.Parallel.dll
+LIB_MCS_FLAGS = /r:System.Core /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Linq.Parallel/System.Linq.Parallel.dll.sources b/mcs/class/Facades/System.Linq.Parallel/System.Linq.Parallel.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Linq.Parallel/TypeForwarders.cs b/mcs/class/Facades/System.Linq.Parallel/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..8fab8b6
--- /dev/null
@@ -0,0 +1,33 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelQuery))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelQuery<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.OrderedParallelQuery<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelEnumerable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelExecutionMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelMergeOptions))]
+
diff --git a/mcs/class/Facades/System.Linq.Queryable/AssemblyInfo.cs b/mcs/class/Facades/System.Linq.Queryable/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..5c425d1
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Linq.Queryable.dll")]
+[assembly: AssemblyDescription ("System.Linq.Queryable.dll")]
+[assembly: AssemblyDefaultAlias ("System.Linq.Queryable.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Linq.Queryable/Makefile b/mcs/class/Facades/System.Linq.Queryable/Makefile
new file mode 100644 (file)
index 0000000..3bed035
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Linq.Queryable
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Linq.Queryable.dll
+LIB_MCS_FLAGS = /r:System.Core /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Linq.Queryable/System.Linq.Queryable.dll.sources b/mcs/class/Facades/System.Linq.Queryable/System.Linq.Queryable.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Linq.Queryable/TypeForwarders.cs b/mcs/class/Facades/System.Linq.Queryable/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..0d20080
--- /dev/null
@@ -0,0 +1,32 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.EnumerableExecutor))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.EnumerableExecutor<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.EnumerableQuery))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.EnumerableQuery<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Queryable))]
+
diff --git a/mcs/class/Facades/System.Linq/AssemblyInfo.cs b/mcs/class/Facades/System.Linq/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..0c3c697
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Linq.dll")]
+[assembly: AssemblyDescription ("System.Linq.dll")]
+[assembly: AssemblyDefaultAlias ("System.Linq.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Linq/Makefile b/mcs/class/Facades/System.Linq/Makefile
new file mode 100644 (file)
index 0000000..cca44b1
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Linq
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Linq.dll
+LIB_MCS_FLAGS = /r:System.Core /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Linq/System.Linq.dll.sources b/mcs/class/Facades/System.Linq/System.Linq.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Linq/TypeForwarders.cs b/mcs/class/Facades/System.Linq/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..b5cd612
--- /dev/null
@@ -0,0 +1,32 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Enumerable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IGrouping<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ILookup<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IOrderedEnumerable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Lookup<,>))]
+
diff --git a/mcs/class/Facades/System.Net.NetworkInformation/AssemblyInfo.cs b/mcs/class/Facades/System.Net.NetworkInformation/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..62f55c5
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Net.NetworkInformation.dll")]
+[assembly: AssemblyDescription ("System.Net.NetworkInformation.dll")]
+[assembly: AssemblyDefaultAlias ("System.Net.NetworkInformation.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Net.NetworkInformation/Makefile b/mcs/class/Facades/System.Net.NetworkInformation/Makefile
new file mode 100644 (file)
index 0000000..6c24f13
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Net.NetworkInformation
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Net.NetworkInformation.dll
+LIB_MCS_FLAGS = /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Net.NetworkInformation/System.Net.NetworkInformation.dll.sources b/mcs/class/Facades/System.Net.NetworkInformation/System.Net.NetworkInformation.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Net.NetworkInformation/TypeForwarders.cs b/mcs/class/Facades/System.Net.NetworkInformation/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..0cb15ff
--- /dev/null
@@ -0,0 +1,30 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.NetworkInformation.NetworkAddressChangedEventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.NetworkInformation.NetworkChange))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.NetworkInformation.NetworkInterface))]
+
diff --git a/mcs/class/Facades/System.Net.Primitives/AssemblyInfo.cs b/mcs/class/Facades/System.Net.Primitives/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..7baa4d6
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Net.Primitives.dll")]
+[assembly: AssemblyDescription ("System.Net.Primitives.dll")]
+[assembly: AssemblyDefaultAlias ("System.Net.Primitives.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Net.Primitives/Makefile b/mcs/class/Facades/System.Net.Primitives/Makefile
new file mode 100644 (file)
index 0000000..6307ee1
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Net.Primitives
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Net.Primitives.dll
+LIB_MCS_FLAGS = /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Net.Primitives/System.Net.Primitives.dll.sources b/mcs/class/Facades/System.Net.Primitives/System.Net.Primitives.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Net.Primitives/TypeForwarders.cs b/mcs/class/Facades/System.Net.Primitives/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..9227c46
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.Cookie))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.CookieCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.CookieContainer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.CookieException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.HttpStatusCode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.ICredentials))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.NetworkCredential))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.AuthenticationSchemes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.ICredentialsByHost))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.CredentialCache))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.DecompressionMethods))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.IWebProxy))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.TransportContext))]
+
diff --git a/mcs/class/Facades/System.Net.Requests/AssemblyInfo.cs b/mcs/class/Facades/System.Net.Requests/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..d75c389
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Net.Requests.dll")]
+[assembly: AssemblyDescription ("System.Net.Requests.dll")]
+[assembly: AssemblyDefaultAlias ("System.Net.Requests.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Net.Requests/Makefile b/mcs/class/Facades/System.Net.Requests/Makefile
new file mode 100644 (file)
index 0000000..f3c942e
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Net.Requests
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Net.Requests.dll
+LIB_MCS_FLAGS = /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Net.Requests/System.Net.Requests.dll.sources b/mcs/class/Facades/System.Net.Requests/System.Net.Requests.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Net.Requests/TypeForwarders.cs b/mcs/class/Facades/System.Net.Requests/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..9730eae
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.HttpRequestHeader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebRequest))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.HttpWebRequest))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebResponse))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.HttpWebResponse))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.IWebRequestCreate))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.ProtocolViolationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebExceptionStatus))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebHeaderCollection))]
+
diff --git a/mcs/class/Facades/System.ObjectModel/AssemblyInfo.cs b/mcs/class/Facades/System.ObjectModel/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..a7f198c
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.ObjectModel.dll")]
+[assembly: AssemblyDescription ("System.ObjectModel.dll")]
+[assembly: AssemblyDefaultAlias ("System.ObjectModel.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.ObjectModel/Makefile b/mcs/class/Facades/System.ObjectModel/Makefile
new file mode 100644 (file)
index 0000000..0a6e2a5
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.ObjectModel
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.ObjectModel.dll
+LIB_MCS_FLAGS = /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.ObjectModel/System.ObjectModel.dll.sources b/mcs/class/Facades/System.ObjectModel/System.ObjectModel.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.ObjectModel/TypeForwarders.cs b/mcs/class/Facades/System.ObjectModel/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..8737de0
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.INotifyPropertyChanged))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.PropertyChangedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.PropertyChangedEventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.KeyedCollection<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.INotifyCollectionChanged))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ObservableCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ReadOnlyObservableCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedAction))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedEventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Windows.Input.ICommand))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.INotifyDataErrorInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataErrorsChangedEventArgs))]
+
diff --git a/mcs/class/Facades/System.Reflection.Extensions/AssemblyInfo.cs b/mcs/class/Facades/System.Reflection.Extensions/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..9124e1b
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Reflection.Extensions.dll")]
+[assembly: AssemblyDescription ("System.Reflection.Extensions.dll")]
+[assembly: AssemblyDefaultAlias ("System.Reflection.Extensions.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Reflection.Extensions/Makefile b/mcs/class/Facades/System.Reflection.Extensions/Makefile
new file mode 100644 (file)
index 0000000..aaf20fa
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Reflection.Extensions
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Reflection.Extensions.dll
+LIB_MCS_FLAGS =
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Reflection.Extensions/System.Reflection.Extensions.dll.sources b/mcs/class/Facades/System.Reflection.Extensions/System.Reflection.Extensions.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Reflection.Extensions/TypeForwarders.cs b/mcs/class/Facades/System.Reflection.Extensions/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..3ed6cd9
--- /dev/null
@@ -0,0 +1,30 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CustomAttributeExtensions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.InterfaceMapping))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.RuntimeReflectionExtensions))]
+
diff --git a/mcs/class/Facades/System.Reflection.Primitives/AssemblyInfo.cs b/mcs/class/Facades/System.Reflection.Primitives/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..0141d30
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Reflection.Primitives.dll")]
+[assembly: AssemblyDescription ("System.Reflection.Primitives.dll")]
+[assembly: AssemblyDefaultAlias ("System.Reflection.Primitives.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Reflection.Primitives/Makefile b/mcs/class/Facades/System.Reflection.Primitives/Makefile
new file mode 100644 (file)
index 0000000..602815b
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Reflection.Primitives
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Reflection.Primitives.dll
+LIB_MCS_FLAGS =
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Reflection.Primitives/System.Reflection.Primitives.dll.sources b/mcs/class/Facades/System.Reflection.Primitives/System.Reflection.Primitives.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Reflection.Primitives/TypeForwarders.cs b/mcs/class/Facades/System.Reflection.Primitives/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..8dfe9b4
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CallingConventions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.EventAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.FieldAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.GenericParameterAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MethodAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ParameterAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.PropertyAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TypeAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MethodImplAttributes))]
+
diff --git a/mcs/class/Facades/System.Reflection/AssemblyInfo.cs b/mcs/class/Facades/System.Reflection/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..6c614cd
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Reflection.dll")]
+[assembly: AssemblyDescription ("System.Reflection.dll")]
+[assembly: AssemblyDefaultAlias ("System.Reflection.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Reflection/Makefile b/mcs/class/Facades/System.Reflection/Makefile
new file mode 100644 (file)
index 0000000..85c5ac8
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Reflection
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Reflection.dll
+LIB_MCS_FLAGS =
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Reflection/System.Reflection.dll.sources b/mcs/class/Facades/System.Reflection/System.Reflection.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Reflection/TypeForwarders.cs b/mcs/class/Facades/System.Reflection/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..5e5d09d
--- /dev/null
@@ -0,0 +1,53 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MemberInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AmbiguousMatchException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Assembly))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyName))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MethodBase))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ConstructorInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.EventInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.FieldInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MethodInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Module))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ParameterInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.PropertyInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ReflectionTypeLoadException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TargetInvocationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TargetParameterCountException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ManifestResourceInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ResourceLocation))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyContentType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CustomAttributeData))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CustomAttributeNamedArgument))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CustomAttributeTypedArgument))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.IntrospectionExtensions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.IReflectableType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.LocalVariableInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ReflectionContext))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TypeInfo))]
+
diff --git a/mcs/class/Facades/System.Resources.ResourceManager/AssemblyInfo.cs b/mcs/class/Facades/System.Resources.ResourceManager/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..97c869f
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Resources.ResourceManager.dll")]
+[assembly: AssemblyDescription ("System.Resources.ResourceManager.dll")]
+[assembly: AssemblyDefaultAlias ("System.Resources.ResourceManager.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Resources.ResourceManager/Makefile b/mcs/class/Facades/System.Resources.ResourceManager/Makefile
new file mode 100644 (file)
index 0000000..0a3cf9d
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Resources.ResourceManager
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Resources.ResourceManager.dll
+LIB_MCS_FLAGS =
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Resources.ResourceManager/System.Resources.ResourceManager.dll.sources b/mcs/class/Facades/System.Resources.ResourceManager/System.Resources.ResourceManager.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Resources.ResourceManager/TypeForwarders.cs b/mcs/class/Facades/System.Resources.ResourceManager/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..349023f
--- /dev/null
@@ -0,0 +1,31 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Resources.MissingManifestResourceException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Resources.NeutralResourcesLanguageAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Resources.ResourceManager))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Resources.SatelliteContractVersionAttribute))]
+
diff --git a/mcs/class/Facades/System.Runtime.Extensions/AssemblyInfo.cs b/mcs/class/Facades/System.Runtime.Extensions/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..8d2517a
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Runtime.Extensions.dll")]
+[assembly: AssemblyDescription ("System.Runtime.Extensions.dll")]
+[assembly: AssemblyDefaultAlias ("System.Runtime.Extensions.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Runtime.Extensions/Makefile b/mcs/class/Facades/System.Runtime.Extensions/Makefile
new file mode 100644 (file)
index 0000000..9c371e1
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Runtime.Extensions
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Runtime.Extensions.dll
+LIB_MCS_FLAGS = /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Runtime.Extensions/System.Runtime.Extensions.dll.sources b/mcs/class/Facades/System.Runtime.Extensions/System.Runtime.Extensions.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Runtime.Extensions/TypeForwarders.cs b/mcs/class/Facades/System.Runtime.Extensions/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..d0c05ec
--- /dev/null
@@ -0,0 +1,39 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.BitConverter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Convert))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Environment))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Math))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Random))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.StringComparer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Stopwatch))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MidpointRounding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Progress<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Path))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebUtility))]
+
diff --git a/mcs/class/Facades/System.Runtime.InteropServices/AssemblyInfo.cs b/mcs/class/Facades/System.Runtime.InteropServices/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..fa299ae
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Runtime.InteropServices.dll")]
+[assembly: AssemblyDescription ("System.Runtime.InteropServices.dll")]
+[assembly: AssemblyDefaultAlias ("System.Runtime.InteropServices.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Runtime.InteropServices/Makefile b/mcs/class/Facades/System.Runtime.InteropServices/Makefile
new file mode 100644 (file)
index 0000000..1334660
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Runtime.InteropServices
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Runtime.InteropServices.dll
+LIB_MCS_FLAGS = /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Runtime.InteropServices/System.Runtime.InteropServices.dll.sources b/mcs/class/Facades/System.Runtime.InteropServices/System.Runtime.InteropServices.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs b/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..29d69ea
--- /dev/null
@@ -0,0 +1,72 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DataMisalignedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Missing))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DllNotFoundException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ArrayWithOffset))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.BestFitMappingAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.BStrWrapper))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CallingConvention))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ClassInterfaceAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ClassInterfaceType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CoClassAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComDefaultInterfaceAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComEventInterfaceAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.COMException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComInterfaceType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComMemberType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComSourceInterfacesAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CriticalHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CurrencyWrapper))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DefaultCharSetAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DispIdAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DllImportAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.GCHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.GCHandleType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.GuidAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ICustomAdapter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.InAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.InterfaceTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.InvalidComObjectException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.InvalidOleVariantTypeException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.MarshalAsAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.MarshalDirectiveException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.OptionalAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.PreserveSigAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.SafeArrayRankMismatchException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.SafeArrayTypeMismatchException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.SafeHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.SafeBuffer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.SEHException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.TypeIdentifierAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.UnknownWrapper))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.UnmanagedType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.VarEnum))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.VariantWrapper))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DefaultParameterValueAttribute))]
+
diff --git a/mcs/class/Facades/System.Runtime.Numerics/AssemblyInfo.cs b/mcs/class/Facades/System.Runtime.Numerics/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..3a4e894
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Runtime.Numerics.dll")]
+[assembly: AssemblyDescription ("System.Runtime.Numerics.dll")]
+[assembly: AssemblyDefaultAlias ("System.Runtime.Numerics.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Runtime.Numerics/Makefile b/mcs/class/Facades/System.Runtime.Numerics/Makefile
new file mode 100644 (file)
index 0000000..eb821c8
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Runtime.Numerics
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Runtime.Numerics.dll
+LIB_MCS_FLAGS = /r:System.Numerics
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Runtime.Numerics/System.Runtime.Numerics.dll.sources b/mcs/class/Facades/System.Runtime.Numerics/System.Runtime.Numerics.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Runtime.Numerics/TypeForwarders.cs b/mcs/class/Facades/System.Runtime.Numerics/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..e937f32
--- /dev/null
@@ -0,0 +1,29 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Numerics.BigInteger))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Numerics.Complex))]
+
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Json/AssemblyInfo.cs b/mcs/class/Facades/System.Runtime.Serialization.Json/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..6eda657
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Runtime.Serialization.Json.dll")]
+[assembly: AssemblyDescription ("System.Runtime.Serialization.Json.dll")]
+[assembly: AssemblyDefaultAlias ("System.Runtime.Serialization.Json.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Json/Makefile b/mcs/class/Facades/System.Runtime.Serialization.Json/Makefile
new file mode 100644 (file)
index 0000000..8997f73
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Runtime.Serialization.Json
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Runtime.Serialization.Json.dll
+LIB_MCS_FLAGS = /r:System.Runtime.Serialization /r:System.Xml
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json.dll.sources b/mcs/class/Facades/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Json/TypeForwarders.cs b/mcs/class/Facades/System.Runtime.Serialization.Json/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..9ccfd6e
--- /dev/null
@@ -0,0 +1,31 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.Json.DataContractJsonSerializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DateTimeFormat))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.EmitTypeInformation))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.Json.DataContractJsonSerializerSettings))]
+
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Primitives/AssemblyInfo.cs b/mcs/class/Facades/System.Runtime.Serialization.Primitives/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..b7749b9
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Runtime.Serialization.Primitives.dll")]
+[assembly: AssemblyDescription ("System.Runtime.Serialization.Primitives.dll")]
+[assembly: AssemblyDefaultAlias ("System.Runtime.Serialization.Primitives.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Primitives/Makefile b/mcs/class/Facades/System.Runtime.Serialization.Primitives/Makefile
new file mode 100644 (file)
index 0000000..4210975
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Runtime.Serialization.Primitives
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Runtime.Serialization.Primitives.dll
+LIB_MCS_FLAGS = /r:System.Runtime.Serialization /r:System.Xml
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Primitives/System.Runtime.Serialization.Primitives.dll.sources b/mcs/class/Facades/System.Runtime.Serialization.Primitives/System.Runtime.Serialization.Primitives.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Primitives/TypeForwarders.cs b/mcs/class/Facades/System.Runtime.Serialization.Primitives/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..10faec2
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.CollectionDataContractAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.ContractNamespaceAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DataContractAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DataMemberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.EnumMemberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.IgnoreDataMemberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.KnownTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.OnDeserializedAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.OnDeserializingAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.OnSerializedAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.OnSerializingAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.SerializationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.StreamingContext))]
+
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Xml/AssemblyInfo.cs b/mcs/class/Facades/System.Runtime.Serialization.Xml/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..2194c61
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Runtime.Serialization.Xml.dll")]
+[assembly: AssemblyDescription ("System.Runtime.Serialization.Xml.dll")]
+[assembly: AssemblyDefaultAlias ("System.Runtime.Serialization.Xml.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Xml/Makefile b/mcs/class/Facades/System.Runtime.Serialization.Xml/Makefile
new file mode 100644 (file)
index 0000000..9be2180
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Runtime.Serialization.Xml
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Runtime.Serialization.Xml.dll
+LIB_MCS_FLAGS = /r:System.Runtime.Serialization /r:System.Xml
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml.dll.sources b/mcs/class/Facades/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Xml/TypeForwarders.cs b/mcs/class/Facades/System.Runtime.Serialization.Xml/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..ffedd4d
--- /dev/null
@@ -0,0 +1,41 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.XmlObjectSerializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DataContractSerializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.InvalidDataContractException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.IXmlDictionary))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.UniqueId))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlDictionary))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlDictionaryReader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlDictionaryReaderQuotas))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlDictionaryString))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlDictionaryWriter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DataContractResolver))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DataContractSerializerSettings))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlBinaryReaderSession))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlBinaryWriterSession))]
+
diff --git a/mcs/class/Facades/System.Runtime/AssemblyInfo.cs b/mcs/class/Facades/System.Runtime/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..c921c6c
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Runtime.dll")]
+[assembly: AssemblyDescription ("System.Runtime.dll")]
+[assembly: AssemblyDefaultAlias ("System.Runtime.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Runtime/Makefile b/mcs/class/Facades/System.Runtime/Makefile
new file mode 100644 (file)
index 0000000..bb48247
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Runtime
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Runtime.dll
+LIB_MCS_FLAGS = /r:System /r:System.Core /r:System.ComponentModel.Composition
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Runtime/System.Runtime.dll.sources b/mcs/class/Facades/System.Runtime/System.Runtime.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Runtime/TypeForwarders.cs b/mcs/class/Facades/System.Runtime/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..2a6afa8
--- /dev/null
@@ -0,0 +1,279 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ExtensionAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Uri))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriComponents))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriFormat))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriKind))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DefaultValueAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.EditorBrowsableAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.EditorBrowsableState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(object))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ValueType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IComparable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IComparable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IEquatable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IFormattable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(decimal))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Delegate))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MulticastDelegate))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Activator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Exception))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArgumentException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArgumentNullException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArgumentOutOfRangeException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArithmeticException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IEnumerable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ICollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IList))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Array))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArraySegment<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArrayTypeMismatchException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.AsyncCallback))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Attribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Enum))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.AttributeTargets))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.AttributeUsageAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.BadImageFormatException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(bool))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Buffer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(byte))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(char))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.CLSCompliantAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Comparison<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DateTime))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DateTimeKind))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DateTimeOffset))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DayOfWeek))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DivideByZeroException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(double))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.EventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.EventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.EventHandler<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.FlagsAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.FormatException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.GC))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Guid))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IAsyncResult))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ICustomFormatter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IDisposable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IFormatProvider))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IndexOutOfRangeException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(short))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(int))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(long))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IntPtr))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.InvalidCastException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.InvalidOperationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MemberAccessException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MissingMemberException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.NotImplementedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.NotSupportedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Nullable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Nullable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.NullReferenceException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ObjectDisposedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ObsoleteAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.OutOfMemoryException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.OverflowException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ParamArrayAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.PlatformNotSupportedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Predicate<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.RankException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.RuntimeFieldHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.RuntimeMethodHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.RuntimeTypeHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(sbyte))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(float))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IComparer<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IEqualityComparer<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IComparer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IEqualityComparer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.StringComparison))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.StringSplitOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TimeoutException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TimeSpan))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Type))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TypeInitializationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TypeLoadException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(ushort))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(uint))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(ulong))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UIntPtr))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UnauthorizedAccessException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Version))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(void))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.WeakReference))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.DictionaryEntry))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IDictionary))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IEnumerator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IDictionaryEnumerator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IEnumerable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.ICollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IDictionary<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IEnumerator<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IList<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.KeyNotFoundException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.KeyValuePair<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.Collection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ReadOnlyCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.ConditionalAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggableAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.DateTimeStyles))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.NumberStyles))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyCompanyAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyConfigurationAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyCopyrightAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyCultureAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyDefaultAliasAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyDelaySignAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyDescriptionAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyFileVersionAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyFlagsAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyInformationalVersionAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyKeyFileAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyKeyNameAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyNameFlags))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyProductAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyTitleAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyTrademarkAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyVersionAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.DefaultMemberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AccessedThroughPropertyAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CompilationRelaxationsAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CompilerGeneratedAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CustomConstantAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.DateTimeConstantAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.DecimalConstantAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IndexerNameAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.InternalsVisibleToAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IsVolatile))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.MethodImplAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.MethodImplOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.RuntimeCompatibilityAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.RuntimeHelpers))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.FieldOffsetAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.LayoutKind))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.OutAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.StructLayoutAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Versioning.TargetFrameworkAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.SecurityCriticalAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.SecurityException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.SecuritySafeCriticalAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.SecurityTransparentAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.VerificationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.StringBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.WaitHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Timeout))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.InvalidTimeZoneException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TimeZoneInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IStrongBox))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.StrongBox<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.TimeSpanStyles))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Lazy<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.ISet<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IStructuralComparable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IStructuralEquatable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Lazy<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ThreadStaticAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TypeAccessException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TypeForwardedFromAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TypeForwardedToAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.AllowPartiallyTrustedCallersAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.LazyThreadSafetyMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriHostNameType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.GCCollectionMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IObservable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IObserver<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.GCLatencyMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.GCSettings))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.FixedBufferAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.UnsafeValueTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CharSet))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComVisibleAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IReadOnlyCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IReadOnlyList<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IProgress<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MTAThreadAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.STAThreadAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.WeakReference<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IReadOnlyDictionary<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyMetadataAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblySignatureKeyAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.StateMachineAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncStateMachineAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallerFilePathAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallerLineNumberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallerMemberNameAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IteratorStateMachineAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ReferenceAssemblyAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.ExceptionServices.ExceptionDispatchInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(string))]
+
diff --git a/mcs/class/Facades/System.Security.Principal/AssemblyInfo.cs b/mcs/class/Facades/System.Security.Principal/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..9add580
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Security.Principal.dll")]
+[assembly: AssemblyDescription ("System.Security.Principal.dll")]
+[assembly: AssemblyDefaultAlias ("System.Security.Principal.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Security.Principal/Makefile b/mcs/class/Facades/System.Security.Principal/Makefile
new file mode 100644 (file)
index 0000000..6662c5a
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Security.Principal
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Security.Principal.dll
+LIB_MCS_FLAGS =
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Security.Principal/System.Security.Principal.dll.sources b/mcs/class/Facades/System.Security.Principal/System.Security.Principal.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Security.Principal/TypeForwarders.cs b/mcs/class/Facades/System.Security.Principal/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..85a9343
--- /dev/null
@@ -0,0 +1,30 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Principal.IIdentity))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Principal.IPrincipal))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Principal.TokenImpersonationLevel))]
+
diff --git a/mcs/class/Facades/System.ServiceModel.Http/AssemblyInfo.cs b/mcs/class/Facades/System.ServiceModel.Http/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..a44d758
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.ServiceModel.Http.dll")]
+[assembly: AssemblyDescription ("System.ServiceModel.Http.dll")]
+[assembly: AssemblyDefaultAlias ("System.ServiceModel.Http.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.ServiceModel.Http/Makefile b/mcs/class/Facades/System.ServiceModel.Http/Makefile
new file mode 100644 (file)
index 0000000..b3eda58
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.ServiceModel.Http
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.ServiceModel.Http.dll
+LIB_MCS_FLAGS = /r:System.ServiceModel
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.ServiceModel.Http/System.ServiceModel.Http.dll.sources b/mcs/class/Facades/System.ServiceModel.Http/System.ServiceModel.Http.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.ServiceModel.Http/TypeForwarders.cs b/mcs/class/Facades/System.ServiceModel.Http/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..79b95a0
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.BasicHttpBinding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.BasicHttpMessageCredentialType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.BasicHttpSecurity))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.BasicHttpSecurityMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.HttpRequestMessageProperty))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.HttpResponseMessageProperty))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.HttpTransportBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.HttpsTransportBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.HttpBindingBase))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.HttpClientCredentialType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.HttpTransportSecurity))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.NetHttpBinding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.NetHttpMessageEncoding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.WebSocketTransportSettings))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.WebSocketTransportUsage))]
+
diff --git a/mcs/class/Facades/System.ServiceModel.Primitives/AssemblyInfo.cs b/mcs/class/Facades/System.ServiceModel.Primitives/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..c180411
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.ServiceModel.Primitives.dll")]
+[assembly: AssemblyDescription ("System.ServiceModel.Primitives.dll")]
+[assembly: AssemblyDefaultAlias ("System.ServiceModel.Primitives.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.ServiceModel.Primitives/Makefile b/mcs/class/Facades/System.ServiceModel.Primitives/Makefile
new file mode 100644 (file)
index 0000000..c71d40b
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.ServiceModel.Primitives
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.ServiceModel.Primitives.dll
+LIB_MCS_FLAGS = /r:System.ServiceModel /r:System.Xml
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives.dll.sources b/mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.ServiceModel.Primitives/TypeForwarders.cs b/mcs/class/Facades/System.ServiceModel.Primitives/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..9cb7162
--- /dev/null
@@ -0,0 +1,154 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.XmlSerializerFormatAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ActionNotSupportedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IDefaultCommunicationTimeouts))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.Binding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ICommunicationObject))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.CommunicationObject))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IChannelFactory))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ChannelFactory))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ClientBase<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IOutputChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IRequestChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IExtensibleObject<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IContextChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IClientChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationObjectAbortedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationObjectFaultedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.DataContractFormatAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EndpointAddress))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EndpointAddressBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EndpointNotFoundException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EnvelopeVersion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ExceptionDetail))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultCode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultContractAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultException<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultReason))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultReasonText))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IExtension<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IExtensionCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.InvalidMessageContractException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageContractMemberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageBodyMemberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageContractAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ProtocolException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageHeaderException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageParameterAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationContext))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationContextScope))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationContractAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationFormatStyle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.QuotaExceededException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServerTooBusyException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServiceActivationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServiceContractAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServiceKnownTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.UnknownMessageReceivedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.AddressHeader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.AddressHeaderCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.AddressingVersion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageEncodingBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BinaryMessageEncodingBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BindingContext))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BindingElementCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BindingParameterCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BodyWriter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BufferManager))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelBase))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelManagerBase))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelFactoryBase))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IChannelFactory<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelFactoryBase<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelParameterCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.CustomBinding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.FaultConverter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.TransportBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IInputChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IDuplexChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ISession))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IInputSession))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IOutputSession))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IDuplexSession))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ISessionChannel<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IDuplexSessionChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IInputSessionChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IMessageProperty))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IOutputSessionChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IRequestSessionChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.Message))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageBuffer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageEncoder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageEncoderFactory))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageFault))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageHeaderInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageHeader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageHeaders))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageProperties))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageVersion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.RequestContext))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.TextMessageEncodingBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.ClientCredentials))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.ContractDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.FaultDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.FaultDescriptionCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageBodyDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageDescriptionCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageDirection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessagePartDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessagePartDescriptionCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.OperationDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.OperationDescriptionCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.ServiceEndpoint))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.MessageSecurityException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.SecurityAccessDeniedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.UserNamePasswordClientCredential))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ChannelFactory<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EndpointIdentity))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageCredentialType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageHeader<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.SecurityMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.TransferMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.IEndpointBehavior))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.IOperationBehavior))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.DataContractSerializerOperationBehavior))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.IContractBehavior))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageHeaderDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageHeaderDescriptionCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessagePropertyDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessagePropertyDescriptionCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.HttpDigestClientCredential))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.WindowsClientCredential))]
+
diff --git a/mcs/class/Facades/System.Text.Encoding.Extensions/AssemblyInfo.cs b/mcs/class/Facades/System.Text.Encoding.Extensions/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..e8e33f0
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Text.Encoding.Extensions.dll")]
+[assembly: AssemblyDescription ("System.Text.Encoding.Extensions.dll")]
+[assembly: AssemblyDefaultAlias ("System.Text.Encoding.Extensions.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Text.Encoding.Extensions/Makefile b/mcs/class/Facades/System.Text.Encoding.Extensions/Makefile
new file mode 100644 (file)
index 0000000..eb7bed8
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Text.Encoding.Extensions
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Text.Encoding.Extensions.dll
+LIB_MCS_FLAGS =
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Text.Encoding.Extensions/System.Text.Encoding.Extensions.dll.sources b/mcs/class/Facades/System.Text.Encoding.Extensions/System.Text.Encoding.Extensions.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Text.Encoding.Extensions/TypeForwarders.cs b/mcs/class/Facades/System.Text.Encoding.Extensions/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..8b7affa
--- /dev/null
@@ -0,0 +1,29 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.UnicodeEncoding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.UTF8Encoding))]
+
diff --git a/mcs/class/Facades/System.Text.Encoding/AssemblyInfo.cs b/mcs/class/Facades/System.Text.Encoding/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..5f87926
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Text.Encoding.dll")]
+[assembly: AssemblyDescription ("System.Text.Encoding.dll")]
+[assembly: AssemblyDefaultAlias ("System.Text.Encoding.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Text.Encoding/Makefile b/mcs/class/Facades/System.Text.Encoding/Makefile
new file mode 100644 (file)
index 0000000..cdbab84
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Text.Encoding
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Text.Encoding.dll
+LIB_MCS_FLAGS =
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Text.Encoding/System.Text.Encoding.dll.sources b/mcs/class/Facades/System.Text.Encoding/System.Text.Encoding.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Text.Encoding/TypeForwarders.cs b/mcs/class/Facades/System.Text.Encoding/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..d15e314
--- /dev/null
@@ -0,0 +1,32 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.Decoder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.DecoderFallbackException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.Encoder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.EncoderFallbackException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.Encoding))]
+
diff --git a/mcs/class/Facades/System.Text.RegularExpressions/AssemblyInfo.cs b/mcs/class/Facades/System.Text.RegularExpressions/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..4caaa79
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Text.RegularExpressions.dll")]
+[assembly: AssemblyDescription ("System.Text.RegularExpressions.dll")]
+[assembly: AssemblyDefaultAlias ("System.Text.RegularExpressions.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Text.RegularExpressions/Makefile b/mcs/class/Facades/System.Text.RegularExpressions/Makefile
new file mode 100644 (file)
index 0000000..34e35c9
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Text.RegularExpressions
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Text.RegularExpressions.dll
+LIB_MCS_FLAGS = /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Text.RegularExpressions/System.Text.RegularExpressions.dll.sources b/mcs/class/Facades/System.Text.RegularExpressions/System.Text.RegularExpressions.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Text.RegularExpressions/TypeForwarders.cs b/mcs/class/Facades/System.Text.RegularExpressions/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..62e0e5c
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.Capture))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.CaptureCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.Group))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.GroupCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.Match))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.MatchCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.MatchEvaluator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.Regex))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.RegexOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.RegexMatchTimeoutException))]
+
diff --git a/mcs/class/Facades/System.Threading.Tasks.Parallel/AssemblyInfo.cs b/mcs/class/Facades/System.Threading.Tasks.Parallel/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..d01e3e5
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Threading.Tasks.Parallel.dll")]
+[assembly: AssemblyDescription ("System.Threading.Tasks.Parallel.dll")]
+[assembly: AssemblyDefaultAlias ("System.Threading.Tasks.Parallel.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Threading.Tasks.Parallel/Makefile b/mcs/class/Facades/System.Threading.Tasks.Parallel/Makefile
new file mode 100644 (file)
index 0000000..1704d13
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Threading.Tasks.Parallel
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Threading.Tasks.Parallel.dll
+LIB_MCS_FLAGS =
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Threading.Tasks.Parallel/System.Threading.Tasks.Parallel.dll.sources b/mcs/class/Facades/System.Threading.Tasks.Parallel/System.Threading.Tasks.Parallel.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Threading.Tasks.Parallel/TypeForwarders.cs b/mcs/class/Facades/System.Threading.Tasks.Parallel/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..16a8a39
--- /dev/null
@@ -0,0 +1,31 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.Parallel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.ParallelLoopResult))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.ParallelLoopState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.ParallelOptions))]
+
diff --git a/mcs/class/Facades/System.Threading.Tasks/AssemblyInfo.cs b/mcs/class/Facades/System.Threading.Tasks/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..94041db
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Threading.Tasks.dll")]
+[assembly: AssemblyDescription ("System.Threading.Tasks.dll")]
+[assembly: AssemblyDefaultAlias ("System.Threading.Tasks.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Threading.Tasks/Makefile b/mcs/class/Facades/System.Threading.Tasks/Makefile
new file mode 100644 (file)
index 0000000..57f1823
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Threading.Tasks
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Threading.Tasks.dll
+LIB_MCS_FLAGS = /r:System.Core /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Threading.Tasks/System.Threading.Tasks.dll.sources b/mcs/class/Facades/System.Threading.Tasks/System.Threading.Tasks.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Threading.Tasks/TypeForwarders.cs b/mcs/class/Facades/System.Threading.Tasks/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..9d1d9bd
--- /dev/null
@@ -0,0 +1,57 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskExtensions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.AggregateException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.OperationCanceledException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.CancellationToken))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.CancellationTokenRegistration))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.CancellationTokenSource))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.Task))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.Task<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskCanceledException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskCompletionSource<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskContinuationOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskCreationOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskFactory))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskFactory<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskScheduler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskSchedulerException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskStatus))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.UnobservedTaskExceptionEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncTaskMethodBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncTaskMethodBuilder<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncVoidMethodBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ConfiguredTaskAwaitable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.INotifyCompletion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ICriticalNotifyCompletion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IAsyncStateMachine))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TaskAwaiter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TaskAwaiter<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.YieldAwaitable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.ConcurrentExclusiveSchedulerPair))]
+
diff --git a/mcs/class/Facades/System.Threading/AssemblyInfo.cs b/mcs/class/Facades/System.Threading/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..2b90731
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Threading.dll")]
+[assembly: AssemblyDescription ("System.Threading.dll")]
+[assembly: AssemblyDefaultAlias ("System.Threading.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Threading/Makefile b/mcs/class/Facades/System.Threading/Makefile
new file mode 100644 (file)
index 0000000..5d845c9
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Threading
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Threading.dll
+LIB_MCS_FLAGS = /r:System.Core /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Threading/System.Threading.dll.sources b/mcs/class/Facades/System.Threading/System.Threading.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Threading/TypeForwarders.cs b/mcs/class/Facades/System.Threading/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..605b66f
--- /dev/null
@@ -0,0 +1,54 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SynchronizationContext))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.EventWaitHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.AutoResetEvent))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Interlocked))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.ManualResetEvent))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Monitor))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SendOrPostCallback))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SynchronizationLockException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.LockRecursionPolicy))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.ReaderWriterLockSlim))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Barrier))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.BarrierPostPhaseException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Semaphore))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.AbandonedMutexException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.CountdownEvent))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.EventResetMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.LazyInitializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.LockRecursionException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.ManualResetEventSlim))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Mutex))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SemaphoreFullException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SemaphoreSlim))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SpinLock))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SpinWait))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.ThreadLocal<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.WaitHandleCannotBeOpenedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Volatile))]
+
diff --git a/mcs/class/Facades/System.Xml.ReaderWriter/AssemblyInfo.cs b/mcs/class/Facades/System.Xml.ReaderWriter/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..54a6d7d
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Xml.ReaderWriter.dll")]
+[assembly: AssemblyDescription ("System.Xml.ReaderWriter.dll")]
+[assembly: AssemblyDefaultAlias ("System.Xml.ReaderWriter.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Xml.ReaderWriter/Makefile b/mcs/class/Facades/System.Xml.ReaderWriter/Makefile
new file mode 100644 (file)
index 0000000..5f91ff2
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Xml.ReaderWriter
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Xml.ReaderWriter.dll
+LIB_MCS_FLAGS = /r:System.Xml
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Xml.ReaderWriter/System.Xml.ReaderWriter.dll.sources b/mcs/class/Facades/System.Xml.ReaderWriter/System.Xml.ReaderWriter.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Xml.ReaderWriter/TypeForwarders.cs b/mcs/class/Facades/System.Xml.ReaderWriter/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..0d3ab53
--- /dev/null
@@ -0,0 +1,51 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.ConformanceLevel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.DtdProcessing))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.IXmlLineInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.IXmlNamespaceResolver))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.NamespaceHandling))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlNameTable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.NameTable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.NewLineHandling))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.ReadState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.WriteState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlConvert))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlNamespaceManager))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlNamespaceScope))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlNodeType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlParserContext))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlQualifiedName))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlReader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlReaderSettings))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlSpace))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlWriter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlWriterSettings))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Schema.XmlSchema))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Schema.XmlSchemaForm))]
+
diff --git a/mcs/class/Facades/System.Xml.XDocument/AssemblyInfo.cs b/mcs/class/Facades/System.Xml.XDocument/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..e3f2265
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Xml.XDocument.dll")]
+[assembly: AssemblyDescription ("System.Xml.XDocument.dll")]
+[assembly: AssemblyDefaultAlias ("System.Xml.XDocument.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Xml.XDocument/Makefile b/mcs/class/Facades/System.Xml.XDocument/Makefile
new file mode 100644 (file)
index 0000000..a02bc52
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Xml.XDocument
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Xml.XDocument.dll
+LIB_MCS_FLAGS = /r:System.Xml.Linq /r:System.Xml
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Xml.XDocument/System.Xml.XDocument.dll.sources b/mcs/class/Facades/System.Xml.XDocument/System.Xml.XDocument.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Xml.XDocument/TypeForwarders.cs b/mcs/class/Facades/System.Xml.XDocument/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..4a74cd2
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.Extensions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.LoadOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.ReaderOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.SaveOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XObject))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XNode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XText))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XCData))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XComment))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XContainer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XDeclaration))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XDocument))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XDocumentType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XName))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XNamespace))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XNodeDocumentOrderComparer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XNodeEqualityComparer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XObjectChange))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XObjectChangeEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XProcessingInstruction))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XStreamingElement))]
+
diff --git a/mcs/class/Facades/System.Xml.XmlSerializer/AssemblyInfo.cs b/mcs/class/Facades/System.Xml.XmlSerializer/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..4a33ba5
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Xml.XmlSerializer.dll")]
+[assembly: AssemblyDescription ("System.Xml.XmlSerializer.dll")]
+[assembly: AssemblyDefaultAlias ("System.Xml.XmlSerializer.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Xml.XmlSerializer/Makefile b/mcs/class/Facades/System.Xml.XmlSerializer/Makefile
new file mode 100644 (file)
index 0000000..700ad78
--- /dev/null
@@ -0,0 +1,15 @@
+thisdir = class/Facades/System.Xml.XmlSerializer
+SUBDIRS = 
+include ../../../build/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Xml.XmlSerializer.dll
+LIB_MCS_FLAGS = /r:System.Xml
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Xml.XmlSerializer/System.Xml.XmlSerializer.dll.sources b/mcs/class/Facades/System.Xml.XmlSerializer/System.Xml.XmlSerializer.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Xml.XmlSerializer/TypeForwarders.cs b/mcs/class/Facades/System.Xml.XmlSerializer/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..bda6911
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlArrayItemAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributeOverrides))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlElementAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.IXmlSerializable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlArrayAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlArrayItemAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlChoiceIdentifierAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlElementAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlEnumAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlIgnoreAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlIncludeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlRootAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSchemaProviderAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlTextAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyElementAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializerNamespaces))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyElementAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlNamespaceDeclarationsAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyAttributeAttribute))]
+
index c8c3cfc4c68646bcb4ada33966fc826b538b9bea..9b2cb96e7f6081342d78dbd2544e28aa0b78a8a1 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E7899531-46E6-4B4A-8709-E7B099CD40C0}</ProjectGuid>\r
+    <ProjectGuid>{4E0A4799-A3C5-4E57-8713-FDD18BC6A51F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.CJK-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6b79ce4fdc40f6c87a6a4c79193b48ebeace656c..cdcdb66c2d094697d3d30efb697f16619001e01a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{87ED1DAB-BC3F-455F-96A3-2044E4977877}</ProjectGuid>\r
+    <ProjectGuid>{5F618D73-E784-4300-984B-CED9D2F19601}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.CJK-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4f3de174f77425029ef96f2d2907c0b893437716..59fe7757da669ff775ef470721cd125131d67b82 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EF5108EC-6916-4ADE-AB7D-919F89F1FEE1}</ProjectGuid>\r
+    <ProjectGuid>{0CE11B15-9B31-4AD1-857C-55B69C027130}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.CJK-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a4674de3434001c6dfe80fd8be7cccb722f690d1..a144d286fc54d74adc981ae5a247aa4ed3cf5f64 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E59B1BBE-C3A6-4BF5-A493-C4266D09919A}</ProjectGuid>\r
+    <ProjectGuid>{6CFB5489-DE34-4BCF-85FB-62CD355C4FEB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.CJK-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\CJK\I18N.CJK-net_2_0.csproj">\r
-      <Project>{E7899531-46E6-4B4A-8709-E7B099CD40C0}</Project>\r
+      <Project>{4E0A4799-A3C5-4E57-8713-FDD18BC6A51F}</Project>\r
       <Name>CJK\I18N.CJK-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 12da114671bf5029aabe1a71937b1a82a0b4eb50..03496d09a3cd88b0a4518f7888ac5257a4d3b691 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{70C4A9AE-2402-4F8F-9428-1964D1D2B6D4}</ProjectGuid>\r
+    <ProjectGuid>{93025FE7-27CC-48C8-A66A-797AEBB105AF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.CJK-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\CJK\I18N.CJK-net_4_0.csproj">\r
-      <Project>{87ED1DAB-BC3F-455F-96A3-2044E4977877}</Project>\r
+      <Project>{5F618D73-E784-4300-984B-CED9D2F19601}</Project>\r
       <Name>CJK\I18N.CJK-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0371f1ada3b9baa161a585cfbe291e1dda75423c..323a583735e01e1c0542963341193bd2aef456b6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D70CC755-05BF-4148-8A19-3F28EA6CA21D}</ProjectGuid>\r
+    <ProjectGuid>{9F1843D9-A9D4-4D87-8CC9-B4AF53DE0196}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.CJK-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\CJK\I18N.CJK-net_4_5.csproj">\r
-      <Project>{EF5108EC-6916-4ADE-AB7D-919F89F1FEE1}</Project>\r
+      <Project>{0CE11B15-9B31-4AD1-857C-55B69C027130}</Project>\r
       <Name>CJK\I18N.CJK-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 42c5aff4ed55f4bfb7174b7d06f34b60bfad17a4..5e3465a5e90e1c768ed8d1ce73d6d883fcbfb5b4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</ProjectGuid>\r
+    <ProjectGuid>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N-net_2_0</OutputPath>\r
@@ -70,7 +70,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4e7477dc7852080fb5aea1a529f61ec6c9f4fe7e..ec863e388d8c4d91569a41f9b5447646fb5c50fd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{748C52F1-090B-42F0-BB42-37BE181E4545}</ProjectGuid>\r
+    <ProjectGuid>{AD318520-607B-4D7A-ABE4-AC064BF21343}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N-net_4_0</OutputPath>\r
@@ -70,7 +70,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7e2657586c150779789889e22fd41cd4f9535d24..eabc4e2bda25d788fbb72f8fedd4e53a8fb74275 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</ProjectGuid>\r
+    <ProjectGuid>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N-net_4_5</OutputPath>\r
@@ -70,7 +70,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0eb3fd0899d99361d2b9b96354c2b92f4241d340..adaf6ff84f89ddeebde04888fd6f80d46bdae90f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{59555D48-1FCB-4AFC-859B-577F5E9D809B}</ProjectGuid>\r
+    <ProjectGuid>{40C8B8E9-74A6-430C-B036-A09A06F795B4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.MidEast-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 81ab294f83ccd3ab1cabe259e81249c4b6d90ed1..b8d69817eb702f52681612d773bfe4492f40fcde 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B1FE8BCF-C511-4452-A745-8E58030008F5}</ProjectGuid>\r
+    <ProjectGuid>{27BAE37E-41FE-4E31-8A83-F23847E19C86}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.MidEast-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5d03ac0778908bc0c2a6ec3bf6172a95fa2fed55..86f033b3f0fe8d454ef9a810d69d04af59d73d7a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2616FDAC-EC98-417B-A95C-C2E2D1ECB3F2}</ProjectGuid>\r
+    <ProjectGuid>{475537C3-F2C7-42FD-8AF9-871BC6266BAA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.MidEast-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2b6c8c1eeb996b9ccfcc48a0b2a9e617c14dee1d..f17eb96a6453d3af74a1f4d2401ace28eb14fcf9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{63DD7A88-5DF4-4FEB-BFF0-B8D191C34ECA}</ProjectGuid>\r
+    <ProjectGuid>{48C24919-3B2A-43E5-8DF2-A4A55258BA7E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.MidEast-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\MidEast\I18N.MidEast-net_2_0.csproj">\r
-      <Project>{59555D48-1FCB-4AFC-859B-577F5E9D809B}</Project>\r
+      <Project>{40C8B8E9-74A6-430C-B036-A09A06F795B4}</Project>\r
       <Name>MidEast\I18N.MidEast-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4ec7b8f97cdbdff4f735d7b9b1df5654d15b583c..d96fc91e29c47577ec878260e292adcb0c60d97e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6DF1B8DB-E22C-4B94-882C-306E5674BCAE}</ProjectGuid>\r
+    <ProjectGuid>{F0C37D52-B70E-4A1D-BF13-6E1DBF338F26}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.MidEast-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\MidEast\I18N.MidEast-net_4_0.csproj">\r
-      <Project>{B1FE8BCF-C511-4452-A745-8E58030008F5}</Project>\r
+      <Project>{27BAE37E-41FE-4E31-8A83-F23847E19C86}</Project>\r
       <Name>MidEast\I18N.MidEast-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d70c6c899748d45c39851a9b4aaa5fe292b13ffe..bf7f4b379b645dcc6ef4057b53a32def9a48dd0b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ECF02624-8EE8-4466-8925-3EE595034B4D}</ProjectGuid>\r
+    <ProjectGuid>{CF521447-730D-46F7-911F-0A1CFFB9B5CB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.MidEast-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\MidEast\I18N.MidEast-net_4_5.csproj">\r
-      <Project>{2616FDAC-EC98-417B-A95C-C2E2D1ECB3F2}</Project>\r
+      <Project>{475537C3-F2C7-42FD-8AF9-871BC6266BAA}</Project>\r
       <Name>MidEast\I18N.MidEast-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e5adf700f0da8f00a91262cc8116c0fe32330309..38d2a41012ad6ab8a4c0bf6ad9baf865cc825da8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{18E38008-05ED-4B0B-B635-E8B9E2A3E7EB}</ProjectGuid>\r
+    <ProjectGuid>{627EA5D6-BB52-4FB3-8938-2C0B4227F58E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.Other-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 83cb0061a4b7ed6a4bd5cf844947ae43bf287693..17a20935dce33f2de4d7bd5ee3dc5cb2381c8877 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C9B07BE0-C8A3-40DD-A1A9-13FC5C316347}</ProjectGuid>\r
+    <ProjectGuid>{7189AB61-44EF-4C90-8F8E-620A0637998B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.Other-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3c91f09aaed0ebd51fe8a39cf8ec0503440529a7..089a4667893678a08391ebf9e97d4086b7de8df5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9BBEC512-8833-4124-B826-777E45579059}</ProjectGuid>\r
+    <ProjectGuid>{7C1E1624-DAC7-4819-880B-852644622BF2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.Other-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 56467b0c5eb027e4742297e4a6e7f4d00883b23b..1b03a7f0dba1922f4fd0d281e6cf2b508a97b5bf 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9DE49C27-A51B-4511-97F6-5A76FD79450C}</ProjectGuid>\r
+    <ProjectGuid>{6B85E9FF-0DEC-4DBA-9388-560B95A7EC2A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.Rare-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d6736b7afd862a34ebe1aed03bba87d16593912e..7cd576125a95cbe120358d0a8304d9b54f880dc0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8C98193F-281B-45FB-B24F-4A603AE929AA}</ProjectGuid>\r
+    <ProjectGuid>{5B7392AE-6A49-4DF8-8F5A-A0A5D1E0CCFC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.Rare-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3edaec4b6441a1ab7c89dd9a9c9c483dbd78b514..4f3ba655c473718053bdfa12d51e56e09c5179cd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3C6256A3-3B1F-4CF8-9D91-016C855930DC}</ProjectGuid>\r
+    <ProjectGuid>{84879866-2AFD-4318-8C53-8951471B7369}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.Rare-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c9669e0de991bd27725e04b997f69cdbdc5c7546..730d84b703a30e88e44e4b11924f627c60b9f0d7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{19433D5C-4634-4AD2-BB3D-61198846EF97}</ProjectGuid>\r
+    <ProjectGuid>{D68F3BF0-6569-406D-A528-10FCFC094855}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.West-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index dcc56674576e4a90d7cd1252f292abbcaec73570..43db323ca339454bbef2685cfc8d496357d14a03 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{074EB0E2-A311-48D3-B9F9-2A5AC82E4C5F}</ProjectGuid>\r
+    <ProjectGuid>{5FB39954-2084-4C31-868D-5EB834D9E885}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.West-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7eadd46607b668554e3c8d500cc04aabce9a9eb4..a24d4b4f719e740048da9b4924210f63218c08e6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{03E8A999-E329-44BB-8ED7-D60412068646}</ProjectGuid>\r
+    <ProjectGuid>{5532F6F2-B136-4D85-9500-5D1C9E1D9335}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.West-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index db08d7c68c109df14664c96a243e9a8aebb371ec..54eddff8d9336029df70d1c30268a625ab4aa0eb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{37CCD833-7D70-48D0-A76B-B769FF4796DB}</ProjectGuid>\r
+    <ProjectGuid>{F58F484F-830D-4337-B6F9-9FC11C933E32}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.West-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\West\I18N.West-net_2_0.csproj">\r
-      <Project>{19433D5C-4634-4AD2-BB3D-61198846EF97}</Project>\r
+      <Project>{D68F3BF0-6569-406D-A528-10FCFC094855}</Project>\r
       <Name>West\I18N.West-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 79c539051c2fcc35fe7a54cfe944ccb094d66176..f9e8e7a90ece26163eef4828429175d7b2385569 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{00AA5570-986C-40EF-BC18-D3484BC12192}</ProjectGuid>\r
+    <ProjectGuid>{85C6F03E-7170-4DC3-B69D-D3E3134F27C9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.West-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\West\I18N.West-net_4_0.csproj">\r
-      <Project>{074EB0E2-A311-48D3-B9F9-2A5AC82E4C5F}</Project>\r
+      <Project>{5FB39954-2084-4C31-868D-5EB834D9E885}</Project>\r
       <Name>West\I18N.West-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d31d2840fea38b67ff2411e6f46c959725cbd239..b4a5f4e410e074aeab0bc3d2519499dc7a59e0f5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8F7F90F0-97DB-4E98-83AE-C2E28E9B512A}</ProjectGuid>\r
+    <ProjectGuid>{6977FA25-AB73-4DE7-B535-19C04DB9C29A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.West-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\West\I18N.West-net_4_5.csproj">\r
-      <Project>{03E8A999-E329-44BB-8ED7-D60412068646}</Project>\r
+      <Project>{5532F6F2-B136-4D85-9500-5D1C9E1D9335}</Project>\r
       <Name>West\I18N.West-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e92d04d4d4f15b182496a3a633eae9ec2ea3a723..2817bdf65ed92c5ec1c9aa21ba9c78f30f421109 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{22512ABD-FFDB-4D40-9CDD-88AFB06B8EB3}</ProjectGuid>\r
+    <ProjectGuid>{49FA9E88-6A33-49C3-8F9F-FB2D59F28C7B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\IBM.Data.DB2-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a13ef398f96f3681830fda671597e9161ce93bac..0507c30866256a2491b7396d96e75431042c70f8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{74D13330-A363-4226-851D-AFE1851F4BF1}</ProjectGuid>\r
+    <ProjectGuid>{B2F159BD-EC27-408E-A92E-348814C8CC51}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\IBM.Data.DB2-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b0e87af62050c750044eb8a6d70af7202b87be64..9fd47dd67c288e19cca9f951eb55f2a2ecbd1b70 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0A4E586A-047A-4C04-9821-265465A334F8}</ProjectGuid>\r
+    <ProjectGuid>{61C7FBD9-B531-4292-8456-AAA6F9E650C4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\IBM.Data.DB2-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3591dee62bd52475dcba4b324df20a0e778c5a7e..fb0d11390d98e2d2ba2132882d6f65f6869509e9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A1B1ACC9-95F7-4752-A2A6-CF0214F886BB}</ProjectGuid>\r
+    <ProjectGuid>{065A843F-C16B-4F2E-9560-69440147EDB2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\ICSharpCode.SharpZipLib-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a6f232eb1a178b1fbc1b2f656955f7b02749ff8a..0088a4c6bccd578825269f94dc6775feb634ec7a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D769AAF9-10ED-4C32-8D87-8D0648E2D001}</ProjectGuid>\r
+    <ProjectGuid>{2DE2CFB0-3166-41D9-B0B5-EFBE309DD7B7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\ICSharpCode.SharpZipLib-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9cde505ead135c9280a7053cf855cae8fff68a81..ca869c5cf442719018ca106ff9a73faf8429977c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C41C7048-6B86-43DB-9F5E-BED7A92CD56E}</ProjectGuid>\r
+    <ProjectGuid>{039AD56A-E91B-4803-8328-287F70B61D14}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\ICSharpCode.SharpZipLib-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b36690dc867cfb658f3cde73b06e1002a56945fb..67eeae47cbf2bc4486ef9fd79f608a13408aaae6 100644 (file)
@@ -148,23 +148,20 @@ mobile_dirs := \
        Mono.Data.Sqlite        \
        System.Numerics \
        System.Data.Services.Client \
-       System.Reactive.Interfaces \
-       System.Reactive.Core \
-       System.Reactive.Linq \
-       System.Reactive.PlatformServices \
-       System.Reactive.Experimental \
-       System.Reactive.Debugger        \
-       System.Net.Http \
        System.IO.Compression \
        System.IO.Compression.FileSystem \
        System.ComponentModel.DataAnnotations \
-       System.ComponentModel.Composition.4.5
+       System.ComponentModel.Composition.4.5 \
+       System.Net \
+       System.Windows \
+       System.Xml.Serialization \
+       Facades
 
 monodroid_dirs := \
        Mono.CompilerServices.SymbolWriter      \
        Mono.CSharp     \
        Microsoft.CSharp \
-       System.Reactive.Providers
+       System.Net.Http
 
 monotouch_runtime_dirs := \
        corlib \
@@ -193,8 +190,7 @@ monotouch_runtime_dirs := \
        System.Web \
        Mono.Web \
        System.Web.Services \
-       System.Web      \
-       System.Net.Http
+       System.Web
 
 net_3_5_only_dirs := \
        Microsoft.Build.Framework       \
@@ -238,6 +234,7 @@ net_4_5_dirs := \
        System.Threading.Tasks.Dataflow \
        System.ComponentModel.Composition.4.5 \
        System.Net.Http \
+       System.Net.Http.WebRequest \
        System.Web.Razor \
        System.Web.WebPages.Deployment \
        System.Web.WebPages \
@@ -246,11 +243,15 @@ net_4_5_dirs := \
        System.Net.Http.Formatting \
        System.Web.Http \
        System.Web.Http.SelfHost \
+       System.Web.Http.WebHost \
        EntityFramework \
        EntityFramework.SqlServer       \
        Mono.CodeContracts \
        System.IO.Compression \
-       System.IO.Compression.FileSystem
+       System.IO.Compression.FileSystem \
+       System.Windows \
+       System.Xml.Serialization \
+       Facades
        
 net_2_0_SUBDIRS := $(common_dirs) $(net_2_0_dirs) $(net_2_0_only_dirs) aot-compiler
 monodroid_SUBDIRS := $(mobile_dirs) $(monodroid_dirs)
index 2777108e1de697fb18ed96d55976737191307ee8..838b62c4bbbbe25489ea6fed040209cad22e5dd8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</ProjectGuid>\r
+    <ProjectGuid>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,809</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_2_0.csproj">\r
-      <Project>{BA19643F-7F03-4902-9BB6-E94F4467F56A}</Project>\r
+      <Project>{6088F0A1-9658-4B71-86DB-8685B9279154}</Project>\r
       <Name>Accessibility\Accessibility-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.WebBrowser\Mono.WebBrowser-net_2_0.csproj">\r
-      <Project>{B65F061B-3980-40B9-B832-4D220388B453}</Project>\r
+      <Project>{9ABD3BD7-C90F-4137-BC85-A3EEE10473BA}</Project>\r
       <Name>Mono.WebBrowser\Mono.WebBrowser-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj">\r
-      <Project>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</Project>\r
+      <Project>{85526C39-79CA-40DB-940A-3C83DF30DF85}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 70ba9ccf239e6bf33a8a7d9209e58d67ff0ad5af..3948ebece354ad2bc2414cb9f54bb99af6cc6999 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</ProjectGuid>\r
+    <ProjectGuid>{41B3B369-328C-45B8-9F14-224641427A35}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,809</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_4_0.csproj">\r
-      <Project>{B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}</Project>\r
+      <Project>{3C0E9135-1458-47F6-9076-17FFB1E3E32F}</Project>\r
       <Name>Accessibility\Accessibility-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.WebBrowser\Mono.WebBrowser-net_4_0.csproj">\r
-      <Project>{48C35A26-B26A-4084-9A9A-7729D345B3B5}</Project>\r
+      <Project>{A0DF2D35-BA97-4CAB-90C6-1C4463186C3E}</Project>\r
       <Name>Mono.WebBrowser\Mono.WebBrowser-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj">\r
-      <Project>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</Project>\r
+      <Project>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 842402318c826a5f6531e67b157193c74c7d3d59..74a5f573d1b59a133df67a1acf0ea83e98857ecb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</ProjectGuid>\r
+    <ProjectGuid>{409FF748-B765-4AB3-BCB1-72199B9E341C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,809</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_4_5.csproj">\r
-      <Project>{7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}</Project>\r
+      <Project>{121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}</Project>\r
       <Name>Accessibility\Accessibility-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}</Project>\r
+      <Project>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.WebBrowser\Mono.WebBrowser-net_4_5.csproj">\r
-      <Project>{4F8F4004-E655-463C-8A0F-4F7C99AB85B5}</Project>\r
+      <Project>{7D94F9AC-9F7A-4639-9E89-85083D77101D}</Project>\r
       <Name>Mono.WebBrowser\Mono.WebBrowser-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 18bb89359135b212d8a65bb9374433efafb5f13e..09df063f9dd1e9d8f4b1af9ceedc740cec6372a8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{548C82DC-9E7B-4016-8BD9-EB4A23C57127}</ProjectGuid>\r
+    <ProjectGuid>{ACB51CEF-A814-4043-BF38-5C5532CC6837}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_2_0.csproj">\r
-      <Project>{BA19643F-7F03-4902-9BB6-E94F4467F56A}</Project>\r
+      <Project>{6088F0A1-9658-4B71-86DB-8685B9279154}</Project>\r
       <Name>Accessibility\Accessibility-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj">\r
-      <Project>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</Project>\r
+      <Project>{85526C39-79CA-40DB-940A-3C83DF30DF85}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cb986caaddd2c1fcc72cdb04de227060e0e94c21..9b0813f27470f546c706d47190c7bdd5d796a629 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9F6AFAA0-9E92-408D-802B-5AF4DF0AA6ED}</ProjectGuid>\r
+    <ProjectGuid>{3B395E30-C62C-4CE2-B9DA-EF9A20F328F0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_4_0.csproj">\r
-      <Project>{B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}</Project>\r
+      <Project>{3C0E9135-1458-47F6-9076-17FFB1E3E32F}</Project>\r
       <Name>Accessibility\Accessibility-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj">\r
-      <Project>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</Project>\r
+      <Project>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2ff48cfbe5dfe40d287c82a03b78bcf614573396..20c8f10743cd58f63d2fe4bdde693db14520b944 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FCA901B7-B01E-4578-8C93-9BACB907AD22}</ProjectGuid>\r
+    <ProjectGuid>{16740D76-23DD-4BEC-87C6-948A8D766030}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_4_5.csproj">\r
-      <Project>{7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}</Project>\r
+      <Project>{121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}</Project>\r
       <Name>Accessibility\Accessibility-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cad50f13ed25eb49d0975c73e3b1d5306124978d..34cd40959825ecb243b4abc722a14de11e423d18 100644 (file)
@@ -369,8 +369,8 @@ namespace System.Windows.Forms
                        txtView.Dock = DockStyle.Fill;
                        
                        SuspendLayout ();
-                       Controls.Add (txtView);
                        Controls.Add (spnSpinner);
+                       Controls.Add (txtView); 
                        ResumeLayout ();
 
                        Height = PreferredHeight;
index abfee61e41859dd36716d41e1ecfca9d441540dd..8479a337f0b0a8b9ee7d225ebf1b8c5c213c7f4e 100755 (executable)
@@ -177,7 +177,7 @@ SWFresourcelist()
 {
 cat $Resource | while read SRC; do
 SRC=`echo $SRC | $tr '/' '\\\\'`
-SRC=`echo $SRC | sed 's/-resource://' | gawk -F , '{print "                    RelPath = \"" $1 "\"\n                    CustomToolNameSpace = \"" $2 "\""}' | fgrep -v \"\"`
+SRC=`echo $SRC | sed 's/-resource://' | awk -F , '{print "                    RelPath = \"" $1 "\"\n                    CustomToolNameSpace = \"" $2 "\""}' | fgrep -v \"\"`
 
 cat << EOT
                 <File
index 3421813ce8db754f87759d7f5edb70b516957531..8d67fec080c800d076f0e2559be92896493a2f6c 100644 (file)
@@ -26,6 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 using System;
+using System.Linq;
 using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Specialized;
@@ -50,6 +51,9 @@ namespace Microsoft.Build.BuildEngine {
                //string                recursiveDir;
                IDictionary     evaluatedMetadata;
                IDictionary     unevaluatedMetadata;
+               bool            isDynamic;
+               bool            keepDuplicates = true;
+               string          removeMetadata, keepMetadata;
 
                BuildItem ()
                {
@@ -90,11 +94,49 @@ namespace Microsoft.Build.BuildEngine {
                        this.parent_item_group = parentItemGroup;
                        
                        this.itemElement = itemElement;
-                       
-                       if (Include == String.Empty)
-                               throw new InvalidProjectFileException (String.Format ("The required attribute \"Include\" is missing from element <{0}>.", Name));
+                       isDynamic = parentItemGroup.IsDynamic;
+
+                       if (IsDynamic) {
+                               if (!string.IsNullOrEmpty (Remove)) {
+                                       if (!string.IsNullOrEmpty (Include) || !string.IsNullOrEmpty (Exclude))
+                                               throw new InvalidProjectFileException (string.Format ("The attribute \"Remove\" in element <{0}> is unrecognized.", Name));
+                                       if (itemElement.HasChildNodes)
+                                               throw new InvalidProjectFileException ("Children are not allowed below an item remove element.");
+                               }
+                               if (string.IsNullOrEmpty (Include) && !string.IsNullOrEmpty (Exclude))
+                                       throw new InvalidProjectFileException (string.Format ("The attribute \"Exclude\" in element <{0}> is unrecognized.", Name));
+                       } else {
+                               if (string.IsNullOrEmpty (Include))
+                                       throw new InvalidProjectFileException (string.Format ("The required attribute \"Include\" is missing from element <{0}>.", Name));
+                               if (!string.IsNullOrEmpty (Remove))
+                                       throw new InvalidProjectFileException (string.Format ("The attribute \"Remove\" in element <{0}> is unrecognized.", Name));
+                       }
+
+                       foreach (XmlAttribute attr in itemElement.Attributes) {
+                               if (attr.Name == "Include" || attr.Name == "Exclude" || attr.Name == "Condition")
+                                       continue;
+                               if (!IsDynamic)
+                                       throw new InvalidProjectFileException (string.Format ("The attribute \"{0}\" in element <{1}> is unrecognized.", attr.Name, Name));
+
+                               switch (attr.Name) {
+                               case "Remove":
+                                       Remove = attr.Value;
+                                       break;
+                               case "KeepDuplicates":
+                                       KeepDuplicates = bool.Parse (attr.Value);
+                                       break;
+                               case "RemoveMetadata":
+                                       removeMetadata = attr.Value;
+                                       break;
+                               case "KeepMetadata":
+                                       keepMetadata = attr.Value;
+                                       break;
+                               default:
+                                       throw new InvalidProjectFileException (string.Format ("The attribute \"{0}\" in element <{1}> is unrecognized.", attr.Name, Name));
+                               }
+                       }
                }
-               
+
                BuildItem (BuildItem parent)
                {
                        isImported = parent.isImported;
@@ -254,21 +296,39 @@ namespace Microsoft.Build.BuildEngine {
                                this.finalItemSpec = MSBuildUtils.Unescape (Include);
                                return;
                        }
-                       
+
                        foreach (XmlNode xn in itemElement.ChildNodes) {
                                XmlElement xe = xn as XmlElement;
                                if (xe != null && ConditionParser.ParseAndEvaluate (xe.GetAttribute ("Condition"), project))
                                        AddMetadata (xe.Name, xe.InnerText);
                        }
 
+                       if (IsDynamic) {
+                               if (!evaluatedTo)
+                                       return;
+
+                               if (!string.IsNullOrEmpty (Remove)) {
+                                       RemoveItems (project);
+                                       return;
+                               }
+
+                               if (string.IsNullOrEmpty (Include)) {
+                                       UpdateMetadata (project);
+                                       return;
+                               }
+                       }
+                       
                        DirectoryScanner directoryScanner;
                        Expression includeExpr, excludeExpr;
                        ITaskItem[] includes, excludes;
 
+                       var options = IsDynamic ?
+                               ParseOptions.AllowItemsMetadataAndSplit : ParseOptions.AllowItemsNoMetadataAndSplit;
+
                        includeExpr = new Expression ();
-                       includeExpr.Parse (Include, ParseOptions.AllowItemsNoMetadataAndSplit);
+                       includeExpr.Parse (Include, options);
                        excludeExpr = new Expression ();
-                       excludeExpr.Parse (Exclude, ParseOptions.AllowItemsNoMetadataAndSplit);
+                       excludeExpr.Parse (Exclude, options);
                        
                        includes = (ITaskItem[]) includeExpr.ConvertTo (project, typeof (ITaskItem[]),
                                                                ExpressionOptions.ExpandItemRefs);
@@ -293,9 +353,123 @@ namespace Microsoft.Build.BuildEngine {
                        foreach (ITaskItem matchedItem in directoryScanner.MatchedItems)
                                AddEvaluatedItem (project, evaluatedTo, matchedItem);
                }
-               
+
+               bool CheckCondition (Project project)
+               {
+                       if (parent_item_group != null && !ConditionParser.ParseAndEvaluate (parent_item_group.Condition, project))
+                               return false;
+                       if (parent_item != null && !parent_item.CheckCondition (project))
+                               return false;
+                       return ConditionParser.ParseAndEvaluate (Condition, project);
+               }
+
+               void UpdateMetadata (Project project)
+               {
+                       BuildItemGroup group;
+                       if (!project.TryGetEvaluatedItemByNameBatched (Name, out group))
+                               return;
+
+                       foreach (BuildItem item in group) {
+                               if (!item.CheckCondition (project))
+                                       continue;
+                               
+                               foreach (string name in evaluatedMetadata.Keys) {
+                                       item.SetMetadata (name, (string)evaluatedMetadata [name]);
+                               }
+
+                               AddAndRemoveMetadata (project, item);
+                       }
+               }
+
+               void AddAndRemoveMetadata (Project project, BuildItem item)
+               {
+                       if (!string.IsNullOrEmpty (removeMetadata)) {
+                               var removeExpr = new Expression ();
+                               removeExpr.Parse (removeMetadata, ParseOptions.AllowItemsNoMetadataAndSplit);
+
+                               var removeSpec = (string[]) removeExpr.ConvertTo (
+                                       project, typeof (string[]), ExpressionOptions.ExpandItemRefs);
+
+                               foreach (var remove in removeSpec) {
+                                       item.DeleteMetadata (remove);
+                               }
+                       }
+
+                       if (!string.IsNullOrEmpty (keepMetadata)) {
+                               var keepExpr = new Expression ();
+                               keepExpr.Parse (keepMetadata, ParseOptions.AllowItemsNoMetadataAndSplit);
+
+                               var keepSpec = (string[]) keepExpr.ConvertTo (
+                                       project, typeof (string[]), ExpressionOptions.ExpandItemRefs);
+
+                               var metadataNames = new string [item.evaluatedMetadata.Count];
+                               item.evaluatedMetadata.Keys.CopyTo (metadataNames, 0);
+
+                               foreach (string name in metadataNames) {
+                                       if (!keepSpec.Contains (name))
+                                               item.DeleteMetadata (name);
+                               }
+                       }
+               }
+
+               void RemoveItems (Project project)
+               {
+                       BuildItemGroup group;
+                       if (!project.TryGetEvaluatedItemByNameBatched (Name, out group))
+                               return;
+
+                       var removeExpr = new Expression ();
+                       removeExpr.Parse (Remove, ParseOptions.AllowItemsNoMetadataAndSplit);
+
+                       var removes = (ITaskItem[]) removeExpr.ConvertTo (
+                               project, typeof (ITaskItem[]), ExpressionOptions.ExpandItemRefs);
+
+                       var directoryScanner = new DirectoryScanner ();
+                       
+                       directoryScanner.Includes = removes;
+
+                       if (project.FullFileName != String.Empty)
+                               directoryScanner.BaseDirectory = new DirectoryInfo (Path.GetDirectoryName (project.FullFileName));
+                       else
+                               directoryScanner.BaseDirectory = new DirectoryInfo (Directory.GetCurrentDirectory ());
+                       
+                       directoryScanner.Scan ();
+
+                       foreach (ITaskItem matchedItem in directoryScanner.MatchedItems) {
+                               group.RemoveItem (matchedItem);
+                       }
+               }
+
+               bool ContainsItem (Project project, ITaskItem taskItem)
+               {
+                       BuildItemGroup group;
+                       if (!project.TryGetEvaluatedItemByNameBatched (Name, out group))
+                               return false;
+
+                       var item = group.FindItem (taskItem);
+                       if (item == null)
+                               return false;
+
+                       foreach (string metadataName in evaluatedMetadata.Keys) {
+                               string metadataValue = (string)evaluatedMetadata [metadataName];
+                               if (!metadataValue.Equals (item.evaluatedMetadata [metadataName]))
+                                       return false;
+                       }
+                       
+                       foreach (string metadataName in item.evaluatedMetadata.Keys) {
+                               string metadataValue = (string)item.evaluatedMetadata [metadataName];
+                               if (!metadataValue.Equals (evaluatedMetadata [metadataName]))
+                                       return false;
+                       }
+
+                       return true;
+               }
+
                void AddEvaluatedItem (Project project, bool evaluatedTo, ITaskItem taskitem)
                {
+                       if (IsDynamic && evaluatedTo && !KeepDuplicates && ContainsItem (project, taskitem))
+                               return;
+
                        BuildItemGroup big;                     
                        BuildItem bi = new BuildItem (this);
                        bi.finalItemSpec = taskitem.ItemSpec;
@@ -328,6 +502,9 @@ namespace Microsoft.Build.BuildEngine {
                        }
 
                        big.AddItem (bi);
+
+                       if (IsDynamic)
+                               AddAndRemoveMetadata (project, bi);
                }
                
                // during item's eval phase, any item refs in this item, have either
@@ -488,6 +665,20 @@ namespace Microsoft.Build.BuildEngine {
                        }
                }
 
+               internal bool IsDynamic {
+                       get { return isDynamic; }
+               }
+
+               internal string Remove {
+                       get;
+                       private set;
+               }
+
+               internal bool KeepDuplicates {
+                       get { return keepDuplicates; }
+                       private set { keepDuplicates = value; }
+               }
+
                public bool IsImported {
                        get { return isImported; }
                }
@@ -522,6 +713,10 @@ namespace Microsoft.Build.BuildEngine {
                internal bool FromXml {
                        get { return itemElement != null; }
                }
+
+               internal XmlElement XmlElement {
+                       get { return itemElement; }
+               }
                
                internal bool HasParentItem {
                        get { return parent_item != null; }
index 444731a8cee60b70538b3055085f8b73478c782c..25f2cb0d49cc40ee37752cdb331847c0c96e7d56 100644 (file)
@@ -26,6 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 using System;
+using System.Linq;
 using System.Reflection;
 using System.Collections;
 using System.Collections.Generic;
@@ -42,7 +43,8 @@ namespace Microsoft.Build.BuildEngine {
                GroupingCollection      parentCollection;
                Project                 parentProject;
                bool                    read_only;
-               bool evaluated;
+               bool                    evaluated;
+               bool                    isDynamic;
 
                public BuildItemGroup ()
                        : this (null, null, null, false)
@@ -55,12 +57,18 @@ namespace Microsoft.Build.BuildEngine {
                }
 
                internal BuildItemGroup (XmlElement xmlElement, Project project, ImportedProject importedProject, bool readOnly)
+                       : this (xmlElement, project, importedProject, readOnly, false)
+               {
+               }
+
+               internal BuildItemGroup (XmlElement xmlElement, Project project, ImportedProject importedProject, bool readOnly, bool dynamic)
                {
                        this.buildItems = new List <BuildItem> ();
                        this.importedProject = importedProject;
                        this.itemGroupElement = xmlElement;
                        this.parentProject = project;
                        this.read_only = readOnly;
+                       this.isDynamic = dynamic;
                        
                        if (!FromXml)
                                return;
@@ -70,7 +78,7 @@ namespace Microsoft.Build.BuildEngine {
                                        continue;
                                        
                                XmlElement xe = (XmlElement) xn;
-                               BuildItem bi = new BuildItem (xe, this);
+                               BuildItem bi = CreateItem (project, xe);
                                buildItems.Add (bi);
                                project.LastItemGroupContaining [bi.Name] = this;
                        }
@@ -79,6 +87,11 @@ namespace Microsoft.Build.BuildEngine {
                                                project != null ? project.FullFileName : null;
                }
 
+               internal virtual BuildItem CreateItem (Project project, XmlElement xe)
+               {
+                       return new BuildItem (xe, this);
+               }
+
                public BuildItem AddNewItem (string itemName,
                                             string itemInclude)
                {
@@ -169,6 +182,24 @@ namespace Microsoft.Build.BuildEngine {
                        RemoveItem (item);
                }
 
+               internal BuildItem FindItem (ITaskItem taskItem)
+               {
+                       return buildItems.FirstOrDefault (i => i.FinalItemSpec == taskItem.ItemSpec);
+               }
+
+               internal void RemoveItem (ITaskItem itemToRemove)
+               {
+                       if (itemToRemove == null)
+                               return;
+
+                       var item = FindItem (itemToRemove);
+                       if (item == null)
+                               return;
+
+                       item.Detach ();
+                       buildItems.Remove (item);
+               }
+
                public BuildItem[] ToArray ()
                {
                        return buildItems.ToArray ();
@@ -239,7 +270,7 @@ namespace Microsoft.Build.BuildEngine {
 
                internal void Evaluate ()
                {
-                       if (evaluated)
+                       if (!isDynamic && evaluated)
                                return;
                        foreach (BuildItem bi in buildItems) {
                                if (bi.Condition == String.Empty)
@@ -317,5 +348,11 @@ namespace Microsoft.Build.BuildEngine {
                                return itemGroupElement;
                        }       
                }
+
+               internal bool IsDynamic {
+                       get {
+                               return isDynamic;
+                       }
+               }
        }
 }
index 97191e365d23069f6b671098565884b647afbf07..d0048815a18d690db6de37c8f4c9cb578c394355 100644 (file)
@@ -35,7 +35,7 @@ using Microsoft.Build.Framework;
 using Microsoft.Build.Utilities;
 
 namespace Microsoft.Build.BuildEngine {
-       public class BuildTask {
+       public class BuildTask : IBuildTask {
        
                ITaskHost               hostObject;
                Target                  parentTarget;
@@ -127,7 +127,7 @@ namespace Microsoft.Build.BuildEngine {
                                        continue;
                                tempNames.Add (xmlAttribute.Name);
                        }
-                       
+
                        return tempNames.ToArray ();
                }
                
@@ -156,7 +156,7 @@ namespace Microsoft.Build.BuildEngine {
                        else
                                taskElement.SetAttribute (parameterName, parameterValue);
                }
-               
+
                void LogTaskStarted ()
                {
                        TaskStartedEventArgs tsea = new TaskStartedEventArgs ("Task started.", null,
@@ -266,11 +266,29 @@ namespace Microsoft.Build.BuildEngine {
                        get { return taskElement; }
                        set { taskElement = value; }
                }
-               
+
                [MonoTODO]
                public Type Type {
                        get { return parentTarget.Project.TaskDatabase.GetTypeFromClassName (Name); }
                }
+
+               public IEnumerable<string> GetAttributes ()
+               {
+                       foreach (XmlAttribute attrib in TaskElement.Attributes)
+                               yield return attrib.Value;
                
+                       foreach (XmlNode xn in TaskElement.ChildNodes) {
+                               XmlElement xe = xn as XmlElement;
+                               if (xe == null)
+                                       continue;
+                       
+                               //FIXME: error on any other child
+                               if (String.Compare (xe.LocalName, "Output", StringComparison.Ordinal) == 0) {
+                                       foreach (XmlAttribute attrib in xe.Attributes)
+                                               yield return attrib.Value;
+                               }
+                       }
+               }
+
        }
 }
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTaskItem.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTaskItem.cs
new file mode 100644 (file)
index 0000000..3fc4f14
--- /dev/null
@@ -0,0 +1,78 @@
+//
+// BuildTaskItem.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.Collections.Generic;
+using System.Xml;
+
+namespace Microsoft.Build.BuildEngine
+{
+       internal class BuildTaskItem : BuildItem, IBuildTask
+       {
+               BuildTaskItemGroup parent;
+               Project project;
+
+               public bool ContinueOnError {
+                       get; set;
+               }
+               
+               internal BuildTaskItem (Project project, XmlElement itemElement, BuildTaskItemGroup parentItemGroup)
+                       : base (itemElement, parentItemGroup)
+               {
+                       this.parent = parentItemGroup;
+                       this.project = project;
+               }
+
+               bool CheckCondition (string condition)
+               {
+                       if (string.IsNullOrEmpty (condition))
+                               return true;
+                       var ce = ConditionParser.ParseCondition (condition);
+                       return ce.BoolEvaluate (project);
+               }
+
+               bool CheckCondition ()
+               {
+                       return CheckCondition (parent.Condition) && CheckCondition (Condition);
+               }
+
+               public bool Execute ()
+               {
+                       var condition = CheckCondition ();
+                       Evaluate (project, condition);
+                       return true;
+               }
+               
+               public IEnumerable<string> GetAttributes ()
+               {
+                       foreach (XmlAttribute attrib in parent.XmlElement.Attributes)
+                               yield return attrib.Value;
+
+                       foreach (XmlAttribute attrib in XmlElement.Attributes)
+                               yield return attrib.Value;
+               }
+       }
+}
+
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTaskItemGroup.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTaskItemGroup.cs
new file mode 100644 (file)
index 0000000..2dff3e6
--- /dev/null
@@ -0,0 +1,54 @@
+//
+// BuildTaskItemGroup.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Collections.Generic;
+using System.Xml;
+
+namespace Microsoft.Build.BuildEngine {
+
+       internal class BuildTaskItemGroup : BuildItemGroup {
+
+               List<IBuildTask> items = new List<IBuildTask> ();
+
+               internal BuildTaskItemGroup (XmlElement element, Target target)
+                       : base (element, target.Project, null, false, true)
+               {
+               }
+
+               internal override BuildItem CreateItem (Project project, XmlElement xe)
+               {
+                       var item = new BuildTaskItem (project, xe, this);
+                       items.Add (item);
+                       return item;
+               }
+
+               public List<IBuildTask> Items {
+                       get { return items; }
+               }
+       }
+}
+
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTaskPropertyGroup.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTaskPropertyGroup.cs
new file mode 100644 (file)
index 0000000..4df2f78
--- /dev/null
@@ -0,0 +1,59 @@
+//
+// BuildTaskPropertyGroup.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+
+using System;
+using System.Collections.Generic;
+using System.Xml;
+
+namespace Microsoft.Build.BuildEngine {
+       
+       internal class BuildTaskPropertyGroup : BuildPropertyGroup, IBuildTask {
+               
+               public bool ContinueOnError {
+                       get; set;
+               }
+               
+               internal BuildTaskPropertyGroup (XmlElement element, Target target)
+                       : base (element, target.Project, null, false)
+               {
+               }
+               
+               public bool Execute ()
+               {
+                       Evaluate ();
+                       return true;
+               }
+
+               public IEnumerable<string> GetAttributes ()
+               {
+                       foreach (XmlAttribute attrib in XmlElement.Attributes)
+                               yield return attrib.Value;
+               }
+               
+       }
+}
+
index d7f4ac5c80b022d15c32a4ffb8b3bb4132243348..ec538abc29f3441d5927656608e29ecdb24ed11c 100644 (file)
@@ -89,6 +89,11 @@ namespace Microsoft.Build.BuildEngine {
                {
                        return ParseBooleanAnd ();
                }
+
+               public static string And (string a, string b)
+               {
+                       return a + " and " + b;
+               }
                
                ConditionExpression ParseBooleanAnd ()
                {
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/IBuildTask.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/IBuildTask.cs
new file mode 100644 (file)
index 0000000..aa18248
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// IBuildTask.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Collections.Generic;
+
+namespace Microsoft.Build.BuildEngine {
+       internal interface IBuildTask {
+               bool ContinueOnError {
+                       get; set;
+               }
+               
+               string Condition {
+                       get; set;
+               }
+               
+               bool Execute ();
+
+               IEnumerable<string> GetAttributes ();
+       }
+}
index 378348c1f4afbc96463a2a582fa1125a4820578a..250c7942bd1abfc0d448cfca22495f57c8815092 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 using System;
+using System.Text;
 using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
 using System.Xml;
 using Microsoft.Build.Framework;
 using Microsoft.Build.Utilities;
+using Mono.XBuild.Utilities;
 
 namespace Microsoft.Build.BuildEngine {
        public class Target : IEnumerable {
@@ -44,7 +46,7 @@ namespace Microsoft.Build.BuildEngine {
                Project         project;
                XmlElement      targetElement;
                List <XmlElement>       onErrorElements;
-               List <BuildTask>        buildTasks;
+               List <IBuildTask>       buildTasks;
                
                internal Target (XmlElement targetElement, Project project, ImportedProject importedProject)
                {
@@ -62,7 +64,7 @@ namespace Microsoft.Build.BuildEngine {
 
                        this.onErrorElements  = new List <XmlElement> ();
                        this.buildState = BuildState.NotStarted;
-                       this.buildTasks = new List <BuildTask> ();
+                       this.buildTasks = new List <IBuildTask> ();
                        this.batchingImpl = new TargetBatchingImpl (project, this.targetElement);
 
                        bool onErrorFound = false;
@@ -77,8 +79,11 @@ namespace Microsoft.Build.BuildEngine {
                                                        "The element <OnError> must be last under element <Target>. Found element <Error> instead.");
 #if NET_3_5
                                        else if (xe.Name == "ItemGroup") {
-                                               //don't blow up for ItemGroups inside Targets in >= 3.5
-                                               // TODO: evaluate them (see https://bugzilla.xamarin.com/show_bug.cgi?id=1862 and test in TargetTest.cs )
+                                               var group = new BuildTaskItemGroup (xe, this);
+                                               buildTasks.AddRange (group.Items);
+                                               continue;
+                                       } else if (xe.Name == "PropertyGroup") {
+                                               buildTasks.Add (new BuildTaskPropertyGroup (xe, this));
                                                continue;
                                        }
 #endif
@@ -379,7 +384,7 @@ namespace Microsoft.Build.BuildEngine {
                internal List<string> AfterThisTargets { get; set; }
 #endif
 
-               internal List<BuildTask> BuildTasks {
+               internal List<IBuildTask> BuildTasks {
                        get { return buildTasks; }
                }
 
index 28ea4c8c69ce366a569d07b964ac8cc465475331..3873a93c498f64c124ae70f214f56bada47ac940 100644 (file)
@@ -118,7 +118,7 @@ namespace Microsoft.Build.BuildEngine {
 
                                for (int i = 0; i < target.BuildTasks.Count; i ++) {
                                        //FIXME: parsing attributes repeatedly
-                                       BuildTask bt = target.BuildTasks [i];
+                                       IBuildTask bt = target.BuildTasks [i];
 
                                        TaskBatchingImpl batchingImpl = new TaskBatchingImpl (project);
                                        bool task_result = batchingImpl.Build (bt, out executeOnErrors);
index 65ed711aed56e5921ea910839ed10a90ed2434d9..80e1d5272a17ba566d5961761db208e93f7a6348 100644 (file)
@@ -40,7 +40,7 @@ namespace Microsoft.Build.BuildEngine {
                {
                }
 
-               public bool Build (BuildTask buildTask, out bool executeOnErrors)
+               public bool Build (IBuildTask buildTask, out bool executeOnErrors)
                {
                        executeOnErrors = false;
                        try {
@@ -68,7 +68,7 @@ namespace Microsoft.Build.BuildEngine {
                        }
                }
 
-               bool Run (BuildTask buildTask, out bool executeOnErrors)
+               bool Run (IBuildTask buildTask, out bool executeOnErrors)
                {
                        executeOnErrors = false;
 
@@ -108,21 +108,10 @@ namespace Microsoft.Build.BuildEngine {
                // Parse task attributes to get list of referenced metadata and items
                // to determine batching
                //
-               void ParseTaskAttributes (BuildTask buildTask)
+               void ParseTaskAttributes (IBuildTask buildTask)
                {
-                       foreach (XmlAttribute attrib in buildTask.TaskElement.Attributes)
-                               ParseAttribute (attrib.Value);
-
-                       foreach (XmlNode xn in buildTask.TaskElement.ChildNodes) {
-                               XmlElement xe = xn as XmlElement;
-                               if (xe == null)
-                                       continue;
-
-                               //FIXME: error on any other child
-                               if (String.Compare (xe.LocalName, "Output", StringComparison.Ordinal) == 0) {
-                                       foreach (XmlAttribute attrib in xe.Attributes)
-                                               ParseAttribute (attrib.Value);
-                               }
+                       foreach (var attr in buildTask.GetAttributes ()) {
+                               ParseAttribute (attr);
                        }
                }
        }
index 2943542b618db64f470c7ee3fa8c8dba63174109..ccc118475437136a5908dbdab25afb949307377a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{13F89BAD-94E5-46B5-B8E1-0F1EDB272352}</ProjectGuid>\r
+    <ProjectGuid>{E8E948B8-6DCF-48F2-A6BC-04309AED8740}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-net_2_0</OutputPath>\r
@@ -62,6 +62,9 @@
     <Compile Include="Microsoft.Build.BuildEngine\BuildPropertyGroupCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildSettings.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildTask.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItem.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItemGroup.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskPropertyGroup.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildWhen.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ChangeType.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ColorResetter.cs" />\r
@@ -85,6 +88,7 @@
     <Compile Include="Microsoft.Build.BuildEngine\ExpressionParseException.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\FileLogger.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\GroupingCollection.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\IBuildTask.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\Import.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportedProject.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0.csproj">\r
-      <Project>{A77A0E38-0000-4E4D-BEA6-704BC3677151}</Project>\r
+      <Project>{4AC4EDEE-4895-4CF9-84DF-9419E6980F38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4770b2796eceffecea238d0febebbcd4cdc0cecc..40650c44566880e284a87acbcafca72ce9611a14 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6F2D39F3-AA37-4E4C-B43B-A8456E6A3805}</ProjectGuid>\r
+    <ProjectGuid>{874516A3-F5F6-4EAB-B005-4D1A567C5E4D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-net_3_5</OutputPath>\r
@@ -62,6 +62,9 @@
     <Compile Include="Microsoft.Build.BuildEngine\BuildPropertyGroupCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildSettings.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildTask.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItem.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItemGroup.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskPropertyGroup.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildWhen.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ChangeType.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ColorResetter.cs" />\r
@@ -85,6 +88,7 @@
     <Compile Include="Microsoft.Build.BuildEngine\ExpressionParseException.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\FileLogger.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\GroupingCollection.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\IBuildTask.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\Import.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportedProject.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5.csproj">\r
-      <Project>{E861AE49-8E73-4B00-883A-7517D1C530FE}</Project>\r
+      <Project>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5.csproj">\r
-      <Project>{81767FAD-2EEC-42CE-A053-45FFDEC0D67D}</Project>\r
+      <Project>{5EA25213-0854-4620-A67B-67E9BC6D213E}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7e251ccc7c13e112ba48efe02abf9fec269a2d75..f28d7c4d070a38dd268d29dfea430a6ebec11abc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4A0D8AB4-6A16-484D-9133-D14368A2E39A}</ProjectGuid>\r
+    <ProjectGuid>{9B0AC297-CB85-43C1-8C18-12997CF1B78D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-net_4_0</OutputPath>\r
@@ -62,6 +62,9 @@
     <Compile Include="Microsoft.Build.BuildEngine\BuildPropertyGroupCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildSettings.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildTask.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItem.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItemGroup.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskPropertyGroup.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildWhen.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ChangeType.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ColorResetter.cs" />\r
@@ -85,6 +88,7 @@
     <Compile Include="Microsoft.Build.BuildEngine\ExpressionParseException.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\FileLogger.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\GroupingCollection.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\IBuildTask.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\Import.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportedProject.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0.csproj">\r
-      <Project>{38B0128C-C232-4274-BDD0-F90ED189A80F}</Project>\r
+      <Project>{A20F004B-16AC-44DE-A14E-2C2B5E9F72BE}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ff74aae0e2ef3abbf208bff5b8d47703628b87c7..723918f95929f44705942b89a97e56ca9f725ce5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}</ProjectGuid>\r
+    <ProjectGuid>{0DA63190-E6E1-41C5-B683-A54FADBE61CB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-net_4_5</OutputPath>\r
@@ -62,6 +62,9 @@
     <Compile Include="Microsoft.Build.BuildEngine\BuildPropertyGroupCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildSettings.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildTask.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItem.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItemGroup.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskPropertyGroup.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildWhen.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ChangeType.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ColorResetter.cs" />\r
@@ -85,6 +88,7 @@
     <Compile Include="Microsoft.Build.BuildEngine\ExpressionParseException.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\FileLogger.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\GroupingCollection.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\IBuildTask.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\Import.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportedProject.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{B20027FF-D5D8-4AD3-8F5F-535556916D36}</Project>\r
+      <Project>{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 21e420925e3306b95383390853a34d8981d95ec2..5bd5b735a981faf538093d4f9dac7183c5c58f70 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1096B643-5EBD-4864-A21A-263502B65D26}</ProjectGuid>\r
+    <ProjectGuid>{3C5E119F-3B25-4F81-816E-196A3C7FFB88}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0.csproj">\r
-      <Project>{13F89BAD-94E5-46B5-B8E1-0F1EDB272352}</Project>\r
+      <Project>{E8E948B8-6DCF-48F2-A6BC-04309AED8740}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0.csproj">\r
-      <Project>{A77A0E38-0000-4E4D-BEA6-704BC3677151}</Project>\r
+      <Project>{4AC4EDEE-4895-4CF9-84DF-9419E6980F38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f8ccd0b90fe1cdbbc8238aa67d6d2091446facdf..7607ff801b006ea18a5e06c5217d6df931dc1bf2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{16BAE398-3812-4104-A55E-368A697404BB}</ProjectGuid>\r
+    <ProjectGuid>{D39C03FC-1A5C-4915-A044-F68A8D29D6BA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-tests-net_3_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_3_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_3_5.csproj">\r
-      <Project>{6F2D39F3-AA37-4E4C-B43B-A8456E6A3805}</Project>\r
+      <Project>{874516A3-F5F6-4EAB-B005-4D1A567C5E4D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5.csproj">\r
-      <Project>{E861AE49-8E73-4B00-883A-7517D1C530FE}</Project>\r
+      <Project>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5.csproj">\r
-      <Project>{81767FAD-2EEC-42CE-A053-45FFDEC0D67D}</Project>\r
+      <Project>{5EA25213-0854-4620-A67B-67E9BC6D213E}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 507d52a55b6dee697bf2f0f25cb97d28b92d804b..dec70cc068943a1b86785fe92a8a4162e640108b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6D3AA408-D93B-47B3-8A07-4F775E4430E6}</ProjectGuid>\r
+    <ProjectGuid>{610DE398-8F0E-4857-A600-17773B98E457}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0.csproj">\r
-      <Project>{4A0D8AB4-6A16-484D-9133-D14368A2E39A}</Project>\r
+      <Project>{9B0AC297-CB85-43C1-8C18-12997CF1B78D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0.csproj">\r
-      <Project>{38B0128C-C232-4274-BDD0-F90ED189A80F}</Project>\r
+      <Project>{A20F004B-16AC-44DE-A14E-2C2B5E9F72BE}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e7739dddb359df50665047df3ce10ba1762942d6..6e28e88f5606d3d384e975341e687cab4425beb8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{53D1041C-C85A-4DD3-9C65-6DC879737A0F}</ProjectGuid>\r
+    <ProjectGuid>{AE80331E-4C95-4F65-BE43-0C3011661AE1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}</Project>\r
+      <Project>{0DA63190-E6E1-41C5-B683-A54FADBE61CB}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{B20027FF-D5D8-4AD3-8F5F-535556916D36}</Project>\r
+      <Project>{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 41ed073a7ab5384a7e7e2075cacb7ffc2906f8ba..9081b936b5da8b302def303583eaa962a4658bd4 100644 (file)
@@ -18,6 +18,9 @@ Microsoft.Build.BuildEngine/BuildPropertyGroupCollection.cs
 Microsoft.Build.BuildEngine/BuildPropertyGroup.cs
 Microsoft.Build.BuildEngine/BuildSettings.cs
 Microsoft.Build.BuildEngine/BuildTask.cs
+Microsoft.Build.BuildEngine/BuildTaskItem.cs
+Microsoft.Build.BuildEngine/BuildTaskItemGroup.cs
+Microsoft.Build.BuildEngine/BuildTaskPropertyGroup.cs
 Microsoft.Build.BuildEngine/BuildWhen.cs
 Microsoft.Build.BuildEngine/ChangeType.cs
 Microsoft.Build.BuildEngine/ColorResetter.cs
@@ -46,6 +49,7 @@ Microsoft.Build.BuildEngine/ImportCollection.cs
 Microsoft.Build.BuildEngine/ImportedProject.cs
 Microsoft.Build.BuildEngine/InternalLoggerException.cs
 Microsoft.Build.BuildEngine/InvalidProjectFileException.cs
+Microsoft.Build.BuildEngine/IBuildTask.cs
 Microsoft.Build.BuildEngine/IReference.cs
 Microsoft.Build.BuildEngine/ItemReference.cs
 Microsoft.Build.BuildEngine/LogExtensions.cs
index 36f5e52f9b098933a5e1c2271a4c2dd179069e79..e580d358ed07dd16235f4eec2c0bb939b4a91d12 100644 (file)
@@ -95,6 +95,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
 
                // Parameter "itemInclude" cannot have zero length.
                [Test]
+               [Category ("NotDotNet")]
                [ExpectedException (typeof (ArgumentException))]
                public void TestCtor6 ()
                {
index 528ea5f9a56c3526536a7530f7494c2b2d992998..73df7340741a5f03699479c82c844563c8543993 100644 (file)
@@ -220,6 +220,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestGetEnumerator1 ()
                {
                        BuildPropertyGroup bpg = new BuildPropertyGroup ();
index 03f46be4183592552e65d1949ee44ec734bc2c10..f5f0472292b2b04b41d1b650685961fdde463480 100644 (file)
@@ -349,6 +349,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestValueXml ()
                {
                        BuildPropertyGroup [] bpgs = new BuildPropertyGroup [1];
index 258e4bb962d66822d93b175848171326ce8466a1..aa0e69d8158182e77b24e2bfd56a4f3a87a70baa 100755 (executable)
@@ -35,6 +35,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
        [TestFixture]
        public class ConsoleLoggerTest {
                [Test]
+               [Category ("NotDotNet")]
                public void TestAssignment ()
                {
                        ConsoleLogger cl = new ConsoleLogger ();
index d46108b8464cef109968d2f2f1c07117ba40c444..0a9edff4e5dd3255ed6492e95709d28cd0294081 100755 (executable)
@@ -275,6 +275,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                [ExpectedException (typeof (ArgumentException))]
                public void TestBuildProject1 ()
                {
@@ -305,6 +306,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                [ExpectedException (typeof (ArgumentException))]
                public void TestBuildProjectNull1 ()
                {
@@ -313,6 +315,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                [ExpectedException (typeof (ArgumentException))]
                public void TestBuildProjectNull2 ()
                {
index 0d07f2c2e042c96fd1f4da85d0a121d9d98fb2fc..8a78fad3c8e95cf32e2c44321cf773d0396bcaa1 100644 (file)
@@ -1301,6 +1301,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestBatchedMetadataRef1 ()
                {
                        //test for multiple items with same metadata also
@@ -1341,6 +1342,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestBatchedMetadataRef2 ()
                {
                        string projectString = @"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
@@ -1394,6 +1396,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestBatchedMetadataRef3 ()
                {
                        string projectString = @"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
@@ -1429,6 +1432,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestBatchedMetadataRef4 ()
                {
                        string projectString = @"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
@@ -1457,6 +1461,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestBatchedMetadataRef5 ()
                {
                        string projectString = @"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
@@ -1492,6 +1497,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestBatchedMetadataRefInOutput () {
                        string projectString = @"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
                        <UsingTask TaskName=""BatchingTestTask"" AssemblyFile=""Test/resources/TestTasks.dll"" />
@@ -1831,6 +1837,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestMSBuildThisProperties ()
                {
                        Engine engine = new Engine (Consts.BinPath);
@@ -2005,6 +2012,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestRequiredTask_TaskItemArray1 ()
                {
                        Project p = CheckProjectForRequiredTests ("RequiredTestTask_TaskItems", "@(NonExistant)",
@@ -2016,6 +2024,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestRequiredTask_TaskItemArray2 ()
                {
                        Project p = CheckProjectForRequiredTests ("RequiredTestTask_TaskItems", "$(NonExistant)",
@@ -2027,6 +2036,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestRequiredTask_TaskItemArray3 ()
                {
                        Project p = CheckProjectForRequiredTests ("RequiredTestTask_IntArray", "$(NonExistant)",
@@ -2038,6 +2048,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestRequiredTask_TaskItemArray4 () {
                        Project p = CheckProjectForRequiredTests ("RequiredTestTask_IntArray", "%(NonExistant.Md)",
                                true, "Build failed", "count: 0");
@@ -2048,6 +2059,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestRequiredTask_TaskItemArray5 () {
                        // with extra space in prop value
                        Project p = CheckProjectForRequiredTests ("RequiredTestTask_IntArray", "  %(NonExistant.Md)",
index 9a40fd342a8f714d53625c640953318592a6b12e..74d597e24b29fd62bddd5272211bcc08c1a9171a 100644 (file)
 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
 using System;
 using System.Collections;
 using Microsoft.Build.BuildEngine;
 using Microsoft.Build.Framework;
 using Microsoft.Build.Utilities;
+using MonoTests.Microsoft.Build.Tasks;
 using NUnit.Framework;
 using System.IO;
+using System.Xml;
 
 namespace MonoTests.Microsoft.Build.BuildEngine {
        [TestFixture]
@@ -349,38 +350,87 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
 #if NET_3_5
-               [Test]
-               public void BuildProjectWithItemGroupInsideTarget()
+               bool Build (string projectXml, ILogger logger)
                {
-                       ItemGroupInsideATarget ();
+                       if (Environment.OSVersion.Platform == PlatformID.Win32NT) {
+                               var reader = new StringReader (projectXml);
+                               var xml = XmlReader.Create (reader);
+                               return BuildOnWindows (xml, logger);
+                       } else {
+                               return BuildOnLinux (projectXml, logger);
+                       }
                }
 
-               private MonoTests.Microsoft.Build.Tasks.TestMessageLogger ItemGroupInsideATarget() {
-                       var engine = new Engine(Consts.BinPath);
-                       var project = engine.CreateNewProject();
-                       var projectXml = GetProjectXmlWithItemGroupInsideATarget ();
-                       project.LoadXml(projectXml);
+               bool BuildOnWindows (XmlReader reader, ILogger logger)
+               {
+                       var type = Type.GetType ("Microsoft.Build.Evaluation.ProjectCollection, Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
+
+                       var prop = type.GetProperty ("GlobalProjectCollection");
+                       var coll = prop.GetValue (null);
+                               
+                       var loadProject = coll.GetType ().GetMethod (
+                                       "LoadProject", new Type[] { typeof (XmlReader), typeof (string) });
+                       var proj = loadProject.Invoke (coll, new object[] { reader, "4.0" });
+                               
+                       var build = proj.GetType ().GetMethod ("Build", new Type[] { typeof (string), typeof (ILogger[]) });
+                       var ret = (bool)build.Invoke (proj, new object[] { "Main", new ILogger[] { logger }});
+                       return ret;
+               }
 
-                       MonoTests.Microsoft.Build.Tasks.TestMessageLogger logger =
-                               new MonoTests.Microsoft.Build.Tasks.TestMessageLogger ();
+               bool BuildOnLinux (string projectXml, ILogger logger)
+               {
+                       var engine = new Engine (Consts.BinPath);
+                       var project = engine.CreateNewProject ();
+                       project.LoadXml (projectXml);
+                       
                        engine.RegisterLogger (logger);
+                       
+                       return project.Build ("Main");
+               }
 
-                       bool result = project.Build("Main");
-                       if (!result)
-                       {
+               TestMessageLogger CreateLogger (string projectXml)
+               {
+                       var logger = new TestMessageLogger ();
+                       var result = Build (projectXml, logger);
+
+                       if (!result) {
                                logger.DumpMessages ();
-                               Assert.Fail("Build failed");
+                               Assert.Fail ("Build failed");
                        }
 
                        return logger;
                }
 
-               private string GetProjectXmlWithItemGroupInsideATarget ()
+               void ItemGroupInsideTarget (string xml, params string[] messages)
+               {
+                       var logger = CreateLogger (xml);
+                       
+                       try
+                       {
+                               Assert.AreEqual(messages.Length, logger.NormalMessageCount, "Expected number of messages");
+                               for (int i = 0; i < messages.Length; i++)
+                                       logger.CheckLoggedMessageHead (messages [i], i.ToString ());
+                               Assert.AreEqual(0, logger.NormalMessageCount, "Extra messages found");
+                               
+                               Assert.AreEqual(1, logger.TargetStarted, "TargetStarted count");
+                               Assert.AreEqual(1, logger.TargetFinished, "TargetFinished count");
+                               Assert.AreEqual(messages.Length, logger.TaskStarted, "TaskStarted count");
+                               Assert.AreEqual(messages.Length, logger.TaskFinished, "TaskFinished count");
+                       }
+                       catch (AssertionException)
+                       {
+                               logger.DumpMessages();
+                               throw;
+                       }
+               }
+
+               [Test]
+               public void BuildProjectWithItemGroupInsideTarget ()
                {
-                       return
+                       ItemGroupInsideTarget (
                                @"<Project ToolsVersion=""4.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
                                        <ItemGroup>
-                                               <fruit Include=""apple""/>
+                                       <fruit Include=""apple""/>
                                                <fruit Include=""apricot""/>
                                        </ItemGroup>
 
@@ -390,36 +440,294 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                                                </ItemGroup>
                                                <Message Text=""%(fruit.Identity)""/>
                                        </Target>
-                               </Project>";
+                               </Project>", "apple", "apricot", "raspberry");
+               }
+               
+               [Test]
+               public void BuildProjectWithItemGroupInsideTarget2 ()
+               {
+                       ItemGroupInsideTarget (
+                               @"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"" ToolsVersion=""4.0"">
+                                       <ItemGroup>
+                                               <A Include='1'>
+                                                       <Sub>Foo</Sub>
+                                               </A>
+                                       </ItemGroup>
+                                       <PropertyGroup>
+                                               <Foo>Bar</Foo>
+                                       </PropertyGroup>
+
+                                       <Target Name='Main'>
+                                               <ItemGroup>
+                                                       <A Include='2'>
+                                                               <Sub>$(Foo);Hello</Sub>
+                                                       </A>
+                                               </ItemGroup>
+                               
+                                               <Message Text='@(A)' />
+                                               <Message Text='%(A.Sub)' />
+                                       </Target>
+                               </Project>", "1;2", "Foo", "Bar;Hello");
+               }
+               
+               [Test]
+               public void BuildProjectWithPropertyGroupInsideTarget ()
+               {
+                       ItemGroupInsideTarget (
+                               @"<Project ToolsVersion=""4.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <PropertyGroup>
+                                               <A>Foo</A>
+                                               <B>Bar</B>
+                                       </PropertyGroup>
+
+                                       <Target Name=""Main"">
+                                               <Message Text='$(A)' />
+                                               <PropertyGroup>
+                                                       <A>$(B)</A>
+                                               </PropertyGroup>
+                                               <Message Text='$(A)' />
+                                       </Target>
+                               </Project>", "Foo", "Bar");
                }
 
                [Test]
-               [Category ("NotWorking")] //https://bugzilla.xamarin.com/show_bug.cgi?id=1862
-               public void BuildProjectOutputWithItemGroupInsideTarget()
+               public void BuildProjectWithPropertyGroupInsideTarget2 ()
                {
-                       var logger = ItemGroupInsideATarget ();
+                       ItemGroupInsideTarget (
+                               @"<Project ToolsVersion=""4.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <PropertyGroup>
+                                               <A>Foo</A>
+                                               <B>Bar</B>
+                                       </PropertyGroup>
 
-                       try
-                       {
-                               Assert.AreEqual(3, logger.NormalMessageCount, "Expected number of messages");
-                               logger.CheckLoggedMessageHead("apple", "A1");
-                               logger.CheckLoggedMessageHead("apricot", "A2");
-                               logger.CheckLoggedMessageHead("raspberry", "A3");
-                               Assert.AreEqual(0, logger.NormalMessageCount, "Extra messages found");
+                                       <Target Name=""Main"">
+                                               <Message Text='$(A)' />
+                                               <PropertyGroup Condition='true'>
+                                                       <B Condition='false'>False</B>
+                                               </PropertyGroup>
+                                               <PropertyGroup Condition='true'>
+                                                       <A>$(B)</A>
+                                               </PropertyGroup>
+                                               <Message Text='$(A)' />
+                                               <Message Text='$(B)' />
+                                               <PropertyGroup>
+                                                       <A Condition='$(A) == $(B)'>Equal</A>
+                                               </PropertyGroup>
+                                               <Message Text='$(A)' />
+                                       </Target>
+                               </Project>", "Foo", "Bar", "Bar", "Equal");
+               }
 
-                               Assert.AreEqual(1, logger.TargetStarted, "TargetStarted count");
-                               Assert.AreEqual(1, logger.TargetFinished, "TargetFinished count");
-                               Assert.AreEqual(3, logger.TaskStarted, "TaskStarted count");
-                               Assert.AreEqual(3, logger.TaskFinished, "TaskFinished count");
+               [Test]
+               public void ItemGroupInsideTarget_ModifyMetadata ()
+               {
+                       ItemGroupInsideTarget (
+                               @"<Project ToolsVersion=""4.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <ItemGroup>
+                                               <Server Include='Server1'>
+                                                       <AdminContact>Mono</AdminContact>
+                                               </Server>
+                                               <Server Include='Server2'>
+                                                       <AdminContact>Mono</AdminContact>
+                                               </Server>
+                                               <Server Include='Server3'>
+                                                       <AdminContact>Root</AdminContact>
+                                               </Server>
+                                       </ItemGroup>
 
-                       }
-                       catch (AssertionException)
-                       {
-                               logger.DumpMessages();
-                               throw;
-                       }
+                                       <Target Name='Main'>
+                                               <ItemGroup>
+                                                       <Server Condition=""'%(Server.AdminContact)' == 'Mono'"">
+                                                               <AdminContact>Monkey</AdminContact>
+                                                       </Server>
+                                               </ItemGroup>
+                                       
+                                               <Message Text='%(Server.Identity) : %(Server.AdminContact)' />
+                                               </Target>
+                                       </Project>", "Server1 : Monkey", "Server2 : Monkey", "Server3 : Root");
                }
-#endif
+
+               [Test]
+               public void ItemGroupInsideTarget_RemoveItem ()
+               {
+                       ItemGroupInsideTarget (
+                               @"<Project ToolsVersion=""4.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <ItemGroup>
+                                               <Foo Include='A;B;C;D' />
+                                       </ItemGroup>
+
+                                       <Target Name='Main'>
+                                               <ItemGroup>
+                                                       <Foo Remove='B' />
+                                               </ItemGroup>
+
+                                               <Message Text='@(Foo)' />
+                                       </Target>
+                               </Project>", "A;C;D");
+               }
+
+               [Test]
+               public void ItemGroupInsideTarget_DontKeepDuplicates ()
+               {
+                       ItemGroupInsideTarget (
+                               @"<Project ToolsVersion=""4.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <ItemGroup>
+                                               <Foo Include='A;B' />
+                                               <Foo Include='C'>
+                                                       <Hello>World</Hello>
+                                               </Foo>
+                                               <Foo Include='D'>
+                                                       <Hello>Boston</Hello>
+                                               </Foo>
+                                       </ItemGroup>
+
+                                       <Target Name='Main'>
+                                               <ItemGroup>
+                                                       <Foo Include='B;C;D' KeepDuplicates='false'>
+                                                               <Hello>Boston</Hello>
+                                                       </Foo>
+                                               </ItemGroup>
+                               
+                                               <Message Text='@(Foo)' />
+                                       </Target>
+                               </Project>", "A;B;C;D;B;C");
+               }
+
+               [Test]
+               public void ItemGroupInsideTarget_RemoveMetadata ()
+               {
+                       ItemGroupInsideTarget (
+                               @"<Project ToolsVersion=""4.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <ItemGroup>
+                                               <Foo Include='A' />
+                                               <Foo Include='B'>
+                                                       <Hello>World</Hello>
+                                               </Foo>
+                                               <Foo Include='C'>
+                                                       <Hello>Boston</Hello>
+                                               </Foo>
+                                               <Foo Include='D'>
+                                                       <Test>Monkey</Test>
+                                               </Foo>
+                                       </ItemGroup>
+                                       <PropertyGroup>
+                                               <Foo>Hello</Foo>
+                                       </PropertyGroup>
+
+                                       <Target Name='Main'>
+                                               <ItemGroup>
+                                                       <Bar Include='@(Foo)' RemoveMetadata='$(Foo)' />
+                                                       <Bar Include='E'>
+                                                               <Hello>Monkey</Hello>
+                                                       </Bar>
+                                               </ItemGroup>
+                               
+                                               <Message Text='%(Bar.Identity)' Condition=""'%(Bar.Hello)' != ''""/>
+                                       </Target>
+                               </Project>", "E");
+               }
+
+               [Test]
+               public void ItemGroupInsideTarget_RemoveMetadata2 ()
+               {
+                       ItemGroupInsideTarget (
+                               @"<Project ToolsVersion=""4.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <ItemGroup>
+                                               <Foo Include='A' />
+                                               <Foo Include='B'>
+                                                       <Hello>World</Hello>
+                                               </Foo>
+                                               <Foo Include='C'>
+                                                       <Hello>Boston</Hello>
+                                               </Foo>
+                                               <Foo Include='D'>
+                                                       <Test>Monkey</Test>
+                                               </Foo>
+                                       </ItemGroup>
+                                       <PropertyGroup>
+                                       <Foo>Hello</Foo>
+                                       </PropertyGroup>
+
+                                       <Target Name='Main'>
+                                               <ItemGroup>
+                                                       <Foo RemoveMetadata='$(Foo)' />
+                                                       <Foo Include='E'>
+                                                               <Hello>Monkey</Hello>
+                                                       </Foo>
+                                               </ItemGroup>
+                               
+                                       <Message Text='%(Foo.Identity)' Condition=""'%(Foo.Hello)' != ''""/>
+                                       </Target>
+                               </Project>", "E");
+               }
+
+               [Test]
+               public void ItemGroupInsideTarget_KeepMetadata ()
+               {
+                       ItemGroupInsideTarget (
+                               @"<Project ToolsVersion=""4.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <ItemGroup>
+                                               <Foo Include='A' />
+                                               <Foo Include='B'>
+                                                       <Hello>World</Hello>
+                                               </Foo>
+                                               <Foo Include='C'>
+                                                       <Hello>Boston</Hello>
+                                               </Foo>
+                                               <Foo Include='D'>
+                                                       <Test>Monkey</Test>
+                                               </Foo>
+                                       </ItemGroup>
+
+                                       <Target Name='Main'>
+                                               <ItemGroup>
+                                                       <Foo KeepMetadata='Test' />
+                                                       <Foo Include='E'>
+                                                               <Hello>Monkey</Hello>
+                                                       </Foo>
+                                               </ItemGroup>
+                               
+                                               <Message Text='%(Foo.Identity)' Condition=""'%(Foo.Test)' != ''""/>
+                                       </Target>
+                               </Project>", "D");
+               }
+
+               [Test]
+               public void ItemGroupInsideTarget_Batching ()
+               {
+                       ItemGroupInsideTarget (
+                               @"<Project ToolsVersion=""4.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <Target Name='Main'>
+                                               <ItemGroup>
+                                                       <Foo Include='A;B' />
+                                                       <All Include='%(Foo.Identity)' />
+                                               </ItemGroup>
+                                               <Message Text='%(All.Identity)' />
+                                       </Target>
+                               </Project>", "A", "B");
+               }
+
+               [Test]
+               public void ItemGroupInsideTarget_Condition ()
+               {
+                       ItemGroupInsideTarget (
+                               @"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"" ToolsVersion=""4.0"">
+                                       <PropertyGroup>
+                                               <Summer>true</Summer>
+                                       </PropertyGroup>
+                                       <ItemGroup>
+                                               <Weather Include='Sun;Rain' />
+                                       </ItemGroup>
+                               
+                                       <Target Name='Main'>
+                                               <ItemGroup Condition=""'$(Summer)' != 'true'"">
+                                                       <Weather Include='Snow' />
+                                               </ItemGroup>
+                                               <Message Text='%(Weather.Identity)' />
+                                       </Target>
+                               </Project>", "Sun", "Rain");
+               }
+               #endif
 
                [Test]
                public void TestTargetOutputsIncludingMetadata ()
@@ -542,6 +850,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
 
 #if NET_4_0
                [Test]
+               [Category ("NotDotNet")]
                public void TestBeforeAndAfterTargets ()
                {
                        Engine engine;
index 4c62d4145cb2796178e9d51f81970a77615533b4..82d5e3009103d442f8f9e8560ee58e2e26226699 100644 (file)
@@ -202,6 +202,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestDuplicate1 ()
                {
                        string documentString = @"
@@ -294,6 +295,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestLazyLoad2 ()
                {
                        string documentString = @"
index d3954a2f322d73ac4320d87f96045efaae9b9ed3..51c3da6cfbf3ff0f779d3b5d4facac81819f1574 100644 (file)
@@ -284,6 +284,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestCondition10 ()
                {
                        Engine engine = new Engine (Consts.BinPath);
index 66968658e8a8e6083cf64c055c6a5ed7c8c2a7c3..77b45eb5bc059022f7cb782e886c1b5d34b0de7a 100644 (file)
@@ -233,6 +233,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestImportOrder1 ()
                {
                        Engine engine = new Engine (Consts.BinPath);
@@ -255,6 +256,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                [ExpectedException (typeof (InvalidProjectFileException))]
                public void TestImportOrder2 ()
                {
@@ -326,6 +328,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestImportOrder5 ()
                {
                        Engine engine = new Engine (Consts.BinPath);
@@ -348,6 +351,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestImportOrder6 ()
                {
                        Engine engine = new Engine (Consts.BinPath);
@@ -370,6 +374,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestImportOrder7 ()
                {
                        Engine engine = new Engine (Consts.BinPath);
index 5f6863be0757e2722555f6cf67a739341239c03c..ee93c4b932d47924a461760dc727b8081bdc2c26 100755 (executable)
@@ -718,6 +718,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestEmptyItemsWithBatching ()
                {
                        string project_xml = @"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
@@ -799,6 +800,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestItemsInTarget1 ()
                {
                        Engine engine = new Engine (Consts.BinPath);
@@ -891,6 +893,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestItemsInTarget3 ()
                {
                        Engine engine = new Engine (Consts.BinPath);
@@ -934,6 +937,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                //Test with ITaskItem[]
                public void TestItemsInTarget3a ()
                {
@@ -982,6 +986,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                //Test with string[]
                public void TestItemsInTarget3b ()
                {
@@ -1024,6 +1029,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                //Test with string
                public void TestItemsInTarget3c ()
                {
@@ -1131,6 +1137,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestSingleTaskItem1 ()
                {
                        Project proj = BuildProjectForSingleTaskItem ("$(D)$(C)");
@@ -1138,6 +1145,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestSingleTaskItem2 ()
                {
                        Project proj = BuildProjectForSingleTaskItem ("@(Item1)");
@@ -1145,6 +1153,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestSingleTaskItem3 ()
                {
                        Project proj = BuildProjectForSingleTaskItem ("$(A).foo");
@@ -1152,6 +1161,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestSingleTaskItem4 ()
                {
                        Project proj = BuildProjectForSingleTaskItem ("$(C)");
index f5c6bdf307f0439d6f1fa12606f34b267167bfff..70b14ecf9a86862aa63461cfc89906bb5cca2832 100644 (file)
@@ -55,6 +55,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                }
 
                [Test]
+               [Category ("NotDotNet")]
                public void TestProperties2 ()
                {
                        Engine engine = new Engine (Consts.BinPath);
index 38ce341106d32ae9aaa99d8b8117f83cc8d90c5f..0a6526f4a1752abe6ba520800d434c58976078ed 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</ProjectGuid>\r
+    <ProjectGuid>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-net_2_0</OutputPath>\r
@@ -67,6 +67,7 @@
     <Compile Include="Microsoft.Build.Framework\ExternalProjectStartedEventArgs.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine2.cs" />\r
+    <Compile Include="Microsoft.Build.Framework\ICancelableTask.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IEventSource.cs" />\r
     <Compile Include="Microsoft.Build.Framework\ILogger.cs" />\r
     <Compile Include="Microsoft.Build.Framework\INodeLogger.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c861928a7850f5086f4b28583990fa8cec70c83f..474ad1734138dde102236e6733a7809b955c5bee 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E861AE49-8E73-4B00-883A-7517D1C530FE}</ProjectGuid>\r
+    <ProjectGuid>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-net_3_5</OutputPath>\r
@@ -67,6 +67,7 @@
     <Compile Include="Microsoft.Build.Framework\ExternalProjectStartedEventArgs.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine2.cs" />\r
+    <Compile Include="Microsoft.Build.Framework\ICancelableTask.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IEventSource.cs" />\r
     <Compile Include="Microsoft.Build.Framework\ILogger.cs" />\r
     <Compile Include="Microsoft.Build.Framework\INodeLogger.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 71295dbc2d92593cdad1ed748f3652f8e1beac8b..7e08bbe2a534db00b080c27396c3904b59dacf4e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</ProjectGuid>\r
+    <ProjectGuid>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-net_4_0</OutputPath>\r
@@ -67,6 +67,7 @@
     <Compile Include="Microsoft.Build.Framework\ExternalProjectStartedEventArgs.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine2.cs" />\r
+    <Compile Include="Microsoft.Build.Framework\ICancelableTask.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IEventSource.cs" />\r
     <Compile Include="Microsoft.Build.Framework\ILogger.cs" />\r
     <Compile Include="Microsoft.Build.Framework\INodeLogger.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1c987516ca82e5cc83352c643c6c28d87ab7fc02..f266918ab6dd2858aff275e107b1311c15a49ce8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{58CD6625-5643-4A3F-84E6-5568E8573A49}</ProjectGuid>\r
+    <ProjectGuid>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-net_4_5</OutputPath>\r
@@ -67,6 +67,7 @@
     <Compile Include="Microsoft.Build.Framework\ExternalProjectStartedEventArgs.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine2.cs" />\r
+    <Compile Include="Microsoft.Build.Framework\ICancelableTask.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IEventSource.cs" />\r
     <Compile Include="Microsoft.Build.Framework\ILogger.cs" />\r
     <Compile Include="Microsoft.Build.Framework\INodeLogger.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 559360d1bc2067aa505a5ae3d85888e466605595..0ff64a365978956d4ecfe4d06e92bf019975a4fe 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{143DF436-A543-4F5A-A16C-F5F82B3BF844}</ProjectGuid>\r
+    <ProjectGuid>{5258A6DA-27E5-41A1-B3DC-D1F42F7DE022}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 48adeada6f8ad1417ec6fcb01728bc955e54405f..74ccf29c2290c9b193638e700727219344c3d4c7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A134D71E-4CD7-4FE4-B460-5B396A68FA4B}</ProjectGuid>\r
+    <ProjectGuid>{27F613C6-D90A-466D-A4D9-7D5BCA91AE06}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-tests-net_3_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_3_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5.csproj">\r
-      <Project>{E861AE49-8E73-4B00-883A-7517D1C530FE}</Project>\r
+      <Project>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ef6df144f0584f61a2f66a3a196eb9b120a2a3ef..998cf67ea0f739bac628f0c1b4ed27203e1a394c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{20F029ED-B7A1-4085-B32A-B13D5639ACE0}</ProjectGuid>\r
+    <ProjectGuid>{520B9924-B4B3-407F-974A-9C10F8C5B4AA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c31d6c1819bd7a10b77468b36a5d5faccdf58848..85983dec4750725b854dc2d1aedda89cc4cdd107 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D35940CE-3A36-4AE4-850F-C022247AE9F2}</ProjectGuid>\r
+    <ProjectGuid>{DB6937A9-D27A-42AB-A044-1DB4B1F97414}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f9071bcf3bb04efc72e8d453f7779a26277f9b74..3b83e2da7b9bb7c07174cb6e8db796b789c519d2 100644 (file)
@@ -21,6 +21,7 @@ Microsoft.Build.Framework/ExternalProjectFinishedEventArgs.cs
 Microsoft.Build.Framework/ExternalProjectStartedEventArgs.cs
 Microsoft.Build.Framework/IBuildEngine.cs
 Microsoft.Build.Framework/IBuildEngine2.cs
+Microsoft.Build.Framework/ICancelableTask.cs
 Microsoft.Build.Framework/IEventSource.cs
 Microsoft.Build.Framework/ILogger.cs
 Microsoft.Build.Framework/INodeLogger.cs
diff --git a/mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework/ICancelableTask.cs b/mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework/ICancelableTask.cs
new file mode 100644 (file)
index 0000000..1092377
--- /dev/null
@@ -0,0 +1,13 @@
+#if NET_4_0
+using System;
+
+namespace Microsoft.Build.Framework
+{
+       [MonoTODO ("This needs to be taken into consideration in the build engine")]
+       public interface ICancelableTask : ITask
+       {
+               void Cancel ();
+       }
+}
+
+#endif
index c668fa4f1ef5c769a972953c1d161b253d2e0d1b..6d196e931da88ceb9913181ff9ed13321cf1cc4a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CF0D30D5-B824-4D4E-B1B2-173524B53942}</ProjectGuid>\r
+    <ProjectGuid>{3DD52713-DB38-4D0D-8692-650B8821B047}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0.csproj">\r
-      <Project>{A77A0E38-0000-4E4D-BEA6-704BC3677151}</Project>\r
+      <Project>{4AC4EDEE-4895-4CF9-84DF-9419E6980F38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0.csproj">\r
-      <Project>{13F89BAD-94E5-46B5-B8E1-0F1EDB272352}</Project>\r
+      <Project>{E8E948B8-6DCF-48F2-A6BC-04309AED8740}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ae1fd6c54de5f43821845cbd4e79a41f7d96d27e..014cf446e0446a6135d1431d7e59eb07140f9ca2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2A41CE90-16E6-46FD-94D3-FF944A9EB0BF}</ProjectGuid>\r
+    <ProjectGuid>{B71721D7-C95E-41D5-82A6-67DDD79C9477}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-net_3_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5.csproj">\r
-      <Project>{81767FAD-2EEC-42CE-A053-45FFDEC0D67D}</Project>\r
+      <Project>{5EA25213-0854-4620-A67B-67E9BC6D213E}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5.csproj">\r
-      <Project>{E861AE49-8E73-4B00-883A-7517D1C530FE}</Project>\r
+      <Project>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_3_5.csproj">\r
-      <Project>{6F2D39F3-AA37-4E4C-B43B-A8456E6A3805}</Project>\r
+      <Project>{874516A3-F5F6-4EAB-B005-4D1A567C5E4D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_3_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index dd42043f140f5faa37005319ef2c49ef429d747d..b52f6278696e80854bf61bbe12ab5c503c973d1a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4E865E96-F3C9-4218-8FE7-AC0F9D1E7453}</ProjectGuid>\r
+    <ProjectGuid>{0F2C25D7-DF2E-4F4B-85D8-7EFC4DCD3B0C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0.csproj">\r
-      <Project>{38B0128C-C232-4274-BDD0-F90ED189A80F}</Project>\r
+      <Project>{A20F004B-16AC-44DE-A14E-2C2B5E9F72BE}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0.csproj">\r
-      <Project>{4A0D8AB4-6A16-484D-9133-D14368A2E39A}</Project>\r
+      <Project>{9B0AC297-CB85-43C1-8C18-12997CF1B78D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a2bc575164adba747096da9f8470921f106d8b63..657ee6fc25111e8556221d54f3fc488832749005 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{09B16AF2-4480-4F66-995B-6FEFD9C67546}</ProjectGuid>\r
+    <ProjectGuid>{B0995E00-BF37-4B8A-8229-285C060E5957}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{B20027FF-D5D8-4AD3-8F5F-535556916D36}</Project>\r
+      <Project>{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}</Project>\r
+      <Project>{0DA63190-E6E1-41C5-B683-A54FADBE61CB}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b0d6a2556fc3a4be033d85a57ce832e81d4c7d1e..c57ee651f21d63d89ecc1cac3b78c97278822952 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8213E693-D672-48AB-9348-9DB1D6AC902F}</ProjectGuid>\r
+    <ProjectGuid>{7B10DE59-3656-4F8F-A1C6-A090220D7BAF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_2_0.csproj">\r
-      <Project>{CF0D30D5-B824-4D4E-B1B2-173524B53942}</Project>\r
+      <Project>{3DD52713-DB38-4D0D-8692-650B8821B047}</Project>\r
       <Name>Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0.csproj">\r
-      <Project>{13F89BAD-94E5-46B5-B8E1-0F1EDB272352}</Project>\r
+      <Project>{E8E948B8-6DCF-48F2-A6BC-04309AED8740}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0.csproj">\r
-      <Project>{A77A0E38-0000-4E4D-BEA6-704BC3677151}</Project>\r
+      <Project>{4AC4EDEE-4895-4CF9-84DF-9419E6980F38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cfb1658211a0ed634fce05450e32318e5fd0b9be..005821df1c0bcbe1bf6ea6e519a38a45f9566093 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4C53D20E-EAA0-4014-800A-0C2999AB2F8D}</ProjectGuid>\r
+    <ProjectGuid>{9B12933E-EAF8-4271-9C54-CFC4657AD5FB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-tests-net_3_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_3_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_3_5.csproj">\r
-      <Project>{2A41CE90-16E6-46FD-94D3-FF944A9EB0BF}</Project>\r
+      <Project>{B71721D7-C95E-41D5-82A6-67DDD79C9477}</Project>\r
       <Name>Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_3_5.csproj">\r
-      <Project>{6F2D39F3-AA37-4E4C-B43B-A8456E6A3805}</Project>\r
+      <Project>{874516A3-F5F6-4EAB-B005-4D1A567C5E4D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5.csproj">\r
-      <Project>{E861AE49-8E73-4B00-883A-7517D1C530FE}</Project>\r
+      <Project>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5.csproj">\r
-      <Project>{81767FAD-2EEC-42CE-A053-45FFDEC0D67D}</Project>\r
+      <Project>{5EA25213-0854-4620-A67B-67E9BC6D213E}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7434b0850628b6152b07293a77dbed43ba1b7c23..f843f417aa51d145ba4924bc6378cc39fdb55dbb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0ED5D56D-6900-4C79-A4E1-4C030432E7E7}</ProjectGuid>\r
+    <ProjectGuid>{E3E93786-14F7-41DE-AFBB-20912C970ED8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_0.csproj">\r
-      <Project>{4E865E96-F3C9-4218-8FE7-AC0F9D1E7453}</Project>\r
+      <Project>{0F2C25D7-DF2E-4F4B-85D8-7EFC4DCD3B0C}</Project>\r
       <Name>Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0.csproj">\r
-      <Project>{4A0D8AB4-6A16-484D-9133-D14368A2E39A}</Project>\r
+      <Project>{9B0AC297-CB85-43C1-8C18-12997CF1B78D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0.csproj">\r
-      <Project>{38B0128C-C232-4274-BDD0-F90ED189A80F}</Project>\r
+      <Project>{A20F004B-16AC-44DE-A14E-2C2B5E9F72BE}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1443e35dd9d259687d953b0f16200d34a54a2e51..5c09f4b7fbe5b3ea545d6d3839545dd141b79f3d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7E029CF3-FBE0-48F4-A802-1536E1E2FCFF}</ProjectGuid>\r
+    <ProjectGuid>{E572DA55-C0E6-42BA-9BCF-05B2C777D15B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_5.csproj">\r
-      <Project>{09B16AF2-4480-4F66-995B-6FEFD9C67546}</Project>\r
+      <Project>{B0995E00-BF37-4B8A-8229-285C060E5957}</Project>\r
       <Name>Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}</Project>\r
+      <Project>{0DA63190-E6E1-41C5-B683-A54FADBE61CB}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{B20027FF-D5D8-4AD3-8F5F-535556916D36}</Project>\r
+      <Project>{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 138594a60dec13c7fbb3db3fa6be7d89a51aa3f2..e78b92dc8fc71eca8c96569864682b6ba2c997da 100644 (file)
@@ -60,6 +60,8 @@ namespace Microsoft.Build.Tasks
                                Log.LogWarning ("Unable to find framework corresponding to the target framework moniker '{0}'. " +
                                                "Framework assembly references will be resolved from the GAC, which might not be " +
                                                "the intended behavior.", TargetFrameworkMoniker);
+                               if (moniker.Identifier.Equals (".NETPortable"))
+                                       return CheckPclReferenceAssemblies (moniker);
                                return true;
                        }
 
@@ -69,6 +71,17 @@ namespace Microsoft.Build.Tasks
                        return true;
                }
 
+               bool CheckPclReferenceAssemblies (FrameworkMoniker moniker)
+               {
+                       // Check for a supported profile
+                       var check = new FrameworkMoniker (".NETPortable", "v4.0", "Profile24");
+                       if (GetFrameworkDirectoriesForMoniker (check) != null)
+                               Log.LogError ("Unsupported PCL Profile '{0}'.", moniker);
+                       else
+                               Log.LogError ("PCL Reference Assemblies not installed.");
+                       return false;
+               }
+
                Framework GetFrameworkDirectoriesForMoniker (FrameworkMoniker moniker)
                {
                        string dirs = String.Join (PathSeparatorAsString, new string [] {
@@ -99,7 +112,7 @@ namespace Microsoft.Build.Tasks
                                        moniker, base_path);
                        string framework_path = Path.Combine (base_path, Path.Combine (moniker.Identifier, moniker.Version));
                        if (!String.IsNullOrEmpty (moniker.Profile))
-                               framework_path = Path.Combine (framework_path, moniker.Profile);
+                               framework_path = Path.Combine (framework_path, "Profile", moniker.Profile);
 
                        string redistlist_dir = Path.Combine (framework_path, "RedistList");
                        string framework_list = Path.Combine (redistlist_dir, "FrameworkList.xml");
index e9a26a444eb3d8951d944d8213c99a244ff4f8e5..730216cf8c12fa5e020ba7cf9cdab06214095098 100644 (file)
@@ -334,10 +334,9 @@ namespace Microsoft.Build.Tasks {
                                                continue;
 
                                        ResolvedReference resolved_ref = ResolveDependencyByAssemblyName (
-                                                       aname, asm.FullName, parent_copy_local);
+                                               aname, asm.FullName, parent_copy_local);
 
-                                       if (resolved_ref != null && !IsFromGacOrTargetFramework (resolved_ref)
-                                                       && resolved_ref.FoundInSearchPath != SearchPath.PkgConfig) {
+                                       if (IncludeDependencies (resolved_ref, aname.FullName)) {
                                                tempResolvedDepFiles[resolved_ref.AssemblyName.FullName] = resolved_ref.TaskItem;
                                                dependencies.Enqueue (resolved_ref.TaskItem.ItemSpec);
                                        }
@@ -529,6 +528,15 @@ namespace Microsoft.Build.Tasks {
                                rr.FoundInSearchPath == SearchPath.TargetFrameworkDirectory;
                }
 
+               bool IncludeDependencies (ResolvedReference rr, string aname)
+               {
+                       if (rr == null)
+                               return false;
+                       if (aname.Equals ("System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"))
+                               return true;
+                       return !IsFromGacOrTargetFramework (rr) && rr.FoundInSearchPath != SearchPath.PkgConfig;
+               }
+
                void LogTaskParameters ()
                {
                        Log.LogMessage (MessageImportance.Low, "TargetFrameworkDirectories:");
index 68bcffe3897873ab57eb048e93969f2f8c673172..85b7a24293b7d64a5fc658e933f02431266ca9fa 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A77A0E38-0000-4E4D-BEA6-704BC3677151}</ProjectGuid>\r
+    <ProjectGuid>{4AC4EDEE-4895-4CF9-84DF-9419E6980F38}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fb4200a6ef38983fb4a1d4ef2cb0f28128c0431b..3cfeeeff7e0701a49855823e755646406fd25a98 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{81767FAD-2EEC-42CE-A053-45FFDEC0D67D}</ProjectGuid>\r
+    <ProjectGuid>{5EA25213-0854-4620-A67B-67E9BC6D213E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-net_3_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5.csproj">\r
-      <Project>{E861AE49-8E73-4B00-883A-7517D1C530FE}</Project>\r
+      <Project>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a8fbbf139141a8faf6d94219c5b8273d78281109..0f34216ce62477227b1ff4969efbd5ed96061aa4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{38B0128C-C232-4274-BDD0-F90ED189A80F}</ProjectGuid>\r
+    <ProjectGuid>{A20F004B-16AC-44DE-A14E-2C2B5E9F72BE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7320f8ff00a522f5d18ded1ff5c4ed13e54e18d1..bcb00b82a07462842b4ab80dc079305f35491d5b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B20027FF-D5D8-4AD3-8F5F-535556916D36}</ProjectGuid>\r
+    <ProjectGuid>{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d43650b33331c8f4c711a821580582fb3a13b536..d5e0bfe3f2b403578c0ba1bf769f32bc968700c4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{46D3F9E1-9D39-427E-9E71-B83FDE0E1C0D}</ProjectGuid>\r
+    <ProjectGuid>{806705FD-72F7-4CAA-A460-8D21ECCA94DB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0.csproj">\r
-      <Project>{A77A0E38-0000-4E4D-BEA6-704BC3677151}</Project>\r
+      <Project>{4AC4EDEE-4895-4CF9-84DF-9419E6980F38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 92ef119f148eed2078d02b5d490dd6930a07a04b..d7de179c80288d5fff18b0f59f099e0f6b81a875 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BC4C1A1E-07FD-4B52-ADF5-69085132A404}</ProjectGuid>\r
+    <ProjectGuid>{B72B3F43-E296-4738-B9C2-6FB27B0FB7BD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-tests-net_3_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_3_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5.csproj">\r
-      <Project>{81767FAD-2EEC-42CE-A053-45FFDEC0D67D}</Project>\r
+      <Project>{5EA25213-0854-4620-A67B-67E9BC6D213E}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5.csproj">\r
-      <Project>{E861AE49-8E73-4B00-883A-7517D1C530FE}</Project>\r
+      <Project>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5b00bf7d61c51da470e2bf880fc6ec480da88b58..75bb369e7edb9b5a1550794c773e0d80b72fb7cd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E1503E6B-4A56-4B2F-80AB-A57178923D4A}</ProjectGuid>\r
+    <ProjectGuid>{52AF96F7-968E-4D90-AD5F-A5F2B7E187AE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0.csproj">\r
-      <Project>{38B0128C-C232-4274-BDD0-F90ED189A80F}</Project>\r
+      <Project>{A20F004B-16AC-44DE-A14E-2C2B5E9F72BE}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c26b0079c718c8d53f2a34d376d5099cd4a47b76..bb8e77ea1f393b72d7bdd77b4090041dcf8bce07 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{766E5895-AE1B-44F9-928C-34FAEE15CA64}</ProjectGuid>\r
+    <ProjectGuid>{7E7B683B-FA73-492D-A59B-E13AF28F8B21}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{B20027FF-D5D8-4AD3-8F5F-535556916D36}</Project>\r
+      <Project>{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e0f22a5c275af80e0a8b4b25ffeb7e2dd19deff5..9ec3622be2dc15d661f4df6dfd0b906e67e00432 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B4798B4A-9260-4548-B590-B8D7F7605FDB}</ProjectGuid>\r
+    <ProjectGuid>{DD9D36CA-9F39-4EBA-AF7F-779333880CF3}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0.csproj">\r
-      <Project>{4A0D8AB4-6A16-484D-9133-D14368A2E39A}</Project>\r
+      <Project>{9B0AC297-CB85-43C1-8C18-12997CF1B78D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ed8a430df52e38be6cc0e1ccad584012bbb2a8dc..4354ebfde05ece83e6b9dd411a16f9d696df9518 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{47E4681E-7A08-482D-8D5E-4AA5A3E1E96B}</ProjectGuid>\r
+    <ProjectGuid>{D8A2B8F2-F52B-44D5-A868-C344682749E2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}</Project>\r
+      <Project>{0DA63190-E6E1-41C5-B683-A54FADBE61CB}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index beb655171389c63a4b7e629cf7852a426a7d7495..eb8a71d72736afa24b973c591797310d200537db 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3198A8E8-0D99-4E7F-BD89-DBF39E4D0084}</ProjectGuid>\r
+    <ProjectGuid>{3B5EF283-78B7-4B88-AE67-721D02B304D6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build\Microsoft.Build-net_4_0.csproj">\r
-      <Project>{B4798B4A-9260-4548-B590-B8D7F7605FDB}</Project>\r
+      <Project>{DD9D36CA-9F39-4EBA-AF7F-779333880CF3}</Project>\r
       <Name>Microsoft.Build\Microsoft.Build-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 35514a645c17f1ab874439fbc73b680db7176f5e..9406a631cf5241b921ebbb838570e232ed9809ff 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9DDFB8FD-C017-44D3-82D4-129AF99D667D}</ProjectGuid>\r
+    <ProjectGuid>{E34212A3-F152-4A6F-88F7-7A4D0324D11C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build\Microsoft.Build-net_4_5.csproj">\r
-      <Project>{47E4681E-7A08-482D-8D5E-4AA5A3E1E96B}</Project>\r
+      <Project>{D8A2B8F2-F52B-44D5-A868-C344682749E2}</Project>\r
       <Name>Microsoft.Build\Microsoft.Build-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3ad3c3328526ed2b303bb4e035a44cf1edb21168..c87ae5c3dff13ade321ae07526016c4a29a9c324 100644 (file)
@@ -34,6 +34,7 @@ using System.Diagnostics;
 using System.IO;
 using System.Linq;
 using System.Text;
+using System.Xml;
 using Microsoft.Build.Construction;
 using Microsoft.Build.Internal;
 using Microsoft.Build.Execution;
@@ -48,6 +49,27 @@ namespace Microsoft.Build.Evaluation
                          +"{data.Items.Count} #Targets={data.Targets.Count}")]
         public class Project
         {
+               public Project (XmlReader xml)
+                       : this (ProjectRootElement.Create (xml))
+               {
+               }
+                public Project (XmlReader xml, IDictionary<string, string> globalProperties,
+                                string toolsVersion)
+                       : this (ProjectRootElement.Create (xml), globalProperties, toolsVersion)
+               {
+               }
+                public Project (XmlReader xml, IDictionary<string, string> globalProperties,
+                                string toolsVersion, ProjectCollection projectCollection)
+                       : this (ProjectRootElement.Create (xml), globalProperties, toolsVersion, projectCollection)
+               {
+               }
+                public Project (XmlReader xml, IDictionary<string, string> globalProperties,
+                                string toolsVersion, ProjectCollection projectCollection,
+                                ProjectLoadSettings loadSettings)
+                       : this (ProjectRootElement.Create (xml), globalProperties, toolsVersion, projectCollection, loadSettings)
+               {
+               }
+
                 public Project (ProjectRootElement xml) : this(xml, null, null)
                 {
                 }
index 17c6d82a1c1fab470093e074d1f68046fd3b74ec..f5b2826961a54de0abf8fc86aacf8b6c7aa46907 100644 (file)
@@ -28,6 +28,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using Microsoft.Build.Construction;
 using Microsoft.Build.Framework;
 using Microsoft.Build.Logging;
 
@@ -97,5 +98,28 @@ namespace Microsoft.Build.Evaluation
                 public ToolsetDefinitionLocations ToolsetLocations {
                         get { throw new NotImplementedException (); }
                 }
+
+               public ICollection<Toolset> Toolsets {
+                        get { throw new NotImplementedException (); }
+                }
+
+               public void UnloadAllProjects ()
+               {
+                        throw new NotImplementedException ();
+               }
+
+               public void UnloadProject (Project project)
+               {
+                        throw new NotImplementedException ();
+               }
+
+               public void UnloadProject (ProjectRootElement projectRootElement)
+               {
+                        throw new NotImplementedException ();
+               }
+
+               public static Version Version {
+                        get { throw new NotImplementedException (); }
+                }
         }
 }
index 77953199f793e72fa519ab7a33fc4b6eb4aacac5..393995e80cdc94c43a921170d7e6acc562a25bc4 100644 (file)
@@ -92,6 +92,7 @@ namespace Microsoft.Build.Evaluation
 
                 public string ItemType {
                         get { throw new NotImplementedException (); }
+                        set { throw new NotImplementedException (); }
                 }
 
                 public ICollection<ProjectMetadata> Metadata {
@@ -108,6 +109,7 @@ namespace Microsoft.Build.Evaluation
 
                 public string UnevaluatedInclude {
                         get { throw new NotImplementedException (); }
+                        set { throw new NotImplementedException (); }
                 }
 
                 public ProjectItemElement Xml { get; private set; }
index dfcd02a5f6b5961ee74428d76d86a114e2e83866..e9d557f3e0fa3acdddbe518f7ab4fbe0b6e3dcbe 100644 (file)
 //
 
 using System;
+using Microsoft.Build.Construction;
 
 namespace Microsoft.Build.Evaluation
 {
-        public class ProjectProperty
+       // In .NET 4.0 MSDN says it is non-abstract, but some of those
+       // members are abstract and had been there since 4.0.
+       // I take this as doc bug, as non-abstract to abstract is a
+       // breaking change and I'd rather believe API designer's sanity.
+        public abstract class ProjectProperty
         {
+               internal ProjectProperty () // hide default ctor
+               {
+               }
+
                 public string EvaluatedValue {
                         get {
                                 throw new NotImplementedException ();
                         }
                 }
+
+               public abstract bool IsEnvironmentProperty { get; }
+               public abstract bool IsGlobalProperty { get; }
+               public abstract bool IsImported { get; }
+               public abstract bool IsReservedProperty { get; }
+
+               public string Name {
+                       get {
+                                throw new NotImplementedException ();
+                       }
+               }
+
+               public abstract ProjectProperty Predecessor { get; }
+
+               public Project Project {
+                       get {
+                                throw new NotImplementedException ();
+                       }
+               }
+
+               public abstract string UnevaluatedValue { get; set; }
+               public abstract ProjectPropertyElement Xml { get; }
         }
 }
 
index 24ef1a6b6ef15258d681795016f16ef554e7dd90..4e7cbe61009a756da4167c285f0cfe63a8ceff3d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{56A7FA9E-7F2B-4BCB-8523-FD4EEE876BE0}</ProjectGuid>\r
+    <ProjectGuid>{342E1BD0-A935-4D49-B71E-ECDF0B42F90F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.CSharp-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.CSharp\Mono.CSharp-net_4_0.csproj">\r
-      <Project>{4FADEA1C-3DCC-4658-A411-EDEF0CF30884}</Project>\r
+      <Project>{F1E6D92C-D29F-47B0-876F-8C3C06584ABE}</Project>\r
       <Name>Mono.CSharp\Mono.CSharp-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ebb2726d274744f5fbe7e900ef02f8bce5f38b0c..b6dd26015d08781d97d852828f9ea2f3e715c358 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{94E8FEFF-9695-4F77-A8AB-85370336FE0D}</ProjectGuid>\r
+    <ProjectGuid>{AC2AB4A1-8005-4458-8B2B-614DA9BBC644}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.CSharp-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.CSharp\Mono.CSharp-net_4_5.csproj">\r
-      <Project>{2D329C5C-24DA-4D80-B594-C996334758B6}</Project>\r
+      <Project>{D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}</Project>\r
       <Name>Mono.CSharp\Mono.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 760ae95e559ecb8cc9b60f2cd1dc3d9b673571d9..9afa20cd027043c945e4733f0b6a13977be7e0e8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B7E400C6-6EC0-450E-93B0-9DC703F00F58}</ProjectGuid>\r
+    <ProjectGuid>{AD0F3CEA-F068-423F-B910-65878912A1D7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.VisualC-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bf41b4fa5e664dcc4a89765d4dce1bfded8529b9..95b79e1d8496608fac887ab1bff442f033c529e2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D842E04A-0E6C-4CDA-AF89-48F04951E2A4}</ProjectGuid>\r
+    <ProjectGuid>{A4F14C1A-9939-42A1-A903-B8795D9740FC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.VisualC-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a55079e647a2a3453f043944e7fb329668a05020..4272dced37081c2bdec6e429160b0d38461de5c8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ED516751-8649-48D5-B1F3-2C450B2E45D1}</ProjectGuid>\r
+    <ProjectGuid>{923568BE-5A8D-44A1-AA33-348679E6AAD7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.VisualC-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a4a69af6cf7a30bc03dadd2356d9ff5f1c7a7ba0..113bf85acfe2894c31b90309dc6d55e008a1404d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D512EBCC-A890-4E5F-BCD0-E45974159249}</ProjectGuid>\r
+    <ProjectGuid>{50FA72EE-33E9-4412-B196-AC98D058CEED}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Web.Infrastructure-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cb0397cdf72c02edf93ecc6b8cc580adf278d281..30012abc31ff0ead349e209c6087852488167f62 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ADFD4824-AEDB-445C-9B52-D0E0A9318B87}</ProjectGuid>\r
+    <ProjectGuid>{4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Web.Infrastructure-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4bbcb1c86d5dd46522d5dd095534653fac798fb4..52a9ddcf18b6e29cb92700158526effccfde6341 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{59B4B82A-3EBA-4BFB-991B-4A0171AFDCCE}</ProjectGuid>\r
+    <ProjectGuid>{DF667FE8-014C-45ED-8C22-0313404100AC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,169,219,414,1030,3001,3005,3006</NoWarn>\r
     <OutputPath>bin\Debug\Mono.C5-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 290dcbd81afee5e0369d2c210534c2f76ef2c569..efd7d04b5a3eef309d5bc1703da004375fbc9a6a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1C7A171F-47F1-4B90-AA4D-F7E1901FBF67}</ProjectGuid>\r
+    <ProjectGuid>{1A42D692-D4F1-43D1-AA6C-FE67B44876E8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,169,219,414,1030,3001,3005,3006</NoWarn>\r
     <OutputPath>bin\Debug\Mono.C5-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c1cca139f64fd5ede9ac98b96050fb01295f247d..1e925f77736a86fb40ebb8bf514504e227b0427d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{557C0FF1-A6FA-4B27-92A2-98A59CD740E1}</ProjectGuid>\r
+    <ProjectGuid>{E8DC0734-B7DB-4CA3-9DF2-4103F35B8A39}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,169,219,414,1030,3001,3005,3006</NoWarn>\r
     <OutputPath>bin\Debug\Mono.C5-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5fd477f69e73f64517e0682731dfb4d720bff4c4..fe381f5d78abd1700c7cf8e574fe6949c3642e29 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3015919D-CD33-42C7-9AD1-142294CE3D21}</ProjectGuid>\r
+    <ProjectGuid>{4700FD69-E289-4D6D-9138-39853F3B216A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,169,219,414,1030,3001,3005,3006,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.C5-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.C5\Mono.C5-net_2_0.csproj">\r
-      <Project>{59B4B82A-3EBA-4BFB-991B-4A0171AFDCCE}</Project>\r
+      <Project>{DF667FE8-014C-45ED-8C22-0313404100AC}</Project>\r
       <Name>Mono.C5\Mono.C5-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b2ed334eb752c5baac47c8a356bb771f3b27f69a..b5f428914155f26821fb87f70b7585ec34a2ed39 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{16CE88BE-E290-4DA8-8145-7FB72B1ED5FD}</ProjectGuid>\r
+    <ProjectGuid>{4C1A33B0-27C6-4149-99AB-152ED2F86C5C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,169,219,414,1030,3001,3005,3006,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.C5-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.C5\Mono.C5-net_4_0.csproj">\r
-      <Project>{1C7A171F-47F1-4B90-AA4D-F7E1901FBF67}</Project>\r
+      <Project>{1A42D692-D4F1-43D1-AA6C-FE67B44876E8}</Project>\r
       <Name>Mono.C5\Mono.C5-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3332fb3618283bc9ddbf35cb45b68d28dfee6346..d448c18d64da70d0cded748e37cf740935fb5bb4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EF1AE0BA-B984-4149-8968-0337A4D9BDA4}</ProjectGuid>\r
+    <ProjectGuid>{9A686629-45E0-431D-975C-BEDF137D75F1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,169,219,414,1030,3001,3005,3006,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.C5-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.C5\Mono.C5-net_4_5.csproj">\r
-      <Project>{557C0FF1-A6FA-4B27-92A2-98A59CD740E1}</Project>\r
+      <Project>{E8DC0734-B7DB-4CA3-9DF2-4103F35B8A39}</Project>\r
       <Name>Mono.C5\Mono.C5-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b4d06a44f2464f6215c7f36e9a3d4dcd6f2f5482..14f903581a647b5baaa14ca9508c688cc2124aec 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5072B1FD-517D-43F5-AF79-7786ECBFE7F6}</ProjectGuid>\r
+    <ProjectGuid>{D5277143-9057-4917-BF87-3174B879574B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CSharp-net_2_0</OutputPath>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\class\corlib\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\SourceMethodBuilder.cs" />\r
+    <Compile Include="..\..\class\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\..\mcs\anonymous.cs" />\r
     <Compile Include="..\..\mcs\argument.cs" />\r
     <Compile Include="..\..\mcs\assembly.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 19edab33f379d3c551edabaa0c60bf9de924f125..fd19e7cd557cbfe77a8ef1342b47c452a7a36513 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4FADEA1C-3DCC-4658-A411-EDEF0CF30884}</ProjectGuid>\r
+    <ProjectGuid>{F1E6D92C-D29F-47B0-876F-8C3C06584ABE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CSharp-net_4_0</OutputPath>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\class\corlib\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\SourceMethodBuilder.cs" />\r
+    <Compile Include="..\..\class\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\..\mcs\anonymous.cs" />\r
     <Compile Include="..\..\mcs\argument.cs" />\r
     <Compile Include="..\..\mcs\assembly.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 93f197cb2d8ef90eb298671615e768e1291a7565..9152d75111c82bc63c81ba4ac9d2677bb2c606b6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2D329C5C-24DA-4D80-B594-C996334758B6}</ProjectGuid>\r
+    <ProjectGuid>{D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CSharp-net_4_5</OutputPath>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\class\corlib\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\SourceMethodBuilder.cs" />\r
+    <Compile Include="..\..\class\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\..\mcs\anonymous.cs" />\r
     <Compile Include="..\..\mcs\argument.cs" />\r
     <Compile Include="..\..\mcs\assembly.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 975d57ca707004e9332fd2258fce0d2846feda35..8dc278629b892a515e58c96ba054ce3107fe5788 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{535AF10C-9FC7-4480-974E-E456F2698FC0}</ProjectGuid>\r
+    <ProjectGuid>{DCF82205-34B5-4635-B991-BC555B364A63}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CSharp-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.CSharp\Mono.CSharp-net_2_0.csproj">\r
-      <Project>{5072B1FD-517D-43F5-AF79-7786ECBFE7F6}</Project>\r
+      <Project>{D5277143-9057-4917-BF87-3174B879574B}</Project>\r
       <Name>Mono.CSharp\Mono.CSharp-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 53488784b0dcb052247846a8d2a25422a496c508..0a4dafb36b75063021fdbfbf247a792ebd6f416f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{51A51F78-F87A-46A8-936A-A5C560EEA70A}</ProjectGuid>\r
+    <ProjectGuid>{FE92F3AB-4757-4FA7-8893-F01BAF6DBACE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CSharp-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.CSharp\Mono.CSharp-net_4_0.csproj">\r
-      <Project>{4FADEA1C-3DCC-4658-A411-EDEF0CF30884}</Project>\r
+      <Project>{F1E6D92C-D29F-47B0-876F-8C3C06584ABE}</Project>\r
       <Name>Mono.CSharp\Mono.CSharp-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 8547b511c51ab3d33e2dc68549f7d2985abc3e2f..48f8a0ba25898f928ad17d8f544dd2b72aadf54b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{364E6D64-019A-40A1-90A2-BBFD6EF542C5}</ProjectGuid>\r
+    <ProjectGuid>{A05D5D7B-744A-4E62-9B38-4B5149AA955A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CSharp-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.CSharp\Mono.CSharp-net_4_5.csproj">\r
-      <Project>{2D329C5C-24DA-4D80-B594-C996334758B6}</Project>\r
+      <Project>{D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}</Project>\r
       <Name>Mono.CSharp\Mono.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cd3c71ec615c18a96d699a008350c63daa199dc6..0bbd93782bad9ef8544de3ababc6b5860cc69dcb 100644 (file)
@@ -51,7 +51,7 @@
 ../../class/Mono.CompilerServices.SymbolWriter/MonoSymbolFile.cs
 ../../class/Mono.CompilerServices.SymbolWriter/MonoSymbolTable.cs
 ../../class/Mono.CompilerServices.SymbolWriter/SourceMethodBuilder.cs
-../../class/corlib/Mono.Security.Cryptography/CryptoConvert.cs
+../../class/Mono.Security/Mono.Security.Cryptography/CryptoConvert.cs
 ../../build/common/Consts.cs
 ../../tools/monop/outline.cs
 ../../mcs/cs-parser.cs
index b663163eee2d702acd078c27e26822d79dc635eb..9732b655d2031f5b893cdcb96da04b6cce4b85b4 100644 (file)
@@ -50,6 +50,12 @@ namespace MonoTests.EvaluatorTest
                        Evaluator.Run ("var a = new int [] {1,2,3}; var b = a.Length;");
                }
 
+               [Test]
+               public void AnonymousType ()
+               {
+                       Evaluator.Run ("var foo = new { Bar = \"baz\" };");
+               }
+
                [Test]
                public void Simple ()
                {
@@ -133,5 +139,16 @@ namespace MonoTests.EvaluatorTest
                        Evaluator.Run ("d.GetType ();");
                }
 #endif
+
+#if NET_4_5
+               [Test]
+               public void AwaitExpression ()
+               {
+                       Evaluator.WaitOnTask = true;
+                       var res = Evaluator.Evaluate("var res = await System.Threading.Tasks.Task.FromResult (1) + await System.Threading.Tasks.Task.FromResult (2);");
+                       res = Evaluator.Evaluate ("res;");
+                       Assert.AreEqual (3, res, "#1");
+               }
+#endif
        }
 }
\ No newline at end of file
index deb42002d028b8df434aeba34113c17f30e5fd02..7d5f9dfb9b05b5fff3d4f709cbb69e2ccd0bb432 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1F86EC48-A47E-4334-A761-93C0FADABD52}</ProjectGuid>\r
+    <ProjectGuid>{964A007A-4614-4FD0-A8AF-82E40B0ABCC7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cairo-net_2_0</OutputPath>\r
     <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
     <Compile Include=".\Mono.Cairo\Antialias.cs" />\r
     <Compile Include=".\Mono.Cairo\Cairo.cs" />\r
+    <Compile Include=".\Mono.Cairo\CairoDebug.cs" />\r
+    <Compile Include=".\Mono.Cairo\Color.cs" />\r
     <Compile Include=".\Mono.Cairo\Content.cs" />\r
     <Compile Include=".\Mono.Cairo\Context.cs" />\r
     <Compile Include=".\Mono.Cairo\DirectFBSurface.cs" />\r
+    <Compile Include=".\Mono.Cairo\Distance.cs" />\r
     <Compile Include=".\Mono.Cairo\Extend.cs" />\r
     <Compile Include=".\Mono.Cairo\FillRule.cs" />\r
     <Compile Include=".\Mono.Cairo\Filter.cs" />\r
     <Compile Include=".\Mono.Cairo\Pattern.cs" />\r
     <Compile Include=".\Mono.Cairo\PatternType.cs" />\r
     <Compile Include=".\Mono.Cairo\PdfSurface.cs" />\r
+    <Compile Include=".\Mono.Cairo\Point.cs" />\r
+    <Compile Include=".\Mono.Cairo\PointD.cs" />\r
     <Compile Include=".\Mono.Cairo\PSSurface.cs" />\r
     <Compile Include=".\Mono.Cairo\RadialGradient.cs" />\r
     <Compile Include=".\Mono.Cairo\Rectangle.cs" />\r
+    <Compile Include=".\Mono.Cairo\Region.cs" />\r
     <Compile Include=".\Mono.Cairo\ScaledFont.cs" />\r
     <Compile Include=".\Mono.Cairo\SolidPattern.cs" />\r
     <Compile Include=".\Mono.Cairo\Status.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 036a4c193572051534249d81be53feabca791869..bb93862b8827fc86311993ac881eeeecc2b06758 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{19CEEDCD-E943-4B82-90C6-AB9FD0BE91A1}</ProjectGuid>\r
+    <ProjectGuid>{A3449E31-54BC-4B39-BB00-3A85B2CBD1DC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cairo-net_4_0</OutputPath>\r
     <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
     <Compile Include=".\Mono.Cairo\Antialias.cs" />\r
     <Compile Include=".\Mono.Cairo\Cairo.cs" />\r
+    <Compile Include=".\Mono.Cairo\CairoDebug.cs" />\r
+    <Compile Include=".\Mono.Cairo\Color.cs" />\r
     <Compile Include=".\Mono.Cairo\Content.cs" />\r
     <Compile Include=".\Mono.Cairo\Context.cs" />\r
     <Compile Include=".\Mono.Cairo\DirectFBSurface.cs" />\r
+    <Compile Include=".\Mono.Cairo\Distance.cs" />\r
     <Compile Include=".\Mono.Cairo\Extend.cs" />\r
     <Compile Include=".\Mono.Cairo\FillRule.cs" />\r
     <Compile Include=".\Mono.Cairo\Filter.cs" />\r
     <Compile Include=".\Mono.Cairo\Pattern.cs" />\r
     <Compile Include=".\Mono.Cairo\PatternType.cs" />\r
     <Compile Include=".\Mono.Cairo\PdfSurface.cs" />\r
+    <Compile Include=".\Mono.Cairo\Point.cs" />\r
+    <Compile Include=".\Mono.Cairo\PointD.cs" />\r
     <Compile Include=".\Mono.Cairo\PSSurface.cs" />\r
     <Compile Include=".\Mono.Cairo\RadialGradient.cs" />\r
     <Compile Include=".\Mono.Cairo\Rectangle.cs" />\r
+    <Compile Include=".\Mono.Cairo\Region.cs" />\r
     <Compile Include=".\Mono.Cairo\ScaledFont.cs" />\r
     <Compile Include=".\Mono.Cairo\SolidPattern.cs" />\r
     <Compile Include=".\Mono.Cairo\Status.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5d201b0c82816d709de86c1a9d5c2f15b0092898..6e172471f4cab41262a71f60005ad00dc84222c8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{78AEDB9D-4DB6-4EB5-BDCD-1DFAB7467761}</ProjectGuid>\r
+    <ProjectGuid>{75114723-49E9-4351-A4FD-36DB9BC044E6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cairo-net_4_5</OutputPath>\r
     <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
     <Compile Include=".\Mono.Cairo\Antialias.cs" />\r
     <Compile Include=".\Mono.Cairo\Cairo.cs" />\r
+    <Compile Include=".\Mono.Cairo\CairoDebug.cs" />\r
+    <Compile Include=".\Mono.Cairo\Color.cs" />\r
     <Compile Include=".\Mono.Cairo\Content.cs" />\r
     <Compile Include=".\Mono.Cairo\Context.cs" />\r
     <Compile Include=".\Mono.Cairo\DirectFBSurface.cs" />\r
+    <Compile Include=".\Mono.Cairo\Distance.cs" />\r
     <Compile Include=".\Mono.Cairo\Extend.cs" />\r
     <Compile Include=".\Mono.Cairo\FillRule.cs" />\r
     <Compile Include=".\Mono.Cairo\Filter.cs" />\r
     <Compile Include=".\Mono.Cairo\Pattern.cs" />\r
     <Compile Include=".\Mono.Cairo\PatternType.cs" />\r
     <Compile Include=".\Mono.Cairo\PdfSurface.cs" />\r
+    <Compile Include=".\Mono.Cairo\Point.cs" />\r
+    <Compile Include=".\Mono.Cairo\PointD.cs" />\r
     <Compile Include=".\Mono.Cairo\PSSurface.cs" />\r
     <Compile Include=".\Mono.Cairo\RadialGradient.cs" />\r
     <Compile Include=".\Mono.Cairo\Rectangle.cs" />\r
+    <Compile Include=".\Mono.Cairo\Region.cs" />\r
     <Compile Include=".\Mono.Cairo\ScaledFont.cs" />\r
     <Compile Include=".\Mono.Cairo\SolidPattern.cs" />\r
     <Compile Include=".\Mono.Cairo\Status.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e95096f73f1a92c2a9e246f97ae3b6d5e49efe95..880cdf2adc32643ba361369c3aff048dc57a4591 100644 (file)
@@ -3,9 +3,12 @@
 ../../build/common/Locale.cs
 ./Mono.Cairo/Antialias.cs
 ./Mono.Cairo/Cairo.cs
+./Mono.Cairo/CairoDebug.cs
+./Mono.Cairo/Color.cs
 ./Mono.Cairo/Content.cs
 ./Mono.Cairo/Context.cs
 ./Mono.Cairo/DirectFBSurface.cs
+./Mono.Cairo/Distance.cs
 ./Mono.Cairo/Extend.cs
 ./Mono.Cairo/FillRule.cs
 ./Mono.Cairo/Filter.cs
 ./Mono.Cairo/Pattern.cs
 ./Mono.Cairo/PatternType.cs
 ./Mono.Cairo/PdfSurface.cs
+./Mono.Cairo/Point.cs
+./Mono.Cairo/PointD.cs
 ./Mono.Cairo/PSSurface.cs
 ./Mono.Cairo/RadialGradient.cs
 ./Mono.Cairo/Rectangle.cs
+./Mono.Cairo/Region.cs
 ./Mono.Cairo/ScaledFont.cs
 ./Mono.Cairo/SolidPattern.cs
 ./Mono.Cairo/Status.cs
diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/CairoDebug.cs b/mcs/class/Mono.Cairo/Mono.Cairo/CairoDebug.cs
new file mode 100644 (file)
index 0000000..d694bbb
--- /dev/null
@@ -0,0 +1,82 @@
+//
+// CairoDebug.cs
+//
+// Author:
+//   Michael Hutchinson (mhutch@xamarin.com)
+//
+// Copyright (C) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace Cairo {
+
+       static class CairoDebug
+       {
+               static System.Collections.Generic.Dictionary<IntPtr,string> traces;
+
+               public static readonly bool Enabled;
+
+               static CairoDebug ()
+               {
+                       var dbg = Environment.GetEnvironmentVariable ("MONO_CAIRO_DEBUG_DISPOSE");
+                       if (dbg == null)
+                               return;
+                       Enabled = true;
+                       traces = new System.Collections.Generic.Dictionary<IntPtr,string> ();
+               }
+
+               public static void OnAllocated (IntPtr obj)
+               {
+                       if (!Enabled)
+                               throw new InvalidOperationException ();
+
+                       traces[obj] = Environment.StackTrace;
+               }
+
+               public static void OnDisposed<T> (IntPtr obj, bool disposing)
+               {
+                       if (disposing && !Enabled)
+                               throw new InvalidOperationException ();
+
+                       if (Environment.HasShutdownStarted)
+                               return;
+
+                       if (!disposing) {
+                               Console.Error.WriteLine ("{0} is leaking, programmer is missing a call to Dispose", typeof(T).FullName);
+                               if (Enabled) {
+                                       string val;
+                                       if (traces.TryGetValue (obj, out val)) {
+                                               Console.Error.WriteLine ("Allocated from:");
+                                               Console.Error.WriteLine (val);
+                                       }
+                               } else {
+                                       Console.Error.WriteLine ("Set MONO_CAIRO_DEBUG_DISPOSE to track allocation traces");
+                               }
+                       }
+
+                       if (Enabled)
+                               traces.Remove (obj);
+               }
+       }
+
+}
diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/Color.cs b/mcs/class/Mono.Cairo/Mono.Cairo/Color.cs
new file mode 100644 (file)
index 0000000..030089e
--- /dev/null
@@ -0,0 +1,75 @@
+//
+// Mono.Cairo.Context.cs
+//
+// Author:
+//   Duncan Mak (duncan@ximian.com)
+//   Miguel de Icaza (miguel@novell.com)
+//   Hisham Mardam Bey (hisham.mardambey@gmail.com)
+//   Alp Toker (alp@atoker.com)
+//
+// (C) Ximian Inc, 2003.
+// (C) Novell Inc, 2003.
+//
+// This is an OO wrapper API for the Cairo API.
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Cairo {
+
+       public struct Color
+       {
+               public Color(double r, double g, double b) : this (r, g, b, 1.0)
+               {
+               }
+
+               public Color(double r, double g, double b, double a)
+               {
+                       this.r = r;
+                       this.g = g;
+                       this.b = b;
+                       this.a = a;
+               }
+
+               double r, g, b, a;
+
+               public double R {
+                       get { return r; }
+                       set { r = value; }
+               }
+
+               public double G {
+                       get { return g; }
+                       set { g = value; }
+               }
+
+               public double B {
+                       get { return b; }
+                       set { b = value; }
+               }
+
+               public double A {
+                       get { return a; }
+                       set { a = value; }
+               }
+       }
+}
index 5d6b7679aac9f009547ab1f9fa87b92fc14693c9..1eff46c1ec19e6c177469166a5e07290c456db03 100644 (file)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -41,117 +41,18 @@ using Cairo;
 
 namespace Cairo {
 
-        public struct Point
-        {              
-               public Point (int x, int y)
-               {
-                       this.x = x;
-                       this.y = y;
-               }
-
-               int x, y;
-               public int X {
-                       get { return x; }
-                       set { x = value; }
-               }
-
-               public int Y {
-                       get { return y; }
-                       set { y = value; }
-               }
-       }
-          
-        public struct PointD
-        {
-               public PointD (double x, double y)
-               {
-                       this.x = x;
-                       this.y = y;
-               }
-
-               double x, y;
-               public double X {
-                       get { return x; }
-                       set { x = value; }
-               }
-
-               public double Y {
-                       get { return y; }
-                       set { y = value; }
-               }
-       }
-   
-
-        public struct Distance
-        {
-               public Distance (double dx, double dy)
-               {
-                       this.dx = dx;
-                       this.dy = dy;
-               }
-
-               double dx, dy;
-               public double Dx {
-                       get { return dx; }
-                       set { dx = value; }
-               }
-
-               public double Dy {
-                       get { return dy; }
-                       set { dy = value; }
-               }
-       }
-             
-        public struct Color
-        {              
-               public Color(double r, double g, double b) : this (r, g, b, 1.0)
-               {
-               }
-
-               public Color(double r, double g, double b, double a)
-               {
-                       this.r = r;
-                       this.g = g;
-                       this.b = b;
-                       this.a = a;
-               }
-
-               double r, g, b, a;
-               
-               public double R {
-                       get { return r; }
-                       set { r = value; }
-               }
-
-               public double G {
-                       get { return g; }
-                       set { g = value; }
-               }
-               
-               public double B {
-                       get { return b; }
-                       set { b = value; }
-               }
-
-               public double A {
-                       get { return a; }
-                       set { a = value; }
-               }
-               
-       }
-   
        [Obsolete ("Renamed Cairo.Context per suggestion from cairo binding guidelines.")]
        public class Graphics : Context {
                public Graphics (IntPtr state) : base (state) {}
                public Graphics (Surface surface) : base (surface) {}
        }
 
-        public class Context : IDisposable 
-        {
-                internal IntPtr state = IntPtr.Zero;
+       public class Context : IDisposable
+       {
+               IntPtr handle = IntPtr.Zero;
 
                static int native_glyph_size, c_compiler_long_size;
-               
+
                static Context ()
                {
                        //
@@ -165,7 +66,7 @@ namespace Cairo {
                        // is 32 bits
                        //
                        int ptr_size = Marshal.SizeOf (typeof (IntPtr));
-                       
+
                        PlatformID platform = Environment.OSVersion.Platform;
                        if (platform == PlatformID.Win32NT ||
                            platform == PlatformID.Win32S ||
@@ -179,558 +80,603 @@ namespace Cairo {
                                native_glyph_size = Marshal.SizeOf (typeof (Glyph));
                        }
                }
-               
-                public Context (Surface surface)
-                {
-                       state = NativeMethods.cairo_create (surface.Handle);
-                }
-               
-               public Context (IntPtr state)
+
+               public Context (Surface surface) : this (NativeMethods.cairo_create (surface.Handle), true)
                {
-                       this.state = state;
                }
-               
+
+
+               public Context (IntPtr handle, bool owner)
+               {
+                       this.handle = handle;
+                       if (!owner)
+                               NativeMethods.cairo_reference (handle);
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
+               }
+
+               [Obsolete]
+               public Context (IntPtr state) : this (state, true)
+               {
+               }
+
                ~Context ()
                {
                        Dispose (false);
                }
 
-               void IDisposable.Dispose ()
+               public void Dispose ()
                {
                        Dispose (true);
                        GC.SuppressFinalize (this);
                }
-               
-                protected virtual void Dispose (bool disposing)
-                {
-                       if (!disposing){
-                               Console.Error.WriteLine ("Cairo.Context: called from finalization thread, programmer is missing a call to Dispose");
-                               return;
-                       }
-                       
-                       if (state == IntPtr.Zero)
+
+               protected virtual void Dispose (bool disposing)
+               {
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<Context> (handle, disposing);
+
+                       if (!disposing|| handle == IntPtr.Zero)
                                return;
 
-                       //Console.WriteLine ("Destroying");
-                        NativeMethods.cairo_destroy (state);
-                       state = IntPtr.Zero;
-                }
+                       NativeMethods.cairo_destroy (handle);
+                       handle = IntPtr.Zero;
 
-                public void Save ()
-                {
-                        NativeMethods.cairo_save (state);
-                }
+               }
 
-                public void Restore ()
-                {
-                        NativeMethods.cairo_restore (state);
-                }
+               public void Save ()
+               {
+                       NativeMethods.cairo_save (handle);
+               }
+
+               public void Restore ()
+               {
+                       NativeMethods.cairo_restore (handle);
+               }
 
                public Antialias Antialias {
-                       get { return NativeMethods.cairo_get_antialias (state); }
-                       set { NativeMethods.cairo_set_antialias (state, value); }
-               }
-                
-                public Cairo.Status Status {
-                        get {
-                                return NativeMethods.cairo_status (state);
-                        }
-                }
-               
-                public IntPtr Handle {
-                        get {
-                                return state;
-                        }
-                }
-                
-                public Cairo.Operator Operator {
-                        set {
-                                NativeMethods.cairo_set_operator (state, value);
-                        }
-
-                        get {
-                                return NativeMethods.cairo_get_operator (state);
-                        }
-                }
-                
-                //FIXME: obsolete this property
-                public Cairo.Color Color {
-                       set { 
-                               NativeMethods.cairo_set_source_rgba (state, value.R, value.G, value.B, value.A);
-                       }                       
-                }
-
-               [Obsolete ("Use Color property")]
-                public Cairo.Color ColorRgb {
-                       set { 
+                       get { return NativeMethods.cairo_get_antialias (handle); }
+                       set { NativeMethods.cairo_set_antialias (handle, value); }
+               }
+
+               public Cairo.Status Status {
+                       get {
+                               return NativeMethods.cairo_status (handle);
+                       }
+               }
+
+               public IntPtr Handle {
+                       get {
+                               return handle;
+                       }
+               }
+
+               public Operator Operator {
+                       set {
+                               NativeMethods.cairo_set_operator (handle, value);
+                       }
+
+                       get {
+                               return NativeMethods.cairo_get_operator (handle);
+                       }
+               }
+
+               [Obsolete ("Use SetSourceRGBA method")]
+               public Color Color {
+                       set {
+                               NativeMethods.cairo_set_source_rgba (handle, value.R, value.G, value.B, value.A);
+                       }
+               }
+
+               [Obsolete ("Use SetSourceRGBA method")]
+               public Cairo.Color ColorRgb {
+                       set {
                                Color = new Color (value.R, value.G, value.B);
                        }
-                }              
+               }
 
-                public double Tolerance {
+               public double Tolerance {
                        get {
-                               return NativeMethods.cairo_get_tolerance (state);
-                       }
-
-                        set {
-                                NativeMethods.cairo_set_tolerance (state, value);
-                        }
-                }
-                
-                public Cairo.FillRule FillRule {
-                        set {
-                                NativeMethods.cairo_set_fill_rule (state, value);
-                        }
-
-                        get {
-                                return NativeMethods.cairo_get_fill_rule (state);
-                        }
-                }
-                                        
-                public double LineWidth {
-                        set {
-                                NativeMethods.cairo_set_line_width (state, value);
-                        }
-
-                        get {
-                                return NativeMethods.cairo_get_line_width (state);
-                        }
-                }
-
-                public Cairo.LineCap LineCap {
-                        set {
-                                NativeMethods.cairo_set_line_cap (state, value);
-                        }
-
-                        get {
-                                return NativeMethods.cairo_get_line_cap (state);
-                        }
-                }
-
-                public Cairo.LineJoin LineJoin {
-                        set {
-                                NativeMethods.cairo_set_line_join (state, value);
-                        }
-
-                        get {
-                                return NativeMethods.cairo_get_line_join (state);
-                        }
-                }
-
-                public void SetDash (double [] dashes, double offset)
-                {
-                        NativeMethods.cairo_set_dash (state, dashes, dashes.Length, offset);
-                }
-
-                public Pattern Pattern {
-                        set {
-                                NativeMethods.cairo_set_source (state, value.Pointer);
-                        }
-                       
+                               return NativeMethods.cairo_get_tolerance (handle);
+                       }
+
+                       set {
+                               NativeMethods.cairo_set_tolerance (handle, value);
+                       }
+               }
+
+               public Cairo.FillRule FillRule {
+                       set {
+                               NativeMethods.cairo_set_fill_rule (handle, value);
+                       }
+
                        get {
-                               return new Pattern (NativeMethods.cairo_get_source (state));
-                       }
-                }              
-               
-                public Pattern Source {
-                        set {
-                                NativeMethods.cairo_set_source (state, value.Pointer);
-                        }
-                       
+                               return NativeMethods.cairo_get_fill_rule (handle);
+                       }
+               }
+
+               public double LineWidth {
+                       set {
+                               NativeMethods.cairo_set_line_width (handle, value);
+                       }
+
                        get {
-                               return Pattern.Lookup (NativeMethods.cairo_get_source (state));
-                       }
-                }
-
-                public double MiterLimit {
-                        set {
-                                NativeMethods.cairo_set_miter_limit (state, value);
-                        }
-
-                        get {
-                                return NativeMethods.cairo_get_miter_limit (state);
-                        }
-                }
-
-                public PointD CurrentPoint {
-                        get {
-                                double x, y;
-                                NativeMethods.cairo_get_current_point (state, out x, out y);
-                                return new PointD (x, y);
-                        }
-                }
-
-                public Cairo.Surface Target {
-                        set {
-                               if (state != IntPtr.Zero)
-                                       NativeMethods.cairo_destroy (state);
-                               
-                               state = NativeMethods.cairo_create (value.Handle);
-                        }
-
-                        get {
-                                return Cairo.Surface.LookupExternalSurface (
-                                        NativeMethods.cairo_get_target (state));
-                        }
-                }
-
-               public Cairo.ScaledFont ScaledFont {
-                        set {
-                               NativeMethods.cairo_set_scaled_font (state, value.Handle);
-                        }
-
-                        get {
-                                return new ScaledFont (NativeMethods.cairo_get_scaled_font (state));
-                        }
-                }
+                               return NativeMethods.cairo_get_line_width (handle);
+                       }
+               }
+
+               public Cairo.LineCap LineCap {
+                       set {
+                               NativeMethods.cairo_set_line_cap (handle, value);
+                       }
+
+                       get {
+                               return NativeMethods.cairo_get_line_cap (handle);
+                       }
+               }
+
+               public Cairo.LineJoin LineJoin {
+                       set {
+                               NativeMethods.cairo_set_line_join (handle, value);
+                       }
+
+                       get {
+                               return NativeMethods.cairo_get_line_join (handle);
+                       }
+               }
+
+               public void SetDash (double [] dashes, double offset)
+               {
+                       NativeMethods.cairo_set_dash (handle, dashes, dashes.Length, offset);
+               }
+
+               [Obsolete("Use GetSource/GetSource")]
+               public Pattern Pattern {
+                       set {
+                               SetSource (value);
+                       }
+                       get {
+                               return GetSource ();
+                       }
+               }
+
+               //This is obsolete because it wasn't obvious it needed to be disposed
+               [Obsolete("Use GetSource/GetSource")]
+               public Pattern Source {
+                       set {
+                               SetSource (value);
+                       }
+                       get {
+                               return GetSource ();
+                       }
+               }
+
+               public void SetSource (Pattern source)
+               {
+                       NativeMethods.cairo_set_source (handle, source.Handle);
+               }
+
+               public Pattern GetSource ()
+               {
+                       var ptr = NativeMethods.cairo_get_source (handle);
+                       return Cairo.Pattern.Lookup (ptr, false);
+               }
+
+               public double MiterLimit {
+                       set {
+                               NativeMethods.cairo_set_miter_limit (handle, value);
+                       }
+
+                       get {
+                               return NativeMethods.cairo_get_miter_limit (handle);
+                       }
+               }
+
+               public PointD CurrentPoint {
+                       get {
+                               double x, y;
+                               NativeMethods.cairo_get_current_point (handle, out x, out y);
+                               return new PointD (x, y);
+                       }
+               }
+
+               [Obsolete ("Use GetTarget/SetTarget")]
+               public Cairo.Surface Target {
+                       set {
+                               if (handle != IntPtr.Zero)
+                                       NativeMethods.cairo_destroy (handle);
+
+                               handle = NativeMethods.cairo_create (value.Handle);
+                       }
+
+                       get {
+                               return GetTarget ();
+                       }
+               }
+
+               public Surface GetTarget ()
+               {
+                       return Surface.Lookup (NativeMethods.cairo_get_target (handle), false);
+               }
+
+               public void SetTarget (Surface target)
+               {
+                       if (handle != IntPtr.Zero)
+                               NativeMethods.cairo_destroy (handle);
+                       handle = NativeMethods.cairo_create (target.Handle);
+               }
+
+               [Obsolete("Use GetScaledFont/SetScaledFont")]
+               public ScaledFont ScaledFont {
+                       set {
+                               SetScaledFont (value);
+                       }
+
+                       get {
+                               return GetScaledFont ();
+                       }
+               }
+
+               public ScaledFont GetScaledFont ()
+               {
+                       return new ScaledFont (NativeMethods.cairo_get_scaled_font (handle), false);
+               }
+
+               public void SetScaledFont (ScaledFont font)
+               {
+                       NativeMethods.cairo_set_scaled_font (handle, font.Handle);
+               }
 
                public uint ReferenceCount {
-                       get { return NativeMethods.cairo_get_reference_count (state); }
+                       get { return NativeMethods.cairo_get_reference_count (handle); }
                }
 
                public void SetSourceRGB (double r, double g, double b)
                {
-                       NativeMethods.cairo_set_source_rgb (state, r, g, b);
+                       NativeMethods.cairo_set_source_rgb (handle, r, g, b);
                }
 
                public void SetSourceRGBA (double r, double g, double b, double a)
                {
-                       NativeMethods.cairo_set_source_rgba (state, r, g, b, a);
+                       NativeMethods.cairo_set_source_rgba (handle, r, g, b, a);
                }
 
                //[Obsolete ("Use SetSource method (with double parameters)")]
                public void SetSourceSurface (Surface source, int x, int y)
                {
-                       NativeMethods.cairo_set_source_surface (state, source.Handle, x, y);
+                       NativeMethods.cairo_set_source_surface (handle, source.Handle, x, y);
                }
 
                public void SetSource (Surface source, double x, double y)
                {
-                       NativeMethods.cairo_set_source_surface (state, source.Handle, x, y);
+                       NativeMethods.cairo_set_source_surface (handle, source.Handle, x, y);
                }
 
                public void SetSource (Surface source)
                {
-                       NativeMethods.cairo_set_source_surface (state, source.Handle, 0, 0);
+                       NativeMethods.cairo_set_source_surface (handle, source.Handle, 0, 0);
                }
-               
+
 #region Path methods
-                
-                public void NewPath ()
-                {
-                        NativeMethods.cairo_new_path (state);
-                }
+
+               public void NewPath ()
+               {
+                       NativeMethods.cairo_new_path (handle);
+               }
 
                public void NewSubPath ()
                {
-                       NativeMethods.cairo_new_sub_path (state);
+                       NativeMethods.cairo_new_sub_path (handle);
                }
-        
-                public void MoveTo (PointD p)
-                {
+
+               public void MoveTo (PointD p)
+               {
                        MoveTo (p.X, p.Y);
-                }
+               }
 
                public void MoveTo (double x, double y)
                {
-                        NativeMethods.cairo_move_to (state, x, y);
+                       NativeMethods.cairo_move_to (handle, x, y);
                }
-                
-                public void LineTo (PointD p)
+
+               public void LineTo (PointD p)
                {
                        LineTo (p.X, p.Y);
                }
-               
+
                public void LineTo (double x, double y)
-                {
-                        NativeMethods.cairo_line_to (state, x, y);
-                }
+               {
+                       NativeMethods.cairo_line_to (handle, x, y);
+               }
 
-                public void CurveTo (PointD p1, PointD p2, PointD p3)
+               public void CurveTo (PointD p1, PointD p2, PointD p3)
                {
                        CurveTo (p1.X, p1.Y, p2.X, p2.Y, p3.X, p3.Y);
                }
-                               
-                public void CurveTo (double x1, double y1, double x2, double y2, double x3, double y3)
-                {
-                        NativeMethods.cairo_curve_to (state, x1, y1, x2, y2, x3, y3);
-                }
 
-                public void RelMoveTo (Distance d)
+               public void CurveTo (double x1, double y1, double x2, double y2, double x3, double y3)
+               {
+                       NativeMethods.cairo_curve_to (handle, x1, y1, x2, y2, x3, y3);
+               }
+
+               public void RelMoveTo (Distance d)
                {
                        RelMoveTo (d.Dx, d.Dy);
                }
-               
-                public void RelMoveTo (double dx, double dy)
-                {
-                        NativeMethods.cairo_rel_move_to (state, dx, dy);
-                }
-               
-                public void RelLineTo (Distance d)
-                {
+
+               public void RelMoveTo (double dx, double dy)
+               {
+                       NativeMethods.cairo_rel_move_to (handle, dx, dy);
+               }
+
+               public void RelLineTo (Distance d)
+               {
                        RelLineTo (d.Dx, d.Dy);
-                }
-               
-                public void RelLineTo (double dx, double dy)
+               }
+
+               public void RelLineTo (double dx, double dy)
                {
-                        NativeMethods.cairo_rel_line_to (state, dx, dy);
+                       NativeMethods.cairo_rel_line_to (handle, dx, dy);
                }
-               
-                public void RelCurveTo (Distance d1, Distance d2, Distance d3)
+
+               public void RelCurveTo (Distance d1, Distance d2, Distance d3)
                {
                        RelCurveTo (d1.Dx, d1.Dy, d2.Dx, d2.Dy, d3.Dx, d3.Dy);
                }
 
-                public void RelCurveTo (double dx1, double dy1, double dx2, double dy2, double dx3, double dy3)
-                {
-                        NativeMethods.cairo_rel_curve_to (state, dx1, dy1, dx2, dy2, dx3, dy3); 
-                }
+               public void RelCurveTo (double dx1, double dy1, double dx2, double dy2, double dx3, double dy3)
+               {
+                       NativeMethods.cairo_rel_curve_to (handle, dx1, dy1, dx2, dy2, dx3, dy3);
+               }
+
+               public void Arc (double xc, double yc, double radius, double angle1, double angle2)
+               {
+                       NativeMethods.cairo_arc (handle, xc, yc, radius, angle1, angle2);
+               }
 
-                public void Arc (double xc, double yc, double radius, double angle1, double angle2)
-                {
-                        NativeMethods.cairo_arc (state, xc, yc, radius, angle1, angle2);
-                }
+               public void ArcNegative (double xc, double yc, double radius, double angle1, double angle2)
+               {
+                       NativeMethods.cairo_arc_negative (handle, xc, yc, radius, angle1, angle2);
+               }
 
-                public void ArcNegative (double xc, double yc, double radius, double angle1, double angle2)
-                {
-                        NativeMethods.cairo_arc_negative (state, xc, yc, radius, angle1, angle2);
-                }
-               
-                public void Rectangle (Rectangle rectangle)
+               public void Rectangle (Rectangle rectangle)
                {
                        Rectangle (rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height);
                }
 
-                public void Rectangle (PointD p, double width, double height)
+               public void Rectangle (PointD p, double width, double height)
                {
                        Rectangle (p.X, p.Y, width, height);
                }
 
-                public void Rectangle (double x, double y, double width, double height)
-                {
-                        NativeMethods.cairo_rectangle (state, x, y, width, height);
-                }
-                
-                public void ClosePath ()
-                {
-                        NativeMethods.cairo_close_path (state);
-                }
+               public void Rectangle (double x, double y, double width, double height)
+               {
+                       NativeMethods.cairo_rectangle (handle, x, y, width, height);
+               }
+
+               public void ClosePath ()
+               {
+                       NativeMethods.cairo_close_path (handle);
+               }
 
-               public Path CopyPath ()
+               public Path CopyPath ()
                {
-                       return new Path (NativeMethods.cairo_copy_path (state));
+                       return new Path (NativeMethods.cairo_copy_path (handle));
                }
 
                public Path CopyPathFlat ()
                {
-                       return new Path (NativeMethods.cairo_copy_path_flat (state));
+                       return new Path (NativeMethods.cairo_copy_path_flat (handle));
                }
 
                public void AppendPath (Path path)
                {
-                       NativeMethods.cairo_append_path (state, path.handle);
+                       NativeMethods.cairo_append_path (handle, path.Handle);
                }
-               
+
 #endregion
 
 #region Painting Methods
                public void Paint ()
                {
-                       NativeMethods.cairo_paint (state);
+                       NativeMethods.cairo_paint (handle);
                }
-               
+
                public void PaintWithAlpha (double alpha)
                {
-                       NativeMethods.cairo_paint_with_alpha (state, alpha);
+                       NativeMethods.cairo_paint_with_alpha (handle, alpha);
                }
-               
+
                public void Mask (Pattern pattern)
                {
-                       NativeMethods.cairo_mask (state, pattern.Pointer);
+                       NativeMethods.cairo_mask (handle, pattern.Handle);
                }
-               
+
                public void MaskSurface (Surface surface, double surface_x, double surface_y)
                {
-                       NativeMethods.cairo_mask_surface (state, surface.Handle, surface_x, surface_y);
+                       NativeMethods.cairo_mask_surface (handle, surface.Handle, surface_x, surface_y);
+               }
+
+               public void Stroke ()
+               {
+                       NativeMethods.cairo_stroke (handle);
+               }
+
+               public void StrokePreserve ()
+               {
+                       NativeMethods.cairo_stroke_preserve (handle);
                }
-               
-                public void Stroke ()
-                {
-                        NativeMethods.cairo_stroke (state);
-                }
-               
-                public void StrokePreserve ()
-                {
-                        NativeMethods.cairo_stroke_preserve (state);
-                }              
 
                public Rectangle StrokeExtents ()
                {
                        double x1, y1, x2, y2;
-                       NativeMethods.cairo_stroke_extents (state, out x1, out y1, out x2, out y2);
-                       return new Rectangle (x1, y1, x2, y2);
+                       NativeMethods.cairo_stroke_extents (handle, out x1, out y1, out x2, out y2);
+                       return new Rectangle (x1, y1, x2 - x1, y2 - y1);
                }
 
-                public void Fill ()
-                {
-                        NativeMethods.cairo_fill (state);
-                }
+               public void Fill ()
+               {
+                       NativeMethods.cairo_fill (handle);
+               }
 
-                public Rectangle FillExtents ()
+               public Rectangle FillExtents ()
                {
                        double x1, y1, x2, y2;
-                       NativeMethods.cairo_fill_extents (state, out x1, out y1, out x2, out y2);
-                       return new Rectangle (x1, y1, x2, y2);
+                       NativeMethods.cairo_fill_extents (handle, out x1, out y1, out x2, out y2);
+                       return new Rectangle (x1, y1, x2 - x1, y2 - y1);
                }
 
                public void FillPreserve ()
                {
-                       NativeMethods.cairo_fill_preserve (state);
+                       NativeMethods.cairo_fill_preserve (handle);
                }
 
 #endregion
 
-                public void Clip ()
-                {
-                        NativeMethods.cairo_clip (state);
-                }
+               public void Clip ()
+               {
+                       NativeMethods.cairo_clip (handle);
+               }
 
                public void ClipPreserve ()
                {
-                       NativeMethods.cairo_clip_preserve (state);
+                       NativeMethods.cairo_clip_preserve (handle);
                }
-               
+
                public void ResetClip ()
                {
-                       NativeMethods.cairo_reset_clip (state);
+                       NativeMethods.cairo_reset_clip (handle);
                }
-               
+
                public bool InStroke (double x, double y)
                {
-                       return NativeMethods.cairo_in_stroke (state, x, y);
+                       return NativeMethods.cairo_in_stroke (handle, x, y);
                }
 
                public bool InFill (double x, double y)
                {
-                       return NativeMethods.cairo_in_fill (state, x, y);
+                       return NativeMethods.cairo_in_fill (handle, x, y);
                }
 
                public Pattern PopGroup ()
                {
-                       return Pattern.Lookup (NativeMethods.cairo_pop_group (state));
+                       return Pattern.Lookup (NativeMethods.cairo_pop_group (handle), true);
                }
 
                public void PopGroupToSource ()
                {
-                       NativeMethods.cairo_pop_group_to_source (state);
+                       NativeMethods.cairo_pop_group_to_source (handle);
                }
 
                public void PushGroup ()
                {
-                       NativeMethods.cairo_push_group (state);
+                       NativeMethods.cairo_push_group (handle);
                }
 
                public void PushGroup (Content content)
                {
-                       NativeMethods.cairo_push_group_with_content (state, content);
+                       NativeMethods.cairo_push_group_with_content (handle, content);
                }
 
+               [Obsolete ("Use GetGroupTarget()")]
                public Surface GroupTarget {
                        get {
-                               IntPtr surface = NativeMethods.cairo_get_group_target (state);
-                               return Surface.LookupSurface (surface);
+                               return GetGroupTarget ();
                        }
                }
 
-                public void Rotate (double angle)
-                {
-                        NativeMethods.cairo_rotate (state, angle);
-                }
+               public Surface GetGroupTarget ()
+               {
+                       IntPtr surface = NativeMethods.cairo_get_group_target (handle);
+                       return Surface.Lookup (surface, false);
+               }
 
-                public void Scale (double sx, double sy)
-                {
-                        NativeMethods.cairo_scale (state, sx, sy);
-                }
+               public void Rotate (double angle)
+               {
+                       NativeMethods.cairo_rotate (handle, angle);
+               }
+
+               public void Scale (double sx, double sy)
+               {
+                       NativeMethods.cairo_scale (handle, sx, sy);
+               }
+
+               public void Translate (double tx, double ty)
+               {
+                       NativeMethods.cairo_translate (handle, tx, ty);
+               }
 
-                public void Translate (double tx, double ty)
-                {
-                        NativeMethods.cairo_translate (state, tx, ty);
-                }
-                
                public void Transform (Matrix m)
                {
-                       NativeMethods.cairo_transform (state, m);
+                       NativeMethods.cairo_transform (handle, m);
                }
-                       
-#region Methods that will become obsolete in the long term, after 1.2.5 becomes wildly available
-               
-               //[Obsolete("Use UserToDevice instead")]
+
+               [Obsolete("Use UserToDevice instead")]
                public void TransformPoint (ref double x, ref double y)
                {
-                       NativeMethods.cairo_user_to_device (state, ref x, ref y);
+                       NativeMethods.cairo_user_to_device (handle, ref x, ref y);
                }
-               
-               //[Obsolete("Use UserToDeviceDistance instead")]
-                public void TransformDistance (ref double dx, ref double dy) 
+
+               [Obsolete("Use UserToDeviceDistance instead")]
+               public void TransformDistance (ref double dx, ref double dy)
                {
-                       NativeMethods.cairo_user_to_device_distance (state, ref dx, ref dy);
+                       NativeMethods.cairo_user_to_device_distance (handle, ref dx, ref dy);
                }
-                       
-               //[Obsolete("Use InverseTransformPoint instead")]
+
+               [Obsolete("Use InverseTransformPoint instead")]
                public void InverseTransformPoint (ref double x, ref double y)
                {
-                       NativeMethods.cairo_device_to_user (state, ref x, ref y);
+                       NativeMethods.cairo_device_to_user (handle, ref x, ref y);
                }
 
-               //[Obsolete("Use DeviceToUserDistance instead")]
+               [Obsolete("Use DeviceToUserDistance instead")]
                public void InverseTransformDistance (ref double dx, ref double dy)
                {
-                       NativeMethods.cairo_device_to_user_distance (state, ref dx, ref dy);
+                       NativeMethods.cairo_device_to_user_distance (handle, ref dx, ref dy);
                }
-#endregion
-               
+
                public void UserToDevice (ref double x, ref double y)
                {
-                       NativeMethods.cairo_user_to_device (state, ref x, ref y);
+                       NativeMethods.cairo_user_to_device (handle, ref x, ref y);
                }
-               
-                public void UserToDeviceDistance (ref double dx, ref double dy) 
+
+               public void UserToDeviceDistance (ref double dx, ref double dy)
                {
-                       NativeMethods.cairo_user_to_device_distance (state, ref dx, ref dy);
+                       NativeMethods.cairo_user_to_device_distance (handle, ref dx, ref dy);
                }
-                       
+
                public void DeviceToUser (ref double x, ref double y)
                {
-                       NativeMethods.cairo_device_to_user (state, ref x, ref y);
+                       NativeMethods.cairo_device_to_user (handle, ref x, ref y);
                }
 
                public void DeviceToUserDistance (ref double dx, ref double dy)
                {
-                       NativeMethods.cairo_device_to_user_distance (state, ref dx, ref dy);
+                       NativeMethods.cairo_device_to_user_distance (handle, ref dx, ref dy);
                }
-               
-                public Cairo.Matrix Matrix {
-                        set {
-                                NativeMethods.cairo_set_matrix (state, value);
-                        }
 
-                        get {
+               public Matrix Matrix {
+                       set {
+                               NativeMethods.cairo_set_matrix (handle, value);
+                       }
+
+                       get {
                                Matrix m = new Matrix();
-                               NativeMethods.cairo_get_matrix (state, m);
-                                return m;
-                        }
-                }
+                               NativeMethods.cairo_get_matrix (handle, m);
+                               return m;
+                       }
+               }
 
                public void SetFontSize (double scale)
                {
-                       NativeMethods.cairo_set_font_size (state, scale);
+                       NativeMethods.cairo_set_font_size (handle, scale);
                }
 
                public void IdentityMatrix ()
                {
-                       NativeMethods.cairo_identity_matrix (state);
+                       NativeMethods.cairo_identity_matrix (handle);
                }
-               
+
                [Obsolete ("Use SetFontSize() instead.")]
                public void FontSetSize (double scale)
                {
@@ -741,23 +687,23 @@ namespace Cairo {
                public double FontSize {
                        set { SetFontSize (value); }
                }
-               
+
                public Matrix FontMatrix {
                        get {
                                Matrix m;
-                               NativeMethods.cairo_get_font_matrix (state, out m);
+                               NativeMethods.cairo_get_font_matrix (handle, out m);
                                return m;
                        }
-                       set { NativeMethods.cairo_set_font_matrix (state, value); }
+                       set { NativeMethods.cairo_set_font_matrix (handle, value); }
                }
 
                public FontOptions FontOptions {
                        get {
                                FontOptions options = new FontOptions ();
-                               NativeMethods.cairo_get_font_options (state, options.Handle);
+                               NativeMethods.cairo_get_font_options (handle, options.Handle);
                                return options;
                        }
-                       set { NativeMethods.cairo_set_font_options (state, value.Handle); }
+                       set { NativeMethods.cairo_set_font_options (handle, value.Handle); }
                }
 
                [StructLayout(LayoutKind.Sequential)]
@@ -787,7 +733,7 @@ namespace Cairo {
                        } else {
                                foreach (Glyph g in glyphs){
                                        NativeGlyph_4byte_longs n = new NativeGlyph_4byte_longs (g);
-                                       
+
                                        Marshal.StructureToPtr (n, (IntPtr)pos, false);
                                        pos += native_glyph_size;
                                }
@@ -796,52 +742,52 @@ namespace Cairo {
                        return dest;
                }
 
-                public void ShowGlyphs (Glyph[] glyphs)
+               public void ShowGlyphs (Glyph[] glyphs)
                {
-                        IntPtr ptr;
+                       IntPtr ptr;
 
-                        ptr = FromGlyphToUnManagedMemory (glyphs);
-                        
-                        NativeMethods.cairo_show_glyphs (state, ptr, glyphs.Length);
+                       ptr = FromGlyphToUnManagedMemory (glyphs);
 
-                        Marshal.FreeHGlobal (ptr);             
+                       NativeMethods.cairo_show_glyphs (handle, ptr, glyphs.Length);
+
+                       Marshal.FreeHGlobal (ptr);
                }
 
                [Obsolete("The matrix argument was never used, use ShowGlyphs(Glyphs []) instead")]
-                public void ShowGlyphs (Matrix matrix, Glyph[] glyphs)
-                {
+               public void ShowGlyphs (Matrix matrix, Glyph[] glyphs)
+               {
                        ShowGlyphs (glyphs);
-                }
+               }
 
                [Obsolete("The matrix argument was never used, use GlyphPath(Glyphs []) instead")]
-                public void GlyphPath (Matrix matrix, Glyph[] glyphs)
-                {
+               public void GlyphPath (Matrix matrix, Glyph[] glyphs)
+               {
                        GlyphPath (glyphs);
                }
 
                public void GlyphPath (Glyph[] glyphs)
                {
-                        IntPtr ptr;
+                       IntPtr ptr;
+
+                       ptr = FromGlyphToUnManagedMemory (glyphs);
 
-                        ptr = FromGlyphToUnManagedMemory (glyphs);
+                       NativeMethods.cairo_glyph_path (handle, ptr, glyphs.Length);
 
-                        NativeMethods.cairo_glyph_path (state, ptr, glyphs.Length);
+                       Marshal.FreeHGlobal (ptr);
 
-                        Marshal.FreeHGlobal (ptr);
+               }
 
-                }
+               public FontExtents FontExtents {
+                       get {
+                               FontExtents f_extents;
+                               NativeMethods.cairo_font_extents (handle, out f_extents);
+                               return f_extents;
+                       }
+               }
 
-                public FontExtents FontExtents {
-                        get {
-                                FontExtents f_extents;
-                                NativeMethods.cairo_font_extents (state, out f_extents);
-                                return f_extents;
-                        }
-                }
-               
                public void CopyPage ()
                {
-                       NativeMethods.cairo_copy_page (state);
+                       NativeMethods.cairo_copy_page (handle);
                }
 
                [Obsolete ("Use SelectFontFace() instead.")]
@@ -850,24 +796,34 @@ namespace Cairo {
                        SelectFontFace (family, slant, weight);
                }
 
+               [Obsolete("Use GetFontFace/SetFontFace")]
                public FontFace ContextFontFace {
                        get {
-                               return Cairo.FontFace.Lookup (NativeMethods.cairo_get_font_face (state));
+                               return GetContextFontFace ();
                        }
-
                        set {
-                               NativeMethods.cairo_set_font_face (state, value == null ? IntPtr.Zero : value.Handle);
+                               SetContextFontFace (value);
                        }
                }
-               
+
+               public FontFace GetContextFontFace ()
+               {
+                       return Cairo.FontFace.Lookup (NativeMethods.cairo_get_font_face (handle), false);
+               }
+
+               public void SetContextFontFace (FontFace value)
+               {
+                       NativeMethods.cairo_set_font_face (handle, value == null ? IntPtr.Zero : value.Handle);
+               }
+
                public void SelectFontFace (string family, FontSlant slant, FontWeight weight)
                {
-                       NativeMethods.cairo_select_font_face (state, family, slant, weight);
+                       NativeMethods.cairo_select_font_face (handle, family, slant, weight);
                }
 
                public void ShowPage ()
                {
-                       NativeMethods.cairo_show_page (state);
+                       NativeMethods.cairo_show_page (handle);
                }
 
                private static byte[] TerminateUtf8(byte[] utf8)
@@ -891,35 +847,35 @@ namespace Cairo {
 
                public void ShowText(string str)
                {
-                       NativeMethods.cairo_show_text(state, TerminateUtf8(str));
+                       NativeMethods.cairo_show_text (handle, TerminateUtf8(str));
                }
 
                public void ShowText(byte[] utf8)
                {
-                       NativeMethods.cairo_show_text(state, TerminateUtf8(utf8));
+                       NativeMethods.cairo_show_text (handle, TerminateUtf8(utf8));
                }
 
                public void TextPath(string str)
                {
-                       NativeMethods.cairo_text_path(state, TerminateUtf8(str));
+                       NativeMethods.cairo_text_path (handle, TerminateUtf8(str));
                }
 
                public void TextPath(byte[] utf8)
                {
-                       NativeMethods.cairo_text_path(state, TerminateUtf8(utf8));
+                       NativeMethods.cairo_text_path (handle, TerminateUtf8(utf8));
                }
 
                public TextExtents TextExtents(string s)
                {
                        TextExtents extents;
-                       NativeMethods.cairo_text_extents(state, TerminateUtf8(s), out extents);
+                       NativeMethods.cairo_text_extents (handle, TerminateUtf8(s), out extents);
                        return extents;
                }
 
                public TextExtents TextExtents(byte[] utf8)
                {
                        TextExtents extents;
-                       NativeMethods.cairo_text_extents(state, TerminateUtf8(utf8), out extents);
+                       NativeMethods.cairo_text_extents (handle, TerminateUtf8(utf8), out extents);
                        return extents;
                }
 
@@ -929,11 +885,11 @@ namespace Cairo {
 
                        TextExtents extents;
 
-                       NativeMethods.cairo_glyph_extents (state, ptr, glyphs.Length, out extents);
+                       NativeMethods.cairo_glyph_extents (handle, ptr, glyphs.Length, out extents);
 
                        Marshal.FreeHGlobal (ptr);
 
                        return extents;
                }
-        }
+       }
 }
index a2ae169e73221254baa6a586009239a889d5da79..afa57b7dff1f4b210e4d353c3227b28569dda0ef 100644 (file)
@@ -36,11 +36,8 @@ namespace Cairo {
                }
 
                public DirectFBSurface (IntPtr dfb, IntPtr dfb_surface)
+                       : base (NativeMethods.cairo_directfb_surface_create (dfb, dfb_surface), true)
                {
-                       surface = NativeMethods.cairo_directfb_surface_create (dfb, dfb_surface);
-                       lock (surfaces.SyncRoot) {
-                               surfaces [surface] = this;
-                       }
                }
        }
 }
diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/Distance.cs b/mcs/class/Mono.Cairo/Mono.Cairo/Distance.cs
new file mode 100644 (file)
index 0000000..7cba372
--- /dev/null
@@ -0,0 +1,58 @@
+//
+// Mono.Cairo.Context.cs
+//
+// Author:
+//   Duncan Mak (duncan@ximian.com)
+//   Miguel de Icaza (miguel@novell.com)
+//   Hisham Mardam Bey (hisham.mardambey@gmail.com)
+//   Alp Toker (alp@atoker.com)
+//
+// (C) Ximian Inc, 2003.
+// (C) Novell Inc, 2003.
+//
+// This is an OO wrapper API for the Cairo API.
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Cairo {
+
+       public struct Distance
+       {
+               public Distance (double dx, double dy)
+               {
+                       this.dx = dx;
+                       this.dy = dy;
+               }
+
+               double dx, dy;
+               public double Dx {
+                       get { return dx; }
+                       set { dx = value; }
+               }
+
+               public double Dy {
+                       get { return dy; }
+                       set { dy = value; }
+               }
+       }
+}
index efa479b6d52dfd756d49abc84f23ca939ea892c6..19d8163c35fea4f0f8b9d17db74b6158d01a2f21 100644 (file)
@@ -38,42 +38,48 @@ namespace Cairo
        {
                IntPtr handle;
 
-               internal static FontFace Lookup (IntPtr handle)
+               internal static FontFace Lookup (IntPtr handle, bool owner)
                {
                        if (handle == IntPtr.Zero)
                                return null;
-
-                       NativeMethods.cairo_font_face_reference (handle);
-
-                       return new FontFace (handle);
+                       return new FontFace (handle, owner);
                }
 
                ~FontFace ()
                {
-                       // Since Cairo is not thread safe, we can not unref the
-                       // font_face here, the programmer must do this with Dispose
-
-                       Console.Error.WriteLine ("Programmer forgot to call Dispose on the FontFace");
                        Dispose (false);
                }
 
                public void Dispose ()
                {
                        Dispose (true);
+                       GC.SuppressFinalize (this);
                }
 
                protected virtual void Dispose (bool disposing)
                {
-                       if (disposing)
-                               NativeMethods.cairo_font_face_destroy (handle);
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<FontFace> (handle, disposing);
+
+                       if (!disposing|| handle == IntPtr.Zero)
+                               return;
+
+                       NativeMethods.cairo_font_face_destroy (handle);
                        handle = IntPtr.Zero;
-                       GC.SuppressFinalize (this);
                }
-               
-               // TODO: make non-public when all entry points are complete in binding
-               public FontFace (IntPtr handle)
+
+               [Obsolete]
+               public FontFace (IntPtr handle) : this (handle, true)
+               {
+               }
+
+               public FontFace (IntPtr handle, bool owned)
                {
                        this.handle = handle;
+                       if (!owned)
+                               NativeMethods.cairo_font_face_reference (handle);
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
                }
 
                public IntPtr Handle {
index 476910f1b1d35396394f8c83430a0366139aa88f..5269d54dfac2ca504e8a29cf3c883292292fed00 100644 (file)
@@ -33,11 +33,9 @@ namespace Cairo
        public class FontOptions : IDisposable
        {
                IntPtr handle;
-               bool disposed;
 
-               public FontOptions ()
+               public FontOptions () : this (NativeMethods.cairo_font_options_create ())
                {
-                       handle = NativeMethods.cairo_font_options_create ();
                }
 
                ~FontOptions ()
@@ -48,6 +46,8 @@ namespace Cairo
                internal FontOptions (IntPtr handle)
                {
                        this.handle = handle;
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
                }
 
                public FontOptions Copy ()
@@ -55,9 +55,10 @@ namespace Cairo
                        return new FontOptions (NativeMethods.cairo_font_options_copy (handle));
                }
 
+               [Obsolete ("Use Dispose()")]
                public void Destroy ()
                {
-                       NativeMethods.cairo_font_options_destroy (handle);
+                       Dispose ();
                }
 
                public void Dispose ()
@@ -66,13 +67,16 @@ namespace Cairo
                        GC.SuppressFinalize (this);
                }
 
-               private void Dispose (bool disposing)
+               protected virtual void Dispose (bool disposing)
                {
-                       if (!disposed) {
-                               Destroy ();
-                               handle = IntPtr.Zero;
-                       }
-                       disposed = true;
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<FontOptions> (handle, disposing);
+
+                       if (!disposing|| handle == IntPtr.Zero)
+                               return;
+
+                       NativeMethods.cairo_font_options_destroy (handle);
+                       handle = IntPtr.Zero;
                }
 
                public static bool operator == (FontOptions options, FontOptions other)
index a8cd700a532358aa181f78ab5cae56fec3e4db46..6da1ac6a934e78424b20d4f1fadf55eb6b6c59df 100644 (file)
@@ -36,11 +36,8 @@ namespace Cairo {
                }
 
                public GlitzSurface (IntPtr glitz_surface)
+                       : base (NativeMethods.cairo_glitz_surface_create (glitz_surface), true)
                {
-                       surface = NativeMethods.cairo_glitz_surface_create (glitz_surface);
-                       lock (surfaces.SyncRoot) {
-                               surfaces [surface] = this;
-                       }
                }
        }
 }
index c15980b071c2a5448a38ed8649eab093c5d5922d..0fb617e421fa7c092508982d140ad13b63197b72 100644 (file)
@@ -1,4 +1,4 @@
-//                                                   
+//
 // Mono.Cairo.Gradient.cs
 //
 // Author: Jordi Mas (jordi@ximian.com)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 using System;
 
 namespace Cairo {
-   
+
        public class Gradient : Pattern
        {
-               protected Gradient (IntPtr handle) : base (handle)
+               protected Gradient (IntPtr handle, bool owned) : base (handle, owned)
                {
                }
 
+               [Obsolete]
                protected Gradient ()
                {
                }
@@ -44,20 +45,20 @@ namespace Cairo {
                public int ColorStopCount {
                        get {
                                int cnt;
-                               NativeMethods.cairo_pattern_get_color_stop_count (pattern, out cnt);
+                               NativeMethods.cairo_pattern_get_color_stop_count (Handle, out cnt);
                                return cnt;
                        }
                }
 
-               public Status AddColorStop (double offset, Cairo.Color c)
+               public Status AddColorStop (double offset, Color c)
                {
-                       NativeMethods.cairo_pattern_add_color_stop_rgba (pattern, offset, c.R, c.G, c.B, c.A);
+                       NativeMethods.cairo_pattern_add_color_stop_rgba (Handle, offset, c.R, c.G, c.B, c.A);
                        return Status;
                }
 
-               public Status AddColorStopRgb (double offset, Cairo.Color c)
+               public Status AddColorStopRgb (double offset, Color c)
                {
-                       NativeMethods.cairo_pattern_add_color_stop_rgb (pattern, offset, c.R, c.G, c.B);
+                       NativeMethods.cairo_pattern_add_color_stop_rgb (Handle, offset, c.R, c.G, c.B);
                        return Status;
                }
        }
index 659833a7cc48918d8fedf74753724e713ce5dbd7..98143fe8e22543efeda94ddba4631f6ea29b1efd 100644 (file)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -37,60 +37,49 @@ using System.Runtime.InteropServices;
 
 namespace Cairo {
 
-        public class ImageSurface : Surface
-        {
+       public class ImageSurface : Surface
+       {
                internal ImageSurface (IntPtr handle, bool owns) : base (handle, owns)
                {
                }
 
                public ImageSurface (Format format, int width, int height)
+                       : base (NativeMethods.cairo_image_surface_create (format, width, height), true)
                {
-                       surface = NativeMethods.cairo_image_surface_create (format, width, height);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
-               
+
                [Obsolete ("Use ImageSurface (byte[] data, Cairo.Format format, int width, int height, int stride)")]
-               public ImageSurface (ref byte[] data, Cairo.Format format, int width, int height, int stride) :this (data, format, width, height, stride)
+               public ImageSurface (ref byte[] data, Cairo.Format format, int width, int height, int stride)
+                       : this (data, format, width, height, stride)
                {
                }
 
-               public ImageSurface (byte[] data, Cairo.Format format, int width, int height, int stride)
+               public ImageSurface (byte[] data, Format format, int width, int height, int stride)
+                       : base (NativeMethods.cairo_image_surface_create_for_data (data, format, width, height, stride), true)
                {
-                       surface = NativeMethods.cairo_image_surface_create_for_data (data, format, width, height, stride);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
 
-               public ImageSurface (IntPtr data, Cairo.Format format, int width, int height, int stride)
+               public ImageSurface (IntPtr data, Format format, int width, int height, int stride)
+                       : base (NativeMethods.cairo_image_surface_create_for_data (data, format, width, height, stride), true)
                {
-                       surface = NativeMethods.cairo_image_surface_create_for_data (data, format, width, height, stride);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
-               
+
                public ImageSurface (string filename)
+                       : base (NativeMethods.cairo_image_surface_create_from_png (filename), true)
                {
-                       surface = NativeMethods.cairo_image_surface_create_from_png (filename);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
-               
+
                public int Width {
-                       get { return NativeMethods.cairo_image_surface_get_width (surface); }
+                       get { return NativeMethods.cairo_image_surface_get_width (Handle); }
                }
-               
+
                public int Height {
-                       get { return NativeMethods.cairo_image_surface_get_height (surface); }
+                       get { return NativeMethods.cairo_image_surface_get_height (Handle); }
                }
-               
+
                public byte[] Data {
                        get {
-                               IntPtr ptr = NativeMethods.cairo_image_surface_get_data (surface);
+                               IntPtr ptr = NativeMethods.cairo_image_surface_get_data (Handle);
                                int length = Height * Stride;
                                byte[] data = new byte[length];
                                Marshal.Copy (ptr, data, 0, length);
@@ -100,16 +89,16 @@ namespace Cairo {
 
                public IntPtr DataPtr {
                        get {
-                               return NativeMethods.cairo_image_surface_get_data (surface);
+                               return NativeMethods.cairo_image_surface_get_data (Handle);
                        }
                }
 
                public Format Format {
-                       get { return NativeMethods.cairo_image_surface_get_format (surface); }
+                       get { return NativeMethods.cairo_image_surface_get_format (Handle); }
                }
 
                public int Stride {
-                       get { return NativeMethods.cairo_image_surface_get_stride (surface); }
+                       get { return NativeMethods.cairo_image_surface_get_stride (Handle); }
                }
        }
 }
index 58d8e21ab8a8024a50362e0a461ce926b339b776..85fdea84a2c53c4252576db7c424c7532b6d3d54 100644 (file)
@@ -1,4 +1,4 @@
-//                                                   
+//
 // Mono.Cairo.LinearGradient.cs
 //
 // Author: Jordi Mas (jordi@ximian.com)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 using System;
 
 namespace Cairo {
-   
+
        public class LinearGradient : Gradient
        {
-               internal LinearGradient (IntPtr handle) : base (handle)
+               internal LinearGradient (IntPtr handle, bool owned) : base (handle, owned)
                {
                }
 
                public LinearGradient (double x0, double y0, double x1, double y1)
+                       : base (NativeMethods.cairo_pattern_create_linear (x0, y0, x1, y1), true)
                {
-                       pattern = NativeMethods.cairo_pattern_create_linear (x0, y0, x1, y1);
                }
 
                public PointD[] LinearPoints {
-                        get {
+                       get {
                                double x0, y0, x1, y1;
                                PointD[] points = new PointD [2];
 
-                               NativeMethods.cairo_pattern_get_linear_points (pattern, out x0, out y0, out x1, out y1);
+                               NativeMethods.cairo_pattern_get_linear_points (Handle, out x0, out y0, out x1, out y1);
 
                                points[0] = new PointD (x0, y0);
                                points[1] = new PointD (x1, y1);
                                return points;
-                        }
-                }
-
+                       }
+               }
        }
 }
 
index 79e1f359e1dd35db9b18688311ddf22e3371c025..83ffce49d2b2663c06239614fbf12535fd2546fd 100644 (file)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -36,110 +36,110 @@ using System.Runtime.InteropServices;
 
 namespace Cairo {
 
-       [StructLayout(LayoutKind.Sequential)]
-        public class Matrix : ICloneable
-        {              
+       [StructLayout(LayoutKind.Sequential)]
+       public class Matrix : ICloneable
+       {
                public double Xx;
                public double Yx;
-               public double Xy; 
+               public double Xy;
                public double Yy;
-               public double X0; 
+               public double X0;
                public double Y0;
 
                public Matrix (double xx, double yx, double xy, double yy,
                                double x0, double y0)
-               {               
+               {
                        this.Xx = xx; this.Yx = yx; this.Xy = xy;
                        this.Yy = yy; this.X0 = x0; this.Y0 = y0;
                }
-                
-                public Matrix ()
+
+               public Matrix ()
                {
                        this.InitIdentity ();
                }
-               
+
                public bool IsIdentity ()
                {
                        return (this == new Matrix ());
                }
-                       
-                public void InitIdentity ()
-                {
-                       // this.Init(1,0,0,1,0,0);
-                       NativeMethods.cairo_matrix_init_identity (this);
-                }
-               
+
+               public void InitIdentity ()
+               {
+                       // this.Init(1,0,0,1,0,0);
+                       NativeMethods.cairo_matrix_init_identity (this);
+               }
+
                public void Init (double xx, double yx, double xy, double yy,
                                  double x0, double y0)
                {
                        this.Xx = xx; this.Yx = yx; this.Xy = xy;
                        this.Yy = yy; this.X0 = x0; this.Y0 = y0;
                }
-               
+
                public void InitTranslate (double tx, double ty)
-               {               
+               {
                        //this.Init (1, 0, 0, 1, tx, ty);
                        NativeMethods.cairo_matrix_init_translate (this, tx, ty);
-               }               
-                                              
+               }
+
                public void Translate (double tx, double ty)
                {
                        NativeMethods.cairo_matrix_translate (this, tx, ty);
                }
-               
-                public void InitScale (double sx, double sy)
-                {
+
+               public void InitScale (double sx, double sy)
+               {
                        //this.Init (sx, 0, 0, sy, 0, 0);
-                       NativeMethods.cairo_matrix_init_scale (this, sx, sy);
-                }              
-               
-                public void Scale (double sx, double sy)
-                {
+                       NativeMethods.cairo_matrix_init_scale (this, sx, sy);
+               }
+
+               public void Scale (double sx, double sy)
+               {
                        NativeMethods.cairo_matrix_scale (this, sx, sy);
-                }
-
-                public void InitRotate (double radians)
-                {
-                       /*
-                       double s, c;
-                       s = Math.Sin (radians);
-                       c = Math.Cos (radians);
-                       this.Init (c, s, -s, c, 0, 0);
-                       */
-                       NativeMethods.cairo_matrix_init_rotate (this, radians);
-                }              
-               
-                public void Rotate (double radians)
-                {
+               }
+
+               public void InitRotate (double radians)
+               {
+                       /*
+                       double s, c;
+                       s = Math.Sin (radians);
+                       c = Math.Cos (radians);
+                       this.Init (c, s, -s, c, 0, 0);
+                       */
+                       NativeMethods.cairo_matrix_init_rotate (this, radians);
+               }
+
+               public void Rotate (double radians)
+               {
                        NativeMethods.cairo_matrix_rotate (this, radians);
-                }
+               }
 
-                public Cairo.Status Invert ()
-                {
+               public Cairo.Status Invert ()
+               {
                        return NativeMethods.cairo_matrix_invert (this);
-                }
+               }
 
                public void Multiply (Matrix b)
                {
                        Matrix a = (Matrix) this.Clone ();
                        NativeMethods.cairo_matrix_multiply (this, a, b);
                }
-               
+
                public static Matrix Multiply (Matrix a, Matrix b) {
                        Matrix result = new Matrix ();
                        NativeMethods.cairo_matrix_multiply (result, a, b);
                        return result;
                }
-                       
-               
-                public void TransformDistance (ref double dx, ref double dy)
+
+
+               public void TransformDistance (ref double dx, ref double dy)
                {
-                        NativeMethods.cairo_matrix_transform_distance (this, ref dx, ref dy);
-                }
+                       NativeMethods.cairo_matrix_transform_distance (this, ref dx, ref dy);
+               }
 
-                public void TransformPoint (ref double x, ref double y)
-                {
-                        NativeMethods.cairo_matrix_transform_point (this, ref x, ref y);
+               public void TransformPoint (ref double x, ref double y)
+               {
+                       NativeMethods.cairo_matrix_transform_point (this, ref x, ref y);
                }
 
                public override String ToString ()
@@ -148,7 +148,7 @@ namespace Cairo {
                                this.Xx, this.Yx, this.Xy, this.Yy, this.X0, this.Y0);
                        return s;
                }
-               
+
                public static bool operator == (Matrix lhs, Matrix rhs)
                {
                        return (lhs.Xx == rhs.Xx &&
@@ -158,14 +158,14 @@ namespace Cairo {
                                lhs.X0 == rhs.X0 &&
                                lhs.Y0 == rhs.Y0 );
                }
-               
+
                public static bool operator != (Matrix lhs, Matrix rhs)
                {
-                       return !(lhs==rhs);     
+                       return !(lhs==rhs);
                }
-               
-               
-               
+
+
+
                public override bool Equals(object o)
                {
                        if (! (o is Matrix))
@@ -173,7 +173,7 @@ namespace Cairo {
                        else
                                return (this == (Matrix) o);
                }
-               
+
                public override int GetHashCode()
                {
                        return  (int)this.Xx ^ (int)this.Xx>>32 ^
@@ -183,11 +183,11 @@ namespace Cairo {
                                (int)this.X0 ^ (int)this.X0>>32 ^
                                (int)this.Y0 ^ (int)this.Y0>>32;
                }
-               
+
                public object Clone()
                {
                        return this.MemberwiseClone ();
                }
-               
-        }
+
+       }
 }
index 855c282f6aa6f229802183f503af013ecdec416b..c53f0009c0019c37312a8f0bc1517fc60665ee71 100644 (file)
@@ -36,8 +36,8 @@ using System.Runtime.InteropServices;
 
 namespace Cairo
 {
-       // sort these so it is easier to find what is missing
-       // http://www.cairographics.org/manual/ix01.html
+       // sort the functions like in the following page so it is easier to find what is missing
+       // http://cairographics.org/manual/index-all.html
 
        internal static class NativeMethods
        {
@@ -86,9 +86,6 @@ namespace Cairo
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern IntPtr cairo_create (IntPtr target);
 
-               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
-               internal static extern uint cairo_get_reference_count (IntPtr surface);
-               
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern void cairo_curve_to (IntPtr cr, double x1, double y1, double x2, double y2, double x3, double y3);
                
@@ -240,6 +237,9 @@ namespace Cairo
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern Operator cairo_get_operator (IntPtr cr);
                
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern uint cairo_get_reference_count (IntPtr surface);
+
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern IntPtr cairo_get_source (IntPtr cr);
                
@@ -292,9 +292,6 @@ namespace Cairo
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern int cairo_image_surface_get_width  (IntPtr surface);
 
-               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
-               internal static extern uint cairo_surface_get_reference_count (IntPtr surface);
-               
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                [return: MarshalAs (UnmanagedType.U1)]
                internal static extern bool cairo_in_fill (IntPtr cr, double x, double y);
@@ -453,10 +450,10 @@ namespace Cairo
                //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                //internal static extern IntPtr cairo_ps_surface_create_for_stream (string filename, double width, double height);
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
-               internal static extern void cairo_ps_surface_begin_page_setup (IntPtr surface);
+               internal static extern void cairo_ps_surface_dsc_begin_page_setup (IntPtr surface);
                
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
-               internal static extern void cairo_ps_surface_begin_setup (IntPtr surface);
+               internal static extern void cairo_ps_surface_dsc_begin_setup (IntPtr surface);
                
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern void cairo_ps_surface_dsc_comment (IntPtr surface, string comment);
@@ -485,6 +482,75 @@ namespace Cairo
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern void cairo_reference (IntPtr cr);
                
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern bool cairo_region_contains_point (IntPtr region, int x, int y);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern RegionOverlap cairo_region_contains_rectangle (IntPtr region, ref RectangleInt rectangle);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern IntPtr cairo_region_copy (IntPtr original);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern IntPtr cairo_region_create ();
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern IntPtr cairo_region_create_rectangle (ref RectangleInt rect);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern IntPtr cairo_region_create_rectangles (RectangleInt[] rects, int count);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern void cairo_region_destroy (IntPtr region);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern bool cairo_region_equal (IntPtr a, IntPtr b);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern void cairo_region_get_extents (IntPtr region, out RectangleInt extents);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern void cairo_region_get_rectangle (IntPtr region, int nth, out RectangleInt rectangle);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_intersect (IntPtr dst, IntPtr other);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_intersect_rectangle (IntPtr dst, ref RectangleInt rectangle);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern bool cairo_region_is_empty (IntPtr region);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern int cairo_region_num_rectangles (IntPtr region);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern IntPtr cairo_region_reference (IntPtr region);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_status (IntPtr region);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_subtract (IntPtr dst, IntPtr other);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_subtract_rectangle (IntPtr dst, ref RectangleInt rectangle);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern void cairo_region_translate (IntPtr region, int dx, int dy);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_union (IntPtr dst, IntPtr other);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_union_rectangle (IntPtr dst, ref RectangleInt rectangle);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_xor (IntPtr dst, IntPtr other);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_xor_rectangle (IntPtr dst, ref RectangleInt rectangle);
+
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern void cairo_rel_curve_to (IntPtr cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3);
                
@@ -667,6 +733,9 @@ namespace Cairo
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern void cairo_surface_get_font_options (IntPtr surface, IntPtr FontOptions);
 
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern uint cairo_surface_get_reference_count (IntPtr surface);
+
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern SurfaceType cairo_surface_get_type (IntPtr surface);
                
index 1304be6230a295fa69dd921dc5edf431ba3d6767..9d6b73be68996272d7251ab88e8189288070bf56 100644 (file)
@@ -37,31 +37,28 @@ namespace Cairo {
                }
 
                public PSSurface (string filename, double width, double height)
+                       : base (NativeMethods.cairo_ps_surface_create (filename, width, height), true)
                {
-                       surface = NativeMethods.cairo_ps_surface_create (filename, width, height);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
 
                public void BeginPageSetup ()
                {
-                       NativeMethods.cairo_ps_surface_begin_page_setup (surface);
+                       NativeMethods.cairo_ps_surface_dsc_begin_page_setup (Handle);
                }
 
                public void BeginSetup ()
                {
-                       NativeMethods.cairo_ps_surface_begin_setup (surface);
+                       NativeMethods.cairo_ps_surface_dsc_begin_setup (Handle);
                }
 
                public void DscComment (string comment)
                {
-                       NativeMethods.cairo_ps_surface_dsc_comment (surface, comment);
+                       NativeMethods.cairo_ps_surface_dsc_comment (Handle, comment);
                }
 
                public void SetSize (double width, double height)
                {
-                       NativeMethods.cairo_ps_surface_set_size (surface, width, height);
+                       NativeMethods.cairo_ps_surface_set_size (Handle, width, height);
                }
        }
 }
index 97cfb8e2862f1ed297ce5af26a63520ab9d6a89a..184c606cf3470b851e09c0c51de29ea8f7972d95 100644 (file)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -34,13 +34,15 @@ using Cairo;
 
 namespace Cairo {
 
-        public class Path : IDisposable 
-        {
-                internal IntPtr handle = IntPtr.Zero;
-               
+       public class Path : IDisposable
+       {
+               IntPtr handle = IntPtr.Zero;
+
                internal Path (IntPtr handle)
                {
                        this.handle = handle;
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
                }
 
                ~Path ()
@@ -48,25 +50,24 @@ namespace Cairo {
                        Dispose (false);
                }
 
-               
+               public IntPtr Handle { get { return handle; } }
+
                public void Dispose ()
                {
                        Dispose (true);
                        GC.SuppressFinalize (this);
                }
-               
-                protected virtual void Dispose (bool disposing)
-                {
-                       if (!disposing){
-                               Console.Error.WriteLine ("Cairo.Context: called from finalization thread, programmer is missing a call to Dispose");
-                               return;
-                       }
-                       
-                       if (handle == IntPtr.Zero)
+
+               protected virtual void Dispose (bool disposing)
+               {
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<Path> (handle, disposing);
+
+                       if (!disposing|| handle == IntPtr.Zero)
                                return;
 
-                        NativeMethods.cairo_path_destroy (handle);
+                       NativeMethods.cairo_path_destroy (handle);
                        handle = IntPtr.Zero;
-                }
-        }
+               }
+       }
 }
index ebe4b70eaf5f3e8b3585f1f17240753d0d21acc5..bc0a962a218d59d5ff42a45289a56e7c2f5c8f40 100644 (file)
@@ -1,4 +1,4 @@
-//                                                   
+//
 // Mono.Cairo.Pattern.cs
 //
 // Author: Jordi Mas (jordi@ximian.com)
@@ -32,116 +32,124 @@ using System.Collections;
 
 namespace Cairo {
    
-        public class Pattern : IDisposable
-        {
-                protected IntPtr pattern = IntPtr.Zero;
+       public class Pattern : IDisposable
+       {
+               [Obsolete]
+               protected IntPtr pattern = IntPtr.Zero;
 
-               internal static Pattern Lookup (IntPtr pattern)
+               public static Pattern Lookup (IntPtr pattern, bool owner)
                {
                        if (pattern == IntPtr.Zero)
                                return null;
-
-                       object x = patterns [pattern];
-                       if (x != null)
-                               return (Pattern) x;
                        
                        PatternType pt = NativeMethods.cairo_pattern_get_type (pattern);
                        switch (pt) {
                        case PatternType.Solid:
-                               return new SolidPattern (pattern);
+                               return new SolidPattern (pattern, owner);
                        case PatternType.Surface:
-                               return new SurfacePattern (pattern);
+                               return new SurfacePattern (pattern, owner);
                        case PatternType.Linear:
-                               return new LinearGradient (pattern);
+                               return new LinearGradient (pattern, owner);
                        case PatternType.Radial:
-                               return new RadialGradient (pattern);
+                               return new RadialGradient (pattern, owner);
                        default:
-                               return new Pattern (pattern);
+                               return new Pattern (pattern, owner);
                        }
                }
-               
-                protected Pattern ()
-                {
-                }
 
-               static Hashtable patterns = new Hashtable ();
+               [Obsolete]
+               protected Pattern ()
+               {
+               }
                
-               internal Pattern (IntPtr ptr)
+               internal Pattern (IntPtr handle, bool owned)
                {
-                       lock (patterns){
-                               patterns [ptr] = this;
-                       }
-                       pattern = ptr;
+                       Handle = handle;
+                       if (!owned)
+                               NativeMethods.cairo_pattern_reference (handle);
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
                }
 
                ~Pattern ()
                {
+                       Dispose (false);
                }
                
-                [Obsolete ("Use the SurfacePattern constructor")]
-                public Pattern (Surface surface)
-                {
-                        pattern = NativeMethods.cairo_pattern_create_for_surface (surface.Handle);
-                }
+               [Obsolete ("Use the SurfacePattern constructor")]
+               public Pattern (Surface surface)
+                       : this ( NativeMethods.cairo_pattern_create_for_surface (surface.Handle), true)
+               {
+               }
                
-                protected void Reference ()
-                {
-                        NativeMethods.cairo_pattern_reference (pattern);
-                }
+               [Obsolete]
+               protected void Reference ()
+               {
+                       NativeMethods.cairo_pattern_reference (pattern);
+               }
 
                public void Dispose ()
                {
                        Dispose (true);
+                       GC.SuppressFinalize (this);
                }
 
                protected virtual void Dispose (bool disposing)
                {
-                       if (disposing)
-                               Destroy ();
-                       GC.SuppressFinalize (this);
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<Pattern> (Handle, disposing);
+
+                       if (!disposing|| Handle == IntPtr.Zero)
+                               return;
+
+                       NativeMethods.cairo_pattern_destroy (Handle);
+                       Handle = IntPtr.Zero;
                }
-               
-                public void Destroy ()
-                {
-                       if (pattern != IntPtr.Zero){
-                               NativeMethods.cairo_pattern_destroy (pattern);
-                               pattern = IntPtr.Zero;
-                       }
-                       lock (patterns){
-                               patterns.Remove (this);
-                       }
-                }
-               
+
+               [Obsolete ("Use Dispose()")]
+               public void Destroy ()
+               {
+                       Dispose ();
+               }
+
                public Status Status
                {
-                       get { return NativeMethods.cairo_pattern_status (pattern); }
+                       get { return NativeMethods.cairo_pattern_status (Handle); }
                }
 
                public Extend Extend
                {
-                       get { return NativeMethods.cairo_pattern_get_extend (pattern); }
-                       set { NativeMethods.cairo_pattern_set_extend (pattern, value); }
+                       get { return NativeMethods.cairo_pattern_get_extend (Handle); }
+                       set { NativeMethods.cairo_pattern_set_extend (Handle, value); }
                }
-       
-                public Matrix Matrix {
-                        set { 
-                               NativeMethods.cairo_pattern_set_matrix (pattern, value);
+
+               public Matrix Matrix {
+                       set {
+                               NativeMethods.cairo_pattern_set_matrix (Handle, value);
                        }
 
-                        get {
+                       get {
                                Matrix m = new Matrix ();
-                               NativeMethods.cairo_pattern_get_matrix (pattern, m);
+                               NativeMethods.cairo_pattern_get_matrix (Handle, m);
                                return m;
-                        }
-                }
+                       }
+               }
 
-                public IntPtr Pointer {
-                        get { return pattern; }
-                }              
+#pragma warning disable 612
+               public IntPtr Handle {
+                       get { return pattern; }
+                       private set { pattern = value; }
+               }
+#pragma warning restore 612
+
+               [Obsolete]
+               public IntPtr Pointer {
+                       get { return pattern; }
+               }
 
                public PatternType PatternType {
-                       get { return NativeMethods.cairo_pattern_get_type (pattern); }
+                       get { return NativeMethods.cairo_pattern_get_type (Handle); }
                }
-        }
+       }
 }
 
index f3a184bb5a764f48cb4e75588e31307676d50eca..c980f249ed06ae2626cb83c9e565498d11b82fbc 100644 (file)
@@ -37,16 +37,13 @@ namespace Cairo {
                }
 
                public PdfSurface (string filename, double width, double height)
+                       : base (NativeMethods.cairo_pdf_surface_create (filename, width, height), true)
                {
-                       surface = NativeMethods.cairo_pdf_surface_create (filename, width, height);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
 
                public void SetSize (double width, double height)
                {
-                       NativeMethods.cairo_pdf_surface_set_size (surface, width, height);
+                       NativeMethods.cairo_pdf_surface_set_size (Handle, width, height);
                }
        }
 }
diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/Point.cs b/mcs/class/Mono.Cairo/Mono.Cairo/Point.cs
new file mode 100644 (file)
index 0000000..e72ca6c
--- /dev/null
@@ -0,0 +1,57 @@
+//
+// Mono.Cairo.Context.cs
+//
+// Author:
+//   Duncan Mak (duncan@ximian.com)
+//   Miguel de Icaza (miguel@novell.com)
+//   Hisham Mardam Bey (hisham.mardambey@gmail.com)
+//   Alp Toker (alp@atoker.com)
+//
+// (C) Ximian Inc, 2003.
+// (C) Novell Inc, 2003.
+//
+// This is an OO wrapper API for the Cairo API.
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Cairo {
+       public struct Point
+       {
+               public Point (int x, int y)
+               {
+                       this.x = x;
+                       this.y = y;
+               }
+
+               int x, y;
+               public int X {
+                       get { return x; }
+                       set { x = value; }
+               }
+
+               public int Y {
+                       get { return y; }
+                       set { y = value; }
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/PointD.cs b/mcs/class/Mono.Cairo/Mono.Cairo/PointD.cs
new file mode 100644 (file)
index 0000000..c2e3587
--- /dev/null
@@ -0,0 +1,58 @@
+//
+// Mono.Cairo.Context.cs
+//
+// Author:
+//   Duncan Mak (duncan@ximian.com)
+//   Miguel de Icaza (miguel@novell.com)
+//   Hisham Mardam Bey (hisham.mardambey@gmail.com)
+//   Alp Toker (alp@atoker.com)
+//
+// (C) Ximian Inc, 2003.
+// (C) Novell Inc, 2003.
+//
+// This is an OO wrapper API for the Cairo API.
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Cairo {
+
+       public struct PointD
+       {
+               public PointD (double x, double y)
+               {
+                       this.x = x;
+                       this.y = y;
+               }
+
+               double x, y;
+               public double X {
+                       get { return x; }
+                       set { x = value; }
+               }
+
+               public double Y {
+                       get { return y; }
+                       set { y = value; }
+               }
+       }
+}
index df9c329057dd71107b2ff1004f6bd90c42d041d3..6422e00d6e4e778219c400072ba8cf5136353185 100644 (file)
@@ -1,4 +1,4 @@
-//                                                   
+//
 // Mono.Cairo.Pattern.cs
 //
 // Author: Jordi Mas (jordi@ximian.com)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 using System;
 
 namespace Cairo {
-   
+
        public class RadialGradient : Gradient
        {
-               internal RadialGradient (IntPtr handle) : base (handle)
+               internal RadialGradient (IntPtr handle, bool owned) : base (handle, owned)
                {
                }
 
                public RadialGradient (double cx0, double cy0, double radius0, double cx1, double cy1, double radius1)
+                       : base (NativeMethods.cairo_pattern_create_radial (cx0, cy0, radius0, cx1, cy1, radius1), true)
                {
-                       pattern = NativeMethods.cairo_pattern_create_radial (cx0, cy0, radius0, cx1, cy1, radius1);
                }
        }
 }
diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/Region.cs b/mcs/class/Mono.Cairo/Mono.Cairo/Region.cs
new file mode 100644 (file)
index 0000000..cd0ba33
--- /dev/null
@@ -0,0 +1,196 @@
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace Cairo
+{
+
+       [StructLayout(LayoutKind.Sequential)]
+       public struct RectangleInt {
+               public int X;
+               public int Y;
+               public int Width;
+               public int Height;
+       }
+
+       public enum RegionOverlap {
+               In,
+               Out,
+               Part,
+       }
+
+       public class Region : IDisposable {
+
+               IntPtr handle;
+               public IntPtr Handle {
+                       get { return handle; }
+               }
+
+               [Obsolete]
+               public Region (IntPtr handle) : this (handle, false) {}
+
+               public Region (IntPtr handle, bool owned)
+               {
+                       this.handle = handle;
+                       if (!owned)
+                               NativeMethods.cairo_region_reference (handle);
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
+               }
+
+               public Region () : this (NativeMethods.cairo_region_create () , true)
+               {
+               }
+
+               public Region (RectangleInt rect)
+               {
+                       handle = NativeMethods.cairo_region_create_rectangle (ref rect);
+               }
+
+               public Region (RectangleInt[] rects)
+               {
+                       handle = NativeMethods.cairo_region_create_rectangles (rects, rects.Length);
+               }
+
+               public Region Copy ()
+               {
+                       return new Region (NativeMethods.cairo_region_copy (Handle), true);
+               }
+
+               ~Region ()
+               {
+                       Dispose (false);
+               }
+
+               public void Dispose ()
+               {
+                       Dispose (true);
+                       GC.SuppressFinalize (this);
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<Region> (handle, disposing);
+
+                       if (!disposing|| handle == IntPtr.Zero)
+                               return;
+
+                       NativeMethods.cairo_region_destroy (Handle);
+                       handle = IntPtr.Zero;
+               }
+
+               public override bool Equals (object obj)
+               {
+                       return (obj is Region) && NativeMethods.cairo_region_equal (Handle, (obj as Region).Handle);
+               }
+
+               public override int GetHashCode ()
+               {
+                       return Handle.GetHashCode ();
+               }
+
+               public Status Status {
+                       get { return NativeMethods.cairo_region_status (Handle); }
+               }
+
+               public RectangleInt Extents {
+                       get {
+                               RectangleInt result;
+                               NativeMethods.cairo_region_get_extents (Handle, out result);
+                               return result;
+                       }
+               }
+
+               public int NumRectangles {
+                       get { return NativeMethods.cairo_region_num_rectangles (Handle); }
+               }
+
+               public RectangleInt GetRectangle (int nth)
+               {
+                       RectangleInt val;
+                       NativeMethods.cairo_region_get_rectangle (Handle, nth, out val);
+                       return val;
+               }
+
+               public bool IsEmpty {
+                       get { return NativeMethods.cairo_region_is_empty (Handle); }
+               }
+
+               public RegionOverlap ContainsPoint (RectangleInt rectangle)
+               {
+                       return NativeMethods.cairo_region_contains_rectangle (Handle, ref rectangle);
+               }
+
+               public bool ContainsPoint (int x, int y)
+               {
+                       return NativeMethods.cairo_region_contains_point (Handle, x, y);
+               }
+
+               public void Translate (int dx, int dy)
+               {
+                       NativeMethods.cairo_region_translate (Handle, dx, dy);
+               }
+
+               public Status Subtract (Region other)
+               {
+                       return NativeMethods.cairo_region_subtract (Handle, other.Handle);
+               }
+
+               public Status SubtractRectangle (RectangleInt rectangle)
+               {
+                       return NativeMethods.cairo_region_subtract_rectangle (Handle, ref rectangle);
+               }
+
+               public Status Intersect (Region other)
+               {
+                       return NativeMethods.cairo_region_intersect (Handle, other.Handle);
+               }
+
+               public Status IntersectRectangle (RectangleInt rectangle)
+               {
+                       return NativeMethods.cairo_region_intersect_rectangle (Handle, ref rectangle);
+               }
+
+               public Status Union (Region other)
+               {
+                       return NativeMethods.cairo_region_union (Handle, other.Handle);
+               }
+
+               public Status UnionRectangle (RectangleInt rectangle)
+               {
+                       return NativeMethods.cairo_region_union_rectangle (Handle, ref rectangle);
+               }
+
+               public Status Xor (Region other)
+               {
+                       return NativeMethods.cairo_region_xor (Handle, other.Handle);
+               }
+
+               public Status XorRectangle (RectangleInt rectangle)
+               {
+                       return NativeMethods.cairo_region_xor_rectangle (Handle, ref rectangle);
+               }
+       }
+}
index 2b0f6cf0c5fb5a8a6cb9f223e4022b815741e458..937194607af414e35fbb5ee6a0b80b02a7949c07 100644 (file)
@@ -32,14 +32,18 @@ namespace Cairo {
        {
                protected IntPtr handle = IntPtr.Zero;
 
-               internal ScaledFont (IntPtr handle)
+               internal ScaledFont (IntPtr handle, bool owner)
                {
                        this.handle = handle;
+                       if (!owner)
+                               NativeMethods.cairo_scaled_font_reference (handle);
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
                }
 
                public ScaledFont (FontFace fontFace, Matrix matrix, Matrix ctm, FontOptions options)
+                       : this (NativeMethods.cairo_scaled_font_create (fontFace.Handle, matrix, ctm, options.Handle), true)
                {
-                       handle = NativeMethods.cairo_scaled_font_create (fontFace.Handle, matrix, ctm, options.Handle);
                }
 
                ~ScaledFont ()
@@ -47,19 +51,19 @@ namespace Cairo {
                        Dispose (false);
                }
 
-                public IntPtr Handle {
-                        get {
-                                return handle;
-                        }
-                }
+               public IntPtr Handle {
+                       get {
+                               return handle;
+                       }
+               }
 
                public FontExtents FontExtents {
-                        get {
-                                FontExtents extents;
-                                NativeMethods.cairo_scaled_font_extents (handle, out extents);
-                                return extents;
-                        }
-                }
+                       get {
+                               FontExtents extents;
+                               NativeMethods.cairo_scaled_font_extents (handle, out extents);
+                               return extents;
+                       }
+               }
 
                public Matrix FontMatrix {
                        get {
@@ -99,16 +103,21 @@ namespace Cairo {
 
                protected virtual void Dispose (bool disposing)
                {
-                       if (disposing) {
-                               NativeMethods.cairo_scaled_font_destroy (handle);
-                               handle = IntPtr.Zero;
-                       }
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<ScaledFont> (handle, disposing);
+
+                       if (!disposing|| handle == IntPtr.Zero)
+                               return;
+
+                       NativeMethods.cairo_scaled_font_destroy (handle);
+                       handle = IntPtr.Zero;
+               }
+
+               [Obsolete]
+               protected void Reference ()
+               {
+                       NativeMethods.cairo_scaled_font_reference (handle);
                }
-               
-                protected void Reference ()
-                {
-                        NativeMethods.cairo_scaled_font_reference (handle);
-                }
        }
 }
 
index 44dba86a97d9acbf3ae527b89b59c5bb88d4350e..875b3fbf155d9ff19cfe56bda148a7b96f058c21 100644 (file)
@@ -1,4 +1,4 @@
-//                                                   
+//
 // Mono.Cairo.Pattern.cs
 //
 // Author: Jordi Mas (jordi@ximian.com)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 using System;
 
 namespace Cairo {
-   
+
        public class SolidPattern : Pattern
        {
-               internal SolidPattern (IntPtr handle) : base (handle)
+               internal SolidPattern (IntPtr handle, bool owned) : base (handle, owned)
                {
                }
 
                public SolidPattern (Color color)
+                       : base (NativeMethods.cairo_pattern_create_rgba (color.R, color.G, color.B, color.A), true)
                {
-                       pattern = NativeMethods.cairo_pattern_create_rgba (color.R, color.G, color.B, color.A);
                }
 
                public SolidPattern (double r, double g, double b)
+                       : base (NativeMethods.cairo_pattern_create_rgb (r, g, b), true)
                {
-                       pattern = NativeMethods.cairo_pattern_create_rgb (r, g, b);
                }
 
                public SolidPattern (double r, double g, double b, double a)
+                       : base (NativeMethods.cairo_pattern_create_rgba (r, g, b, a), true)
                {
-                       NativeMethods.cairo_pattern_create_rgba (r, g, b, a);
                }
 
                public SolidPattern (Color color, bool solid)
+                       : base (solid
+                                       ? NativeMethods.cairo_pattern_create_rgb (color.R, color.G, color.B)
+                                       : NativeMethods.cairo_pattern_create_rgba (color.R, color.G, color.B, color.A),
+                               true)
                {
-                       if (solid)
-                               pattern = NativeMethods.cairo_pattern_create_rgb (color.R, color.G, color.B);
-                       else
-                               pattern = NativeMethods.cairo_pattern_create_rgba (color.R, color.G, color.B, color.A);
                }
 
                public Color Color {
-                        get {
+                       get {
                                double red, green, blue, alpha;
-
-                               NativeMethods.cairo_pattern_get_rgba  (pattern, out red, out green, out blue, out alpha);
+                               NativeMethods.cairo_pattern_get_rgba  (Handle, out red, out green, out blue, out alpha);
                                return new Color (red, green, blue, alpha);
-                        }
-                }
+                       }
+               }
        }
 }
 
index 862cbdc606d85ac92f2556106359da1aa97ae3f7..07e0d4d997547e0a66698faaa66fa5affa8f1356 100644 (file)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -38,94 +38,88 @@ using System.Collections;
 
 namespace Cairo {
 
-       public class Surface : IDisposable 
-        {                                              
+       public class Surface : IDisposable
+       {
+               [Obsolete]
                protected static Hashtable surfaces = new Hashtable ();
-                internal IntPtr surface = IntPtr.Zero;
 
+               IntPtr handle = IntPtr.Zero;
+
+               [Obsolete]
                protected Surface()
                {
                }
-               
-                protected Surface (IntPtr ptr, bool owns)
-                {
-                        surface = ptr;
-                       lock (surfaces.SyncRoot){
-                               surfaces [ptr] = this;
-                       }
-                       if (!owns)
-                               NativeMethods.cairo_surface_reference (ptr);
-                }
-
-               static internal Surface LookupExternalSurface (IntPtr p)
-               {
-                       lock (surfaces.SyncRoot){
-                               object o = surfaces [p];
-                               if (o == null){
-                                       return new Surface (p, false);
-                               }
-                               return (Surface) o;
-                       }
-               }               
 
-               static internal Surface LookupSurface (IntPtr surface)
+               [Obsolete]
+               protected Surface (IntPtr ptr) : this (ptr, true)
+               {
+               }
+
+               protected Surface (IntPtr handle, bool owner)
+               {
+                       this.handle = handle;
+                       if (!owner)
+                               NativeMethods.cairo_surface_reference (handle);
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
+               }
+
+               public static Surface Lookup (IntPtr surface, bool owned)
                {
                        SurfaceType st = NativeMethods.cairo_surface_get_type (surface);
                        switch (st) {
                        case SurfaceType.Image:
-                               return new ImageSurface (surface, true);
+                               return new ImageSurface (surface, owned);
                        case SurfaceType.Xlib:
-                               return new XlibSurface (surface, true);
+                               return new XlibSurface (surface, owned);
                        case SurfaceType.Xcb:
-                               return new XcbSurface (surface, true);
+                               return new XcbSurface (surface, owned);
                        case SurfaceType.Glitz:
-                               return new GlitzSurface (surface, true);
+                               return new GlitzSurface (surface, owned);
                        case SurfaceType.Win32:
-                               return new Win32Surface (surface, true);
-
+                               return new Win32Surface (surface, owned);
                        case SurfaceType.Pdf:
-                               return new PdfSurface (surface, true);
+                               return new PdfSurface (surface, owned);
                        case SurfaceType.PS:
-                               return new PSSurface (surface, true);
+                               return new PSSurface (surface, owned);
                        case SurfaceType.DirectFB:
-                               return new DirectFBSurface (surface, true);
+                               return new DirectFBSurface (surface, owned);
                        case SurfaceType.Svg:
-                               return new SvgSurface (surface, true);
-
+                               return new SvgSurface (surface, owned);
                        default:
-                               return Surface.LookupExternalSurface (surface);
+                               return new Surface (surface, owned);
                        }
                }
-               
+
                [Obsolete ("Use an ImageSurface constructor instead.")]
-                public static Cairo.Surface CreateForImage (
-                        ref byte[] data, Cairo.Format format, int width, int height, int stride)
-                {
-                        IntPtr p = NativeMethods.cairo_image_surface_create_for_data (
-                                data, format, width, height, stride);
-                        
-                        return new Cairo.Surface (p, true);
-                }
+               public static Cairo.Surface CreateForImage (
+                       ref byte[] data, Cairo.Format format, int width, int height, int stride)
+               {
+                       IntPtr p = NativeMethods.cairo_image_surface_create_for_data (
+                               data, format, width, height, stride);
+
+                       return new Cairo.Surface (p, true);
+               }
 
                [Obsolete ("Use an ImageSurface constructor instead.")]
-                public static Cairo.Surface CreateForImage (
-                        Cairo.Format format, int width, int height)
-                {
-                        IntPtr p = NativeMethods.cairo_image_surface_create (
-                                format, width, height);
+               public static Cairo.Surface CreateForImage (
+                       Cairo.Format format, int width, int height)
+               {
+                       IntPtr p = NativeMethods.cairo_image_surface_create (
+                               format, width, height);
 
-                        return new Cairo.Surface (p, true);
-                }
+                       return new Cairo.Surface (p, true);
+               }
 
 
-                public Cairo.Surface CreateSimilar (
-                        Cairo.Content content, int width, int height)
-                {
-                        IntPtr p = NativeMethods.cairo_surface_create_similar (
-                                this.Handle, content, width, height);
+               public Cairo.Surface CreateSimilar (
+                       Cairo.Content content, int width, int height)
+               {
+                       IntPtr p = NativeMethods.cairo_surface_create_similar (
+                               this.Handle, content, width, height);
 
-                        return new Cairo.Surface (p, true);
-                }
+                       return new Cairo.Surface (p, true);
+               }
 
                ~Surface ()
                {
@@ -133,9 +127,9 @@ namespace Cairo {
                }
 
                //[Obsolete ("Use Context.SetSource() followed by Context.Paint()")]
-               public void Show (Context gr, double x, double y) 
+               public void Show (Context gr, double x, double y)
                {
-                       NativeMethods.cairo_set_source_surface (gr.Handle, surface, x, y);
+                       NativeMethods.cairo_set_source_surface (gr.Handle, handle, x, y);
                        NativeMethods.cairo_paint (gr.Handle);
                }
 
@@ -147,91 +141,92 @@ namespace Cairo {
 
                protected virtual void Dispose (bool disposing)
                {
-                       if (surface == IntPtr.Zero)
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<Surface> (handle, disposing);
+
+                       if (!disposing|| handle == IntPtr.Zero)
                                return;
-                       
-                       lock (surfaces.SyncRoot)
-                               surfaces.Remove (surface);
 
-                       NativeMethods.cairo_surface_destroy (surface);
-                       surface = IntPtr.Zero;
+                       NativeMethods.cairo_surface_destroy (handle);
+                       handle = IntPtr.Zero;
                }
-               
+
                public Status Finish ()
                {
-                       NativeMethods.cairo_surface_finish (surface);
+                       NativeMethods.cairo_surface_finish (handle);
                        return Status;
                }
-               
+
                public void Flush ()
                {
-                       NativeMethods.cairo_surface_flush (surface);
+                       NativeMethods.cairo_surface_flush (handle);
                }
-               
+
                public void MarkDirty ()
                {
                        NativeMethods.cairo_surface_mark_dirty (Handle);
                }
-               
+
                public void MarkDirty (Rectangle rectangle)
                {
                        NativeMethods.cairo_surface_mark_dirty_rectangle (Handle, (int)rectangle.X, (int)rectangle.Y, (int)rectangle.Width, (int)rectangle.Height);
                }
-               
-                public IntPtr Handle {
-                        get {
-                               return surface;
+
+               public IntPtr Handle {
+                       get {
+                               return handle;
                        }
-                }
+               }
 
                public PointD DeviceOffset {
                        get {
                                double x, y;
-                               NativeMethods.cairo_surface_get_device_offset (surface, out x, out y);
+                               NativeMethods.cairo_surface_get_device_offset (handle, out x, out y);
                                return new PointD (x, y);
                        }
 
                        set {
-                               NativeMethods.cairo_surface_set_device_offset (surface, value.X, value.Y);
+                               NativeMethods.cairo_surface_set_device_offset (handle, value.X, value.Y);
                        }
                }
-               
+
+               [Obsolete ("Use Dispose()")]
                public void Destroy()
                {
-                       Dispose (true);
+                       Dispose ();
                }
 
                public void SetFallbackResolution (double x, double y)
                {
-                       NativeMethods.cairo_surface_set_fallback_resolution (surface, x, y);
+                       NativeMethods.cairo_surface_set_fallback_resolution (handle, x, y);
                }
 
                public void WriteToPng (string filename)
                {
-                       NativeMethods.cairo_surface_write_to_png (surface, filename);
+                       NativeMethods.cairo_surface_write_to_png (handle, filename);
                }
-               
+
                [Obsolete ("Use Handle instead.")]
-                public IntPtr Pointer {
-                        get {
-                               return surface;
+               public IntPtr Pointer {
+                       get {
+                               return handle;
                        }
-                }
-               
+               }
+
                public Status Status {
-                       get { return NativeMethods.cairo_surface_status (surface); }
+                       get { return NativeMethods.cairo_surface_status (handle); }
                }
 
                public Content Content {
-                       get { return NativeMethods.cairo_surface_get_content (surface); }
+                       get { return NativeMethods.cairo_surface_get_content (handle); }
                }
 
                public SurfaceType SurfaceType {
-                       get { return NativeMethods.cairo_surface_get_type (surface); }
+                       get { return NativeMethods.cairo_surface_get_type (handle); }
                }
 
                public uint ReferenceCount {
-                       get { return NativeMethods.cairo_surface_get_reference_count (surface); }
+                       get { return NativeMethods.cairo_surface_get_reference_count (handle); }
                }
-        }
+       }
 }
index f4f4298c5498a69b17f1cb2a3a5431f231d7df1f..4422b11d41dc899da6aa8edfa5a31fcd8ca23e55 100644 (file)
@@ -1,4 +1,4 @@
-//                                                   
+//
 // Mono.Cairo.Pattern.cs
 //
 // Author: Jordi Mas (jordi@ximian.com)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 using System;
 
 namespace Cairo {
-   
+
        public class SurfacePattern : Pattern
        {
-               internal SurfacePattern (IntPtr handle) : base (handle)
+               internal SurfacePattern (IntPtr handle, bool owned) : base (handle, owned)
                {
                }
 
                public SurfacePattern (Surface surface)
+                       : base (NativeMethods.cairo_pattern_create_for_surface (surface.Handle), true)
                {
-                       pattern = NativeMethods.cairo_pattern_create_for_surface (surface.Handle);
                }
 
-               public Extend Extend {
-                       set { NativeMethods.cairo_pattern_set_extend (pattern, value); }
-                       get { return NativeMethods.cairo_pattern_get_extend (pattern); }
+               //no idea why this is here, the base one is identical, but we can't remove it now
+               public new Extend Extend {
+                       set { NativeMethods.cairo_pattern_set_extend (Handle, value); }
+                       get { return NativeMethods.cairo_pattern_get_extend (Handle); }
                }
 
                public Filter Filter {
-                       set { NativeMethods.cairo_pattern_set_filter (pattern, value); }
-                       get { return NativeMethods.cairo_pattern_get_filter (pattern); }
+                       set { NativeMethods.cairo_pattern_set_filter (Handle, value); }
+                       get { return NativeMethods.cairo_pattern_get_filter (Handle); }
                }
        }
 }
index 10da981e0ee05b8c70f3f8983d685e299e49744b..418295011fde1c26a144ab920ab513b634844902 100644 (file)
@@ -37,16 +37,13 @@ namespace Cairo {
                }
 
                public SvgSurface (string filename, double width, double height)
+                       : base (NativeMethods.cairo_svg_surface_create (filename, width, height), true)
                {
-                       surface = NativeMethods.cairo_svg_surface_create (filename, width, height);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
 
                public void RestrictToVersion (SvgVersion version)
                {
-                       NativeMethods.cairo_svg_surface_restrict_to_version (surface, version);
+                       NativeMethods.cairo_svg_surface_restrict_to_version (Handle, version);
                }
        }
 }
index fbb22270acad984c1d43e1e1ab9e9b231042bf3f..dd244286dff508a90832ea9ac88cd2aaa1afe99c 100644 (file)
@@ -37,12 +37,8 @@ namespace Cairo {
                }
                
                public Win32Surface (IntPtr hdc)
+                       : base (NativeMethods.cairo_win32_surface_create (hdc), true)
                {
-                       surface = NativeMethods.cairo_win32_surface_create (hdc);
-                       lock (surfaces.SyncRoot) {
-                               surfaces [surface] = this;
-                       }
                }
        }
-
 }
index 97f5f2f6f797a0471d0080d5fc07cc6b4bb93575..142ebf9e31a0530bf5fafa8a4a7cb4e322f0940d 100644 (file)
@@ -36,24 +36,19 @@ namespace Cairo {
                }
 
                public XcbSurface (IntPtr connection, uint drawable, IntPtr visual, int width, int height)
+                       : base (NativeMethods.cairo_xcb_surface_create (connection, drawable, visual, width, height), true)
                {
-                       surface = NativeMethods.cairo_xcb_surface_create (connection, drawable, visual, width, height);
-                       lock (surfaces.SyncRoot) {
-                               surfaces [surface] = this;
-                       }
                }
 
                public static XcbSurface FromBitmap (IntPtr connection, uint bitmap, IntPtr screen, int width, int height)
                {
-                       IntPtr ptr;
-
-                       ptr = NativeMethods.cairo_xcb_surface_create_for_bitmap (connection, bitmap, screen, width, height);
+                       IntPtr ptr = NativeMethods.cairo_xcb_surface_create_for_bitmap (connection, bitmap, screen, width, height);
                        return new XcbSurface (ptr, true);
                }
 
                public void SetSize (int width, int height)
                {
-                       NativeMethods.cairo_xcb_surface_set_size (surface, width, height);
+                       NativeMethods.cairo_xcb_surface_set_size (Handle, width, height);
                }
        }
 }
index ef010feea5935886e5f00e5fdee9460041c901a3..c0003a491e61f3afafefcbb4ebbfb025a1052f75 100644 (file)
@@ -39,11 +39,8 @@ namespace Cairo {
        public class XlibSurface : Surface
        {
                public XlibSurface (IntPtr display, IntPtr drawable, IntPtr visual, int width, int height)
+                       : base (NativeMethods.cairo_xlib_surface_create (display, drawable, visual, width, height), true)
                {
-                       surface = NativeMethods.cairo_xlib_surface_create (display, drawable, visual, width, height);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
 
                public XlibSurface (IntPtr ptr, bool own) : base (ptr, own)
@@ -52,48 +49,46 @@ namespace Cairo {
 
                public static XlibSurface FromBitmap (IntPtr display, IntPtr bitmap, IntPtr screen, int width, int height)
                {
-                       IntPtr  ptr;
-
-                       ptr = NativeMethods.cairo_xlib_surface_create_for_bitmap (display, bitmap, screen, width, height);
+                       IntPtr ptr = NativeMethods.cairo_xlib_surface_create_for_bitmap (display, bitmap, screen, width, height);
                        return new XlibSurface(ptr, true);
                }
 
                public void SetDrawable (IntPtr drawable, int width, int height)
                {
-                       NativeMethods.cairo_xlib_surface_set_drawable (surface, drawable, width, height);
+                       NativeMethods.cairo_xlib_surface_set_drawable (Handle, drawable, width, height);
                }
 
                public void SetSize (int width, int height)
                {
-                       NativeMethods.cairo_xlib_surface_set_size (surface, width, height);
+                       NativeMethods.cairo_xlib_surface_set_size (Handle, width, height);
                }
 
                public int Depth {
-                       get { return NativeMethods.cairo_xlib_surface_get_depth (surface); }
+                       get { return NativeMethods.cairo_xlib_surface_get_depth (Handle); }
                }
                
                public IntPtr Display {
-                       get { return NativeMethods.cairo_xlib_surface_get_display (surface); }
+                       get { return NativeMethods.cairo_xlib_surface_get_display (Handle); }
                }
 
                public IntPtr Drawable {
-                       get { return NativeMethods.cairo_xlib_surface_get_drawable (surface); }
+                       get { return NativeMethods.cairo_xlib_surface_get_drawable (Handle); }
                }
 
                public int Height {
-                       get { return NativeMethods.cairo_xlib_surface_get_height (surface); }
+                       get { return NativeMethods.cairo_xlib_surface_get_height (Handle); }
                }
 
                public IntPtr Screen {
-                       get { return NativeMethods.cairo_xlib_surface_get_screen (surface); }
+                       get { return NativeMethods.cairo_xlib_surface_get_screen (Handle); }
                }
 
                public IntPtr Visual {
-                       get { return NativeMethods.cairo_xlib_surface_get_visual (surface); }
+                       get { return NativeMethods.cairo_xlib_surface_get_visual (Handle); }
                }
 
                public int Width {
-                       get { return NativeMethods.cairo_xlib_surface_get_width (surface); }
+                       get { return NativeMethods.cairo_xlib_surface_get_width (Handle); }
                }
 
        }
index c4336d1c74b7d4c728e14d41475e3d71d99f549a..955d4593154408a4bb0ce7b87645157fd3c732bc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{300B4F1B-B9E4-4607-98BC-FFC1F9B2EC4D}</ProjectGuid>\r
+    <ProjectGuid>{7230E9AE-C6D4-402A-91CF-C164148CDD21}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cecil.Mdb-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_2_0.csproj">\r
-      <Project>{5B6E489A-FD73-4BF7-9B58-6FB1C2F1D3A7}</Project>\r
+      <Project>{2F1D61B7-0586-4587-8ECE-926A065F6276}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cc96584498c92b9bc6173f4282dea80e0c9bc11c..11cabb5dc2b125ba4324f3a9c2c1853f845a939e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E52B918D-8050-4D49-B80C-32293EDC2E5B}</ProjectGuid>\r
+    <ProjectGuid>{5F3D2BE6-A096-4504-AA3E-307B0A819E85}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cecil.Mdb-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_4_0.csproj">\r
-      <Project>{57F147C3-2558-4C1A-B462-50AB6FA9EF86}</Project>\r
+      <Project>{1FA0877C-43C9-44C7-9682-0C3F826BEA3E}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d143642b628236bdaf243c94b104c0b28a787e6f..ce8ca9673b18554ebc28c86352529b3c50a4c98d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{571A830B-5A77-4918-897F-100BDFD66F5E}</ProjectGuid>\r
+    <ProjectGuid>{9ABB7BB9-5EA1-4081-B205-5658A602C1F5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cecil.Mdb-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_4_5.csproj">\r
-      <Project>{9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}</Project>\r
+      <Project>{954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 665f3b8d767120ee4c6c6a848955ea40aa872266..6b10dd47dfd51175670afbc2bb09243545e87b44 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5B6E489A-FD73-4BF7-9B58-6FB1C2F1D3A7}</ProjectGuid>\r
+    <ProjectGuid>{2F1D61B7-0586-4587-8ECE-926A065F6276}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cecil-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a92b2c9ed9989f94e324a3ee76d12f2e4565449a..6b1bddc795a180edc8baea0e15317d20d371a0c1 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{57F147C3-2558-4C1A-B462-50AB6FA9EF86}</ProjectGuid>\r
+    <ProjectGuid>{1FA0877C-43C9-44C7-9682-0C3F826BEA3E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cecil-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 64ba29d93fd7be94c0dfee21bac7776ff1216575..f6b273726970de99c81ed29bfbb4ed352a6160b1 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}</ProjectGuid>\r
+    <ProjectGuid>{954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cecil-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9b0fe22afa6588ab9c29566879bd4c11380915a0..f270913b1cbadcff61abef095f1d4f6ebd25fd45 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BFDC3628-3992-4BA9-B95F-E0DAF5A8D247}</ProjectGuid>\r
+    <ProjectGuid>{61E5E4CF-E818-44D1-B718-70EE46F2B85D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CodeContracts-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_4_5.csproj">\r
-      <Project>{9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}</Project>\r
+      <Project>{954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil.Mdb\Mono.Cecil.Mdb-net_4_5.csproj">\r
-      <Project>{571A830B-5A77-4918-897F-100BDFD66F5E}</Project>\r
+      <Project>{9ABB7BB9-5EA1-4081-B205-5658A602C1F5}</Project>\r
       <Name>Mono.Cecil.Mdb\Mono.Cecil.Mdb-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fd23a7f9bae4cd5bf10e8158d179d0f0a688b063..3748cca507898ed3ee57e1bb4e0520d7375c8c08 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F3D6F2CB-120A-401F-92B5-59D88F932C4A}</ProjectGuid>\r
+    <ProjectGuid>{BB5DAECF-1B34-480C-B8EC-C1DAEEE56B89}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CodeContracts-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.CodeContracts\Mono.CodeContracts-net_4_5.csproj">\r
-      <Project>{BFDC3628-3992-4BA9-B95F-E0DAF5A8D247}</Project>\r
+      <Project>{61E5E4CF-E818-44D1-B718-70EE46F2B85D}</Project>\r
       <Name>Mono.CodeContracts\Mono.CodeContracts-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d79174e7a777b5ea6ebd5666c2a6799878c6b444..b88ded137cbab53375c55f85bd58dda6a1c39987 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F8E19FD3-0691-4C7E-B4F4-AED6497C3E8E}</ProjectGuid>\r
+    <ProjectGuid>{3712AB0D-C22B-4189-B568-B581E29BBDE2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CompilerServices.SymbolWriter-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 97a3521b97d963a104b29c46b5650b3f4dd92617..7ea809a114d18eb0bf117ac7b9b9ce391e9e3f97 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4950EAE7-E5D9-4142-80DA-4B4A9834EA52}</ProjectGuid>\r
+    <ProjectGuid>{A4916834-A715-41CB-AB5A-2552B85F2249}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CompilerServices.SymbolWriter-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0ab0dc5183a80bae02e0a5ea05fe2ba493ab9ca9..720f4b0d3f1434b4f200700f004c49fed6e1849e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5C0B6042-9C59-4D58-A7C1-A912A0689066}</ProjectGuid>\r
+    <ProjectGuid>{CBA2EEEA-4D6F-45B5-ADE2-7C86D3B2A449}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CompilerServices.SymbolWriter-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 363fb1518cc10ec137c7350565ef5f6dd88015a6..a65dc1310908eb51cafb01972a2bcfa724bc45da 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{60E307F3-5E95-42FF-9B41-3FB8AD664AB6}</ProjectGuid>\r
+    <ProjectGuid>{991C45A8-3B22-45BB-B688-DBF8BA835992}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Sqlite-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6e42b3a4008687ce18a81d0e89692bd3136e1ab3..2de37f0f62c8e91682d18c744c014a22bc68edc5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}</ProjectGuid>\r
+    <ProjectGuid>{F26434C1-BA3D-41FB-B560-C009CB72B1B6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Sqlite-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 33ea8b7a3a9e68c5f7805b68ac43066db88584bd..1ae54d40f5fe68f13d77b5aed63d324515e71ff4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}</ProjectGuid>\r
+    <ProjectGuid>{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Sqlite-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7a067f845cd10fcf9e91c6d7bff1d3e4f1ce3c2e..474401ed818ea50428af9335ddf5aa96ef01717c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DFBE10D3-6BDB-4DE6-91B2-0A57889BD9A2}</ProjectGuid>\r
+    <ProjectGuid>{D7ADECD6-0DB4-4D9D-A491-1686883B3342}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Sqlite-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0.csproj">\r
-      <Project>{60E307F3-5E95-42FF-9B41-3FB8AD664AB6}</Project>\r
+      <Project>{991C45A8-3B22-45BB-B688-DBF8BA835992}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 719b3e064d6730e55da2cc278a2bbf62199b13fd..1177c3e61a9e102ed3aee322d22035c70f02742c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{87B34DE3-0534-4941-8AB3-B118AB822099}</ProjectGuid>\r
+    <ProjectGuid>{2A36D174-DA81-441A-8AED-7A37D9B993D2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Sqlite-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0.csproj">\r
-      <Project>{BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}</Project>\r
+      <Project>{F26434C1-BA3D-41FB-B560-C009CB72B1B6}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3b925ae1d62d559d9adc373824ceac42fdc7bd6b..f23443acf28350253248d8ebf08c375e8f39cbd3 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F321F0E8-4A6A-4BF7-AF40-0EDD9A914066}</ProjectGuid>\r
+    <ProjectGuid>{C044B1E6-B892-49DC-BD71-4C796BD8964A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Sqlite-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}</Project>\r
+      <Project>{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b271779000a7b99ce56953217bd987f6b450ec29..4d9c7cad293e6b19124d290541aab61d4339029c 100644 (file)
@@ -555,6 +555,8 @@ namespace Mono.Data.Sqlite
       return GetSchemaTable(true, false);\r
     }\r
 \r
+    static bool hasColumnMetadataSupport = true;
+
     internal DataTable GetSchemaTable(bool wantUniqueInfo, bool wantDefaultValue)\r
     {\r
       CheckClosed();\r
@@ -620,18 +622,34 @@ namespace Mono.Data.Sqlite
         row[SchemaTableColumn.DataType] = GetFieldType(n);\r
         row[SchemaTableOptionalColumn.IsHidden] = false;\r
 \r
-#if !MONOTOUCH\r
-        strColumn = _command.Connection._sql.ColumnOriginalName(_activeStatement, n);\r
-        if (String.IsNullOrEmpty(strColumn) == false) row[SchemaTableColumn.BaseColumnName] = strColumn;\r
-\r
-        row[SchemaTableColumn.IsExpression] = String.IsNullOrEmpty(strColumn);\r
-        row[SchemaTableColumn.IsAliased] = (String.Compare(GetName(n), strColumn, true, CultureInfo.InvariantCulture) != 0);\r
-\r
-        temp = _command.Connection._sql.ColumnTableName(_activeStatement, n);\r
-        if (String.IsNullOrEmpty(temp) == false) row[SchemaTableColumn.BaseTableName] = temp;\r
-\r
-        temp = _command.Connection._sql.ColumnDatabaseName(_activeStatement, n);\r
-        if (String.IsNullOrEmpty(temp) == false) row[SchemaTableOptionalColumn.BaseCatalogName] = temp;\r
+        // HACK: Prevent exploding if Sqlite was built without the SQLITE_ENABLE_COLUMN_METADATA option.
+        //
+        // This code depends on sqlite3_column_origin_name, which only exists if Sqlite was built with
+        // the SQLITE_ENABLE_COLUMN_METADATA option. This is not the case on iOS, MacOS or (most?)
+        // Androids, so we exclude it from the MONOTOUCH build, and degrade on other systems by simply
+        //  omitting the metadata from the result.
+        //
+        // TODO: we could implement better fallbacks as proposed in
+        // https://bugzilla.xamarin.com/show_bug.cgi?id=2128
+        //
+#if !MONOTOUCH
+        if (hasColumnMetadataSupport) {
+            try {
+                strColumn = _command.Connection._sql.ColumnOriginalName(_activeStatement, n);
+                if (String.IsNullOrEmpty(strColumn) == false) row[SchemaTableColumn.BaseColumnName] = strColumn;
+
+                row[SchemaTableColumn.IsExpression] = String.IsNullOrEmpty(strColumn);
+                row[SchemaTableColumn.IsAliased] = (String.Compare(GetName(n), strColumn, true, CultureInfo.InvariantCulture) != 0);
+
+                temp = _command.Connection._sql.ColumnTableName(_activeStatement, n);
+                if (String.IsNullOrEmpty(temp) == false) row[SchemaTableColumn.BaseTableName] = temp;
+
+                temp = _command.Connection._sql.ColumnDatabaseName(_activeStatement, n);
+                if (String.IsNullOrEmpty(temp) == false) row[SchemaTableOptionalColumn.BaseCatalogName] = temp;
+            } catch (EntryPointNotFoundException) {
+                hasColumnMetadataSupport = false;
+            }
+        }
 #endif\r
 \r
         string dataType = null;\r
index c4588e900014d3480afb7e63a6815672e70e1d5c..73f73f55cc78189b723b96e49a9e60f0742ca926 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FDB86B5C-19F4-49DB-807F-CB0466C121A1}</ProjectGuid>\r
+    <ProjectGuid>{99315C7A-EEDA-4247-96F4-14924760DB8B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Tds-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 38f4e301ff3e3657ece8f59809eda1d3c47ae16c..d26381276f5a9ef9fa9e2de0a260a484047a9a42 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2038AFC9-B4E4-4A05-B57B-11B698CA67DF}</ProjectGuid>\r
+    <ProjectGuid>{4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Tds-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3ec6a875e07b7dc231ad7ba2b0e8a3495c2612fa..1a8a28053c6e9dcb17822e28584295e353a83a26 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2BB65926-A803-484F-A2D2-05CED0254A28}</ProjectGuid>\r
+    <ProjectGuid>{9B26C34E-8E81-4857-A1CB-B50F407EE7E1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Tds-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bc4796bf75f60a142e43c3945dddb9aeb48b32b1..7580c35de46b4d7684428fb3954ff77a0a7d9610 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DBFC4F84-BE0B-4814-8A78-DA3584DE8DC8}</ProjectGuid>\r
+    <ProjectGuid>{FA614F93-69C6-4BDF-ADA2-B68C2C22B55C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Tds-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_2_0.csproj">\r
-      <Project>{FDB86B5C-19F4-49DB-807F-CB0466C121A1}</Project>\r
+      <Project>{99315C7A-EEDA-4247-96F4-14924760DB8B}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Net.dll">\r
index 6fb07dad4b2f5ad51e458b7c361d5454e8499d6e..0340d9b1bd949b2cbc5b751ff6e9ddc963cdf213 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{195F7869-84C4-4D20-BCA3-7C0E0AE1A2C3}</ProjectGuid>\r
+    <ProjectGuid>{37C99354-C244-4BEE-B9AD-1FE718CD5A6F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Tds-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_4_0.csproj">\r
-      <Project>{2038AFC9-B4E4-4A05-B57B-11B698CA67DF}</Project>\r
+      <Project>{4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net\System.Net-net_2_0.csproj">\r
-      <Project>{52BCBA52-95B9-4437-B630-4A7C492BF560}</Project>\r
+      <Project>{87D4A457-1D00-48A7-8BD6-E786E93CC4CA}</Project>\r
       <Name>System.Net\System.Net-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0fe06191c4850be4f49812c8a4e532622e90d3b8..f93e5fdbe186a22b59994d99c5e986f4c4c53713 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{48172E97-369D-408A-A5CB-DC3B34706C0B}</ProjectGuid>\r
+    <ProjectGuid>{21E94E1F-226D-4BD3-9368-594C0553CE91}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Tds-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_4_5.csproj">\r
-      <Project>{2BB65926-A803-484F-A2D2-05CED0254A28}</Project>\r
+      <Project>{9B26C34E-8E81-4857-A1CB-B50F407EE7E1}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net\System.Net-net_4_0.csproj">\r
-      <Project>{26480A1B-A6B9-4865-8492-C18019094CE4}</Project>\r
+      <Project>{0653CFE2-4A19-4B91-A51F-793F8D516790}</Project>\r
       <Name>System.Net\System.Net-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d5275a72754cd58aaa4bc9ceee35a989e0b67e4c..828c1e9ae18fc9a2e8d171f27d18479494898615 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{57346D30-7524-46BB-BF8D-E8D43FF040E4}</ProjectGuid>\r
+    <ProjectGuid>{5B419D3D-3435-4FCB-8C86-5645AE0250FA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Debugger.Soft-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_2_0.csproj">\r
-      <Project>{5B6E489A-FD73-4BF7-9B58-6FB1C2F1D3A7}</Project>\r
+      <Project>{2F1D61B7-0586-4587-8ECE-926A065F6276}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f2330421ef806130412cd0f49d29903d571b1b45..3daebfd9f588073def1661b397d2256ae24595bb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D7DC4662-463B-4150-8172-BC0E096B8893}</ProjectGuid>\r
+    <ProjectGuid>{3A0F01E1-1196-4C1B-90DF-C3062FBEB5FA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Debugger.Soft-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_4_0.csproj">\r
-      <Project>{57F147C3-2558-4C1A-B462-50AB6FA9EF86}</Project>\r
+      <Project>{1FA0877C-43C9-44C7-9682-0C3F826BEA3E}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 232b043bf696c7beb13c8ebd86a19e626ea3ad99..47a682efefbce9be585b8caf3bdd76cbc32f744f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1B3407DC-BF9A-4679-BC2E-AF1322032D3D}</ProjectGuid>\r
+    <ProjectGuid>{21F6D72C-2C4D-4108-9BC5-C01FAFFCEF8E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Debugger.Soft-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_4_5.csproj">\r
-      <Project>{9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}</Project>\r
+      <Project>{954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 909ce9ede3782fe59425192fe365ccd61d83088e..1f9e1a0f247939619f3b9618720b9c96916ea016 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0A4AB2F0-6CD6-48DD-9013-EE4402266656}</ProjectGuid>\r
+    <ProjectGuid>{296F67F1-CFC1-402A-9DEB-6FC9503410BE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Debugger.Soft-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Debugger.Soft\Mono.Debugger.Soft-net_2_0.csproj">\r
-      <Project>{57346D30-7524-46BB-BF8D-E8D43FF040E4}</Project>\r
+      <Project>{5B419D3D-3435-4FCB-8C86-5645AE0250FA}</Project>\r
       <Name>Mono.Debugger.Soft\Mono.Debugger.Soft-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_2_0.csproj">\r
-      <Project>{5B6E489A-FD73-4BF7-9B58-6FB1C2F1D3A7}</Project>\r
+      <Project>{2F1D61B7-0586-4587-8ECE-926A065F6276}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2e052b6ac451c31fe354583106042f9a2f145806..2093fea91bbb77d6682d4d47755943020c801c95 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C1807BA9-9ADD-4FDE-8DD2-1A138B7E57F3}</ProjectGuid>\r
+    <ProjectGuid>{78E56A08-A352-40E2-AA5F-45BE21755225}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Debugger.Soft-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Debugger.Soft\Mono.Debugger.Soft-net_4_0.csproj">\r
-      <Project>{D7DC4662-463B-4150-8172-BC0E096B8893}</Project>\r
+      <Project>{3A0F01E1-1196-4C1B-90DF-C3062FBEB5FA}</Project>\r
       <Name>Mono.Debugger.Soft\Mono.Debugger.Soft-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_4_0.csproj">\r
-      <Project>{57F147C3-2558-4C1A-B462-50AB6FA9EF86}</Project>\r
+      <Project>{1FA0877C-43C9-44C7-9682-0C3F826BEA3E}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 57c4a6ad478d706047640744ccbc231f3ad04661..6dfd3f1e239ad037311088b52deac8e2a3550308 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FE0507AC-F903-45C9-8CB3-CBEFF973F2C1}</ProjectGuid>\r
+    <ProjectGuid>{FBA53F04-D998-43D8-8538-C11EE71EEB70}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Debugger.Soft-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Debugger.Soft\Mono.Debugger.Soft-net_4_5.csproj">\r
-      <Project>{1B3407DC-BF9A-4679-BC2E-AF1322032D3D}</Project>\r
+      <Project>{21F6D72C-2C4D-4108-9BC5-C01FAFFCEF8E}</Project>\r
       <Name>Mono.Debugger.Soft\Mono.Debugger.Soft-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_4_5.csproj">\r
-      <Project>{9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}</Project>\r
+      <Project>{954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e8d5f58c8edbe18b68889dbf166a6caeb9f4b801..105ff4fb67dbe949566a7949661634af7f4d3164 100644 (file)
@@ -395,7 +395,7 @@ namespace Mono.Debugger.Soft
                 * with newer runtimes, and vice versa.
                 */
                internal const int MAJOR_VERSION = 2;
-               internal const int MINOR_VERSION = 23;
+               internal const int MINOR_VERSION = 24;
 
                enum WPSuspendPolicy {
                        NONE = 0,
@@ -519,7 +519,8 @@ namespace Mono.Debugger.Soft
                        GET_INFO = 6,
                        GET_BODY = 7,
                        RESOLVE_TOKEN = 8,
-                       GET_CATTRS = 9
+                       GET_CATTRS = 9,
+                       MAKE_GENERIC_METHOD = 10
                }
 
                enum CmdType {
@@ -1875,6 +1876,11 @@ namespace Mono.Debugger.Soft
                        return ReadCattrs (r);
                }
 
+               internal long Method_MakeGenericMethod (long id, long[] args) {
+                       PacketReader r = SendReceive (CommandSet.METHOD, (int)CmdMethod.MAKE_GENERIC_METHOD, new PacketWriter ().WriteId (id).WriteInt (args.Length).WriteIds (args));
+                       return r.ReadId ();
+               }
+
                /*
                 * THREAD
                 */
@@ -2321,6 +2327,8 @@ namespace Mono.Debugger.Soft
 
                public void ForceDisconnect ()
                {
+                       closed = true;
+                       disconnected = true;
                        TransportClose ();
                }
        }
index d1ab7e68ce0341f26a9271e37c42f78edbd97baa..8003473c783bc63f4526fa75259b1b6ff97b3818 100644 (file)
@@ -119,16 +119,20 @@ namespace Mono.Debugger.Soft {
 
                                        val = CreateArg (vm, arg.value);
 
-                                       if (arg.is_property) {
-                                               foreach (var prop in ctor.DeclaringType.GetProperties ()) {
-                                                       if (prop.Id == arg.id)
-                                                               named_args [j] = new CustomAttributeNamedArgumentMirror (prop, null, val);
-                                               }
-                                       } else {
-                                               foreach (var field in ctor.DeclaringType.GetFields ()) {
-                                                       if (field.Id == arg.id)
-                                                               named_args [j] = new CustomAttributeNamedArgumentMirror (null, field, val);
+                                       TypeMirror t = ctor.DeclaringType;
+                                       while (named_args [j] == null && t != null) {
+                                               if (arg.is_property) {
+                                                       foreach (var prop in t.GetProperties ()) {
+                                                               if (prop.Id == arg.id)
+                                                                       named_args [j] = new CustomAttributeNamedArgumentMirror (prop, null, val);
+                                                       }
+                                               } else {
+                                                       foreach (var field in t.GetFields ()) {
+                                                               if (field.Id == arg.id)
+                                                                       named_args [j] = new CustomAttributeNamedArgumentMirror (null, field, val);
+                                                       }
                                                }
+                                               t = t.BaseType;
                                        }
                                        if (named_args [j] == null)
                                                throw new NotImplementedException ();
index a7a698dfdc31b9c00c94ba92a6561de7e4b80d8b..04717c61062dbc191a2f8c662782b326a74eb8d6 100644 (file)
@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Text;
 using System.Reflection;
 using C = Mono.Cecil;
@@ -240,13 +241,13 @@ namespace Mono.Debugger.Soft
 
                public LocalVariable[] GetLocals () {
                        if (locals == null) {
-
                                LocalsInfo li = new LocalsInfo ();
                                try {
                                        li = vm.conn.Method_GetLocalsInfo (id);
                                } catch (CommandException) {
-                                       throw new ArgumentException ("Method doesn't have a body.");
+                                       throw new AbsentInformationException ();
                                }
+
                                // Add the arguments as well
                                var pi = vm.conn.Method_GetParamInfo (id);
 
@@ -306,6 +307,30 @@ namespace Mono.Debugger.Soft
                        return type_args;
                }
 
+               // Since protocol version 2.24
+               public MethodMirror MakeGenericMethod (TypeMirror[] args) {
+                       if (args == null)
+                               throw new ArgumentNullException ("args");
+                       foreach (var a in args)
+                               if (a == null)
+                                       throw new ArgumentNullException ("args");
+
+                       if (!IsGenericMethodDefinition)
+                               throw new InvalidOperationException ("not a generic method definition");
+
+                       if (GetGenericArguments ().Length != args.Length)
+                               throw new ArgumentException ("Incorrect length");
+
+                       vm.CheckProtocolVersion (2, 24);
+                       long id = -1;
+                       try {
+                               id = vm.conn.Method_MakeGenericMethod (Id, args.Select (t => t.Id).ToArray ());
+                       } catch (CommandException) {
+                               throw new InvalidOperationException ();
+                       }
+                       return vm.GetMethod (id);
+               }
+
                public IList<int> ILOffsets {
                        get {
                                if (debug_info == null)
index 61c284dfcfcdef30048998733af22ab625bc2607..b77458b44110eeee8ce8ee64e36dcf4b2d5011f3 100644 (file)
@@ -124,7 +124,7 @@ namespace Mono.Debugger.Soft
                                conn.VM_Resume ();
                        } catch (CommandException ex) {
                                if (ex.ErrorCode == ErrorCode.NOT_SUSPENDED)
-                                       throw new InvalidOperationException ("The vm is not suspended.");
+                                       throw new VMNotSuspendedException ();
                                else
                                        throw;
                        }
@@ -290,7 +290,7 @@ namespace Mono.Debugger.Soft
                        case ErrorCode.INVALID_FRAMEID:
                                throw new InvalidStackFrameException ();
                        case ErrorCode.NOT_SUSPENDED:
-                               throw new InvalidOperationException ("The vm is not suspended.");
+                               throw new VMNotSuspendedException ();
                        case ErrorCode.NOT_IMPLEMENTED:
                                throw new NotSupportedException ("This request is not supported by the protocol version implemented by the debuggee.");
                        case ErrorCode.ABSENT_INFORMATION:
@@ -681,9 +681,9 @@ namespace Mono.Debugger.Soft
         }
     }
 
-       internal class CommandException : Exception {
+       public class CommandException : Exception {
 
-               public CommandException (ErrorCode error_code) : base ("Debuggee returned error code " + error_code + ".") {
+               internal CommandException (ErrorCode error_code) : base ("Debuggee returned error code " + error_code + ".") {
                        ErrorCode = error_code;
                }
 
@@ -691,4 +691,11 @@ namespace Mono.Debugger.Soft
                        get; set;
                }
        }
+
+       public class VMNotSuspendedException : InvalidOperationException
+       {
+               public VMNotSuspendedException () : base ("The vm is not suspended.")
+               {
+               }
+       }
 }
index 1b13d3bbb13ee20fb9add504bdb840db7904a31d..26c45e10d5b800b874b5f6aafcf5f62f1e1937a2 100644 (file)
@@ -49,8 +49,17 @@ public static class Tests4 {
        }
 }
 
+public class AAttribute : Attribute {
+       public int afield;
+}
+
+public class BAttribute : AAttribute {
+       public int bfield;
+}
+
 [DebuggerDisplay ("Tests", Name="FOO", Target=typeof (int))]
 [DebuggerTypeProxy (typeof (Tests))]
+[BAttribute (afield = 1, bfield = 2)]
 public class Tests2 {
        [DebuggerBrowsableAttribute (DebuggerBrowsableState.Collapsed)]
        public int field_j;
@@ -214,6 +223,12 @@ public class Tests : TestsBase
                }
        }
 
+       public static void wait_one ()
+       {
+               ManualResetEvent evt = new ManualResetEvent (false);
+               evt.WaitOne ();
+       }
+
        public static int Main (String[] args) {
                tls_i = 42;
 
@@ -224,10 +239,18 @@ public class Tests : TestsBase
                        unhandled_exception ();
                        return 0;
                }
+               if (args.Length >0 && args [0] == "unhandled-exception-endinvoke") {
+                       unhandled_exception_endinvoke ();
+                       return 0;
+               }
                if (args.Length >0 && args [0] == "unhandled-exception-user") {
                        unhandled_exception_user ();
                        return 0;
                }
+               if (args.Length >0 && args [0] == "wait-one") {
+                       wait_one ();
+                       return 0;
+               }
                breakpoints ();
                single_stepping ();
                arguments ();
@@ -510,6 +533,7 @@ public class Tests : TestsBase
                locals2<string> (null, 5, "ABC", ref s);
                locals3 ();
                locals6 ();
+               locals7<int> (22);
        }
 
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
@@ -625,6 +649,12 @@ public class Tests : TestsBase
        public static void locals6_6 (int arg) {
        }
 
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void locals7<T> (T arg) {
+               T t = arg;
+               T t2 = t;
+       }
+
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        public static void line_numbers () {
                LineNumbers.ln1 ();
@@ -818,6 +848,27 @@ public class Tests : TestsBase
                Thread.Sleep (10000);
        }
 
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void unhandled_exception_endinvoke_2 () {
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void unhandled_exception_endinvoke () {
+                       Action action = new Action (() => 
+                       {
+                               throw new Exception ("thrown");
+                       });
+                       action.BeginInvoke ((ar) => {
+                               try {
+                                       action.EndInvoke (ar);
+                               } catch (Exception ex) {
+                                       //Console.WriteLine (ex);
+                               }
+                       }, null);
+               Thread.Sleep (1000);
+               unhandled_exception_endinvoke_2 ();
+       }
+
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        public static void unhandled_exception_user () {
 #if NET_4_5
@@ -1008,16 +1059,14 @@ public class Tests : TestsBase
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        public static void frames_in_native () {
                Thread.Sleep (500);
+               var evt = new ManualResetEvent (false);
+               
                object mon = new object ();
                ThreadPool.QueueUserWorkItem (delegate {
                                frames_in_native_2 ();
-                               lock (mon) {
-                                       Monitor.Pulse (mon);
-                               }
+                               evt.Set ();
                        });
-               lock (mon) {
-                       Monitor.Wait (mon);
-               }
+               evt.WaitOne ();
        }
 
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
@@ -1119,6 +1168,10 @@ public class Tests : TestsBase
                set_gc_suspend_field ();
                gc_suspend_1 ();
        }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void generic_method<T> () where T : class {
+       }
 }
 
 class TypeLoadClass {
index ac458762d43eef05acc9f72a19a9fb20cc20c229..5d3f8794c7a28243c1a306a1c0c184371df5a490 100644 (file)
@@ -24,6 +24,7 @@ public class DebuggerTests
        VirtualMachine vm;
        MethodMirror entry_point;
        StepEventRequest step_req;
+       bool forceExit;
 
        void AssertThrows<ExType> (Action del) where ExType : Exception {
                bool thrown = false;
@@ -47,7 +48,13 @@ public class DebuggerTests
                return es [0];
        }
 
-       void Start (string[] args) {
+       void Start (params string[] args) {
+               Start (false, args);
+       }
+
+       void Start (bool forceExit, params string[] args) {
+               this.forceExit = forceExit;
+
                if (!listening) {
                        var pi = new Diag.ProcessStartInfo ();
 
@@ -155,6 +162,7 @@ public class DebuggerTests
 
        [SetUp]
        public void SetUp () {
+               ThreadMirror.NativeTransitions = false;
                Start (new string [] { "dtest-app.exe" });
        }
 
@@ -167,6 +175,9 @@ public class DebuggerTests
                        step_req.Disable ();
 
                vm.Resume ();
+               if (forceExit)
+                       vm.Exit (0);
+
                while (true) {
                        Event e = GetNextEvent ();
 
@@ -175,6 +186,7 @@ public class DebuggerTests
 
                        vm.Resume ();
                }
+               vm = null;
        }
 
        [Test]
@@ -1091,7 +1103,7 @@ public class DebuggerTests
                t = frame.Method.GetParameters ()[8].ParameterType;
                Assert.AreEqual ("Tests2", t.Name);
                var attrs = t.GetCustomAttributes (true);
-               Assert.AreEqual (2, attrs.Length);
+               Assert.AreEqual (3, attrs.Length);
                foreach (var attr in attrs) {
                        if (attr.Constructor.DeclaringType.Name == "DebuggerDisplayAttribute") {
                                Assert.AreEqual (1, attr.ConstructorArguments.Count);
@@ -1106,6 +1118,10 @@ public class DebuggerTests
                                Assert.AreEqual (1, attr.ConstructorArguments.Count);
                                Assert.IsInstanceOfType (typeof (TypeMirror), attr.ConstructorArguments [0].Value);
                                Assert.AreEqual ("Tests", (attr.ConstructorArguments [0].Value as TypeMirror).Name);
+                       } else if (attr.Constructor.DeclaringType.Name == "BAttribute") {
+                               Assert.AreEqual (2, attr.NamedArguments.Count);
+                               Assert.AreEqual ("afield", attr.NamedArguments [0].Field.Name);
+                               Assert.AreEqual ("bfield", attr.NamedArguments [1].Field.Name);
                        } else {
                                Assert.Fail (attr.Constructor.DeclaringType.Name);
                        }
@@ -1258,7 +1274,8 @@ public class DebuggerTests
                run_until ("objrefs2");
 
                // child should be gc'd now
-               Assert.IsTrue (child.IsCollected);
+               // This is not deterministic
+               //Assert.IsTrue (child.IsCollected);
 
                /*
                 * No longer works since Type is read eagerly
@@ -1268,10 +1285,11 @@ public class DebuggerTests
                        TypeMirror t = child.Type;
                        });
                */
-
+               /*
                AssertThrows<ObjectCollectedException> (delegate () {
                                long addr = child.Address;
                        });
+               */
        }
 
        [Test]
@@ -1545,6 +1563,37 @@ public class DebuggerTests
                        });
 
                req.Disable ();
+
+               // gsharedvt
+               be = run_until ("locals7");
+
+               req = vm.CreateStepRequest (be.Thread);
+               req.Enable ();
+               step_req = req;
+
+               // Skip nop
+               e = step_once ();
+
+               // Test that locals are initialized
+               frame = e.Thread.GetFrames () [0];
+               val = frame.GetValue (frame.Method.GetLocal ("t"));
+               AssertValue (0, val);
+
+               // Execute t = arg
+               e = step_once ();
+               Assert.AreEqual ("locals7", (e as StepEvent).Method.Name);
+
+               // Execute t2 = t
+               e = step_once ();
+               Assert.AreEqual ("locals7", (e as StepEvent).Method.Name);
+
+               frame = e.Thread.GetFrames () [0];
+               val = frame.GetValue (frame.Method.GetParameters ()[0]);
+               AssertValue (22, val);
+               val = frame.GetValue (frame.Method.GetLocal ("t"));
+               AssertValue (22, val);
+               val = frame.GetValue (frame.Method.GetLocal ("t2"));
+               AssertValue (22, val);
        }
 
        [Test]
@@ -3084,7 +3133,7 @@ public class DebuggerTests
 
        [Test]
        public void UnhandledException () {
-               vm.Detach ();
+               vm.Exit (0);
 
                Start (new string [] { "dtest-app.exe", "unhandled-exception" });
 
@@ -3101,6 +3150,29 @@ public class DebuggerTests
                vm = null;
        }
 
+       [Test]
+       public void UnhandledException_2 () {
+               vm.Exit (0);
+
+               Start (new string [] { "dtest-app.exe", "unhandled-exception-endinvoke" });
+
+               var req = vm.CreateExceptionRequest (null, false, true);
+               req.Enable ();
+
+               MethodMirror m = entry_point.DeclaringType.GetMethod ("unhandled_exception_endinvoke_2");
+               Assert.IsNotNull (m);
+               vm.SetBreakpoint (m, m.ILOffsets [0]);
+
+               var e = run_until ("unhandled_exception_endinvoke");
+               vm.Resume ();
+
+               var e2 = GetNextEvent ();
+               Assert.IsFalse (e2 is ExceptionEvent);
+
+               vm.Exit (0);
+               vm = null;
+       }
+
 #if NET_4_5
        [Test]
        public void UnhandledExceptionUserCode () {
@@ -3145,6 +3217,92 @@ public class DebuggerTests
                var o2 = entry_point.DeclaringType.GetValue (entry_point.DeclaringType.GetField ("gc_suspend_field")) as ObjectMirror;
                Assert.IsNull (o2);
        }
+
+       [Test]
+       public void MakeGenericMethod () {
+               Event e = run_until ("bp1");
+
+               var intm = vm.RootDomain.GetCorrespondingType (typeof (int));
+               var stringm = vm.RootDomain.GetCorrespondingType (typeof (string));
+               var gm = entry_point.DeclaringType.GetMethod ("generic_method");
+               var res = gm.MakeGenericMethod (new TypeMirror [] { stringm });
+               var args = res.GetGenericArguments ();
+               Assert.AreEqual (1, args.Length);
+               Assert.AreEqual (stringm, args [0]);
+
+               // Error checking
+               AssertThrows<ArgumentNullException> (delegate {
+                               gm.MakeGenericMethod (null);
+                       });
+               AssertThrows<ArgumentNullException> (delegate {
+                               gm.MakeGenericMethod (new TypeMirror [] { null });
+                       });
+               AssertThrows<ArgumentException> (delegate {
+                               gm.MakeGenericMethod (new TypeMirror [] { stringm, stringm });
+                       });
+               AssertThrows<InvalidOperationException> (delegate {
+                               gm.MakeGenericMethod (new TypeMirror [] { intm });
+                       });
+               AssertThrows<InvalidOperationException> (delegate {
+                               entry_point.DeclaringType.GetMethod ("Main").MakeGenericMethod (new TypeMirror [] { intm });
+                       });
+       }
+
+       [Test]
+       public void InspectThreadSuspenedOnWaitOne () {
+               TearDown ();
+               Start (true, "dtest-app.exe", "wait-one" );
+
+               ThreadMirror.NativeTransitions = true;
+
+               var evt = run_until ("wait_one");
+               Assert.IsNotNull (evt, "#1");
+
+               var thread = evt.Thread;
+               Assert.AreEqual (ThreadState.Running, thread.ThreadState, "#1.1");
+
+               var frames = thread.GetFrames ();
+               Assert.IsNotNull (frames, "#2");
+               Assert.AreEqual (2, frames.Length, "#3");
+               Assert.AreEqual ("wait_one", frames [0].Method.Name, "#4");
+               Assert.AreEqual ("Main", frames [1].Method.Name, "#5");
+
+               vm.Resume ();
+
+               Thread.Sleep (500); //FIXME this is racy, maybe single step? or something?
+
+               vm.Suspend ();
+               Assert.AreEqual (ThreadState.WaitSleepJoin, thread.ThreadState, "#6");
+
+               frames = thread.GetFrames ();
+               Assert.AreEqual (4, frames.Length, "#7");
+               Assert.AreEqual ("WaitOne_internal", frames [0].Method.Name, "#8");
+               Assert.AreEqual ("WaitOne", frames [1].Method.Name, "#8.1");
+               Assert.AreEqual ("wait_one", frames [2].Method.Name, "#9");
+               Assert.AreEqual ("Main", frames [3].Method.Name, "#10");
+
+
+               var frame = frames [0];
+               Assert.IsTrue (frame.IsNativeTransition, "#11.1");
+               try {
+                       frame.GetThis ();
+                       Assert.Fail ("Known limitation - can't get info from m2n frames");
+               } catch (AbsentInformationException) {}
+
+               frame = frames [1];
+               Assert.IsFalse (frame.IsNativeTransition, "#12.1");
+               var wait_one_this = frame.GetThis ();
+               Assert.IsNotNull (wait_one_this, "#12.2");
+
+               frame = frames [2];
+               var locals = frame.GetVisibleVariables ();
+               Assert.AreEqual (1, locals.Count, "#13.1");
+
+               var local_0 = frame.GetValue (locals [0]);
+               Assert.IsNotNull (local_0, "#13.2");
+
+               Assert.AreEqual (wait_one_this, local_0, "#14.2");
+       }
 }
 
 }
index 140bcd89f95104509d9c782f4ada2296aefcf7cd..5ded317f8c1db622cdb2fe84706559429131c966 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0C933B8F-3EB1-4871-A2E8-7FCFD8C37F64}</ProjectGuid>\r
+    <ProjectGuid>{BCF0458C-9D8F-453A-BEE8-E0BB43B9AB44}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Http-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_2_0.csproj">\r
-      <Project>{A1B1ACC9-95F7-4752-A2A6-CF0214F886BB}</Project>\r
+      <Project>{065A843F-C16B-4F2E-9560-69440147EDB2}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bf4eac99dcccc546b9dfb55720aa4d0f29548351..1f0027d0b8a1202188b0969eb3256eeeaf06ef4b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A825C4A3-73B7-4BE6-AA2F-69E1B03E3032}</ProjectGuid>\r
+    <ProjectGuid>{A08CC2D7-9EB8-4C8A-85D8-04AAB16ED742}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Http-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_0.csproj">\r
-      <Project>{D769AAF9-10ED-4C32-8D87-8D0648E2D001}</Project>\r
+      <Project>{2DE2CFB0-3166-41D9-B0B5-EFBE309DD7B7}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9c586c168261c3a9791879045ead95b97df65e9e..2223c3b8aa6485d41495452ba0b792fe3b1b45f9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3B625FA4-DABF-4F64-9D38-D4005EE6ECD5}</ProjectGuid>\r
+    <ProjectGuid>{9F93BC7A-F061-4AF5-AF3C-F81692D20E89}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Http-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5.csproj">\r
-      <Project>{C41C7048-6B86-43DB-9F5E-BED7A92CD56E}</Project>\r
+      <Project>{039AD56A-E91B-4803-8328-287F70B61D14}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b956808ce0c0f7005b2a62df96dd9768575060c6..0c31159c2de3be6f60ee7ba329145b4ad4b8ce76 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E3DDA3ED-24E5-4B9C-BC6E-425A49EE8E36}</ProjectGuid>\r
+    <ProjectGuid>{5BC06293-C615-4F6F-8862-AC69705C4A75}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Management-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b8344e012027e67946ca58def99ad3fe0f0fba0c..1390d22940634f6032857154efa1378723a0f138 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C470F003-2C74-49EB-8D19-412B9E897DC6}</ProjectGuid>\r
+    <ProjectGuid>{F346506A-88AE-4EF0-B2D5-5BB4988EAF28}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Management-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 26584148b98e92215b0c8a8d08a3fb7df154ceb9..69ec52f9047528c088c6ca9d36cea522f1c80986 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{962D9F06-30EC-4E71-B921-36FB856365A6}</ProjectGuid>\r
+    <ProjectGuid>{E8BE3F98-6FE7-4EBD-8FAC-7CDADFE26096}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Management-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}</Project>\r
+      <Project>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 276a5ebd1274d1f5fa3bec6036589d10fa9fa50c..2192f18f788adda153197bc99fd5dd7729a1ad11 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8BBA58A9-6639-453E-B83F-D8B6DA6F58A2}</ProjectGuid>\r
+    <ProjectGuid>{74D6BCAB-F3E7-463C-8D99-601FE69F67A6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging.RabbitMQ-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_2_0.csproj">\r
-      <Project>{02BA7387-C09A-40FB-BE80-39588B822A29}</Project>\r
+      <Project>{858BC3D5-8B2D-4B24-8BD9-BDC36A1DAFE4}</Project>\r
       <Name>System.Messaging\System.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_2_0.csproj">\r
-      <Project>{6D5EFF77-937D-4425-9DDC-B88F7A4AB456}</Project>\r
+      <Project>{A516A3FA-33AA-46AB-9542-49952ED25A0F}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\RabbitMQ.Client\src\client\RabbitMQ.Client-net_2_0.csproj">\r
-      <Project>{85F98B4E-9323-4D5C-A65F-5B30EA4E7424}</Project>\r
+      <Project>{8AD2E2D6-9C65-4DE7-AD7A-6AAA07754C9C}</Project>\r
       <Name>client\RabbitMQ.Client-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 146c43ed9657692219f904169b2e6571525dedc9..1ef17acb86b16389516e31933f678a0da5081231 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{901F0EC1-DE1E-4456-8CF1-82C0D811BCD4}</ProjectGuid>\r
+    <ProjectGuid>{C551B2AB-D371-455F-AA1E-8C3E7A355CC8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging.RabbitMQ-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_0.csproj">\r
-      <Project>{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}</Project>\r
+      <Project>{443D0D78-0A65-4288-80C2-B58011E3A5D1}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_0.csproj">\r
-      <Project>{7D27EF3B-540A-4BBD-873C-878ABC927401}</Project>\r
+      <Project>{CD0A320A-620E-42D0-86CD-2D32F5592E57}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\RabbitMQ.Client\src\client\RabbitMQ.Client-net_4_0.csproj">\r
-      <Project>{3FB3AB58-B04E-452B-A0D9-EC8FBBEF2031}</Project>\r
+      <Project>{2820B526-5B96-4ABE-AF3D-E8651046A46C}</Project>\r
       <Name>client\RabbitMQ.Client-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index acce7d4402e245411c3bfe5e058d84ae9d72d0c0..f3ad3301f61bd54565ae1eb329b81097ca0e6bd5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6D4FFAA7-A96E-4C35-A87C-E368C0553EA4}</ProjectGuid>\r
+    <ProjectGuid>{114A51BC-8AB2-4B25-A9A7-CB78C43745B8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging.RabbitMQ-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_5.csproj">\r
-      <Project>{47046600-6AFB-46AB-BCF6-8E9EDD67FA97}</Project>\r
+      <Project>{A8B93174-06DF-4FC7-8E3E-45F395A943EB}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_5.csproj">\r
-      <Project>{3D737371-B7D6-49E4-AA91-F67EF2E07A45}</Project>\r
+      <Project>{1CB843E3-75E7-4115-9EE6-7B7262AC6C96}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\RabbitMQ.Client\src\client\RabbitMQ.Client-net_4_5.csproj">\r
-      <Project>{E4F02B09-E5BF-4DF9-9D55-58396821B80D}</Project>\r
+      <Project>{8BA87CBE-8098-4512-B008-A347E1EA281C}</Project>\r
       <Name>client\RabbitMQ.Client-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1d9cfbc04110e33e07c814644d8bc345f1069646..13b376d0c80a66a8da8b426633bfea876ed976a1 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2DE75357-7C91-4C30-A31D-7FE9C834B143}</ProjectGuid>\r
+    <ProjectGuid>{B18D6BCC-5C63-490F-92C5-20E10C4D311A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging.RabbitMQ-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_2_0.csproj">\r
-      <Project>{8BBA58A9-6639-453E-B83F-D8B6DA6F58A2}</Project>\r
+      <Project>{74D6BCAB-F3E7-463C-8D99-601FE69F67A6}</Project>\r
       <Name>Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_2_0.csproj">\r
-      <Project>{02BA7387-C09A-40FB-BE80-39588B822A29}</Project>\r
+      <Project>{858BC3D5-8B2D-4B24-8BD9-BDC36A1DAFE4}</Project>\r
       <Name>System.Messaging\System.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_2_0.csproj">\r
-      <Project>{6D5EFF77-937D-4425-9DDC-B88F7A4AB456}</Project>\r
+      <Project>{A516A3FA-33AA-46AB-9542-49952ED25A0F}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\RabbitMQ.Client\src\client\RabbitMQ.Client-net_2_0.csproj">\r
-      <Project>{85F98B4E-9323-4D5C-A65F-5B30EA4E7424}</Project>\r
+      <Project>{8AD2E2D6-9C65-4DE7-AD7A-6AAA07754C9C}</Project>\r
       <Name>client\RabbitMQ.Client-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index 2d3b5b876ef641c84b8280a7598670b1e362dd03..cef783c1c48f5ef18a77e5f922f0138cf8942948 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ADEB4A8C-8461-4948-8E98-629AD100E5AD}</ProjectGuid>\r
+    <ProjectGuid>{71304A18-8387-4FAD-982C-BFDC327D79C2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging.RabbitMQ-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_4_0.csproj">\r
-      <Project>{901F0EC1-DE1E-4456-8CF1-82C0D811BCD4}</Project>\r
+      <Project>{C551B2AB-D371-455F-AA1E-8C3E7A355CC8}</Project>\r
       <Name>Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_0.csproj">\r
-      <Project>{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}</Project>\r
+      <Project>{443D0D78-0A65-4288-80C2-B58011E3A5D1}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_0.csproj">\r
-      <Project>{7D27EF3B-540A-4BBD-873C-878ABC927401}</Project>\r
+      <Project>{CD0A320A-620E-42D0-86CD-2D32F5592E57}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\RabbitMQ.Client\src\client\RabbitMQ.Client-net_4_0.csproj">\r
-      <Project>{3FB3AB58-B04E-452B-A0D9-EC8FBBEF2031}</Project>\r
+      <Project>{2820B526-5B96-4ABE-AF3D-E8651046A46C}</Project>\r
       <Name>client\RabbitMQ.Client-net_4_0</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index c21e02d75cfc73514c8745f8b47387e0306cf167..1f5a54e4672bf7c307bf5357836629ba87fe7a59 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{70EF0F9A-D878-4858-851E-7B7B6E69C75E}</ProjectGuid>\r
+    <ProjectGuid>{57115A1C-8C33-455E-A108-04DCD04808BD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging.RabbitMQ-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_4_5.csproj">\r
-      <Project>{6D4FFAA7-A96E-4C35-A87C-E368C0553EA4}</Project>\r
+      <Project>{114A51BC-8AB2-4B25-A9A7-CB78C43745B8}</Project>\r
       <Name>Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_5.csproj">\r
-      <Project>{47046600-6AFB-46AB-BCF6-8E9EDD67FA97}</Project>\r
+      <Project>{A8B93174-06DF-4FC7-8E3E-45F395A943EB}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_5.csproj">\r
-      <Project>{3D737371-B7D6-49E4-AA91-F67EF2E07A45}</Project>\r
+      <Project>{1CB843E3-75E7-4115-9EE6-7B7262AC6C96}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\RabbitMQ.Client\src\client\RabbitMQ.Client-net_4_5.csproj">\r
-      <Project>{E4F02B09-E5BF-4DF9-9D55-58396821B80D}</Project>\r
+      <Project>{8BA87CBE-8098-4512-B008-A347E1EA281C}</Project>\r
       <Name>client\RabbitMQ.Client-net_4_5</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index dcb58fb1879e7a98d6ba982057149e9208b10a8e..3d4ac3029efad40ef41ae0d612962d37780a8e44 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6D5EFF77-937D-4425-9DDC-B88F7A4AB456}</ProjectGuid>\r
+    <ProjectGuid>{A516A3FA-33AA-46AB-9542-49952ED25A0F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 278d8ef5175c64dd3c4fc7936835cbbd4a1537ab..d0322fdba2309e4fe36cb9d7d858181ad127110e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7D27EF3B-540A-4BBD-873C-878ABC927401}</ProjectGuid>\r
+    <ProjectGuid>{CD0A320A-620E-42D0-86CD-2D32F5592E57}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 258ddddc441981ec8090ee9618a104095f8ca6cb..e9794689553488f3257147235cf3f58eeaf64b92 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3D737371-B7D6-49E4-AA91-F67EF2E07A45}</ProjectGuid>\r
+    <ProjectGuid>{1CB843E3-75E7-4115-9EE6-7B7262AC6C96}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 46ad7bd279f265e615ed8ef413556559d80abe42..120b399187af53b7cfc2b4ff855f10c779086e9b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3450FBA2-66D1-4D54-BC80-E77EA6EEB551}</ProjectGuid>\r
+    <ProjectGuid>{D82B65CD-2183-48A7-8FF3-79246B831A4D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_2_0.csproj">\r
-      <Project>{6D5EFF77-937D-4425-9DDC-B88F7A4AB456}</Project>\r
+      <Project>{A516A3FA-33AA-46AB-9542-49952ED25A0F}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Messaging.dll">\r
index 0245ae785cf00ea1ee9e265cebb1e232cabdb5cd..920e4314488a7e315474618561f5a381d6f4167e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9D1B38FD-E2E2-4B12-AE99-5E972D5914A8}</ProjectGuid>\r
+    <ProjectGuid>{83CB627D-2C23-45AD-BF22-42C633838188}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_0.csproj">\r
-      <Project>{7D27EF3B-540A-4BBD-873C-878ABC927401}</Project>\r
+      <Project>{CD0A320A-620E-42D0-86CD-2D32F5592E57}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_2_0.csproj">\r
-      <Project>{02BA7387-C09A-40FB-BE80-39588B822A29}</Project>\r
+      <Project>{858BC3D5-8B2D-4B24-8BD9-BDC36A1DAFE4}</Project>\r
       <Name>System.Messaging\System.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index 6837754d0951493f5a4dd4cfaec4464cf820cfcb..799f367d2646de9cbc76d2459e0a6c413fb87adc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EBDF7A9B-728D-4D71-A603-3D840220FBE4}</ProjectGuid>\r
+    <ProjectGuid>{3429D3B3-51DC-4236-9C5A-33C4F9E260FE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_5.csproj">\r
-      <Project>{3D737371-B7D6-49E4-AA91-F67EF2E07A45}</Project>\r
+      <Project>{1CB843E3-75E7-4115-9EE6-7B7262AC6C96}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_0.csproj">\r
-      <Project>{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}</Project>\r
+      <Project>{443D0D78-0A65-4288-80C2-B58011E3A5D1}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index 9ee5de646c8d2b824a427f76280fcca94ad8db88..4f1d01bc4b362bc74ca6641c22fd301baa171cfd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0C571D99-7F7B-4FF4-AA05-F82271C8158C}</ProjectGuid>\r
+    <ProjectGuid>{B9B516C1-9723-4DCC-91E8-6904B3B350AB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Options-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 80c61cd67439f5d811e9c53751fa6ed1691bf635..b08a8b8590f83d91cde7148b9f0accb755391b2d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A3338247-8E1C-4004-BDDA-6FC8276F47CF}</ProjectGuid>\r
+    <ProjectGuid>{032E130B-91CA-4977-AFAE-846645F40BA5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Options-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 449c5f49d87ca917a697e6cc5047cb48eb356431..a45a6f3570ebc52bc9b2ff56c1225b29cab89bdc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{01DD131B-233A-4BA2-AFCA-80FB5743449E}</ProjectGuid>\r
+    <ProjectGuid>{4F4AE80E-7DB0-49A9-B508-80A328137181}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Options-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index afef93db902fc679dc7cff06398b543f3877f420..db67c2109cf8948ef5f4968f1d0eba45772f7820 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5FB08388-B878-4D04-BEA6-C182E6E631BE}</ProjectGuid>\r
+    <ProjectGuid>{F9DBE056-BDF6-45CB-987D-4941274A5E32}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Options-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Options\Mono.Options-net_2_0.csproj">\r
-      <Project>{0C571D99-7F7B-4FF4-AA05-F82271C8158C}</Project>\r
+      <Project>{B9B516C1-9723-4DCC-91E8-6904B3B350AB}</Project>\r
       <Name>Mono.Options\Mono.Options-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f4e04231d21cc4ce89c545eb2bf4ab6df08524de..65229092040e2656cf5cd3d8de8a9e81b4367ccb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{50320C8E-8A75-45AA-877C-B8300E69218F}</ProjectGuid>\r
+    <ProjectGuid>{87590E90-828A-4310-82CA-D83A2DA8A2EC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Options-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Options\Mono.Options-net_4_0.csproj">\r
-      <Project>{A3338247-8E1C-4004-BDDA-6FC8276F47CF}</Project>\r
+      <Project>{032E130B-91CA-4977-AFAE-846645F40BA5}</Project>\r
       <Name>Mono.Options\Mono.Options-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 840ef1bc08654db9f0bf431592665431f123a10f..01718152b9e520cf5a04d1bece1dfd333cc00368 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{57A29A4C-18F1-43BA-8DC4-00810C45368C}</ProjectGuid>\r
+    <ProjectGuid>{1AC76475-2AAB-431E-BD97-444CD5AF1191}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Options-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Options\Mono.Options-net_4_5.csproj">\r
-      <Project>{01DD131B-233A-4BA2-AFCA-80FB5743449E}</Project>\r
+      <Project>{4F4AE80E-7DB0-49A9-B508-80A328137181}</Project>\r
       <Name>Mono.Options\Mono.Options-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}</Project>\r
+      <Project>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0c6c2bcc20fa7b2f3a7bf55342d2f7f816b84a99..42f2253bae194581655a12f4c95ca78a4d7b7f89 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E35A1700-6277-4FDB-85EE-DC464E0D4F76}</ProjectGuid>\r
+    <ProjectGuid>{48E968B3-B4DE-4658-87C6-E6450CEF18AB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Parallel-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 94a55f87e39e0ef32048c79afb60c7c0c504081d..725f6796a47f748979fb6efedc98b55eea71c9c4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B43E74BB-F4C0-462C-B86A-7108208A22A0}</ProjectGuid>\r
+    <ProjectGuid>{FD8BB787-B115-4DED-ACB0-2858546FC16D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Parallel-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ef868467de632853f30aaffec3bf7c2dbf05c9dd..4770097d06a1ceea57d9c13ac0946e1444ba35c7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3F3BD23F-9BF2-46BD-8E1E-01F001EFBF7A}</ProjectGuid>\r
+    <ProjectGuid>{3E1314BB-ADF3-4287-AA82-26B50768F345}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Parallel-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Parallel\Mono.Parallel-net_4_0.csproj">\r
-      <Project>{E35A1700-6277-4FDB-85EE-DC464E0D4F76}</Project>\r
+      <Project>{48E968B3-B4DE-4658-87C6-E6450CEF18AB}</Project>\r
       <Name>Mono.Parallel\Mono.Parallel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9274aa31dfc65583af76cae7259f13bfbfafe9ca..192da2d648f87c86507e2572ed1700bc974a1c25 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1D2E5242-8084-4C3C-8461-F9B0DF7D0F32}</ProjectGuid>\r
+    <ProjectGuid>{42F035A7-4FCD-4526-9D82-E7D3D4350AC1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Parallel-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Parallel\Mono.Parallel-net_4_5.csproj">\r
-      <Project>{B43E74BB-F4C0-462C-B86A-7108208A22A0}</Project>\r
+      <Project>{FD8BB787-B115-4DED-ACB0-2858546FC16D}</Project>\r
       <Name>Mono.Parallel\Mono.Parallel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5d3442801d5cfb79671009f0f5797ecbd40dc536..0b530a6ccfc0e5253b949b4a6279895e66559147 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{78F7614C-D0FE-49BE-9521-D2C7DD8A2C55}</ProjectGuid>\r
+    <ProjectGuid>{983EBE35-85B4-4D16-84AE-C3081CAE53EA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Posix-build</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-build.csproj">\r
-      <Project>{B8B2866D-592F-4888-A1CB-697AD0F3CADE}</Project>\r
+      <Project>{2BD930A2-88A9-4AD0-ADE7-1531552DF896}</Project>\r
       <Name>corlib\corlib-build</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-build-1.csproj">\r
-      <Project>{C3638457-A40E-4E70-81B4-54ACB31DD76D}</Project>\r
+      <Project>{83D197B9-A796-4A0D-B8F9-930DD9415615}</Project>\r
       <Name>System\System-build-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0a1ad10db159e47b9028d19f6f0f4fb40307a55e..6282712df7c55819081a82970ebf2296270262b9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BFC160FF-5B62-41D2-B039-52C469077AE0}</ProjectGuid>\r
+    <ProjectGuid>{F83F663F-89F7-481C-941E-E4FE67867254}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Posix-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4f376a622d4579c3f2f52a796ccb4338eeff50f8..a25a4036708b5d8edd1a58de2bc66fd2231d31f9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</ProjectGuid>\r
+    <ProjectGuid>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Posix-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 11dc2c1c95184c94065e336b70cc538985500cb0..09b72ee136a4edcf7b89758b072e125e46c6262a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}</ProjectGuid>\r
+    <ProjectGuid>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Posix-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index df72e294881b39347b1606c87f74dfb61ea3ac95..974555210b0555d6737599ea2a497382e87f6efb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CD337CE5-5687-4838-9D2B-58F51D23FEA7}</ProjectGuid>\r
+    <ProjectGuid>{61812C34-2BF0-4DBA-AEF5-695669556F22}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Posix-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fed4153c5abe71ddcac61d871616a4322f07ca03..3da622baddd076eeb8eef89db83c426310654a48 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{48D0946C-DB27-45D5-B364-AC32DCB8DD73}</ProjectGuid>\r
+    <ProjectGuid>{DCA562A1-6509-4AEC-AE3A-D91090979A9D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Posix-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6cbdcc7d95a6e3ad91f127616a25d8081de7a490..7f4ec44f15954831bdf3e9e95960b1af189d8548 100644 (file)
@@ -5,12 +5,13 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8A11FD7A-D62F-4130-9870-49486379AB1C}</ProjectGuid>\r
+    <ProjectGuid>{B915D688-A61F-4B8E-9110-16B76DB4446D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Posix-tests-net_4_5</OutputPath>\r
     <NoStdLib>True</NoStdLib>\r
     <NoConfig>False</NoConfig>\r
+    \r
     <AppDesignerFolder>Properties</AppDesignerFolder>\r
     <RootNamespace>\r
     </RootNamespace>\r
@@ -51,8 +52,7 @@
     <Compile Include="Test\Mono.Unix\UnixMarshalTest.cs" />\r
     <Compile Include="Test\Mono.Unix\UnixPathTest.cs" />\r
     <Compile Include="Test\Mono.Unix\UnixSignalTest.cs" />\r
-    <Compile Include="Test\Mono.Unix\UnixUserTest.cs" />\r
-  </ItemGroup>\r
+    <Compile Include="Test\Mono.Unix\UnixUserTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
@@ -62,6 +62,7 @@
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent>\r
+\r
     </PreBuildEvent>\r
     <PostBuildEvent>\r
       xcopy $(TargetName).* $(ProjectDir)..\lib\net_4_5\ /Y /R /D\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}</Project>\r
+      <Project>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</Project>\r
+      <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
+      <Project>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
-</Project>\r
+</Project>
index 7ac5a750f411def545f26595c5c960f0299194ca..7951d08ae17377a58246b6f81b3df14cdecaf317 100644 (file)
@@ -183,6 +183,8 @@ namespace Mono.Unix.Native {
                        return '-';
                }
 
+               public static readonly DateTime UnixEpoch =
+                       new DateTime (year:1970, month:1, day:1, hour:0, minute:0, second:0, kind:DateTimeKind.Utc);
                public static readonly DateTime LocalUnixEpoch = 
                        new DateTime (1970, 1, 1);
                public static readonly TimeSpan LocalUtcOffset = 
@@ -200,15 +202,18 @@ namespace Mono.Unix.Native {
 
                public static DateTime FromTimeT (long time)
                {
-                       DateTime r = LocalUnixEpoch.AddSeconds ((double) time + 
-                                       LocalUtcOffset.TotalSeconds);
-                       return r;
+                       return UnixEpoch.AddSeconds (time).ToLocalTime ();
                }
 
                public static long ToTimeT (DateTime time)
                {
-                       TimeSpan unixTime = time.Subtract (LocalUnixEpoch) - LocalUtcOffset;
-                       return (long) unixTime.TotalSeconds;
+                       if (time.Kind == DateTimeKind.Unspecified)
+                               throw new ArgumentException ("DateTimeKind.Unspecified is not supported. Use Local or Utc times.", "time");
+
+                       if (time.Kind == DateTimeKind.Local)
+                               time = time.ToUniversalTime ();
+
+                       return (long) (time - UnixEpoch).TotalSeconds;
                }
 
                public static OpenFlags ToOpenFlags (FileMode mode, FileAccess access)
@@ -318,6 +323,22 @@ namespace Mono.Unix.Native {
                        return fopen_mode;
                }
 
+               [DllImport (LIB, EntryPoint="Mono_Posix_FromStat")]
+               private static extern int FromStat (ref Stat source, IntPtr destination);
+
+               public static bool TryCopy (ref Stat source, IntPtr destination)
+               {
+                       return FromStat (ref source, destination) == 0;
+               }
+
+               [DllImport (LIB, EntryPoint="Mono_Posix_ToStat")]
+               private static extern int ToStat (IntPtr source, out Stat destination);
+
+               public static bool TryCopy (IntPtr source, out Stat destination)
+               {
+                       return ToStat (source, out destination) == 0;
+               }
+
                [DllImport (LIB, EntryPoint="Mono_Posix_FromStatvfs")]
                private static extern int FromStatvfs (ref Statvfs source, IntPtr destination);
 
index be846a892c168fe195d48e0fc1ed44e677afef18..d9097f8d7a3394610167957639000144950b97e6 100644 (file)
@@ -54,6 +54,38 @@ namespace Mono.Unix.Native {
                        return rval;
                }
 
+               [DllImport (LIB, EntryPoint="Mono_Posix_FromAtFlags")]
+               private static extern int FromAtFlags (AtFlags value, out Int32 rval);
+
+               public static bool TryFromAtFlags (AtFlags value, out Int32 rval)
+               {
+                       return FromAtFlags (value, out rval) == 0;
+               }
+
+               public static Int32 FromAtFlags (AtFlags value)
+               {
+                       Int32 rval;
+                       if (FromAtFlags (value, out rval) == -1)
+                               ThrowArgumentException (value);
+                       return rval;
+               }
+
+               [DllImport (LIB, EntryPoint="Mono_Posix_ToAtFlags")]
+               private static extern int ToAtFlags (Int32 value, out AtFlags rval);
+
+               public static bool TryToAtFlags (Int32 value, out AtFlags rval)
+               {
+                       return ToAtFlags (value, out rval) == 0;
+               }
+
+               public static AtFlags ToAtFlags (Int32 value)
+               {
+                       AtFlags rval;
+                       if (ToAtFlags (value, out rval) == -1)
+                               ThrowArgumentException (value);
+                       return rval;
+               }
+
                [DllImport (LIB, EntryPoint="Mono_Posix_FromConfstrName")]
                private static extern int FromConfstrName (ConfstrName value, out Int32 rval);
 
@@ -294,6 +326,22 @@ namespace Mono.Unix.Native {
                        return ToFlock (source, out destination) == 0;
                }
 
+               [DllImport (LIB, EntryPoint="Mono_Posix_FromIovec")]
+               private static extern int FromIovec (ref Iovec source, IntPtr destination);
+
+               public static bool TryCopy (ref Iovec source, IntPtr destination)
+               {
+                       return FromIovec (ref source, destination) == 0;
+               }
+
+               [DllImport (LIB, EntryPoint="Mono_Posix_ToIovec")]
+               private static extern int ToIovec (IntPtr source, out Iovec destination);
+
+               public static bool TryCopy (IntPtr source, out Iovec destination)
+               {
+                       return ToIovec (source, out destination) == 0;
+               }
+
                [DllImport (LIB, EntryPoint="Mono_Posix_FromLockType")]
                private static extern int FromLockType (LockType value, out Int16 rval);
 
@@ -790,22 +838,6 @@ namespace Mono.Unix.Native {
                        return rval;
                }
 
-               [DllImport (LIB, EntryPoint="Mono_Posix_FromStat")]
-               private static extern int FromStat (ref Stat source, IntPtr destination);
-
-               public static bool TryCopy (ref Stat source, IntPtr destination)
-               {
-                       return FromStat (ref source, destination) == 0;
-               }
-
-               [DllImport (LIB, EntryPoint="Mono_Posix_ToStat")]
-               private static extern int ToStat (IntPtr source, out Stat destination);
-
-               public static bool TryCopy (IntPtr source, out Stat destination)
-               {
-                       return ToStat (source, out destination) == 0;
-               }
-
                [DllImport (LIB, EntryPoint="Mono_Posix_FromSysconfName")]
                private static extern int FromSysconfName (SysconfName value, out Int32 rval);
 
index e5ef6c7a93bfc103178b244a163da9624d39668a..27d241539d5a7e3a35ea4d74436ff211bdfd4afb 100644 (file)
@@ -149,7 +149,19 @@ namespace Mono.Unix.Native {
                O_DIRECTORY = 0x00010000,
                O_DIRECT    = 0x00004000,
                O_ASYNC     = 0x00002000,
-               O_LARGEFILE = 0x00008000
+               O_LARGEFILE = 0x00008000,
+               O_CLOEXEC   = 0x00080000,
+               O_PATH      = 0x00200000
+       }
+       
+       [Map][Flags]
+       [CLSCompliant (false)]
+       public enum AtFlags : int {
+               AT_SYMLINK_NOFOLLOW = 0x00000100,
+               AT_REMOVEDIR        = 0x00000200,
+               AT_SYMLINK_FOLLOW   = 0x00000400,
+               AT_NO_AUTOMOUNT     = 0x00000800,
+               AT_EMPTY_PATH       = 0x00001000
        }
        
        // mode_t
@@ -808,7 +820,7 @@ namespace Mono.Unix.Native {
                }
        }
 
-       [Map ("struct stat")]
+       // Use manually written To/From methods to handle fields st_atime_nsec etc.
        public struct Stat
 #if NET_2_0
                : IEquatable <Stat>
@@ -838,6 +850,39 @@ namespace Mono.Unix.Native {
                [time_t]    public  long    st_atime;   // time of last access
                [time_t]    public  long    st_mtime;   // time of last modification
                [time_t]    public  long    st_ctime;   // time of last status change
+               public  long             st_atime_nsec; // Timespec.tv_nsec partner to st_atime
+               public  long             st_mtime_nsec; // Timespec.tv_nsec partner to st_mtime
+               public  long             st_ctime_nsec; // Timespec.tv_nsec partner to st_ctime
+
+               public Timespec st_atim {
+                       get {
+                               return new Timespec { tv_sec = st_atime, tv_nsec = st_atime_nsec };
+                       }
+                       set {
+                               st_atime = value.tv_sec;
+                               st_atime_nsec = value.tv_nsec;
+                       }
+               }
+
+               public Timespec st_mtim {
+                       get {
+                               return new Timespec { tv_sec = st_mtime, tv_nsec = st_mtime_nsec };
+                       }
+                       set {
+                               st_mtime = value.tv_sec;
+                               st_mtime_nsec = value.tv_nsec;
+                       }
+               }
+
+               public Timespec st_ctim {
+                       get {
+                               return new Timespec { tv_sec = st_ctime, tv_nsec = st_ctime_nsec };
+                       }
+                       set {
+                               st_ctime = value.tv_sec;
+                               st_ctime_nsec = value.tv_nsec;
+                       }
+               }
 
                public override int GetHashCode ()
                {
@@ -853,7 +898,10 @@ namespace Mono.Unix.Native {
                                st_blocks.GetHashCode () ^
                                st_atime.GetHashCode () ^
                                st_mtime.GetHashCode () ^
-                               st_ctime.GetHashCode ();
+                               st_ctime.GetHashCode () ^
+                               st_atime_nsec.GetHashCode () ^
+                               st_mtime_nsec.GetHashCode () ^
+                               st_ctime_nsec.GetHashCode ();
                }
 
                public override bool Equals (object obj)
@@ -873,7 +921,10 @@ namespace Mono.Unix.Native {
                                value.st_blocks == st_blocks &&
                                value.st_atime == st_atime &&
                                value.st_mtime == st_mtime &&
-                               value.st_ctime == st_ctime;
+                               value.st_ctime == st_ctime &&
+                               value.st_atime_nsec == st_atime_nsec &&
+                               value.st_mtime_nsec == st_mtime_nsec &&
+                               value.st_ctime_nsec == st_ctime_nsec;
                }
 
                public bool Equals (Stat value)
@@ -890,7 +941,10 @@ namespace Mono.Unix.Native {
                                value.st_blocks == st_blocks &&
                                value.st_atime == st_atime &&
                                value.st_mtime == st_mtime &&
-                               value.st_ctime == st_ctime;
+                               value.st_ctime == st_ctime &&
+                               value.st_atime_nsec == st_atime_nsec &&
+                               value.st_mtime_nsec == st_mtime_nsec &&
+                               value.st_ctime_nsec == st_ctime_nsec;
                }
 
                public static bool operator== (Stat lhs, Stat rhs)
@@ -1137,6 +1191,14 @@ namespace Mono.Unix.Native {
                }
        }
 
+       [Map ("struct iovec")]
+       public struct Iovec
+       {
+               public IntPtr   iov_base; // Starting address
+               [CLSCompliant (false)]
+               public ulong    iov_len;  // Number of bytes to transfer
+       }
+
        [Flags][Map]
        public enum EpollFlags {
                EPOLL_CLOEXEC = 02000000,
@@ -2005,6 +2067,9 @@ namespace Mono.Unix.Native {
 
                [DllImport (LIBC, SetLastError=true)]
                public static extern int dirfd (IntPtr dir);
+
+               [DllImport (LIBC, SetLastError=true)]
+               public static extern IntPtr fdopendir (int fd);
                #endregion
 
                #region <fcntl.h> Declarations
@@ -2068,6 +2133,40 @@ namespace Mono.Unix.Native {
                [DllImport (MPH, SetLastError=true, 
                                EntryPoint="Mono_Posix_Syscall_posix_fallocate")]
                public static extern int posix_fallocate (int fd, long offset, ulong len);
+
+               [DllImport (LIBC, SetLastError=true, 
+                               EntryPoint="openat")]
+               private static extern int sys_openat (int dirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string pathname, int flags);
+
+               // openat(2)
+               //    int openat(int dirfd, const char *pathname, int flags, mode_t mode);
+               [DllImport (LIBC, SetLastError=true, 
+                               EntryPoint="openat")]
+               private static extern int sys_openat (int dirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string pathname, int flags, uint mode);
+
+               public static int openat (int dirfd, string pathname, OpenFlags flags)
+               {
+                       int _flags = NativeConvert.FromOpenFlags (flags);
+                       return sys_openat (dirfd, pathname, _flags);
+               }
+
+               public static int openat (int dirfd, string pathname, OpenFlags flags, FilePermissions mode)
+               {
+                       int _flags = NativeConvert.FromOpenFlags (flags);
+                       uint _mode = NativeConvert.FromFilePermissions (mode);
+                       return sys_openat (dirfd, pathname, _flags, _mode);
+               }
+
+               [DllImport (MPH, SetLastError=true, 
+                               EntryPoint="Mono_Posix_Syscall_get_at_fdcwd")]
+               private static extern int get_at_fdcwd ();
+
+               public static readonly int AT_FDCWD = get_at_fdcwd ();
+
                #endregion
 
                #region <fstab.h> Declarations
@@ -2664,6 +2763,12 @@ namespace Mono.Unix.Native {
                        }
                }
 
+               [DllImport (LIBC, SetLastError=true)]
+               public static extern int renameat (int olddirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string oldpath, int newdirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string newpath);
                #endregion
 
                #region <stdlib.h> Declarations
@@ -2673,6 +2778,16 @@ namespace Mono.Unix.Native {
                [DllImport (LIBC, SetLastError=true)]
                public static extern int mkstemp (StringBuilder template);
 
+               [DllImport (LIBC, SetLastError=true, EntryPoint="mkdtemp")]
+               private static extern IntPtr sys_mkdtemp (StringBuilder template);
+
+               public static StringBuilder mkdtemp (StringBuilder template)
+               {
+                       if (sys_mkdtemp (template) == IntPtr.Zero)
+                               return null;
+                       return template;
+               }
+
                [DllImport (LIBC, SetLastError=true)]
                public static extern int ttyslot ();
 
@@ -2980,6 +3095,100 @@ namespace Mono.Unix.Native {
                        return sys_mkfifo (pathname, _mode);
                }
 
+               // fchmodat(2)
+               //    int fchmodat(int dirfd, const char *pathname, mode_t mode, int flags);
+               [DllImport (LIBC, SetLastError=true, EntryPoint="fchmodat")]
+               private static extern int sys_fchmodat (int dirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string pathname, uint mode, int flags);
+
+               public static int fchmodat (int dirfd, string pathname, FilePermissions mode, AtFlags flags)
+               {
+                       uint _mode = NativeConvert.FromFilePermissions (mode);
+                       int _flags = NativeConvert.FromAtFlags (flags);
+                       return sys_fchmodat (dirfd, pathname, _mode, _flags);
+               }
+
+               [DllImport (MPH, SetLastError=true, 
+                               EntryPoint="Mono_Posix_Syscall_fstatat")]
+               public static extern int fstatat (int dirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string file_name, out Stat buf, AtFlags flags);
+
+               [DllImport (MPH, SetLastError=true, 
+                               EntryPoint="Mono_Posix_Syscall_get_utime_now")]
+               private static extern long get_utime_now ();
+
+               [DllImport (MPH, SetLastError=true, 
+                               EntryPoint="Mono_Posix_Syscall_get_utime_omit")]
+               private static extern long get_utime_omit ();
+
+               public static readonly long UTIME_NOW = get_utime_now ();
+
+               public static readonly long UTIME_OMIT = get_utime_omit ();
+
+               [DllImport (MPH, SetLastError=true, 
+                               EntryPoint="Mono_Posix_Syscall_futimens")]
+               private static extern int sys_futimens (int fd, Timespec[] times);
+
+               public static int futimens (int fd, Timespec[] times)
+               {
+                       if (times != null && times.Length != 2) {
+                               SetLastError (Errno.EINVAL);
+                               return -1;
+                       }
+                       return sys_futimens (fd, times);
+               }
+
+               [DllImport (MPH, SetLastError=true, 
+                               EntryPoint="Mono_Posix_Syscall_utimensat")]
+               private static extern int sys_utimensat (int dirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string pathname, Timespec[] times, int flags);
+
+               public static int utimensat (int dirfd, string pathname, Timespec[] times, AtFlags flags)
+               {
+                       if (times != null && times.Length != 2) {
+                               SetLastError (Errno.EINVAL);
+                               return -1;
+                       }
+                       int _flags = NativeConvert.FromAtFlags (flags);
+                       return sys_utimensat (dirfd, pathname, times, _flags);
+               }
+
+               // mkdirat(2)
+               //    int mkdirat(int dirfd, const char *pathname, mode_t mode);
+               [DllImport (LIBC, SetLastError=true, EntryPoint="mkdirat")]
+               private static extern int sys_mkdirat (int dirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string oldpath, uint mode);
+
+               public static int mkdirat (int dirfd, string oldpath, FilePermissions mode)
+               {
+                       uint _mode = NativeConvert.FromFilePermissions (mode);
+                       return sys_mkdirat (dirfd, oldpath, _mode);
+               }
+
+               // mknodat(2)
+               //    int mknodat (int dirfd, const char *pathname, mode_t mode, dev_t dev);
+               [DllImport (MPH, SetLastError=true,
+                               EntryPoint="Mono_Posix_Syscall_mknodat")]
+               public static extern int mknodat (int dirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string pathname, FilePermissions mode, ulong dev);
+
+               // mkfifoat(3)
+               //    int mkfifoat(int dirfd, const char *pathname, mode_t mode);
+               [DllImport (LIBC, SetLastError=true, EntryPoint="mkfifoat")]
+               private static extern int sys_mkfifoat (int dirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string pathname, uint mode);
+
+               public static int mkfifoat (int dirfd, string pathname, FilePermissions mode)
+               {
+                       uint _mode = NativeConvert.FromFilePermissions (mode);
+                       return sys_mkfifoat (dirfd, pathname, _mode);
+               }
                #endregion
 
                #region <sys/stat.h> Declarations
@@ -3978,6 +4187,74 @@ namespace Mono.Unix.Native {
                        swab ((IntPtr) from, (IntPtr) to, n);
                }
 
+               [DllImport (LIBC, SetLastError=true, EntryPoint="faccessat")]
+               private static extern int sys_faccessat (int dirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string pathname, int mode, int flags);
+
+               public static int faccessat (int dirfd, string pathname, AccessModes mode, AtFlags flags)
+               {
+                       int _mode = NativeConvert.FromAccessModes (mode);
+                       int _flags = NativeConvert.FromAtFlags (flags);
+                       return sys_faccessat (dirfd, pathname, _mode, _flags);
+               }
+
+               // fchownat(2)
+               //    int fchownat(int dirfd, const char *path, uid_t owner, gid_t group, int flags);
+               [DllImport (LIBC, SetLastError=true, EntryPoint="fchownat")]
+               private static extern int sys_fchownat (int dirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string pathname, uint owner, uint group, int flags);
+
+               public static int fchownat (int dirfd, string pathname, uint owner, uint group, AtFlags flags)
+               {
+                       int _flags = NativeConvert.FromAtFlags (flags);
+                       return sys_fchownat (dirfd, pathname, owner, group, _flags);
+               }
+
+               [DllImport (LIBC, SetLastError=true, EntryPoint="linkat")]
+               private static extern int sys_linkat (int olddirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string oldpath, int newdirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string newpath, int flags);
+
+               public static int linkat (int olddirfd, string oldpath, int newdirfd, string newpath, AtFlags flags)
+               {
+                       int _flags = NativeConvert.FromAtFlags (flags);
+                       return sys_linkat (olddirfd, oldpath, newdirfd, newpath, _flags);
+               }
+
+               // readlinkat(2)
+               //    int readlinkat(int dirfd, const char *pathname, char *buf, size_t bufsize);
+               [DllImport (MPH, SetLastError=true,
+                               EntryPoint="Mono_Posix_Syscall_readlinkat")]
+               public static extern int readlinkat (int dirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string pathname, [Out] StringBuilder buf, ulong bufsiz);
+
+               public static int readlinkat (int dirfd, string pathname, [Out] StringBuilder buf)
+               {
+                       return readlinkat (dirfd, pathname, buf, (ulong) buf.Capacity);
+               }
+
+               [DllImport (LIBC, SetLastError=true)]
+               public static extern int symlinkat (
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string oldpath, int dirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string newpath);
+
+               [DllImport (LIBC, SetLastError=true, EntryPoint="unlinkat")]
+               private static extern int sys_unlinkat (int dirfd,
+                               [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
+                               string pathname, int flags);
+
+               public static int unlinkat (int dirfd, string pathname, AtFlags flags)
+               {
+                       int _flags = NativeConvert.FromAtFlags (flags);
+                       return sys_unlinkat (dirfd, pathname, _flags);
+               }
                #endregion
 
                #region <utime.h> Declarations
@@ -4002,6 +4279,56 @@ namespace Mono.Unix.Native {
                        return sys_utime (filename, ref buf, 0);
                }
                #endregion
+
+               #region <sys/uio.h> Declarations
+               //
+               // <sys/uio.h> -- COMPLETE
+               //
+
+               // readv(2)
+               //    ssize_t readv(int fd, const struct iovec *iov, int iovcnt);
+               [DllImport (MPH, SetLastError=true,
+                               EntryPoint="Mono_Posix_Syscall_readv")]
+               private static extern long sys_readv (int fd, Iovec[] iov, int iovcnt);
+
+               public static long readv (int fd, Iovec[] iov)
+               {
+                       return sys_readv (fd, iov, iov.Length);
+               }
+
+               // writev(2)
+               //    ssize_t writev(int fd, const struct iovec *iov, int iovcnt);
+               [DllImport (MPH, SetLastError=true,
+                               EntryPoint="Mono_Posix_Syscall_writev")]
+               private static extern long sys_writev (int fd, Iovec[] iov, int iovcnt);
+
+               public static long writev (int fd, Iovec[] iov)
+               {
+                       return sys_writev (fd, iov, iov.Length);
+               }
+
+               // preadv(2)
+               //    ssize_t preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset);
+               [DllImport (MPH, SetLastError=true,
+                               EntryPoint="Mono_Posix_Syscall_preadv")]
+               private static extern long sys_preadv (int fd, Iovec[] iov, int iovcnt, long offset);
+
+               public static long preadv (int fd, Iovec[] iov, long offset)
+               {
+                       return sys_preadv (fd, iov, iov.Length, offset);
+               }
+
+               // pwritev(2)
+               //    ssize_t pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset);
+               [DllImport (MPH, SetLastError=true,
+                               EntryPoint="Mono_Posix_Syscall_pwritev")]
+               private static extern long sys_pwritev (int fd, Iovec[] iov, int iovcnt, long offset);
+
+               public static long pwritev (int fd, Iovec[] iov, long offset)
+               {
+                       return sys_pwritev (fd, iov, iov.Length, offset);
+               }
+               #endregion
        }
 
        #endregion
index d835fec46245715b7fe3e8feaae6ab08d4e6cef0..90bddb0fbf4abb8d58e6199b4095816dc4d7b49c 100644 (file)
@@ -40,12 +40,12 @@ namespace Mono.Unix {
        public class Catalog {
                private Catalog () {}
 
-               [DllImport("intl")]
+               [DllImport("intl", CallingConvention=CallingConvention.Cdecl)]
                static extern IntPtr bindtextdomain (IntPtr domainname, IntPtr dirname);
-               [DllImport("intl")]
+               [DllImport("intl", CallingConvention=CallingConvention.Cdecl)]
                static extern IntPtr bind_textdomain_codeset (IntPtr domainname,
                        IntPtr codeset);
-               [DllImport("intl")]
+               [DllImport("intl", CallingConvention=CallingConvention.Cdecl)]
                static extern IntPtr textdomain (IntPtr domainname);
                
                public static void Init (String package, String localedir)
@@ -91,7 +91,7 @@ namespace Mono.Unix {
                        }
                }
        
-               [DllImport("intl")]
+               [DllImport("intl", CallingConvention=CallingConvention.Cdecl)]
                static extern IntPtr gettext (IntPtr instring);
                
                public static String GetString (String s)
@@ -109,7 +109,7 @@ namespace Mono.Unix {
                        }
                }
        
-               [DllImport("intl")]
+               [DllImport("intl", CallingConvention=CallingConvention.Cdecl)]
                static extern IntPtr ngettext (IntPtr singular, IntPtr plural, Int32 n);
                
                public static String GetPluralString (String s, String p, Int32 n)
index e2a204034ed5eaf0e4ee9fc1c124ac61c55a5874..b1cc37c1a8189f440f61a197aa4b69dca3c39183 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E1BE92F9-66BE-4469-B44D-1BB933B0C479}</ProjectGuid>\r
+    <ProjectGuid>{EB5DE34F-78FA-49EE-B49D-A0ED825F0A71}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security.Win32-net_2_0</OutputPath>\r
@@ -75,7 +75,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1a1687aa81ddc9915f3f28b82a897587ad08b7ee..3b67bfd15cf3b69e4005b7f65fbec676f870cda7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3153F0EB-0210-4B9B-B2A7-B8E798379BE0}</ProjectGuid>\r
+    <ProjectGuid>{F8880326-2172-49A6-A8BD-F82914E1A11B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security.Win32-net_4_0</OutputPath>\r
@@ -75,7 +75,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 184c7d168068dabecb7f5e5472999ad1dda173b9..c98da29826c1bc95921c08f96d636175b050bc6d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D044BF49-7C7C-4E7D-8A1B-4A7DA133E4B8}</ProjectGuid>\r
+    <ProjectGuid>{A91ADA57-5818-4949-B584-CB5303EB8842}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security.Win32-net_4_5</OutputPath>\r
@@ -75,7 +75,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3d6987216802b217cf3e19be7234f2ec5d776a81..0356d0a166487af7ffae6befcd7c59b362d180d0 100644 (file)
@@ -208,6 +208,8 @@ namespace Mono.Math {
                
                public BigInteger (byte [] inData)
                {
+                       if (inData.Length == 0)
+                               inData = new byte [1];
                        length = (uint)inData.Length >> 2;
                        int leftOver = inData.Length & 0x3;
 
@@ -239,6 +241,8 @@ namespace Mono.Math {
 #endif 
                public BigInteger (uint [] inData)
                {
+                       if (inData.Length == 0)
+                               inData = new uint [1];
                        length = (uint)inData.Length;
 
                        data = new uint [length];
@@ -1054,7 +1058,7 @@ namespace Mono.Math {
                                if (b > mod)
                                        b %= mod;
 
-                               BigInteger ret = new BigInteger (a * b);
+                               BigInteger ret = a * b;
                                BarrettReduction (ret);
 
                                return ret;
index d6ec61f8ed67085032e96f5ae9b6188c080d5a15..1f35b9e6752575b4265508b689d46c61c3f9a875 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4D1ABD9E-B23B-4C1F-9DF1-7E3407EC3914}</ProjectGuid>\r
+    <ProjectGuid>{FC2EF2C1-8774-4DFE-AE47-9574374D3591}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1030</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security-build</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-build.csproj">\r
-      <Project>{B8B2866D-592F-4888-A1CB-697AD0F3CADE}</Project>\r
+      <Project>{2BD930A2-88A9-4AD0-ADE7-1531552DF896}</Project>\r
       <Name>corlib\corlib-build</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-build-1.csproj">\r
-      <Project>{C3638457-A40E-4E70-81B4-54ACB31DD76D}</Project>\r
+      <Project>{83D197B9-A796-4A0D-B8F9-930DD9415615}</Project>\r
       <Name>System\System-build-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6fd26a7ec685fef9e0dbd85dbae8e86297dc9267..c36dc4fbdf7007e183e1bbdea4661b1a49dcee8b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</ProjectGuid>\r
+    <ProjectGuid>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1030</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ecdde7e5e0b050f78898f4f0ad631502f88c01f4..cbcf0f48401134f7b1cb09fdbaecd1b7eb94ec8c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</ProjectGuid>\r
+    <ProjectGuid>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1030</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ce9da6567bfac06f42cb9dfd8e5cfc6b90fe5ced..85ddfccc266bcd8b0d8f56e1b3ad3e3d5802c2c6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</ProjectGuid>\r
+    <ProjectGuid>{99D172A2-7914-496C-9005-AA69F51195AF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1030</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 27181d2b7efd037bf687f6ab603d9d111142e203..d79e5e02252390b8c13ba4994f042b85f2ebf849 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4AC2F258-0ABC-49E8-8A63-B94AA4861762}</ProjectGuid>\r
+    <ProjectGuid>{82E0F554-0C45-4529-894D-D3074C177053}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1030,169,219,618,672</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e71fc2b4e1375466505e92162ef902ddb5d7886d..191c6b8afb8cb445fd78312094db91135a0428a0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{39A2AE3E-240E-4D9E-9FAA-74EC871B8B90}</ProjectGuid>\r
+    <ProjectGuid>{B97F3146-8EA0-456C-9768-B36ABC325087}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1030,169,219,618,672</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 00aa9e4c81ad52fc45f6a7f002d5160bb4dd661f..0864281332619b33c905338a4c747dd75f64efe2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D5968AB0-8856-49DC-9547-63530241BC22}</ProjectGuid>\r
+    <ProjectGuid>{2D07BA52-8035-4434-B4FD-9B87789B8286}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1030,169,219,618,672</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cc74cca20ae732e538fccdb688d34957040c4374..1efcec91abde0a83b6cbc5f89caae1111a368937 100644 (file)
@@ -198,11 +198,11 @@ namespace Mono.Security.Authenticode {
                        HashAlgorithm ha = null; 
                        switch (signedHash.Length) {
                                case 16:
-                                       ha = HashAlgorithm.Create ("MD5"); 
+                                       ha = MD5.Create (); 
                                        hash = GetHash (ha);
                                        break;
                                case 20:
-                                       ha = HashAlgorithm.Create ("SHA1");
+                                       ha = SHA1.Create ();
                                        hash = GetHash (ha);
                                        break;
                                default:
index a5646d804027928e1ad93b3dec331c69d0953fe4..94c87b6ee3048de8948e38cb1931e779f8da6541 100644 (file)
@@ -40,7 +40,12 @@ namespace Mono.Security.Authenticode {
        // References:
        // a.   http://www.drh-consultancy.demon.co.uk/pvk.html
 
-       public class PrivateKey {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class PrivateKey {
 
                private const uint magic = 0xb0b5f11e;
 
index 2a54a7e4ae9f769ecf0eae39f7e0eb4ec26dfb6b..ca6c2b16c8ab574d727993bffc302c43de8646b4 100644 (file)
@@ -34,7 +34,10 @@ namespace Mono.Security.Cryptography {
        // a.   Usenet 1994 - RC4 Algorithm revealed
        //      http://www.qrst.de/html/dsds/rc4.htm
 
-       public class ARC4Managed : RC4, ICryptoTransform {
+#if !INSIDE_CORLIB
+       public
+#endif
+       class ARC4Managed : RC4, ICryptoTransform {
 
                private byte[] key;
                private byte[] state;
index 9a3ae26563340a5e5bda4d4d389524779e05ba13..3f06114dd0f98b17d61b4d7672d5582bf464a855 100644 (file)
@@ -166,6 +166,10 @@ namespace Mono.Security.Cryptography {
                                throw new CryptographicException ("Invalid blob.", e);
                        }
 
+#if INSIDE_CORLIB && MOBILE
+                       RSA rsa = RSA.Create ();
+                       rsa.ImportParameters (rsap);
+#else
                        RSA rsa = null;
                        try {
                                rsa = RSA.Create ();
@@ -186,6 +190,7 @@ namespace Mono.Security.Cryptography {
                                        throw ce;
                                }
                        }
+#endif
                        return rsa;
                }
 
@@ -246,6 +251,10 @@ namespace Mono.Security.Cryptography {
                                throw new CryptographicException ("Invalid blob.", e);
                        }
 
+#if INSIDE_CORLIB && MOBILE
+                       DSA dsa = (DSA)DSA.Create ();
+                       dsa.ImportParameters (dsap);
+#else
                        DSA dsa = null;
                        try {
                                dsa = (DSA)DSA.Create ();
@@ -266,6 +275,7 @@ namespace Mono.Security.Cryptography {
                                        throw ce;
                                }
                        }
+#endif
                        return dsa;
                }
 
@@ -434,7 +444,10 @@ namespace Mono.Security.Cryptography {
                                rsap.Modulus = new byte [byteLen];
                                Buffer.BlockCopy (blob, pos, rsap.Modulus, 0, byteLen);
                                Array.Reverse (rsap.Modulus);
-
+#if INSIDE_CORLIB && MOBILE
+                               RSA rsa = RSA.Create ();
+                               rsa.ImportParameters (rsap);
+#else
                                RSA rsa = null;
                                try {
                                        rsa = RSA.Create ();
@@ -449,6 +462,7 @@ namespace Mono.Security.Cryptography {
                                        rsa = new RSACryptoServiceProvider (csp);
                                        rsa.ImportParameters (rsap);
                                }
+#endif
                                return rsa;
                        }
                        catch (Exception e) {
index a19dc7afbe44566c1946ee7e3c0f1ee9e603321a..0615770aaf51e6664b630f1ca66f0d88251af0b2 100644 (file)
@@ -98,10 +98,10 @@ namespace Mono.Security.Cryptography {
 #endif
        class KeyPairPersistence {
        
-               private static bool _userPathExists = false; // check at 1st use
+               private static bool _userPathExists; // check at 1st use
                private static string _userPath;
                
-               private static bool _machinePathExists = false; // check at 1st use
+               private static bool _machinePathExists; // check at 1st use
                private static string _machinePath;
 
                private CspParameters _params;
index 41d593c1a3937bbb6875206cf885683cad23e644..bb7d8f7432e11e2e92a7ccd07805401b9318f8ef 100644 (file)
@@ -33,7 +33,10 @@ using System.Security.Cryptography;
 
 namespace Mono.Security.Cryptography {
 
-       public abstract class MD2 : HashAlgorithm {
+#if !INSIDE_CORLIB
+       public 
+#endif
+       abstract class MD2 : HashAlgorithm {
 
                protected MD2 () 
                {
@@ -43,8 +46,12 @@ namespace Mono.Security.Cryptography {
 
                public static new MD2 Create ()
                {
+#if FULL_AOT_RUNTIME
+                       return new MD2Managed ();
+#else
                        // for this to work we must register ourself with CryptoConfig
                        return Create ("MD2");
+#endif
                }
 
                public static new MD2 Create (string hashName)
index be0022364246960cc8089114837d139f5adba257..13f0f5d8e65a639248892d5cedd5011cd4dd6aac 100644 (file)
@@ -35,7 +35,10 @@ namespace Mono.Security.Cryptography {
        // a.   RFC1319: The MD2 Message-Digest Algorithm
        //      http://www.ietf.org/rfc/rfc1319.txt
 
-       public class MD2Managed : MD2 {
+#if !INSIDE_CORLIB
+       public
+#endif
+       class MD2Managed : MD2 {
 
                private byte[] state;
                private byte[] checksum;
index e35cdfcaee2c2f59e34ac7edbea1e19f9d8bd027..bb551536870c87ecb5196c828d38469a820b565d 100644 (file)
@@ -2,9 +2,10 @@
 // MD4.cs - Message Digest 4 Abstract class
 //
 // Author:
-//     Sebastien Pouliot (spouliot@motus.com)
+//     Sebastien Pouliot (sebastien@xamarin.com)
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 
 //
@@ -33,7 +34,10 @@ using System.Security.Cryptography;
 
 namespace Mono.Security.Cryptography {
 
-       public abstract class MD4 : HashAlgorithm {
+#if !INSIDE_CORLIB
+       public
+#endif
+       abstract class MD4 : HashAlgorithm {
 
                protected MD4 () 
                {
@@ -43,8 +47,12 @@ namespace Mono.Security.Cryptography {
 
                public static new MD4 Create () 
                {
+#if FULL_AOT_RUNTIME
+                       return new MD4Managed ();
+#else
                        // for this to work we must register ourself with CryptoConfig
                        return Create ("MD4");
+#endif
                }
 
                public static new MD4 Create (string hashName) 
index a365fb5bcb5471806460b60343151b86fb27e943..eedc8b114b195cc46aa29415cbec47f46aea298f 100644 (file)
@@ -35,7 +35,10 @@ namespace Mono.Security.Cryptography {
        // a.     RFC1320: The MD4 Message-Digest Algorithm
        //        http://www.ietf.org/rfc/rfc1320.txt
 
-       public class MD4Managed : MD4 {
+#if !INSIDE_CORLIB
+       public
+#endif
+       class MD4Managed : MD4 {
 
                private uint[] state;
                private byte[] buffer;
index 2aad2426d971231e8e94322f5d8ef1fa6498ea3c..4e579eee94ae2bab77cd3bd121a7fe3928487bc5 100644 (file)
@@ -2,10 +2,11 @@
 // PKCS1.cs - Implements PKCS#1 primitives.
 //
 // Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -286,7 +287,13 @@ namespace Mono.Security.Cryptography {
                        byte[] S = I2OSP (s, size);
                        return S;
                }
-       
+
+               internal static byte[] Sign_v15 (RSA rsa, string hashName, byte[] hashValue) 
+               {
+                       using (var hash = CreateFromName (hashName))
+                               return Sign_v15 (rsa, hash, hashValue);
+               }
+
                // PKCS #1 v.2.1, Section 8.2.2
                // RSASSA-PKCS1-V1_5-VERIFY ((n, e), M, S)
                public static bool Verify_v15 (RSA rsa, HashAlgorithm hash, byte[] hashValue, byte[] signature) 
@@ -294,6 +301,12 @@ namespace Mono.Security.Cryptography {
                        return Verify_v15 (rsa, hash, hashValue, signature, false);
                }
 
+               internal static bool Verify_v15 (RSA rsa, string hashName, byte[] hashValue, byte[] signature) 
+               {
+                       using (var hash = CreateFromName (hashName))
+                               return Verify_v15 (rsa, hash, hashValue, signature, false);
+               }
+
                // DO NOT USE WITHOUT A VERY GOOD REASON
                public static bool Verify_v15 (RSA rsa, HashAlgorithm hash, byte [] hashValue, byte [] signature, bool tryNonStandardEncoding)
                {
@@ -404,7 +417,7 @@ namespace Mono.Security.Cryptography {
                                Buffer.BlockCopy (C, 0, toBeHashed, mgfSeedLength, 4);
                                byte[] output = hash.ComputeHash (toBeHashed);
                                Buffer.BlockCopy (output, 0, T, pos, hLen);
-                               pos += mgfSeedLength;
+                               pos += hLen;
                        }
                        
                        // 4. Output the leading maskLen octets of T as the octet string mask.
@@ -412,5 +425,71 @@ namespace Mono.Security.Cryptography {
                        Buffer.BlockCopy (T, 0, mask, 0, maskLen);
                        return mask;
                }
+
+               static internal string HashNameFromOid (string oid, bool throwOnError = true)
+               {
+                       switch (oid) {
+                       case "1.2.840.113549.1.1.2":    // MD2 with RSA encryption 
+                               return "MD2";
+                       case "1.2.840.113549.1.1.3":    // MD4 with RSA encryption 
+                               return "MD4";
+                       case "1.2.840.113549.1.1.4":    // MD5 with RSA encryption 
+                               return "MD5";
+                       case "1.2.840.113549.1.1.5":    // SHA-1 with RSA Encryption 
+                       case "1.3.14.3.2.29":           // SHA1 with RSA signature 
+                       case "1.2.840.10040.4.3":       // SHA1-1 with DSA
+                               return "SHA1";
+                       case "1.2.840.113549.1.1.11":   // SHA-256 with RSA Encryption
+                               return "SHA256";
+                       case "1.2.840.113549.1.1.12":   // SHA-384 with RSA Encryption
+                               return "SHA384";
+                       case "1.2.840.113549.1.1.13":   // SHA-512 with RSA Encryption
+                               return "SHA512";
+                       case "1.3.36.3.3.1.2":
+                               return "RIPEMD160";
+                       default:
+                               if (throwOnError)
+                                       throw new CryptographicException ("Unsupported hash algorithm: " + oid);
+                               return null;
+                       }
+               }
+               
+               static internal HashAlgorithm CreateFromOid (string oid)
+               {
+                       return CreateFromName (HashNameFromOid (oid));
+               }
+               
+               static internal HashAlgorithm CreateFromName (string name)
+               {
+#if FULL_AOT_RUNTIME
+                       switch (name) {
+                       case "MD2":
+                               return MD2.Create ();
+                       case "MD4":
+                               return MD4.Create ();
+                       case "MD5":
+                               return MD5.Create ();
+                       case "SHA1":
+                               return SHA1.Create ();
+                       case "SHA256":
+                               return SHA256.Create ();
+                       case "SHA384":
+                               return SHA384.Create ();
+                       case "SHA512":
+                               return SHA512.Create ();
+                       case "RIPEMD160":
+                               return RIPEMD160.Create ();
+                       default:
+                               try {
+                                       return (HashAlgorithm) Activator.CreateInstance (Type.GetType (name));
+                               }
+                               catch {
+                                       throw new CryptographicException ("Unsupported hash algorithm: " + name);
+                               }
+                       }
+#else
+                       return HashAlgorithm.Create (name);
+#endif
+               }
        }
 }
index 164466487e138f644ec944ef589c51c838771f06..352e4649b0ef2c19d327d36ff15b3a0fd54d557f 100644 (file)
@@ -3,10 +3,11 @@
 //     ftp://ftp.rsasecurity.com/pub/pkcs/doc/pkcs-8.doc
 //
 // Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
+//     Sebastien Pouliot <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2006 Novell Inc. (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 using System;
 using System.Collections;
 using System.Security.Cryptography;
-using System.Text;
 
 using Mono.Security.X509;
 
 namespace Mono.Security.Cryptography {
 
-#if INSIDE_CORLIB
-       internal
-#else
+#if !INSIDE_CORLIB
        public 
 #endif
        sealed class PKCS8 {
@@ -279,6 +277,11 @@ namespace Mono.Security.Cryptography {
                                        rsa.ImportParameters (param);
                                }
                                catch (CryptographicException) {
+#if MONOTOUCH
+                                       // there's no machine-wide store available for iOS so we can drop the dependency on
+                                       // CspParameters (which drops other things, like XML key persistance, unless used elsewhere)
+                                       throw;
+#else
                                        // this may cause problem when this code is run under
                                        // the SYSTEM identity on Windows (e.g. ASP.NET). See
                                        // http://bugzilla.ximian.com/show_bug.cgi?id=77559
@@ -286,6 +289,7 @@ namespace Mono.Security.Cryptography {
                                        csp.Flags = CspProviderFlags.UseMachineKeyStore;
                                        rsa = new RSACryptoServiceProvider (csp);
                                        rsa.ImportParameters (param);
+#endif
                                }
                                return rsa;
                        }
index ce5bd081827ba9490053f0c4082b8020a6fd253b..0ff19b4848278e4d01ba166dab01ee509fba3662 100644 (file)
@@ -3,9 +3,10 @@
 //     RC4 is a trademark of RSA Security
 //
 // Author:
-//     Sebastien Pouliot (spouliot@motus.com)
+//     Sebastien Pouliot (sebastien@xamarin.com)
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 
 //
@@ -34,7 +35,10 @@ using System.Security.Cryptography;
 
 namespace Mono.Security.Cryptography {
 
-public abstract class RC4 : SymmetricAlgorithm {
+#if !INSIDE_CORLIB
+       public
+#endif
+       abstract class RC4 : SymmetricAlgorithm {
 
        private static KeySizes[] s_legalBlockSizes = {
                new KeySizes (64, 64, 0)
@@ -61,7 +65,11 @@ public abstract class RC4 : SymmetricAlgorithm {
 
        new static public RC4 Create() 
        {
+#if FULL_AOT_RUNTIME
+               return new ARC4Managed ();
+#else
                return Create ("RC4");
+#endif
        }
 
        new static public RC4 Create (string algName) 
index e03ee300208a13ca93a6745ba9eb0ad3352785be..221f0fb695da35c55adeb344ec1db015086e5867 100644 (file)
@@ -45,16 +45,16 @@ namespace Mono.Security.Cryptography {
        internal abstract class SymmetricTransform : ICryptoTransform {
                protected SymmetricAlgorithm algo;
                protected bool encrypt;
-               private int BlockSizeByte;
-               private byte[] temp;
-               private byte[] temp2;
+               protected int BlockSizeByte;
+               protected byte[] temp;
+               protected byte[] temp2;
                private byte[] workBuff;
                private byte[] workout;
+               protected PaddingMode padmode;
                // Silverlight 2.0 does not support any feedback mode
-               private int FeedBackByte;
-               private int FeedBackIter;
+               protected int FeedBackByte;
                private bool m_disposed = false;
-               private bool lastBlock;
+               protected bool lastBlock;
 
                public SymmetricTransform (SymmetricAlgorithm symmAlgo, bool encryption, byte[] rgbIV) 
                {
@@ -73,14 +73,12 @@ namespace Mono.Security.Cryptography {
                                        rgbIV.Length, BlockSizeByte);
                                throw new CryptographicException (msg);
                        }
-
+                       padmode = algo.Padding;
                        // mode buffers
                        temp = new byte [BlockSizeByte];
                        Buffer.BlockCopy (rgbIV, 0, temp, 0, System.Math.Min (BlockSizeByte, rgbIV.Length));
                        temp2 = new byte [BlockSizeByte];
                        FeedBackByte = (algo.FeedbackSize >> 3);
-                       if (FeedBackByte != 0)
-                               FeedBackIter = (int) BlockSizeByte / FeedBackByte;
                        // transform buffers
                        workBuff = new byte [BlockSizeByte];
                        workout =  new byte [BlockSizeByte];
@@ -176,31 +174,31 @@ namespace Mono.Security.Cryptography {
                }
 
                // Cipher-FeedBack (CFB)
+               // this is how *CryptoServiceProvider implements CFB
+               // only AesCryptoServiceProvider support CFB > 8
+               // RijndaelManaged is incompatible with this implementation (and overrides it in it's own transform)
                protected virtual void CFB (byte[] input, byte[] output) 
                {
                        if (encrypt) {
-                               for (int x = 0; x < FeedBackIter; x++) {
+                               for (int x = 0; x < BlockSizeByte; x++) {
                                        // temp is first initialized with the IV
                                        ECB (temp, temp2);
-
-                                       for (int i = 0; i < FeedBackByte; i++)
-                                               output[i + x] = (byte)(temp2[i] ^ input[i + x]);
-                                       Buffer.BlockCopy (temp, FeedBackByte, temp, 0, BlockSizeByte - FeedBackByte);
-                                       Buffer.BlockCopy (output, x, temp, BlockSizeByte - FeedBackByte, FeedBackByte);
+                                       output [x] = (byte) (temp2 [0] ^ input [x]);
+                                       Buffer.BlockCopy (temp, 1, temp, 0, BlockSizeByte - 1);
+                                       Buffer.BlockCopy (output, x, temp, BlockSizeByte - 1, 1);
                                }
                        }
                        else {
-                               for (int x = 0; x < FeedBackIter; x++) {
+                               for (int x = 0; x < BlockSizeByte; x++) {
                                        // we do not really decrypt this data!
                                        encrypt = true;
                                        // temp is first initialized with the IV
                                        ECB (temp, temp2);
                                        encrypt = false;
 
-                                       Buffer.BlockCopy (temp, FeedBackByte, temp, 0, BlockSizeByte - FeedBackByte);
-                                       Buffer.BlockCopy (input, x, temp, BlockSizeByte - FeedBackByte, FeedBackByte);
-                                       for (int i = 0; i < FeedBackByte; i++)
-                                               output[i + x] = (byte)(temp2[i] ^ input[i + x]);
+                                       Buffer.BlockCopy (temp, 1, temp, 0, BlockSizeByte - 1);
+                                       Buffer.BlockCopy (input, x, temp, BlockSizeByte - 1, 1);
+                                       output [x] = (byte) (temp2 [0] ^ input [x]);
                                }
                        }
                }
@@ -244,7 +242,7 @@ namespace Mono.Security.Cryptography {
 
                        // ordered to avoid possible integer overflow
                        int len = outputBuffer.Length - inputCount - outputOffset;
-                       if (!encrypt && (0 > len) && ((algo.Padding == PaddingMode.None) || (algo.Padding == PaddingMode.Zeros))) {
+                       if (!encrypt && (0 > len) && ((padmode == PaddingMode.None) || (padmode == PaddingMode.Zeros))) {
                                throw new CryptographicException ("outputBuffer", Locale.GetText ("Overflow"));
                        } else if (KeepLastBlock) {
                                if (0 > len + BlockSizeByte) {
@@ -264,7 +262,7 @@ namespace Mono.Security.Cryptography {
 
                private bool KeepLastBlock {
                        get {
-                               return ((!encrypt) && (algo.Padding != PaddingMode.None) && (algo.Padding != PaddingMode.Zeros));
+                               return ((!encrypt) && (padmode != PaddingMode.None) && (padmode != PaddingMode.Zeros));
                        }
                }
 
@@ -336,14 +334,14 @@ namespace Mono.Security.Cryptography {
                        throw new CryptographicException (msg);
                }
 
-               private byte[] FinalEncrypt (byte[] inputBuffer, int inputOffset, int inputCount) 
+               protected virtual byte[] FinalEncrypt (byte[] inputBuffer, int inputOffset, int inputCount) 
                {
                        // are there still full block to process ?
                        int full = (inputCount / BlockSizeByte) * BlockSizeByte;
                        int rem = inputCount - full;
                        int total = full;
 
-                       switch (algo.Padding) {
+                       switch (padmode) {
                        case PaddingMode.ANSIX923:
                        case PaddingMode.ISO10126:
                        case PaddingMode.PKCS7:
@@ -354,7 +352,7 @@ namespace Mono.Security.Cryptography {
                                if (inputCount == 0)
                                        return new byte [0];
                                if (rem != 0) {
-                                       if (algo.Padding == PaddingMode.None)
+                                       if (padmode == PaddingMode.None)
                                                throw new CryptographicException ("invalid block length");
                                        // zero padding the input (by adding a block for the partial data)
                                        byte[] paddedInput = new byte [full + BlockSizeByte];
@@ -380,7 +378,7 @@ namespace Mono.Security.Cryptography {
 
                        // now we only have a single last block to encrypt
                        byte padding = (byte) (BlockSizeByte - rem);
-                       switch (algo.Padding) {
+                       switch (padmode) {
                        case PaddingMode.ANSIX923:
                                // XX 00 00 00 00 00 00 07 (zero + padding length)
                                res [res.Length - 1] = padding;
@@ -411,11 +409,9 @@ namespace Mono.Security.Cryptography {
                        return res;
                }
 
-               private byte[] FinalDecrypt (byte[] inputBuffer, int inputOffset, int inputCount) 
+               protected virtual byte[] FinalDecrypt (byte[] inputBuffer, int inputOffset, int inputCount) 
                {
-                       if ((inputCount % BlockSizeByte) > 0)
-                               throw new CryptographicException ("Invalid input block size.");
-
+                       int full = inputCount;
                        int total = inputCount;
                        if (lastBlock)
                                total += BlockSizeByte;
@@ -423,11 +419,11 @@ namespace Mono.Security.Cryptography {
                        byte[] res = new byte [total];
                        int outputOffset = 0;
 
-                       while (inputCount > 0) {
+                       while (full > 0) {
                                int len = InternalTransformBlock (inputBuffer, inputOffset, BlockSizeByte, res, outputOffset);
                                inputOffset += BlockSizeByte;
                                outputOffset += len;
-                               inputCount -= BlockSizeByte;
+                               full -= BlockSizeByte;
                        }
 
                        if (lastBlock) {
@@ -439,27 +435,27 @@ namespace Mono.Security.Cryptography {
 
                        // total may be 0 (e.g. PaddingMode.None)
                        byte padding = ((total > 0) ? res [total - 1] : (byte) 0);
-                       switch (algo.Padding) {
+                       switch (padmode) {
                        case PaddingMode.ANSIX923:
                                if ((padding == 0) || (padding > BlockSizeByte))
-                                       ThrowBadPaddingException (algo.Padding, padding, -1);
+                                       ThrowBadPaddingException (padmode, padding, -1);
                                for (int i = padding - 1; i > 0; i--) {
                                        if (res [total - 1 - i] != 0x00)
-                                               ThrowBadPaddingException (algo.Padding, -1, i);
+                                               ThrowBadPaddingException (padmode, -1, i);
                                }
                                total -= padding;
                                break;
                        case PaddingMode.ISO10126:
                                if ((padding == 0) || (padding > BlockSizeByte))
-                                       ThrowBadPaddingException (algo.Padding, padding, -1);
+                                       ThrowBadPaddingException (padmode, padding, -1);
                                total -= padding;
                                break;
                        case PaddingMode.PKCS7:
                                if ((padding == 0) || (padding > BlockSizeByte))
-                                       ThrowBadPaddingException (algo.Padding, padding, -1);
+                                       ThrowBadPaddingException (padmode, padding, -1);
                                for (int i = padding - 1; i > 0; i--) {
                                        if (res [total - 1 - i] != padding)
-                                               ThrowBadPaddingException (algo.Padding, -1, i);
+                                               ThrowBadPaddingException (padmode, -1, i);
                                }
                                total -= padding;
                                break;
index 722d2e53b4f9c2f2daad4f07e6f25b6d328795a8..1e09d552a21b29ec0e3533087ac33090220a20e3 100644 (file)
@@ -115,14 +115,9 @@ namespace Mono.Security.Cryptography
                        this.Initialize();
                }
 
-               public HMAC(string hashName, byte[] rgbKey)
+               public HMAC (HashAlgorithm ha, byte[] rgbKey)
                {
-                       // Create the hash
-                       if (hashName == null || hashName.Length == 0)
-                       {
-                               hashName = "MD5";
-                       }
-                       hash = HashAlgorithm.Create(hashName);
+                       hash = ha;
                        // Set HashSizeValue
                        HashSizeValue = hash.HashSize;
 
index eb60c6bd086185c56c1317a29f70c1f278eeeac6..5b5e74e48c10250bfef984801a0913b9081c3216 100644 (file)
@@ -46,7 +46,12 @@ using Mono.Security.Cryptography;
 namespace Mono.Security.Protocol.Ntlm {
 
        [Obsolete (Type3Message.LegacyAPIWarning)]
-       public class ChallengeResponse : IDisposable {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class ChallengeResponse : IDisposable {
 
                static private byte[] magic = { 0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 };
 
index abaef0e259bc57a95ab8913e903f99d8be14fae1..747ab89c15b9a0c548ac98cebd1c54e76f607afc 100644 (file)
@@ -49,7 +49,12 @@ using Mono.Security.Cryptography;
 
 namespace Mono.Security.Protocol.Ntlm {
 
-       public static class ChallengeResponse2 {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       static class ChallengeResponse2 {
 
                static private byte[] magic = { 0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 };
 
index d62ed40c973d02f51a13821b1c417c4e31699bce..0e6e571bb4e2fd768d514053c7be0c5bc05b8518 100644 (file)
@@ -39,7 +39,12 @@ using System.Globalization;
 
 namespace Mono.Security.Protocol.Ntlm {
 
-       public abstract class MessageBase {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       abstract class MessageBase {
 
                static private byte[] header = { 0x4e, 0x54, 0x4c, 0x4d, 0x53, 0x53, 0x50, 0x00 };
                
index e66d5901b5b9dda3ed2d0768652a90f172159b84..2dc12129b5d9a1c7d8321b209f0cc143a9f25768 100644 (file)
@@ -36,7 +36,12 @@ namespace Mono.Security.Protocol.Ntlm {
         * is LM_and_NTLM_and_try_NTLMv2_Session.
         */
        
-       public enum NtlmAuthLevel {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       enum NtlmAuthLevel {
                /* Use LM and NTLM, never use NTLMv2 session security. */
                LM_and_NTLM,
                
index 5b5db641a4a18e5908fa11699fa55d95ef0ecb14..f835bd8b1456e1ad35fbc6ad14a8bbdc3369fdfd 100644 (file)
@@ -40,7 +40,12 @@ using System;
 namespace Mono.Security.Protocol.Ntlm {
 
        [Flags]
-       public enum NtlmFlags : int {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       enum NtlmFlags : int {
                // The client sets this flag to indicate that it supports Unicode strings.
                NegotiateUnicode = 0x00000001,
                // This is set to indicate that the client supports OEM strings.
index 531fce0262275983510daa57a940382110393d26..b9ef85593601087d76b40ef943222e6fa69ac186 100644 (file)
@@ -39,7 +39,12 @@ using System.Text;
 
 namespace Mono.Security.Protocol.Ntlm {
 
-       public class Type1Message : MessageBase {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class Type1Message : MessageBase {
 
                private string _host;
                private string _domain;
index a2f65e3e584b06fb618ae541beb01d8f4769db5e..e6a89936a908e919155df942f5739b9debd354a4 100644 (file)
@@ -39,7 +39,12 @@ using System.Security.Cryptography;
 
 namespace Mono.Security.Protocol.Ntlm {
 
-       public class Type2Message : MessageBase {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class Type2Message : MessageBase {
 
                private byte[] _nonce;
                private string _targetName;
index 50010bffe619311f8bc6cffc6de462ee9950bfd3..d80a50be699ed7494cb41f1536a51671c0e51722 100644 (file)
@@ -39,7 +39,12 @@ using System.Text;
 
 namespace Mono.Security.Protocol.Ntlm {
 
-       public class Type3Message : MessageBase {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class Type3Message : MessageBase {
 
                private NtlmAuthLevel _level;
                private byte[] _challenge;
index 174e0eb58445bee1cdd6d91518a68e9f5457e475..dae12cc401347bd88c129e381b7f5202c8f33311 100644 (file)
@@ -182,42 +182,50 @@ namespace Mono.Security.Protocol.Tls.Handshake.Client
                        return true;
                }
 
-               
-               static private void VerifyOSX (X509CertificateCollection certificates)
-               {
-                       
-               }
-               
                private void validateCertificates(X509CertificateCollection certificates)
                {
                        ClientContext           context                 = (ClientContext)this.Context;
                        AlertDescription        description             = AlertDescription.BadCertificate;
 
-#if NET_2_0
-                       if (context.SslStream.HaveRemoteValidation2Callback) {
-                               ValidationResult res = context.SslStream.RaiseServerCertificateValidation2 (certificates);
-                               if (res.Trusted)
-                                       return;
+#if INSIDE_SYSTEM
+                       // This helps the linker to remove a lot of validation code that will never be used since 
+                       // System.dll will, for OSX and iOS, uses the operating system X.509 certificate validations
+                       RemoteValidation (context, description);
+#else
+                       if (context.SslStream.HaveRemoteValidation2Callback)
+                               RemoteValidation (context, description);
+                       else 
+                               LocalValidation (context, description);
+#endif
+               }
 
-                               long error = res.ErrorCode;
-                               switch (error) {
-                               case 0x800B0101:
-                                       description = AlertDescription.CertificateExpired;
-                                       break;
-                               case 0x800B010A:
-                                       description = AlertDescription.UnknownCA;
-                                       break;
-                               case 0x800B0109:
-                                       description = AlertDescription.UnknownCA;
-                                       break;
-                               default:
-                                       description = AlertDescription.CertificateUnknown;
-                                       break;
-                               }
-                               string err = String.Format ("0x{0:x}", error);
-                               throw new TlsException (description, "Invalid certificate received from server. Error code: " + err);
+               void RemoteValidation (ClientContext context, AlertDescription description)
+               {
+                       ValidationResult res = context.SslStream.RaiseServerCertificateValidation2 (certificates);
+                       if (res.Trusted)
+                               return;
+
+                       long error = res.ErrorCode;
+                       switch (error) {
+                       case 0x800B0101:
+                               description = AlertDescription.CertificateExpired;
+                               break;
+                       case 0x800B010A:
+                               description = AlertDescription.UnknownCA;
+                               break;
+                       case 0x800B0109:
+                               description = AlertDescription.UnknownCA;
+                               break;
+                       default:
+                               description = AlertDescription.CertificateUnknown;
+                               break;
                        }
-#endif
+                       string err = String.Format ("Invalid certificate received from server. Error code: 0x{0:x}", error);
+                       throw new TlsException (description, err);
+               }
+
+               void LocalValidation (ClientContext context, AlertDescription description)
+               {
                        // the leaf is the web server certificate
                        X509Certificate leaf = certificates [0];
                        X509Cert.X509Certificate cert = new X509Cert.X509Certificate (leaf.RawData);
index e8e617143686386e1aa4f0636cdc810bd9ca5a90..b58cc2c785e291cccad5934d2b059cf290262588 100644 (file)
@@ -26,8 +26,13 @@ using System;
 
 namespace Mono.Security.Protocol.Tls
 {
+#if INSIDE_SYSTEM
+       internal
+#else
        [Serializable]
-       public enum CipherAlgorithmType
+       public
+#endif
+       enum CipherAlgorithmType
        {
                Des,
                None,
index 66f3a6536cdfda3221b8eedbc0c670b87e1b5794..6d78fc9d38632340661a6579bf218a64c5f7a7d2 100644 (file)
@@ -115,6 +115,18 @@ namespace Mono.Security.Protocol.Tls
                        }
                }
 
+               internal HashAlgorithm CreateHashAlgorithm ()
+               {
+                       switch (hashAlgorithmType) {
+                       case HashAlgorithmType.Md5:
+                               return MD5.Create ();
+                       case HashAlgorithmType.Sha1:
+                               return SHA1.Create ();
+                       default:
+                               return null;
+                       }
+               }
+
                public HashAlgorithmType HashAlgorithmType
                {
                        get { return this.hashAlgorithmType; }
@@ -389,10 +401,10 @@ namespace Mono.Security.Protocol.Tls
                        Buffer.BlockCopy(secret, (secret.Length - secretLen), secret2, 0, secretLen);
 
                        // Secret 1 processing
-                       byte[] p_md5 = Expand("MD5", secret1, seed, length);
+                       byte[] p_md5 = Expand (MD5.Create (), secret1, seed, length);
 
                        // Secret 2 processing
-                       byte[] p_sha = Expand("SHA1", secret2, seed, length);
+                       byte[] p_sha = Expand (SHA1.Create (), secret2, seed, length);
 
                        // Perfor XOR of both results
                        byte[] masterSecret = new byte[length];
@@ -404,16 +416,16 @@ namespace Mono.Security.Protocol.Tls
                        return masterSecret;
                }
                
-               public byte[] Expand(string hashName, byte[] secret, byte[] seed, int length)
+               public byte[] Expand (HashAlgorithm hash, byte[] secret, byte[] seed, int length)
                {
-                       int hashLength  = hashName == "MD5" ? 16 : 20;
+                       int hashLength  = hash.HashSize / 8;
                        int     iterations      = (int)(length / hashLength);
                        if ((length % hashLength) > 0)
                        {
                                iterations++;
                        }
                        
-                       M.HMAC          hmac    = new M.HMAC(hashName, secret);
+                       M.HMAC          hmac    = new M.HMAC (hash, secret);
                        TlsStream       resMacs = new TlsStream();
                        
                        byte[][] hmacs = new byte[iterations + 1][];
@@ -465,7 +477,12 @@ namespace Mono.Security.Protocol.Tls
                                        break;
 
                                case CipherAlgorithmType.Rijndael:
+#if MOBILE || NET_4_0
+                                       // only AES is really used - and we can use CommonCrypto for iOS and OSX this way
+                                       this.encryptionAlgorithm = Aes.Create();
+#else
                                        this.encryptionAlgorithm = Rijndael.Create();
+#endif
                                        break;
                        }
 
@@ -498,13 +515,13 @@ namespace Mono.Security.Protocol.Tls
                        if (this.context is ClientContext)
                        {
                                this.clientHMAC = new M.HMAC(
-                                       this.HashAlgorithmName,
+                                       CreateHashAlgorithm (),
                                        this.context.Negotiating.ClientWriteMAC);
                        }
                        else
                        {
                                this.serverHMAC = new M.HMAC(
-                                       this.HashAlgorithmName,
+                                       CreateHashAlgorithm (),
                                        this.context.Negotiating.ServerWriteMAC);
                        }
                }
@@ -531,7 +548,12 @@ namespace Mono.Security.Protocol.Tls
                                        break;
 
                                case CipherAlgorithmType.Rijndael:
+#if MOBILE || NET_4_0
+                                       // only AES is really used - and we can use CommonCrypto for iOS and OSX this way
+                                       this.decryptionAlgorithm = Aes.Create();
+#else
                                        this.decryptionAlgorithm = Rijndael.Create();
+#endif
                                        break;
                        }
 
@@ -564,13 +586,13 @@ namespace Mono.Security.Protocol.Tls
                        if (this.context is ClientContext)
                        {
                                this.serverHMAC = new M.HMAC(
-                                       this.HashAlgorithmName,
+                                       CreateHashAlgorithm (),
                                        this.context.Negotiating.ServerWriteMAC);
                        }
                        else
                        {
                                this.clientHMAC = new M.HMAC(
-                                       this.HashAlgorithmName,
+                                       CreateHashAlgorithm (),
                                        this.context.Negotiating.ClientWriteMAC);
                        }
                }
index a244b2ea3a55d92e93faa8416fa7505ff5271c11..3f5156ea93a398b13a3958e85b142d2b9b396983 100644 (file)
@@ -26,8 +26,13 @@ using System;
 
 namespace Mono.Security.Protocol.Tls
 {
+#if INSIDE_SYSTEM
+       internal
+#else
        [Serializable]
-       public enum ExchangeAlgorithmType
+       public
+#endif
+       enum ExchangeAlgorithmType
        {
                DiffieHellman,
                Fortezza,
index 092d7adcfd0b01c2452247c29686fd7845d981df..3f6a60cd7cfe0e53920cd429e7571ff088d39508 100644 (file)
@@ -26,8 +26,13 @@ using System;
 
 namespace Mono.Security.Protocol.Tls
 {
+#if INSIDE_SYSTEM
+       internal
+#else
        [Serializable]
-       public enum HashAlgorithmType
+       public
+#endif
+       enum HashAlgorithmType
        {
                Md5,
                None,
index 0126d73fcc5c5a0cc323fc81f11612ceb5cf5d8f..9937f287dce27809915ff32a608d2ba8e2c085f7 100644 (file)
@@ -37,26 +37,26 @@ using SNCX = System.Security.Cryptography.X509Certificates;
 
 namespace Mono.Security.Protocol.Tls {
 
-        // Note: DO NOT REUSE this class - instead use SslClientStream
+       // Note: DO NOT REUSE this class - instead use SslClientStream
 
-        internal class HttpsClientStream : SslClientStream {
+       internal class HttpsClientStream : SslClientStream {
 
-                private HttpWebRequest _request;
+               private HttpWebRequest _request;
                private int _status;
 
-                public HttpsClientStream (Stream stream, X509CertificateCollection clientCertificates,
+               public HttpsClientStream (Stream stream, X509CertificateCollection clientCertificates,
                                        HttpWebRequest request, byte [] buffer)
-                        : base (stream, request.Address.Host, false, (Mono.Security.Protocol.Tls.SecurityProtocolType)
+                       : base (stream, request.Address.Host, false, (Mono.Security.Protocol.Tls.SecurityProtocolType)
                                ServicePointManager.SecurityProtocol, clientCertificates)
-                {
-                        // this constructor permit access to the WebRequest to call
-                        // ICertificatePolicy.CheckValidationResult
-                        _request = request;
+               {
+                       // this constructor permit access to the WebRequest to call
+                       // ICertificatePolicy.CheckValidationResult
+                        _request = request;
                        _status = 0;
                        if (buffer != null)
                                InputBuffer.Write (buffer, 0, buffer.Length);
-                        // also saved from reflection
-                        base.CheckCertRevocationStatus = ServicePointManager.CheckCertificateRevocationList;
+                       // also saved from reflection
+                       base.CheckCertRevocationStatus = ServicePointManager.CheckCertificateRevocationList;
 
                        ClientCertSelection += delegate (X509CertificateCollection clientCerts, X509Certificate serverCertificate,
                                string targetHost, X509CertificateCollection serverRequestedCertificates) {
@@ -66,7 +66,7 @@ namespace Mono.Security.Protocol.Tls {
                                X509Certificate2 cert = (certificate as X509Certificate2);
                                return (cert == null) ? null : cert.PrivateKey;
                        };
-               }
+               }
 
                public bool TrustFailure {
                        get { 
@@ -81,7 +81,7 @@ namespace Mono.Security.Protocol.Tls {
                }
 
                internal override bool RaiseServerCertificateValidation (X509Certificate certificate, int[] certificateErrors)
-                {
+               {
                        bool failed = (certificateErrors.Length > 0);
                        // only one problem can be reported by this interface
                        _status = ((failed) ? certificateErrors [0] : 0);
@@ -117,5 +117,5 @@ namespace Mono.Security.Protocol.Tls {
                        }
                        return failed;
                }
-        }
+       }
 }
index 1b9f5e4c68c44afc180dc04dc13448f58b390fde..b79728dcc2b8e14a3a394e533273e85d0a1b4db5 100644 (file)
@@ -77,6 +77,9 @@ namespace Mono.Security.Protocol.Tls
 
                public override void SetHashAlgorithm(string strName)
                {
+#if INSIDE_SYSTEM
+                       hash = new Mono.Security.Cryptography.MD5SHA1 ();
+#else
                        switch (strName)
                        {
                                case "MD5SHA1":
@@ -87,6 +90,7 @@ namespace Mono.Security.Protocol.Tls
                                        this.hash = HashAlgorithm.Create(strName);
                                        break;
                        }
+#endif
                }
 
                public override void SetKey(AsymmetricAlgorithm key)
index f2e168c47fcf192a7382f4af9e403d4db56a34e9..5d0e75ae4e0bfa9ebb70e709fd162e61613cdd00 100644 (file)
@@ -74,6 +74,9 @@ namespace Mono.Security.Protocol.Tls
 
                public override void SetHashAlgorithm(string strName)
                {
+#if INSIDE_SYSTEM
+                       hash = new Mono.Security.Cryptography.MD5SHA1 ();
+#else
                        switch (strName)
                        {
                                case "MD5SHA1":
@@ -84,6 +87,7 @@ namespace Mono.Security.Protocol.Tls
                                        this.hash = HashAlgorithm.Create(strName);
                                        break;
                        }
+#endif
                }
 
                public override void SetKey(AsymmetricAlgorithm key)
index 730a8074696c228e402f0ba53d30399c1db13a55..07f5c49a38afe6666ce9b2b7c3a5df4df904c208 100644 (file)
@@ -29,7 +29,12 @@ namespace Mono.Security.Protocol.Tls
        // Information about compression methods allowed by TLS
        // can be found in:
        //      draft-ietf-tls-compression-05.txt (http://www.ietf.org/internet-drafts/draft-ietf-tls-compression-05.txt)
-       public enum SecurityCompressionType
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       enum SecurityCompressionType
        {
                None = 0,
                Zlib = 1
index a914afc13771cf4733451b9a3b82dbaf3b26ddf3..d0693e89d7884bdba24ece65de4444983f1404e8 100644 (file)
@@ -27,8 +27,13 @@ using System;
 namespace Mono.Security.Protocol.Tls
 {
        [Flags]
+#if INSIDE_SYSTEM
+       internal
+#else
        [Serializable]
-       public enum SecurityProtocolType
+       public
+#endif
+       enum SecurityProtocolType
        {
                Default = -1073741824,
                Ssl2    = 12,
index 14540520be2aa531b01fdee6be30f2fb09acf066..ae9b9d56c19eac4c0b480923814b07768ad39b4f 100644 (file)
@@ -74,7 +74,7 @@ namespace Mono.Security.Protocol.Tls
 
                public override byte[] ComputeServerRecordMAC(ContentType contentType, byte[] fragment)
                {
-                       HashAlgorithm   hash    = HashAlgorithm.Create(this.HashAlgorithmName);
+                       HashAlgorithm hash = CreateHashAlgorithm ();
 
                        byte[] smac = this.Context.Read.ServerWriteMAC;
                        hash.TransformBlock (smac, 0, smac.Length, smac, 0);
@@ -107,7 +107,7 @@ namespace Mono.Security.Protocol.Tls
 
                public override byte[] ComputeClientRecordMAC(ContentType contentType, byte[] fragment)
                {
-                       HashAlgorithm   hash    = HashAlgorithm.Create(this.HashAlgorithmName);
+                       HashAlgorithm hash = CreateHashAlgorithm ();
 
                        byte[] cmac = this.Context.Current.ClientWriteMAC;
                        hash.TransformBlock (cmac, 0, cmac.Length, cmac, 0);
index a50679c058b9cbed5cdc48e172b567f759dd572a..4bcc5b9f7f87d242cff58866177f933d8f0603e7 100644 (file)
@@ -37,11 +37,21 @@ namespace Mono.Security.Protocol.Tls
 {
        #region Delegates
 
-       public delegate bool CertificateValidationCallback(
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       delegate bool CertificateValidationCallback(
                X509Certificate certificate, 
                int[]                   certificateErrors);
 
-       public class ValidationResult {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class ValidationResult {
                bool trusted;
                bool user_denied;
                int error_code;
@@ -66,22 +76,41 @@ namespace Mono.Security.Protocol.Tls
                }
        }
 
+#if INSIDE_SYSTEM
+       internal
+#else
        public
+#endif
        delegate ValidationResult CertificateValidationCallback2 (Mono.Security.X509.X509CertificateCollection collection);
 
-       public delegate X509Certificate CertificateSelectionCallback(
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       delegate X509Certificate CertificateSelectionCallback(
                X509CertificateCollection       clientCertificates, 
                X509Certificate                         serverCertificate, 
                string                                          targetHost, 
                X509CertificateCollection       serverRequestedCertificates);
 
-       public delegate AsymmetricAlgorithm PrivateKeySelectionCallback(
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       delegate AsymmetricAlgorithm PrivateKeySelectionCallback(
                X509Certificate certificate, 
                string                  targetHost);
 
        #endregion
 
-       public class SslClientStream : SslStreamBase
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class SslClientStream : SslStreamBase
        {
                #region Internal Events
                
index fba03390993686e42cafa6c282e1e793ba59f60f..2a670b40d5158b9b178ea99408fbb80041cdf280 100644 (file)
@@ -47,8 +47,8 @@ namespace Mono.Security.Protocol.Tls
                public SslHandshakeHash(byte[] secret)
                {
                        // Create md5 and sha1 hashes
-                       this.md5 = HashAlgorithm.Create("MD5");
-                       this.sha = HashAlgorithm.Create("SHA1");
+                       this.md5 = MD5.Create ();
+                       this.sha = SHA1.Create ();
                        
                        // Set HashSizeValue
                        this.HashSizeValue = md5.HashSize + sha.HashSize;
index 2a9d7623223f71458dbb9f885d730fc640f27d8d..02cfccfe9527543c3d73adc455080a231acee2e4 100644 (file)
@@ -34,7 +34,12 @@ using Mono.Security.Protocol.Tls.Handshake;
 
 namespace Mono.Security.Protocol.Tls
 {
-       public class SslServerStream : SslStreamBase
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class SslServerStream : SslStreamBase
        {
                #region Internal Events
                
index 24833d14d2ebc28cd4a427f29ca328fa292b53a6..7462702d9a421a34c64d5c5ff717c429fd35c133 100644 (file)
@@ -33,7 +33,12 @@ using System.Threading;
 
 namespace Mono.Security.Protocol.Tls
 {
-       public abstract class SslStreamBase: Stream, IDisposable
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       abstract class SslStreamBase: Stream, IDisposable
        {
                private delegate void AsyncHandshakeDelegate(InternalAsyncResult asyncResult, bool fromWrite);
                
index c42a63343ffd9307fcebad252fd39ffa861e0932..fb6f940a1ecbc9f4355bf11602c330229ed75bda 100644 (file)
@@ -46,7 +46,12 @@ namespace Mono.Security.X509.Extensions {
         * KeyIdentifier ::= OCTET STRING
         */
 
-       public class AuthorityKeyIdentifierExtension : X509Extension {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class AuthorityKeyIdentifierExtension : X509Extension {
 
                private byte[] aki;
 
index 46bdaa81d25dbebf03b6549b902da1ca15585d2b..888f3a622b351af7411590ef5faf08e52e07642b 100644 (file)
@@ -44,7 +44,11 @@ namespace Mono.Security.X509.Extensions {
         * KeyPurposeId ::= OBJECT IDENTIFIER
         */
 
-       public 
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
        class ExtendedKeyUsageExtension : X509Extension {
 
                private ArrayList keyPurpose;
index d7dd0c1930f8ee26f0dfb3dc621729d44bc340d5..3cf55305aabb9e3f29f4c87ba5874cadcdd42fbb 100644 (file)
@@ -45,7 +45,11 @@ namespace Mono.Security.X509.Extensions {
        // c.   2.16.840.1.113730.1.1 - Netscape certificate type
        //      http://www.alvestrand.no/objectid/2.16.840.1.113730.1.1.html
 
-       public 
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
        class NetscapeCertTypeExtension : X509Extension {
 
                /*
index ef927bceb7ae6745c2463630a57c8372e1ae07ea..23d12c5ab09ae2dc33301144fb454437cf7d69da 100644 (file)
@@ -68,7 +68,11 @@ namespace Mono.Security.X509.Extensions {
         */
 
        // TODO: Directories not supported
-       public 
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
        class SubjectAltNameExtension : X509Extension {
 
                private GeneralNames _names;
index f7df6f6d3d95919e783cdf004c6011fecf1ee7ab..a73d2726014a1d21b2cfd49eba9a2107dcc78dcb 100644 (file)
@@ -7,6 +7,8 @@
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 //
 
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -32,7 +34,12 @@ using System;
 
 namespace Mono.Security.X509 {
 
-       public interface ITrustAnchors
+#if INSIDE_CORLIB
+       internal
+#else
+       public
+#endif
+       interface ITrustAnchors
        {
                X509CertificateCollection Anchors { get; }
        }
index 5ecce72b8db96d41dbc1aaa51cdfd990a99cb69f..62ed9c7a3fc404104b19f30d9802fdc053eaf14c 100644 (file)
@@ -2,10 +2,11 @@
 // PKCS12.cs: PKCS 12 - Personal Information Exchange Syntax
 //
 // Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004,2005,2006 Novell Inc. (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Key derivation translated from Bouncy Castle JCE (http://www.bouncycastle.org/)
 // See bouncycastle.txt for license.
@@ -184,7 +185,7 @@ namespace Mono.Security.X509 {
 
                        private byte[] Derive (byte[] diversifier, int n) 
                        {
-                               HashAlgorithm digest = HashAlgorithm.Create (_hashName);
+                               HashAlgorithm digest = PKCS1.CreateFromName (_hashName);
                                int u = (digest.HashSize >> 3); // div 8
                                int v = 64;
                                byte[] dKey = new byte [n];
@@ -265,7 +266,7 @@ namespace Mono.Security.X509 {
                        }
                }
 
-               static private int recommendedIterationCount = 2000;
+               const int recommendedIterationCount = 2000;
 
                //private int _version;
                private byte[] _password;
@@ -649,7 +650,29 @@ namespace Mono.Security.X509 {
                                        throw new NotSupportedException ("unknown oid " + algorithm);
                        }
 
-                       SymmetricAlgorithm sa = SymmetricAlgorithm.Create (algorithm);
+                       SymmetricAlgorithm sa = null;
+#if INSIDE_CORLIB && FULL_AOT_RUNTIME
+                       // we do not want CryptoConfig to bring the whole crypto stack
+                       // in particular Rijndael which is not supported by CommonCrypto
+                       switch (algorithm) {
+                       case "DES":
+                               sa = DES.Create ();
+                               break;
+                       case "RC2":
+                               sa = RC2.Create ();
+                               break;
+                       case "TripleDES":
+                               sa = TripleDES.Create ();
+                               break;
+                       case "RC4":
+                               sa = RC4.Create ();
+                               break;
+                       default:
+                               throw new NotSupportedException (algorithm);
+                       }
+#else
+                       sa = SymmetricAlgorithm.Create (algorithm);
+#endif
                        sa.Key = pd.DeriveKey (keyLength);
                        // IV required only for block ciphers (not stream ciphers)
                        if (ivLength > 0) {
index b5c4e94b2c5428ccc0678094386fafc486cb51d3..daa5a5841ff8f37190ef584e49543e7c648768af 100644 (file)
@@ -2,9 +2,10 @@
 // X509CRL.cs: Handles X.509 certificates revocation lists.
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // Copyright (C) 2004,2006 Novell Inc. (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -32,6 +33,7 @@ using System.Globalization;
 using System.IO;
 using System.Security.Cryptography;
 
+using Mono.Security.Cryptography;
 using Mono.Security.X509.Extensions;
 
 namespace Mono.Security.X509 {
@@ -58,9 +60,7 @@ namespace Mono.Security.X509 {
         *      crlExtensions           [0] Extensions OPTIONAL }
         *              -- if present, MUST be v2
         */
-#if INSIDE_CORLIB
-       internal
-#else
+#if !INSIDE_CORLIB
        public 
 #endif
        class X509Crl {
@@ -218,8 +218,8 @@ namespace Mono.Security.X509 {
                                if (hash_value == null) {
                                        ASN1 encodedCRL = new ASN1 (encoded);
                                        byte[] toBeSigned = encodedCRL [0].GetBytes ();
-                                       HashAlgorithm ha = HashAlgorithm.Create (GetHashName ());
-                                       hash_value = ha.ComputeHash (toBeSigned);
+                                       using (var ha = PKCS1.CreateFromOid (signatureOID))
+                                               hash_value = ha.ComputeHash (toBeSigned);
                                }
                                return hash_value;
                        }
@@ -349,26 +349,6 @@ namespace Mono.Security.X509 {
                        }
                }
 
-               private string GetHashName ()
-               {
-                       switch (signatureOID) {
-                       // MD2 with RSA encryption 
-                       case "1.2.840.113549.1.1.2":
-                               // maybe someone installed MD2 ?
-                               return "MD2";
-                       // MD5 with RSA encryption 
-                       case "1.2.840.113549.1.1.4":
-                               return "MD5";
-                       // SHA-1 with DSA
-                       case "1.2.840.10040.4.3":
-                       // SHA-1 with RSA Encryption 
-                       case "1.2.840.113549.1.1.5":
-                               return "SHA1";
-                       default:
-                               throw new CryptographicException ("Unsupported hash algorithm: " + signatureOID);
-                       }
-               }
-
                internal bool VerifySignature (DSA dsa) 
                {
                        if (signatureOID != "1.2.840.10040.4.3")
@@ -397,7 +377,7 @@ namespace Mono.Security.X509 {
                internal bool VerifySignature (RSA rsa) 
                {
                        RSAPKCS1SignatureDeformatter v = new RSAPKCS1SignatureDeformatter (rsa);
-                       v.SetHashAlgorithm (GetHashName ());
+                       v.SetHashAlgorithm (PKCS1.HashNameFromOid (signatureOID));
                        return v.VerifySignature (Hash, signature);
                }
 
index 76ca22f457c3278c8057235e6bf443cdbc3b5987..11be419681b1abe55aa502fe916dd7aab511351a 100644 (file)
@@ -2,10 +2,11 @@
 // X509Certificates.cs: Handles X.509 certificates.
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -33,6 +34,7 @@ using System.Security.Cryptography;
 using SSCX = System.Security.Cryptography.X509Certificates;
 using System.Security.Permissions;
 using System.Text;
+using Mono.Security.Cryptography;
 
 namespace Mono.Security.X509 {
 
@@ -285,48 +287,14 @@ namespace Mono.Security.X509 {
                public byte[] Hash {
                        get {
                                if (certhash == null) {
-                                       HashAlgorithm hash = null;
-                                       switch (m_signaturealgo) {
-                                               case "1.2.840.113549.1.1.2":    // MD2 with RSA encryption 
-                                                       // maybe someone installed MD2 ?
-#if INSIDE_CORLIB
-                                                       hash = HashAlgorithm.Create ("MD2");
-#else
-                                                       hash = Mono.Security.Cryptography.MD2.Create ();
-#endif
-                                                       break;
-                                               case "1.2.840.113549.1.1.3":    // MD4 with RSA encryption 
-                                                       // maybe someone installed MD4 ?
-#if INSIDE_CORLIB
-                                                       hash = HashAlgorithm.Create ("MD4");
-#else
-                                                       hash = Mono.Security.Cryptography.MD4.Create ();
-#endif
-                                                       break;
-                                               case "1.2.840.113549.1.1.4":    // MD5 with RSA encryption 
-                                                       hash = MD5.Create ();
-                                                       break;
-                                               case "1.2.840.113549.1.1.5":    // SHA-1 with RSA Encryption 
-                                               case "1.3.14.3.2.29":           // SHA1 with RSA signature 
-                                               case "1.2.840.10040.4.3":       // SHA1-1 with DSA
-                                                       hash = SHA1.Create ();
-                                                       break;
-                                               case "1.2.840.113549.1.1.11":   // SHA-256 with RSA Encryption
-                                                       hash = SHA256.Create ();
-                                                       break;
-                                               case "1.2.840.113549.1.1.12":   // SHA-384 with RSA Encryption
-                                                       hash = SHA384.Create ();
-                                                       break;
-                                               case "1.2.840.113549.1.1.13":   // SHA-512 with RSA Encryption
-                                                       hash = SHA512.Create ();
-                                                       break;
-                                               default:
-                                                       return null;
-                                       }
                                        if ((decoder == null) || (decoder.Count < 1))
                                                return null;
+                                       string algo = PKCS1.HashNameFromOid (m_signaturealgo, false);
+                                       if (algo == null)
+                                               return null;
                                        byte[] toBeSigned = decoder [0].GetBytes ();
-                                       certhash = hash.ComputeHash (toBeSigned, 0, toBeSigned.Length);
+                                       using (var hash = PKCS1.CreateFromName (algo))
+                                               certhash = hash.ComputeHash (toBeSigned, 0, toBeSigned.Length);
                                }
                                return (byte[]) certhash.Clone ();
                        }
@@ -421,6 +389,7 @@ namespace Mono.Security.X509 {
                                        case "1.2.840.113549.1.1.11":   // SHA-256 with RSA Encryption
                                        case "1.2.840.113549.1.1.12":   // SHA-384 with RSA Encryption
                                        case "1.2.840.113549.1.1.13":   // SHA-512 with RSA Encryption
+                                       case "1.3.36.3.3.1.2":                  // RIPEMD160 with RSA Encryption
                                                return (byte[]) signature.Clone ();
 
                                        case "1.2.840.10040.4.3":       // SHA-1 with DSA
@@ -512,47 +481,11 @@ namespace Mono.Security.X509 {
 
                internal bool VerifySignature (RSA rsa) 
                {
+                       // SHA1-1 with DSA
+                       if (m_signaturealgo == "1.2.840.10040.4.3")
+                               return false;
                        RSAPKCS1SignatureDeformatter v = new RSAPKCS1SignatureDeformatter (rsa);
-                       switch (m_signaturealgo) {
-                               // MD2 with RSA encryption 
-                               case "1.2.840.113549.1.1.2":
-                                       // maybe someone installed MD2 ?
-                                       v.SetHashAlgorithm ("MD2");
-                                       break;
-                               // MD4 with RSA encryption 
-                               case "1.2.840.113549.1.1.3":
-                                       // maybe someone installed MD4 ?
-                                       v.SetHashAlgorithm ("MD4");
-                                       break;
-                               // MD5 with RSA encryption 
-                               case "1.2.840.113549.1.1.4":
-                                       v.SetHashAlgorithm ("MD5");
-                                       break;
-                               // SHA-1 with RSA Encryption 
-                               case "1.2.840.113549.1.1.5":
-                               case "1.3.14.3.2.29":
-                                       v.SetHashAlgorithm ("SHA1");
-                                       break;
-                               // SHA-256 with RSA Encryption 
-                               case "1.2.840.113549.1.1.11":
-                                       v.SetHashAlgorithm ("SHA256");
-                                       break;
-                               // SHA-384 with RSA Encryption 
-                               case "1.2.840.113549.1.1.12":
-                                       v.SetHashAlgorithm ("SHA384");
-                                       break;
-                               // SHA-512 with RSA Encryption 
-                               case "1.2.840.113549.1.1.13":
-                                       v.SetHashAlgorithm ("SHA512");
-                                       break;
-                               // SHA1-1 with DSA
-                               case "1.2.840.10040.4.3":
-                                       // invalid but this can occurs when building a bad chain - e.g. missing certificate(s)
-                                       // we return false so we can report the "chain" error to the user (not an exception)
-                                       return false;
-                               default:
-                                       throw new CryptographicException ("Unsupported hash algorithm: " + m_signaturealgo);
-                       }
+                       v.SetHashAlgorithm (PKCS1.HashNameFromOid (m_signaturealgo));
                        return v.VerifySignature (this.Hash, this.Signature);
                }
 
@@ -627,4 +560,4 @@ namespace Mono.Security.X509 {
                        return Convert.FromBase64String (base64);
                }
        }
-}
+}
\ No newline at end of file
index a2101f57c09fb0cece85a77fb4ee9bce3d26b663..3f37b750eb25c9b34b07dee319ff8e76ad7e319d 100644 (file)
@@ -459,7 +459,7 @@ namespace Mono.Security {
 
 #if INSIDE_CORLIB
                static object lockObject = new object ();
-               static bool initialized = false;
+               static bool initialized;
 
                // We don't want a dependency on StrongNameManager in Mono.Security.dll
                static public bool IsAssemblyStrongnamed (string assemblyName) 
index e2c9e9fac9cec1fe1e0755742900c508b4a4923c..110311adf1a75f5fff38284e6ed1027cd07dbc20 100644 (file)
@@ -23,7 +23,7 @@ namespace MonoTests.Mono.Security.Cryptography {
        //      http://wp.netscape.com/eng/ssl3/traces/trc-clnt-ex.html
 
        [TestFixture]
-       public class ARC4ManagedTest : Assertion {
+       public class ARC4ManagedTest {
 
                // because most crypto stuff works with byte[] buffers
                static public void AssertEquals (string msg, byte[] array1, byte[] array2) 
@@ -31,9 +31,9 @@ namespace MonoTests.Mono.Security.Cryptography {
                        if ((array1 == null) && (array2 == null))
                                return;
                        if (array1 == null)
-                               Fail (msg + " -> First array is NULL");
+                               Assert.Fail (msg + " -> First array is NULL");
                        if (array2 == null)
-                               Fail (msg + " -> Second array is NULL");
+                               Assert.Fail (msg + " -> Second array is NULL");
                
                        bool a = (array1.Length == array2.Length);
                        if (a) {
@@ -46,7 +46,7 @@ namespace MonoTests.Mono.Security.Cryptography {
                        }
                        msg += " -> Expected " + BitConverter.ToString (array1, 0);
                        msg += " is different than " + BitConverter.ToString (array2, 0);
-                       Assert (msg, a);
+                       Assert.IsTrue (a, msg);
                }
 
                // from ref. a
@@ -205,10 +205,10 @@ namespace MonoTests.Mono.Security.Cryptography {
                public void DefaultProperties () 
                {
                        ARC4Managed rc4 = new ARC4Managed ();
-                       Assert ("CanReuseTransform", !rc4.CanReuseTransform);
-                       Assert ("CanTransformMultipleBlocks", rc4.CanTransformMultipleBlocks);
-                       AssertEquals ("InputBlockSize", 1, rc4.InputBlockSize);
-                       AssertEquals ("OutputBlockSize", 1, rc4.OutputBlockSize);
+                       Assert.IsFalse (rc4.CanReuseTransform, "CanReuseTransform");
+                       Assert.IsTrue (rc4.CanTransformMultipleBlocks, "CanTransformMultipleBlocks");
+                       Assert.AreEqual (1, rc4.InputBlockSize, "InputBlockSize");
+                       Assert.AreEqual (1, rc4.OutputBlockSize, "OutputBlockSize");
                }
                
                [Test]
@@ -217,9 +217,9 @@ namespace MonoTests.Mono.Security.Cryptography {
                        ARC4Managed rc4 = new ARC4Managed ();
                        rc4.GenerateKey ();
                        rc4.GenerateIV ();
-                       AssertEquals ("Key.Length", 16, rc4.Key.Length);
-                       AssertEquals ("KeySize", 128, rc4.KeySize);
-                       AssertEquals ("IV.Length", 0, rc4.IV.Length);
+                       Assert.AreEqual (16, rc4.Key.Length, "Key.Length");
+                       Assert.AreEqual (128, rc4.KeySize, "KeySize");
+                       Assert.AreEqual (0, rc4.IV.Length, "IV.Length");
                }
 
                [Test]
index 5f6469abf1d425bf94becb0a2faef27f753fbde5..01462d5adc9024c9d8b22aacd2a4609357b1f4d8 100644 (file)
@@ -32,7 +32,7 @@ namespace MonoTests.Mono.Security.Cryptography {
                {
                        // try creating ourselve using Create
                        HashAlgorithm h = MD2.Create ("MD2Managed");
-                       Assert ("MD2Managed", (h is MD2Managed));
+                       Assert.IsTrue ((h is MD2Managed), "MD2Managed");
                }
        }
-}
\ No newline at end of file
+}
index b7307cc9b1b50a7291ab0de542c2cc10b458ca5c..6fb7abdceff978b5bb059528e3b1bfb714d37e64 100644 (file)
@@ -24,10 +24,20 @@ namespace MonoTests.Mono.Security.Cryptography {
 
        // MD2 is a abstract class - so ALL of the test included here wont be tested
        // on the abstract class but should be tested in ALL its descendants.
-       public abstract class MD2Test : Assertion {
+       public abstract class MD2Test {
 
                protected MD2 hash;
 
+               static void Fail (string msg)
+               {
+                       Assert.Fail (msg);
+               }
+
+               static void AssertEquals (string msg, int expected, int actual)
+               {
+                       Assert.AreEqual (expected, actual, msg);
+               }
+
                // because most crypto stuff works with byte[] buffers
                static public void AssertEquals (string msg, byte[] array1, byte[] array2) 
                {
@@ -51,7 +61,7 @@ namespace MonoTests.Mono.Security.Cryptography {
                                msg += " -> Expected " + BitConverter.ToString (array1, 0);
                                msg += " is different than " + BitConverter.ToString (array2, 0);
                        }
-                       Assert (msg, a);
+                       Assert.IsTrue (a, msg);
                }
 
                // MD2 ("") = 8350e5a3e24c153df2275c9f80692773
@@ -232,7 +242,7 @@ namespace MonoTests.Mono.Security.Cryptography {
                {
                        // create the default implementation
                        HashAlgorithm h = MD2.Create ();
-                       Assert ("MD2Managed", (h is MD2Managed));
+                       Assert.IsTrue ((h is MD2Managed), "MD2Managed");
                        // Note: will fail is default is changed in machine.config
                }
        }
index ff0bcfb8056a5562390e81d644e223c03b443127..32de43caeb3e962e92643f5ad3ad1ebb47c0a7c5 100644 (file)
@@ -32,7 +32,7 @@ namespace MonoTests.Mono.Security.Cryptography {
                {
                        // try creating ourselve using Create
                        HashAlgorithm h = MD4.Create ("MD4Managed");
-                       Assert ("MD4Managed", (h is MD4Managed));
+                       Assert.IsTrue ((h is MD4Managed), "MD4Managed");
                }
        }
-}
\ No newline at end of file
+}
index dd36e8fa412911d19cf3d67b5ff43b8fbb1b8a68..c14738f6d081936f18371c2c1840e1f575fae704 100644 (file)
@@ -24,19 +24,24 @@ namespace MonoTests.Mono.Security.Cryptography {
 
        // MD4 is a abstract class - so ALL of the test included here wont be tested
        // on the abstract class but should be tested in ALL its descendants.
-       public abstract class MD4Test : Assertion {
+       public abstract class MD4Test {
 
                protected MD4 hash;
 
+               static void AssertEquals (string msg, int expected, int actual)
+               {
+                       Assert.AreEqual (expected, actual, msg);
+               }
+
                // because most crypto stuff works with byte[] buffers
                static public void AssertEquals (string msg, byte[] array1, byte[] array2) 
                {
                        if ((array1 == null) && (array2 == null))
                                return;
                        if (array1 == null)
-                               Assertion.Fail (msg + " -> First array is NULL");
+                               Assert.Fail (msg + " -> First array is NULL");
                        if (array2 == null)
-                               Assertion.Fail (msg + " -> Second array is NULL");
+                               Assert.Fail (msg + " -> Second array is NULL");
 
                        bool a = (array1.Length == array2.Length);
                        if (a) {
@@ -51,7 +56,7 @@ namespace MonoTests.Mono.Security.Cryptography {
                                msg += " -> Expected " + BitConverter.ToString (array1, 0);
                                msg += " is different than " + BitConverter.ToString (array2, 0);
                        }
-                       Assertion.Assert (msg, a);
+                       Assert.IsTrue (a, msg);
                }
 
                // MD4 ("") = 31d6cfe0d16ae931b73c59d7e0c089c0
@@ -232,7 +237,7 @@ namespace MonoTests.Mono.Security.Cryptography {
                {
                        // create the default implementation
                        HashAlgorithm h = MD4.Create ();
-                       Assert ("MD4Managed", (h is MD4Managed));
+                       Assert.IsTrue ((h is MD4Managed), "MD4Managed");
                        // Note: will fail is default is changed in machine.config
                }
        }
index caa8cf9b22fd4bd1023a8a16331173cf150cd18a..0b3a102a8e40db51a77ca28fc8e4afc30f8e5954 100644 (file)
@@ -225,5 +225,143 @@ namespace MonoTests.Mono.Security.X509 {
                        Assert.AreEqual (630663336000000000, cert.ValidFrom.Ticks, "ValidFrom");
                        Assert.AreEqual (633912839400000000, cert.ValidUntil.Ticks, "ValidUntil");
                }
+
+               byte[] sha256_data = {
+                       0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x42, 0x45, 0x47, 0x49, 0x4E, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 
+                       0x54, 0x45, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x0D, 0x0A, 0x4D, 0x49, 0x49, 0x43, 0x78, 0x44, 0x43, 0x43, 0x41, 0x61, 0x79, 
+                       0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x44, 0x41, 0x4B, 0x37, 0x6C, 0x4D, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 
+                       0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x4D, 0x43, 0x34, 0x78, 0x43, 0x7A, 0x41, 
+                       0x4A, 0x42, 0x67, 0x4E, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6B, 0x4E, 0x61, 0x0D, 0x0A, 0x4D, 0x51, 0x34, 0x77, 0x44, 
+                       0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4B, 0x45, 0x77, 0x56, 0x53, 0x5A, 0x57, 0x4A, 0x6C, 0x65, 0x44, 0x45, 0x50, 0x4D, 
+                       0x41, 0x30, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4D, 0x47, 0x56, 0x47, 0x56, 0x7A, 0x64, 0x45, 0x4E, 0x42, 0x4D, 
+                       0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x7A, 0x4D, 0x44, 0x55, 0x78, 0x4F, 0x54, 0x45, 0x79, 0x4E, 0x44, 0x63, 0x31, 0x0D, 
+                       0x0A, 0x4E, 0x31, 0x6F, 0x58, 0x44, 0x54, 0x51, 0x35, 0x4D, 0x54, 0x49, 0x7A, 0x4D, 0x54, 0x41, 0x77, 0x4D, 0x44, 0x41, 
+                       0x77, 0x4D, 0x46, 0x6F, 0x77, 0x4F, 0x6A, 0x45, 0x57, 0x4D, 0x42, 0x51, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4D, 
+                       0x4E, 0x55, 0x6D, 0x56, 0x69, 0x5A, 0x58, 0x67, 0x67, 0x55, 0x33, 0x56, 0x77, 0x63, 0x47, 0x39, 0x79, 0x64, 0x44, 0x45, 
+                       0x67, 0x4D, 0x42, 0x34, 0x47, 0x0D, 0x0A, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x4A, 0x41, 
+                       0x52, 0x59, 0x52, 0x63, 0x33, 0x56, 0x77, 0x63, 0x47, 0x39, 0x79, 0x64, 0x45, 0x42, 0x79, 0x5A, 0x57, 0x4A, 0x6C, 0x65, 
+                       0x43, 0x35, 0x75, 0x5A, 0x58, 0x51, 0x77, 0x67, 0x5A, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4A, 0x4B, 0x6F, 0x5A, 0x49, 0x68, 
+                       0x76, 0x63, 0x4E, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x0D, 0x0A, 0x67, 0x59, 0x30, 0x41, 0x4D, 0x49, 0x47, 
+                       0x4A, 0x41, 0x6F, 0x47, 0x42, 0x41, 0x4B, 0x7A, 0x36, 0x49, 0x37, 0x49, 0x59, 0x4E, 0x4A, 0x4C, 0x44, 0x43, 0x36, 0x42, 
+                       0x79, 0x44, 0x32, 0x75, 0x59, 0x36, 0x69, 0x55, 0x61, 0x34, 0x30, 0x54, 0x34, 0x37, 0x34, 0x44, 0x41, 0x65, 0x59, 0x55, 
+                       0x49, 0x31, 0x37, 0x43, 0x79, 0x39, 0x55, 0x6B, 0x77, 0x62, 0x4E, 0x4D, 0x2B, 0x6B, 0x39, 0x62, 0x57, 0x0D, 0x0A, 0x68, 
+                       0x75, 0x46, 0x62, 0x65, 0x63, 0x56, 0x42, 0x6D, 0x43, 0x37, 0x42, 0x79, 0x31, 0x6C, 0x48, 0x65, 0x2B, 0x79, 0x41, 0x59, 
+                       0x59, 0x78, 0x78, 0x74, 0x47, 0x50, 0x7A, 0x41, 0x48, 0x58, 0x50, 0x76, 0x68, 0x4A, 0x4D, 0x56, 0x50, 0x41, 0x2F, 0x37, 
+                       0x4C, 0x36, 0x41, 0x4B, 0x58, 0x6D, 0x6A, 0x71, 0x69, 0x77, 0x78, 0x7A, 0x47, 0x51, 0x79, 0x30, 0x73, 0x59, 0x67, 0x2F, 
+                       0x6A, 0x36, 0x79, 0x0D, 0x0A, 0x6F, 0x58, 0x39, 0x36, 0x39, 0x52, 0x53, 0x30, 0x49, 0x58, 0x33, 0x75, 0x33, 0x64, 0x31, 
+                       0x72, 0x35, 0x61, 0x6F, 0x44, 0x76, 0x36, 0x4A, 0x58, 0x53, 0x69, 0x53, 0x73, 0x75, 0x67, 0x78, 0x56, 0x47, 0x69, 0x65, 
+                       0x54, 0x53, 0x2F, 0x50, 0x71, 0x55, 0x6E, 0x6E, 0x76, 0x72, 0x49, 0x74, 0x59, 0x78, 0x6F, 0x64, 0x4F, 0x31, 0x58, 0x79, 
+                       0x76, 0x41, 0x67, 0x4D, 0x42, 0x41, 0x41, 0x47, 0x6A, 0x0D, 0x0A, 0x59, 0x7A, 0x42, 0x68, 0x4D, 0x41, 0x34, 0x47, 0x41, 
+                       0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2F, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x45, 0x38, 0x44, 0x41, 0x64, 0x42, 
+                       0x67, 0x4E, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x66, 0x75, 0x52, 0x51, 0x78, 0x4E, 0x75, 0x59, 0x71, 
+                       0x77, 0x73, 0x38, 0x56, 0x48, 0x7A, 0x4A, 0x6D, 0x4A, 0x50, 0x6F, 0x39, 0x41, 0x45, 0x6F, 0x0D, 0x0A, 0x6F, 0x50, 0x77, 
+                       0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6C, 0x42, 0x41, 0x67, 0x77, 0x42, 0x67, 0x59, 0x45, 0x56, 0x52, 0x30, 
+                       0x6C, 0x41, 0x44, 0x41, 0x66, 0x42, 0x67, 0x4E, 0x56, 0x48, 0x53, 0x4D, 0x45, 0x47, 0x44, 0x41, 0x57, 0x67, 0x42, 0x51, 
+                       0x39, 0x62, 0x39, 0x74, 0x4C, 0x54, 0x34, 0x4C, 0x78, 0x30, 0x78, 0x43, 0x76, 0x39, 0x48, 0x69, 0x7A, 0x74, 0x50, 0x59, 
+                       0x39, 0x0D, 0x0A, 0x4B, 0x79, 0x39, 0x71, 0x6C, 0x7A, 0x41, 0x4E, 0x42, 0x67, 0x6B, 0x71, 0x68, 0x6B, 0x69, 0x47, 0x39, 
+                       0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4F, 0x43, 0x41, 0x51, 0x45, 0x41, 0x41, 0x59, 0x62, 0x69, 0x46, 
+                       0x41, 0x6D, 0x33, 0x6E, 0x71, 0x61, 0x6F, 0x4A, 0x51, 0x45, 0x41, 0x6D, 0x37, 0x7A, 0x34, 0x33, 0x71, 0x6E, 0x71, 0x41, 
+                       0x6B, 0x41, 0x6E, 0x35, 0x30, 0x76, 0x6F, 0x0D, 0x0A, 0x75, 0x4F, 0x39, 0x4E, 0x57, 0x61, 0x33, 0x53, 0x43, 0x45, 0x38, 
+                       0x78, 0x6B, 0x4C, 0x55, 0x2B, 0x31, 0x50, 0x62, 0x67, 0x76, 0x6F, 0x48, 0x4E, 0x50, 0x54, 0x6A, 0x36, 0x4D, 0x51, 0x30, 
+                       0x59, 0x37, 0x6F, 0x63, 0x2B, 0x6D, 0x42, 0x75, 0x55, 0x6B, 0x5A, 0x52, 0x63, 0x4B, 0x33, 0x51, 0x4C, 0x69, 0x58, 0x6C, 
+                       0x62, 0x34, 0x66, 0x6E, 0x7A, 0x39, 0x59, 0x55, 0x36, 0x66, 0x69, 0x7A, 0x4A, 0x0D, 0x0A, 0x79, 0x6A, 0x33, 0x76, 0x33, 
+                       0x42, 0x34, 0x6B, 0x4A, 0x33, 0x5A, 0x62, 0x42, 0x6D, 0x38, 0x48, 0x4E, 0x34, 0x78, 0x79, 0x44, 0x62, 0x66, 0x6E, 0x77, 
+                       0x6C, 0x67, 0x42, 0x55, 0x65, 0x6F, 0x68, 0x78, 0x61, 0x36, 0x2B, 0x50, 0x78, 0x67, 0x2F, 0x37, 0x72, 0x39, 0x34, 0x78, 
+                       0x54, 0x4A, 0x72, 0x35, 0x46, 0x30, 0x43, 0x68, 0x2F, 0x41, 0x68, 0x2F, 0x6D, 0x59, 0x37, 0x66, 0x4B, 0x6C, 0x50, 0x0D, 
+                       0x0A, 0x46, 0x46, 0x35, 0x47, 0x68, 0x4A, 0x2B, 0x62, 0x34, 0x76, 0x55, 0x6F, 0x36, 0x47, 0x74, 0x6E, 0x79, 0x6F, 0x4F, 
+                       0x33, 0x58, 0x57, 0x4C, 0x45, 0x34, 0x4D, 0x38, 0x4B, 0x67, 0x68, 0x6C, 0x39, 0x78, 0x48, 0x4E, 0x32, 0x52, 0x76, 0x57, 
+                       0x47, 0x45, 0x39, 0x4B, 0x6F, 0x31, 0x4B, 0x31, 0x55, 0x62, 0x42, 0x62, 0x53, 0x4A, 0x51, 0x4D, 0x76, 0x66, 0x65, 0x49, 
+                       0x65, 0x52, 0x38, 0x32, 0x71, 0x0D, 0x0A, 0x69, 0x66, 0x37, 0x49, 0x30, 0x56, 0x2B, 0x77, 0x59, 0x70, 0x57, 0x61, 0x4B, 
+                       0x79, 0x5A, 0x68, 0x33, 0x6C, 0x50, 0x4C, 0x34, 0x33, 0x67, 0x35, 0x4C, 0x4F, 0x42, 0x34, 0x75, 0x51, 0x6C, 0x68, 0x76, 
+                       0x76, 0x50, 0x4D, 0x5A, 0x63, 0x43, 0x48, 0x36, 0x4F, 0x37, 0x37, 0x37, 0x6E, 0x2F, 0x33, 0x4C, 0x2B, 0x54, 0x6C, 0x32, 
+                       0x2F, 0x41, 0x56, 0x31, 0x73, 0x7A, 0x73, 0x67, 0x53, 0x6B, 0x54, 0x0D, 0x0A, 0x47, 0x79, 0x74, 0x54, 0x75, 0x4B, 0x6A, 
+                       0x51, 0x35, 0x6E, 0x50, 0x53, 0x58, 0x76, 0x65, 0x44, 0x39, 0x76, 0x4B, 0x42, 0x50, 0x2F, 0x58, 0x4C, 0x73, 0x54, 0x4D, 
+                       0x75, 0x69, 0x6A, 0x48, 0x4C, 0x43, 0x68, 0x57, 0x55, 0x69, 0x33, 0x74, 0x4B, 0x7A, 0x49, 0x48, 0x6F, 0x66, 0x4B, 0x6F, 
+                       0x58, 0x62, 0x42, 0x43, 0x35, 0x37, 0x77, 0x3D, 0x3D, 0x0D, 0x0A, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x45, 0x4E, 0x44, 0x20, 
+                       0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x0D, 0x0A, };
+
+               [Test]
+               public void Sha256 ()
+               {
+                       X509Certificate c = new X509Certificate (sha256_data);
+                       Assert.AreEqual ("1.2.840.113549.1.1.11", c.SignatureAlgorithm, "SignatureAlgorithm");
+                       Assert.IsFalse (c.VerifySignature (c.RSA), "hash mapping");
+               }
+
+               byte[] sha512_data = {
+                       0x30, 0x82, 0x02, 0x13, 0x30, 0x82, 0x01, 0x9D, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0xF8, 0x92, 0xDA, 0x88, 
+                       0xAF, 0x25, 0x83, 0xA3, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0D, 0x05, 0x00, 0x30, 
+                       0x45, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 
+                       0x55, 0x04, 0x08, 0x0C, 0x0A, 0x53, 0x6F, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1F, 0x06, 
+                       0x03, 0x55, 0x04, 0x0A, 0x0C, 0x18, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69, 
+                       0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4C, 0x74, 0x64, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x33, 0x30, 0x35, 0x31, 0x37, 
+                       0x30, 0x37, 0x35, 0x30, 0x33, 0x34, 0x5A, 0x17, 0x0D, 0x34, 0x30, 0x31, 0x30, 0x30, 0x32, 0x30, 0x37, 0x35, 0x30, 0x33, 
+                       0x34, 0x5A, 0x30, 0x45, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 
+                       0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x0A, 0x53, 0x6F, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x21, 
+                       0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x18, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65, 0x74, 0x20, 0x57, 0x69, 
+                       0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4C, 0x74, 0x64, 0x30, 0x7C, 0x30, 0x0D, 0x06, 0x09, 0x2A, 
+                       0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x6B, 0x00, 0x30, 0x68, 0x02, 0x61, 0x00, 0xE2, 0xE0, 
+                       0x43, 0xDF, 0x6A, 0x4F, 0xB5, 0x30, 0xED, 0xE3, 0x70, 0xC4, 0xC3, 0xEE, 0x97, 0x3B, 0x6A, 0xF2, 0x37, 0xEF, 0xF8, 0x52, 
+                       0x7D, 0x38, 0xED, 0x08, 0x38, 0xA0, 0x35, 0x1B, 0x24, 0x45, 0xC4, 0x05, 0x37, 0x6B, 0xDD, 0xFA, 0x7F, 0x82, 0x73, 0x45, 
+                       0xB2, 0x2F, 0x0E, 0x13, 0x56, 0x37, 0xEC, 0x4F, 0x2A, 0x71, 0x1F, 0xA5, 0x3A, 0xD9, 0xEF, 0xB2, 0x1E, 0xD1, 0x65, 0xFB, 
+                       0xAF, 0xBE, 0x7F, 0xEE, 0xE5, 0x9F, 0x4D, 0x7F, 0x24, 0xE8, 0x09, 0xE8, 0x35, 0x44, 0x13, 0xEA, 0x91, 0xFB, 0x6D, 0x2E, 
+                       0xBE, 0x11, 0x77, 0xB0, 0x7D, 0xC3, 0x31, 0xC5, 0xE1, 0xF2, 0x03, 0xE9, 0x66, 0x65, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 
+                       0x50, 0x30, 0x4E, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x92, 0xEB, 0xAA, 0x6A, 0x08, 0xEC, 
+                       0x6A, 0x5B, 0xAF, 0x4F, 0xBF, 0x92, 0x27, 0x52, 0x52, 0x76, 0xF6, 0x60, 0x1F, 0x30, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 
+                       0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x92, 0xEB, 0xAA, 0x6A, 0x08, 0xEC, 0x6A, 0x5B, 0xAF, 0x4F, 0xBF, 0x92, 0x27, 
+                       0x52, 0x52, 0x76, 0xF6, 0x60, 0x1F, 0x30, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 
+                       0xFF, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0D, 0x05, 0x00, 0x03, 0x61, 0x00, 0x3A, 
+                       0x76, 0x0E, 0xF1, 0x00, 0x80, 0x72, 0x7E, 0x81, 0x32, 0xE5, 0xE2, 0xF9, 0xB8, 0xE1, 0xA5, 0xB4, 0x63, 0x11, 0x21, 0x24, 
+                       0x3B, 0xE7, 0xFF, 0x64, 0x41, 0x6E, 0xD3, 0xA3, 0x4B, 0xE2, 0xF8, 0xDB, 0xDA, 0xB8, 0x21, 0xB3, 0x28, 0xA0, 0xA9, 0xE2, 
+                       0xF8, 0x73, 0x51, 0x0D, 0xF7, 0x3A, 0xDF, 0x41, 0x2E, 0x27, 0x4A, 0xE5, 0x5F, 0xE3, 0xB8, 0x1E, 0x75, 0x57, 0xF1, 0x73, 
+                       0xE2, 0xF8, 0xE1, 0xAE, 0xD8, 0x33, 0x99, 0x71, 0x9E, 0xF0, 0x2C, 0xBF, 0x55, 0x90, 0x4E, 0xA1, 0x3F, 0x68, 0xAD, 0x75, 
+                       0x94, 0xCC, 0x45, 0x08, 0xB3, 0xDC, 0x96, 0x9D, 0x20, 0x97, 0x72, 0xB8, 0x7A, 0x9C, 0x5E, };
+
+               [Test]
+               public void Sha512 ()
+               {
+                       X509Certificate c = new X509Certificate (sha512_data);
+                       Assert.AreEqual ("1.2.840.113549.1.1.13", c.SignatureAlgorithm, "SignatureAlgorithm");
+                       Assert.IsTrue (c.VerifySignature (c.RSA), "hash mapping");
+                       Assert.IsTrue (c.IsSelfSigned, "IsSelfSigned");
+               }
+
+               byte[] ripemd160_data = {
+                       0x30, 0x82, 0x02, 0x0D, 0x30, 0x82, 0x01, 0x9A, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0xA6, 0x2A, 0xB2, 0x97, 
+                       0x8A, 0xC3, 0x34, 0x87, 0x30, 0x0A, 0x06, 0x06, 0x2B, 0x24, 0x03, 0x03, 0x01, 0x02, 0x05, 0x00, 0x30, 0x45, 0x31, 0x0B, 
+                       0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 
+                       0x0C, 0x0A, 0x53, 0x6F, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 
+                       0x0A, 0x0C, 0x18, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 
+                       0x50, 0x74, 0x79, 0x20, 0x4C, 0x74, 0x64, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x33, 0x30, 0x35, 0x31, 0x37, 0x30, 0x37, 0x35, 
+                       0x31, 0x31, 0x38, 0x5A, 0x17, 0x0D, 0x34, 0x30, 0x31, 0x30, 0x30, 0x32, 0x30, 0x37, 0x35, 0x31, 0x31, 0x38, 0x5A, 0x30, 
+                       0x45, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 
+                       0x55, 0x04, 0x08, 0x0C, 0x0A, 0x53, 0x6F, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1F, 0x06, 
+                       0x03, 0x55, 0x04, 0x0A, 0x0C, 0x18, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69, 
+                       0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4C, 0x74, 0x64, 0x30, 0x7C, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 
+                       0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x6B, 0x00, 0x30, 0x68, 0x02, 0x61, 0x00, 0x94, 0x15, 0x1A, 0xE1, 0x30, 
+                       0xE7, 0x9E, 0x1E, 0x4B, 0x13, 0x82, 0x67, 0x67, 0xD5, 0x09, 0x64, 0xFC, 0x36, 0x07, 0xCE, 0x38, 0xAE, 0x02, 0xFA, 0xBC, 
+                       0x98, 0xEE, 0xCF, 0x08, 0xD5, 0x61, 0x33, 0x6A, 0xFF, 0x4E, 0x0E, 0x8A, 0xB9, 0xE6, 0x9B, 0x6F, 0xB8, 0xB0, 0x6B, 0xF0, 
+                       0x4D, 0x2F, 0xE7, 0x2A, 0x45, 0xA3, 0x47, 0xA1, 0xD5, 0x03, 0x2C, 0x6C, 0x00, 0x56, 0xD3, 0x1C, 0xEC, 0xD9, 0x99, 0xD8, 
+                       0x1B, 0xFF, 0x03, 0xF1, 0x74, 0xAC, 0xDA, 0x20, 0xD0, 0x71, 0x58, 0xD7, 0x27, 0xC0, 0x17, 0x99, 0x43, 0x09, 0xFD, 0x54, 
+                       0x03, 0x44, 0x4D, 0x51, 0x99, 0x09, 0x9A, 0xBB, 0x22, 0x53, 0x87, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x50, 0x30, 0x4E, 
+                       0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x21, 0x56, 0x19, 0x05, 0x70, 0xE8, 0x5A, 0xFC, 0xE3, 
+                       0xA1, 0xDD, 0x0D, 0x1C, 0x8B, 0x9C, 0xDF, 0x39, 0x33, 0xA2, 0x76, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 
+                       0x30, 0x16, 0x80, 0x14, 0x21, 0x56, 0x19, 0x05, 0x70, 0xE8, 0x5A, 0xFC, 0xE3, 0xA1, 0xDD, 0x0D, 0x1C, 0x8B, 0x9C, 0xDF, 
+                       0x39, 0x33, 0xA2, 0x76, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x0A, 
+                       0x06, 0x06, 0x2B, 0x24, 0x03, 0x03, 0x01, 0x02, 0x05, 0x00, 0x03, 0x61, 0x00, 0x93, 0x45, 0x7E, 0xA6, 0xEB, 0x8D, 0xE0, 
+                       0x36, 0xF1, 0x0D, 0xC5, 0xC0, 0x61, 0xA3, 0xF6, 0x36, 0xDB, 0x71, 0xA8, 0x05, 0x8A, 0x8B, 0x12, 0xAD, 0xAC, 0xA5, 0x36, 
+                       0xE8, 0xBE, 0x18, 0xF1, 0x8D, 0x8E, 0x4C, 0x8C, 0x10, 0x47, 0xE8, 0xD2, 0x89, 0x2E, 0x8B, 0x43, 0xC2, 0xB3, 0x70, 0x5F, 
+                       0xBF, 0x0E, 0x69, 0x71, 0x5A, 0x86, 0x83, 0xC6, 0x34, 0x48, 0x1E, 0x10, 0x9B, 0xBD, 0xE8, 0x47, 0x66, 0xF6, 0x97, 0x4C, 
+                       0x07, 0x5D, 0x64, 0x1D, 0xE6, 0x8E, 0xA9, 0xB7, 0x10, 0xF4, 0xC1, 0xC9, 0xD4, 0x5C, 0x3B, 0xB6, 0x82, 0x92, 0x2D, 0xEF, 
+                       0xE7, 0x42, 0x3B, 0x09, 0xBF, 0x53, 0x89, 0xBD, 0x0B, };
+
+               [Test]
+               public void RipeMd160 ()
+               {
+                       X509Certificate c = new X509Certificate (ripemd160_data);
+                       Assert.AreEqual ("1.3.36.3.3.1.2", c.SignatureAlgorithm, "SignatureAlgorithm");
+                       Assert.IsTrue (c.VerifySignature (c.RSA), "hash mapping");
+                       Assert.IsTrue (c.IsSelfSigned, "IsSelfSigned");
+               }
        }
 }
index 31a4be6ce489838de95913ef5150c59285fe78ac..4546273d10ebbdad8801f06f16fea580ed403d64 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{50B79A68-50A0-468A-9259-228F03B072D4}</ProjectGuid>\r
+    <ProjectGuid>{938FE3D0-38DE-43E8-8AD9-4D3F04368E16}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Simd-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index edeafc749c2122f6593f553bbb90ddf9e0ee7606..a924e8808002186a861e0b584adb699566a92dc0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{121299CA-0AD6-401A-A500-1577D486248F}</ProjectGuid>\r
+    <ProjectGuid>{5294B094-97BB-4749-89AB-68C871501032}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Simd-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index df28f44c024b376c670c2d86f02e2fe10600b28d..ca0616204db0e01ee9d3a040e926d4210842743e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E845A9A8-0491-4D18-B5B5-32DE93E21328}</ProjectGuid>\r
+    <ProjectGuid>{05D8BAFE-64FA-4F09-AC7B-86627DFF136F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Simd-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 343436e642dce1ff0d8c273261ce5147df099fb0..a68b1e186bdad5b915f86bad777079ab5b38c527 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B07864FC-B565-482A-909C-70031209BE39}</ProjectGuid>\r
+    <ProjectGuid>{F97AEB50-B4E8-4E42-A007-C5963689257D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Tasklets-net_2_0</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5b03340adfe9e7417bc2168f988eb6fb5943466b..e162f5ee0f09d7975da6bc180e831f85be408fad 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{861566D6-DDA2-440A-806F-1A860CAAE88D}</ProjectGuid>\r
+    <ProjectGuid>{C7FF3EC5-5F00-4464-BD63-437CD5483DDD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Tasklets-net_4_0</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2d19f6816283507a368da10695e9e00082cac07b..491b3a8a85e26756dbba8407a7f4a382d1b9075e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{203E023D-A06D-49EA-9316-612A16FA5C88}</ProjectGuid>\r
+    <ProjectGuid>{33307B59-24A6-4100-9E0C-F65613FE95AA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Tasklets-net_4_5</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2bfbdb749608dc8db70d812c5ecc11c7e4351ede..f6ffaaf6be48f7b55f2ede38e86900d431c6d404 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4E0AB773-6BB3-4866-881F-B362A573C8DD}</ProjectGuid>\r
+    <ProjectGuid>{D0D311A2-725A-4413-B7FA-EF61E2A4C0C0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Web-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0.csproj">\r
-      <Project>{F30781EC-D410-4A00-BD91-0971E37DE140}</Project>\r
+      <Project>{4796A339-E32F-476E-9D7D-69C771CD618C}</Project>\r
       <Name>System.Web\System.Web-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 00831ca310e183aaaf560144105281218b5f76cb..96e5c4b3043e970db9b59d533628c2f57d1981d6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2C2BA4BC-CDE5-46D0-A225-9E84EE42997F}</ProjectGuid>\r
+    <ProjectGuid>{AA8CFAB1-B81C-434E-AA60-C2373B27EB56}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Web-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0.csproj">\r
-      <Project>{39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}</Project>\r
+      <Project>{BAC369E3-E94E-4E5A-97FF-0CF696D07814}</Project>\r
       <Name>System.Web\System.Web-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e87e0c41307d1fb7fd1c64b685f0b32e1cc15dc5..3b34c0656f52a1cf4779140b688c7fe5414146f3 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ABD934FF-6F3A-40CB-85DB-98316F708226}</ProjectGuid>\r
+    <ProjectGuid>{82BD591A-1377-41BD-9B2C-1037574BB935}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Web-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5.csproj">\r
-      <Project>{3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}</Project>\r
+      <Project>{0B03F192-EC11-49E5-A7F6-E97C0D559E51}</Project>\r
       <Name>System.Web\System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5ed2239e869cad5a80b554fb5cc6478f89f52621..49f2f359c0eb15b7d176ebf8fafa47971cba743d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B65F061B-3980-40B9-B832-4D220388B453}</ProjectGuid>\r
+    <ProjectGuid>{9ABD3BD7-C90F-4137-BC85-A3EEE10473BA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.WebBrowser-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 923add6131281d5e6bfb9f690389647105c74432..07d14e3ae9928981bb1e34b0fe9445b89bfc587f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{48C35A26-B26A-4084-9A9A-7729D345B3B5}</ProjectGuid>\r
+    <ProjectGuid>{A0DF2D35-BA97-4CAB-90C6-1C4463186C3E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.WebBrowser-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f3824c60d041aff789da948fb98c0fd5c9308e32..9fdafe9e6062632a5006c635066a644bb29af998 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4F8F4004-E655-463C-8A0F-4F7C99AB85B5}</ProjectGuid>\r
+    <ProjectGuid>{7D94F9AC-9F7A-4639-9E89-85083D77101D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.WebBrowser-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bf7f29f44a3f4d27909afbe3288441705bab39dc..2c390895e7da0163b1208891537d73327897bc03 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{05944BB8-A3C6-43A6-AD2B-155E8DB855FA}</ProjectGuid>\r
+    <ProjectGuid>{A397D71E-CB6B-4442-91BC-4F1C801584C1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Moonlight.Build.Tasks-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0.csproj">\r
-      <Project>{13F89BAD-94E5-46B5-B8E1-0F1EDB272352}</Project>\r
+      <Project>{E8E948B8-6DCF-48F2-A6BC-04309AED8740}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0.csproj">\r
-      <Project>{A77A0E38-0000-4E4D-BEA6-704BC3677151}</Project>\r
+      <Project>{4AC4EDEE-4895-4CF9-84DF-9419E6980F38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_2_0.csproj">\r
-      <Project>{CF0D30D5-B824-4D4E-B1B2-173524B53942}</Project>\r
+      <Project>{3DD52713-DB38-4D0D-8692-650B8821B047}</Project>\r
       <Name>Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_2_0.csproj">\r
-      <Project>{A1B1ACC9-95F7-4752-A2A6-CF0214F886BB}</Project>\r
+      <Project>{065A843F-C16B-4F2E-9560-69440147EDB2}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c81f26360355dd6878da75f57bbca34f5fd9830f..7469cf39158df63d2f9ea85450dde74ecb25e2dc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6EDA6CED-12A9-4A15-8B03-FF1ABB38B9A1}</ProjectGuid>\r
+    <ProjectGuid>{8B495C4E-D5D2-4642-9481-F761DDD47ABD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Moonlight.Build.Tasks-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0.csproj">\r
-      <Project>{4A0D8AB4-6A16-484D-9133-D14368A2E39A}</Project>\r
+      <Project>{9B0AC297-CB85-43C1-8C18-12997CF1B78D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0.csproj">\r
-      <Project>{38B0128C-C232-4274-BDD0-F90ED189A80F}</Project>\r
+      <Project>{A20F004B-16AC-44DE-A14E-2C2B5E9F72BE}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_0.csproj">\r
-      <Project>{4E865E96-F3C9-4218-8FE7-AC0F9D1E7453}</Project>\r
+      <Project>{0F2C25D7-DF2E-4F4B-85D8-7EFC4DCD3B0C}</Project>\r
       <Name>Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_0.csproj">\r
-      <Project>{D769AAF9-10ED-4C32-8D87-8D0648E2D001}</Project>\r
+      <Project>{2DE2CFB0-3166-41D9-B0B5-EFBE309DD7B7}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7a565e52bc5c379a3667d0a957221492ffb4ca95..66141f048f6176e187ac2fb638a92025066bbf77 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{29C03463-6071-4FB2-83D2-B5497B35E090}</ProjectGuid>\r
+    <ProjectGuid>{C1BA77F3-938B-4598-BD75-5E9578827F47}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Moonlight.Build.Tasks-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}</Project>\r
+      <Project>{0DA63190-E6E1-41C5-B683-A54FADBE61CB}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{B20027FF-D5D8-4AD3-8F5F-535556916D36}</Project>\r
+      <Project>{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_5.csproj">\r
-      <Project>{09B16AF2-4480-4F66-995B-6FEFD9C67546}</Project>\r
+      <Project>{B0995E00-BF37-4B8A-8229-285C060E5957}</Project>\r
       <Name>Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5.csproj">\r
-      <Project>{C41C7048-6B86-43DB-9F5E-BED7A92CD56E}</Project>\r
+      <Project>{039AD56A-E91B-4803-8328-287F70B61D14}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 48e8c452273a3d830bdcfb3681e262951e2a9748..fba6fd125259544c122d40ec4b82fa498f8ca062 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EE7F7F21-5B86-4D33-A935-858260FD774D}</ProjectGuid>\r
+    <ProjectGuid>{FCCE71BD-4C5C-4616-8B3E-ED306528BE16}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612</NoWarn>\r
     <OutputPath>bin\Debug\Novell.Directory.Ldap-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7a40ea3cbb8a4b3f02a9a77eaaff7adf5b65ecb6..888a367dd02d2b15e38abd045ffec958b476a5ca 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{07D6E719-7A7E-4CA2-9F0B-CADF9A190FE4}</ProjectGuid>\r
+    <ProjectGuid>{7738B238-7C12-401A-8CCF-D44B4BD8ABDE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612</NoWarn>\r
     <OutputPath>bin\Debug\Novell.Directory.Ldap-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9dfb7747d8cd331761199a25569731508c350cf0..a33999798c6079f65bba87a4cfb81ba64154e927 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{74565932-18F5-4BEC-AAB6-98230A4B662C}</ProjectGuid>\r
+    <ProjectGuid>{BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612</NoWarn>\r
     <OutputPath>bin\Debug\Novell.Directory.Ldap-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1d7d8b2bb1b73f14edb1dfadff0764da41703bb3..bad9affb1ae8ac3a0497cb425b388a2daae81030 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1698631C-4038-416B-8402-F149E4CA8390}</ProjectGuid>\r
+    <ProjectGuid>{21A45B26-5A14-478D-B412-90985F127F78}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Novell.Directory.Ldap-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_2_0.csproj">\r
-      <Project>{EE7F7F21-5B86-4D33-A935-858260FD774D}</Project>\r
+      <Project>{FCCE71BD-4C5C-4616-8B3E-ED306528BE16}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5fb3fdf9267532ab511800936e34d49c2e5de165..3e558913d1fdc36e9340f3f3b847f49a4fe14a7f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{56E820BC-C87E-4215-910F-3A96EEF1D2CF}</ProjectGuid>\r
+    <ProjectGuid>{EFB8D7EE-3CB6-4361-8A75-B2AD70A2995D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Novell.Directory.Ldap-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_0.csproj">\r
-      <Project>{07D6E719-7A7E-4CA2-9F0B-CADF9A190FE4}</Project>\r
+      <Project>{7738B238-7C12-401A-8CCF-D44B4BD8ABDE}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7e3adbaf92273f475a695b25de123d7135470cd7..05fdcc21156aaa7644e58aa0a10e6689e754c554 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2B9B735A-BF18-4FB6-B576-8ED42BA8E1FF}</ProjectGuid>\r
+    <ProjectGuid>{91FFC577-CF58-43EB-BD06-D0233F588A5B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Novell.Directory.Ldap-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5.csproj">\r
-      <Project>{74565932-18F5-4BEC-AAB6-98230A4B662C}</Project>\r
+      <Project>{BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6ea7a1315e2f29d6032f6a1311e7b1001a34573d..3612db718e26953d7368f954841c7f16ff2b47bf 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EA478331-ECA5-450D-9D53-DCBE3B722037}</ProjectGuid>\r
+    <ProjectGuid>{6C1E3010-EECC-4740-81A4-A1650E170D4D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Npgsql-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9f1638190e765d70aefc8f9c3c7ca0f13ede5a3f..45c66e9d1753b07d4a5a38d3ae4df7a5ee002c9c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F448F610-13BF-41D7-978D-FF123FFBC396}</ProjectGuid>\r
+    <ProjectGuid>{ED67E9C3-42DD-4A7E-A789-D384B5E85E76}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Npgsql-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0c28dea17199f5cc80421e9a40378758dc7f1921..7d5bd41fd09765acf85a560811d6da9b757a6c25 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3404EE44-7E95-4619-93B8-C7B82ADEB8F5}</ProjectGuid>\r
+    <ProjectGuid>{0E57DA52-274B-4E8D-A60D-3B87910B70E0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Npgsql-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b459db2d3db89ed2366714d42d4cf8a027ef9835..11c50c63c993b803d972763146929f039cdf9270 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{57208C94-2020-477C-BA78-517FC3E74DB9}</ProjectGuid>\r
+    <ProjectGuid>{AD9FA00D-142B-4398-B36A-7FD09582E88D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Npgsql-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Npgsql\Npgsql-net_2_0.csproj">\r
-      <Project>{EA478331-ECA5-450D-9D53-DCBE3B722037}</Project>\r
+      <Project>{6C1E3010-EECC-4740-81A4-A1650E170D4D}</Project>\r
       <Name>Npgsql\Npgsql-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 95dad20149438329be75f9be4c9b21fe2bdb4a24..bed7c60d7979387c733c13127968d4073255da85 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EA465ACB-8023-4A2C-9349-CCD0DEEBC716}</ProjectGuid>\r
+    <ProjectGuid>{9E733C54-4CEA-4CC5-8EAE-76267380AEE4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Npgsql-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Npgsql\Npgsql-net_4_0.csproj">\r
-      <Project>{F448F610-13BF-41D7-978D-FF123FFBC396}</Project>\r
+      <Project>{ED67E9C3-42DD-4A7E-A789-D384B5E85E76}</Project>\r
       <Name>Npgsql\Npgsql-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 36887bfa9587ab183ac5e15c73cb2e63022f83e8..b5aae8cd76a6a8433bbbc972e815a58759da5b8a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{76A8C207-5DFF-435F-9F47-9C6E201AF8F4}</ProjectGuid>\r
+    <ProjectGuid>{993AE1D3-7F06-482F-A90A-A06FD59B3FF5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Npgsql-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Npgsql\Npgsql-net_4_5.csproj">\r
-      <Project>{3404EE44-7E95-4619-93B8-C7B82ADEB8F5}</Project>\r
+      <Project>{0E57DA52-274B-4E8D-A60D-3B87910B70E0}</Project>\r
       <Name>Npgsql\Npgsql-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4e04a2fac8d94a56ba8991118162b6ddbe6624f8..670ffffa9cdffe819a3f97d9fa1665ee9ab6428a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{578CCA29-53D7-41DA-B8FA-742E0C16DE93}</ProjectGuid>\r
+    <ProjectGuid>{BAFF3523-AB42-4BE7-899F-D570297835C1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\OpenSystem.C-net_2_0</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c6642430a1fa4e5a5f5cbf9c6bfaf28415b86b25..2e69ae4ddefc27dba118c82cf0c3294307909047 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D2C7674E-7904-469A-B8E8-12C67C492DB5}</ProjectGuid>\r
+    <ProjectGuid>{79583C8A-BE9B-49A4-9EDC-99DB2E11DE03}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\OpenSystem.C-net_4_0</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 99baa688a9ca69a63f30e1f65b602c82afa6ce86..a93ae0dbaf893fded4ddc57e3fd0138d8ce7a8fc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{10F0CA9C-5F98-4091-BF3B-DDD0F6FF44DC}</ProjectGuid>\r
+    <ProjectGuid>{2E94B160-349C-4138-8922-208B3B8175F2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\OpenSystem.C-net_4_5</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 73fa11ec0a71b681a92257067616963266140b61..e86566ed5662eb49ad622b8a8bc0c040e863ee19 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2EFCEF5E-31D9-4682-93A4-3120381F78C3}</ProjectGuid>\r
+    <ProjectGuid>{55B6390F-2EFA-4701-8DDA-AC6E998B3EFC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,618</NoWarn>\r
     <OutputPath>bin\Debug\PEAPI-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9725472f00257442e1dc9b66be3ce1a6ce19cd4e..fde995b507cd46742fedc19f0a83da48e8b29b25 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FF42F209-B66E-488A-A9B1-9E77AA6D74D8}</ProjectGuid>\r
+    <ProjectGuid>{88B9D6C2-5A74-49A2-A984-EC1A97802B5A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,618</NoWarn>\r
     <OutputPath>bin\Debug\PEAPI-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5daf1575434f3e29539cc0f21828bab8dec69a84..52fad8c30f285db692740f6375797873e6ad97c4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{67C79BA1-2CF2-40B7-B362-1DCAF156AA25}</ProjectGuid>\r
+    <ProjectGuid>{465CE08E-9F33-4EA5-9AAB-A03DEBFAF671}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,618</NoWarn>\r
     <OutputPath>bin\Debug\PEAPI-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 20d144246d5209562f47ee4d4404fbecc008fb95..51138e60f56fd8ed20df1274e0a4f97ff6b5536a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{85F98B4E-9323-4D5C-A65F-5B30EA4E7424}</ProjectGuid>\r
+    <ProjectGuid>{8AD2E2D6-9C65-4DE7-AD7A-6AAA07754C9C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\RabbitMQ.Client-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a5d0672cfc12140f5ec44d70ccd69a62959a362a..272641fb9151fa924f6709c0334a64d74abefd56 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3FB3AB58-B04E-452B-A0D9-EC8FBBEF2031}</ProjectGuid>\r
+    <ProjectGuid>{2820B526-5B96-4ABE-AF3D-E8651046A46C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\RabbitMQ.Client-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1bc024cfe1ac81ec25a7ea8ae761fd187b549618..d8391c80391a6829d6079cd87fa51c423118c01a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E4F02B09-E5BF-4DF9-9D55-58396821B80D}</ProjectGuid>\r
+    <ProjectGuid>{8BA87CBE-8098-4512-B008-A347E1EA281C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\RabbitMQ.Client-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 455b7ce27fe2a73d32f17f7ff56bbb4e56dac9d1..b6ac428a3c86c489c18e30e91a549bd7fb9e782c 100644 (file)
@@ -1,3 +1,4 @@
+#if !MONOTOUCH
 // -----------------------------------------------------------------------
 // Copyright (c) Microsoft Corporation.  All rights reserved.
 // -----------------------------------------------------------------------
@@ -331,3 +332,4 @@ namespace Microsoft.Internal
         }
     }
 }
+#endif
index b9f2c41fef0d9819310557bd1eaf6e816e437027..9199e0ede3e7e668208f52f954843912789600dd 100644 (file)
@@ -1,4 +1,5 @@
-// -----------------------------------------------------------------------
+#if !MONOTOUCH
+// -----------------------------------------------------------------------
 // Copyright (c) Microsoft Corporation.  All rights reserved.
 // -----------------------------------------------------------------------
 using System;
@@ -379,3 +380,4 @@ namespace System.ComponentModel.Composition
 
     }
 }
+#endif
index 6c660fcf658a2abc0ea5efbec9f5b8b8caef9570..3ac6fd6859822b45da8ef5d88711090308aa2eb1 100644 (file)
@@ -32,6 +32,7 @@ namespace System.ComponentModel.Composition
                 {
                     if(!metadataViewType.IsAttributeDefined<MetadataViewImplementationAttribute>())
                     {
+#if !MONOTOUCH
                         try
                         {
                             proxyType = MetadataViewGenerator.GenerateView(metadataViewType);
@@ -40,6 +41,9 @@ namespace System.ComponentModel.Composition
                         {
                             throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, Strings.NotSupportedInterfaceMetadataView, metadataViewType.FullName), ex);
                         }
+#else
+                       throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, Strings.NotSupportedInterfaceMetadataView, metadataViewType.FullName));
+#endif
                     }
                     else
                     {
@@ -83,6 +87,7 @@ namespace System.ComponentModel.Composition
                 }
                 catch (TargetInvocationException ex)
                 {
+#if !MONOTOUCH
                     //Unwrap known failures that we want to present as CompositionContractMismatchException
                     if(metadataViewType.IsInterface)
                     {
@@ -107,6 +112,7 @@ namespace System.ComponentModel.Composition
                                 ex.InnerException.Data[MetadataViewGenerator.MetadataItemTargetType]), ex);
                         }
                     }
+#endif
                     throw;
                 }
             }
index bbca52c8e5089df68a91e2fb3efbe60aef7ce86c..e40202c5d0e1bb5495d9d0303453b1006b5f5c3d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FFA6DC64-24C2-4D34-AAEC-BB03CB8A83C7}</ProjectGuid>\r
+    <ProjectGuid>{FD3CE1C9-E645-48F4-9815-A6359813AF4D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.Composition-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bf41871cd75b7485a51821a3fe50dc9f08289f42..db0e052aa6016aeb730318a178867c788268c659 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F0F5AB89-1FCB-400C-B20F-90063C272C28}</ProjectGuid>\r
+    <ProjectGuid>{5FA3AE70-F92C-4D4E-80A6-2B7BD55655BB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,414</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.Composition-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 596e8355590b9fdcc34f06d749f0290dd4e9bc1a..3461026556269a30ae8e2ee151ace7862c0c0e69 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B38D3949-9075-4450-8101-0D26C6B2CC4D}</ProjectGuid>\r
+    <ProjectGuid>{E3E1BF16-7D12-4CCD-85D0-B542F0AC3442}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.DataAnnotations-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2c78193aaffbe453e640a23f7a78cedd6f22156b..678cf20f61ae325d2612c5cdba935f26bd87964b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{420D9BE2-8DD3-41E6-A115-6BFFA4B6EB04}</ProjectGuid>\r
+    <ProjectGuid>{F74623F8-5517-4015-8F3A-EB04E926E720}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.DataAnnotations-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 797c459447a0d2dcc9321648df47a53f33c213c0..7de19580bffb590cd55c995fc6c0040073792108 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</ProjectGuid>\r
+    <ProjectGuid>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.DataAnnotations-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f1bc591ac792d34505879603fb00d2eccb44c407..eaa5eedb8d6e4deae3d5e8b7dae9a4e1e7fef4c6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{90B3DE06-F8A2-44B7-8002-6065EBCEBB97}</ProjectGuid>\r
+    <ProjectGuid>{5B1EC18D-F239-4DEC-BD42-AD48356A1295}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.DataAnnotations-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0.csproj">\r
-      <Project>{B38D3949-9075-4450-8101-0D26C6B2CC4D}</Project>\r
+      <Project>{E3E1BF16-7D12-4CCD-85D0-B542F0AC3442}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index df85ee290de61de6759567671a16334395d0fff3..079dd97d85e5dadc19e2cffad40e09b5545b5ffa 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1EB186E5-DB86-458D-A10F-B54D346DDBAA}</ProjectGuid>\r
+    <ProjectGuid>{DB317627-CFF4-42AE-BDF7-769986DE9AC8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.DataAnnotations-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0.csproj">\r
-      <Project>{420D9BE2-8DD3-41E6-A115-6BFFA4B6EB04}</Project>\r
+      <Project>{F74623F8-5517-4015-8F3A-EB04E926E720}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 57599784e52727922c409d3e69f1f25357d52d8e..d4f9d3777b7f43ae82c2f6e29123a39167e82b25 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DB1D4B02-5F4D-4383-905E-82205D8F1D76}</ProjectGuid>\r
+    <ProjectGuid>{8A46F1CA-4F8B-4EE5-A5E3-AC67291311F3}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.DataAnnotations-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f1e8590928f1da13dacc15ea6306dceb8d40f29a..8a23dd8f3f901307fb56ea3ee9c86216f0e55c5d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{33DED2E2-4FCD-4070-BE3A-026D4F80D3C8}</ProjectGuid>\r
+    <ProjectGuid>{5CE6E3F2-E63D-4C2B-9CCE-6446021A1AF5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration.Install-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c200a1154f64a365d883a5f38d1d5403f6d942f0..fa3ba4ed1a5315f8ddf2792fb41ff73c6a038daf 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{878F802D-3249-41E8-8322-A32C406383C6}</ProjectGuid>\r
+    <ProjectGuid>{3C248397-71FD-4A63-B4A5-9F2A28C4D983}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration.Install-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1c55128796fb613f77b1e863e4c8f743d59ea05d..7902912315a6f17b09feedf371be17ec97d204e8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{348A36EC-8291-460B-9CC2-8CA8AD1759A2}</ProjectGuid>\r
+    <ProjectGuid>{D413E89D-CE81-4766-BBC1-AC17A3FD5C95}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration.Install-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e2b521ae113ad2337c0f64353eb239a00023965f..ba1ef86a343f2ef4270ec77798ca9253bdbe3fa4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{725170B0-51F0-46E2-A74D-F764B68553D6}</ProjectGuid>\r
+    <ProjectGuid>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-1.csproj">\r
-      <Project>{980C299E-664F-4905-B01C-19599BBE78FF}</Project>\r
+      <Project>{FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}</Project>\r
       <Name>System\System-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0.csproj">\r
-      <Project>{67A04408-CBEF-4B63-B975-29D827B0DBED}</Project>\r
+      <Project>{2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}</Project>\r
       <Name>System.XML\System.Xml-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0b2bfc71548b8fd9aa8f1e21538f74f258d260a3..cc8b549f42003d17c014e9889f2c0e3da24b2ac9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</ProjectGuid>\r
+    <ProjectGuid>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-1.csproj">\r
-      <Project>{C57BB644-EEFC-475A-AF6F-43EF29C75933}</Project>\r
+      <Project>{FCBCCC55-006E-41B2-A649-CF9A843E34BD}</Project>\r
       <Name>System\System-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0.csproj">\r
-      <Project>{18CD7C68-EF7C-4C7A-B8D6-FE9834145437}</Project>\r
+      <Project>{8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}</Project>\r
       <Name>System.XML\System.Xml-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 49de589658fa61261be3ef74f1d4c42e590310d0..5af0d031d571f4d9289ea3a83c8ab3d681193582 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</ProjectGuid>\r
+    <ProjectGuid>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-1.csproj">\r
-      <Project>{B53B8417-E392-4660-86F0-54E7B7FAD4BA}</Project>\r
+      <Project>{B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}</Project>\r
       <Name>System\System-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</Project>\r
+      <Project>{F96F7491-66DB-4291-8803-F2F165B33B55}</Project>\r
       <Name>System.XML\System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a9d2bb7062265012802f838589da4a7a8810ee03..b82d11f60fe29d58ccd8b7936059af5b39d58d70 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5CFB60F3-DD25-4621-A530-DE5ACD9FEEDB}</ProjectGuid>\r
+    <ProjectGuid>{978A3CA5-B812-4E55-BD9E-BAACA928A978}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-1.csproj">\r
-      <Project>{980C299E-664F-4905-B01C-19599BBE78FF}</Project>\r
+      <Project>{FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}</Project>\r
       <Name>System\System-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0.csproj">\r
-      <Project>{67A04408-CBEF-4B63-B975-29D827B0DBED}</Project>\r
+      <Project>{2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}</Project>\r
       <Name>System.XML\System.Xml-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e345d9091249f4f642ca095199ddd7473d785b20..f4ced553411d23a0e485d41e75a660ad86feb248 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5E353685-1B78-4BE8-B3E9-47B6CF50E550}</ProjectGuid>\r
+    <ProjectGuid>{847AAD33-F3B3-4A94-82D2-95D71872660B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-1.csproj">\r
-      <Project>{C57BB644-EEFC-475A-AF6F-43EF29C75933}</Project>\r
+      <Project>{FCBCCC55-006E-41B2-A649-CF9A843E34BD}</Project>\r
       <Name>System\System-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0.csproj">\r
-      <Project>{18CD7C68-EF7C-4C7A-B8D6-FE9834145437}</Project>\r
+      <Project>{8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}</Project>\r
       <Name>System.XML\System.Xml-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 16056f50c63a4e47ee1927afac01d051494bfce1..fa9d659a614843496e6a357af0832bd5021699c3 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5592C0B6-11CF-43FB-A673-8386BBFEA147}</ProjectGuid>\r
+    <ProjectGuid>{A1C102BA-BFA1-4242-A44D-E041A6E37161}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-1.csproj">\r
-      <Project>{B53B8417-E392-4660-86F0-54E7B7FAD4BA}</Project>\r
+      <Project>{B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}</Project>\r
       <Name>System\System-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</Project>\r
+      <Project>{F96F7491-66DB-4291-8803-F2F165B33B55}</Project>\r
       <Name>System.XML\System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1008a0ae986c214146c513f2320112e183479032..b6e3468fbda0fc284a27ee19128628a6339311e3 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.ComponentModel;
 using System.Collections.Specialized;
@@ -135,4 +134,3 @@ namespace System.Configuration {
                }
        }
 }
-#endif
index cc625da5776b066dfed73a762b741bcdf111767b..e988eb92afd6838da475c5e9c7348f439aa0c4eb 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -53,4 +52,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 5c06d51d38c53220b6cafeabb081e83caed5be71..038af330cc4f79fd32aae3594fa76e0358dbd4af 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -64,4 +63,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index f3e93f13426988277f993aa93b3a74fd96687b4d..6d26677d27cd8970ab3bcf680a8695418964da77 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System;
 using System.Reflection;
 using System.Configuration.Internal;
@@ -73,5 +71,3 @@ namespace System.Configuration
                }
        }
 }
-
-#endif
index d2ecc4ab520e4ef70b22c515f92768832abe11cc..4913c8098311d7a15561e13f973e4bea66d60cbd 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections.Specialized;
 
@@ -148,5 +147,3 @@ namespace System.Configuration {
        }
 
 }
-
-#endif
index 5959d1cd7af9f32eb2188df2b5b5843ad6206f59..52824cbd0d07c518dc2d8cb6865233ac9fb0fe35 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.Collections.Specialized;
 using System.ComponentModel;
 using System.Globalization;
@@ -63,4 +61,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index d1e192510be67eae113c7e015cd69a9217d7ccd5..977c16002b0f4d3753f185047156f07a23c7f4ae 100644 (file)
@@ -25,7 +25,7 @@
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
-#if NET_2_0
+
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -88,5 +88,3 @@ namespace System.Configuration {
                internal abstract void ResetModified (Configuration config);
        }
 }
-
-#endif
index a3fbf3810c00de18aefc66bedb998a6d5c23de88..c047cc5e172ee111575aaa5933a18398d9556f8d 100644 (file)
@@ -26,8 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 using System.Configuration.Internal;
 using System.IO;
@@ -59,4 +57,3 @@ internal class ConfigXmlTextReader : XmlTextReader, IConfigErrorInfo
        }
 }
 
-#endif
index 2da304b6c749a012957cf64f50c15331ee39427d..760371766904e216889732ba05dc9a24cc7746b3 100644 (file)
@@ -26,7 +26,7 @@
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
-#if NET_2_0
+
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -582,4 +582,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 7e75dc4df1af89c6c49433235023457644a60f52..5105d30ddb7b9d63a5ac86ace6c5fc19ad69ffd9 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 namespace System.Configuration
 {
         public enum ConfigurationAllowDefinition
@@ -37,4 +36,4 @@ namespace System.Configuration
                 Everywhere = 300
         }
 }
-#endif
+
index a7962247e9b683a4101a774296c4abcdbf6b8288..5bc5df666006caafd8990075ce9236a776a3b169 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 namespace System.Configuration
 {
        public enum ConfigurationAllowExeDefinition
@@ -37,4 +36,3 @@ namespace System.Configuration
                MachineToRoamingUser = 200
        }
 }
-#endif
index 866070f5489d26c1d8033332fabbf2c97afdf811..e9ddfd1198d1f543b3f8a0fd8f77f719105e53fb 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 
 namespace System.Configuration
@@ -71,5 +70,3 @@ namespace System.Configuration
                }
        }
 }
-
-#endif
index 9fb7171b0a60b80b46da530d4eff53386fe636c2..1570181d44fe4f87a3866b2c31abe0ecaf3ec4dd 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 
 namespace System.Configuration
@@ -51,4 +49,3 @@ namespace System.Configuration
                }
        }
 }
-#endif
index a96d1e4ad6a0aed42e8921c5dbae0c16193cdc96..a49a9679f7b4009c89ccee2613f55ad44642c88f 100644 (file)
@@ -29,7 +29,6 @@
 // Copyright (c) 2012 Xamarin Inc. (http://www.xamarin.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Xml;
 using System.Reflection;
@@ -849,4 +848,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 22bc35f1554311967ec0fd4ba8beb36f5ac07498..6e379c87b9153222c541f65ea3cacf33c3561aed 100644 (file)
@@ -31,8 +31,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.Collections;
 using System.Diagnostics;
 using System.Xml;
@@ -595,4 +593,3 @@ namespace System.Configuration
         }
 }
 
-#endif
index 4e4de9afb3c07a1b217d16471a5480026a05afcc..4768452fe279e69c868d2b2acdba3f6b781b2718 100644 (file)
@@ -28,8 +28,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        public enum ConfigurationElementCollectionType
@@ -41,5 +39,3 @@ namespace System.Configuration
        }
 
 }
-
-#endif
index 7f2a5a8fa14379878b3c64c855dd234ed394e885..ca63684d6736601a28cd36342c894177eaede9b3 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration 
 {
        public sealed class ConfigurationElementProperty
@@ -47,4 +45,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 638804aebe14fba685cbdac820a5a037c65045ff..06bfc5e5e7dff5624185fe6fd216dfac306f0787 100644 (file)
@@ -29,8 +29,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 using System.Configuration.Internal;
 using System.Globalization;
@@ -189,4 +187,3 @@ namespace System.Configuration
 #pragma warning restore
 }
 
-#endif
index f2756dce0e7c979a941a414be749ecb54263a07c..8c58cc329b38003ef5b49c6d7a3518ffc16713ab 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 
 namespace System.Configuration
@@ -56,4 +55,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index e9669003ee8704eb2c716ba51f16cfad174820a1..cc3a2dc529ba0ef3a9ac9b5313884fab27175949 100644 (file)
@@ -27,8 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.Xml;
 using System.IO;
 
@@ -118,4 +116,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 3a68ae66c3dcc56fbd73a1f3d9518129e59722cf..c59fad535e48b7e18d5920275837de116dfb7345 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.Collections;
 
 namespace System.Configuration {
@@ -92,4 +90,4 @@ namespace System.Configuration {
                }
        }
 }
-#endif
+
index d282907c208bf24009a715b4f7165d1ee7bc1bb9..651bd7650ec3c6efa46b18d157cec2eb43f09e72 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System;
 using System.Collections;
 
@@ -195,4 +193,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 7835a0b0fda924d5b8089467ca4fcf67a82402ae..28b1d6bf3d4c4477c039b8e92d5a86a5c8451a70 100644 (file)
@@ -26,7 +26,7 @@
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
-#if NET_2_0
+
 using System;
 using System.Collections;
 using System.Runtime.CompilerServices;
@@ -177,7 +177,6 @@ namespace System.Configuration {
                        }
                }
 
-               [MonoTODO]
                public static ConnectionStringSettingsCollection ConnectionStrings {
                        get {
                                ConnectionStringsSection connectionStrings = (ConnectionStringsSection) GetSection ("connectionStrings");
@@ -209,5 +208,3 @@ namespace System.Configuration {
                }
        }
 }
-
-#endif
index b32fcbbe210ad2af7345af3cc1b0b4cbb8b8ad48..01d297fbca6c2f30cf3d15e5fc9495621c2b1e4a 100644 (file)
@@ -27,8 +27,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System.Security;
 using System.Security.Permissions;
 
@@ -121,4 +119,3 @@ namespace System.Configuration {
        }
 
 }
-#endif
index c63d75b2aac599f880c1e69ab6505024d3e96c79..cd3711ffa45a4484650f194724025bf3f34b8b5a 100644 (file)
@@ -27,7 +27,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
 
 using System.Security;
 using System.Security.Permissions;
@@ -52,4 +51,3 @@ namespace System.Configuration {
 
 }
 
-#endif
index 93a2c5d1123ae447717e6a84569ddaf97a667112..ec3738812310c8e3e9649b5a33d41af3353d9dd4 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.ComponentModel;
 
@@ -177,4 +176,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 1b816f9b919304ca6e15794d6ecd7e5b43f339e2..ad993cd59634331b71538962141580be82dfe0f0 100644 (file)
@@ -27,8 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        [AttributeUsage (AttributeTargets.Property)]
@@ -82,4 +80,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 33dba87688bba8ab8648c12eeda9646a78b77993..eeb6921707cb3414a15399901927d094c40c791a 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections;
 using System.Collections.Generic;
@@ -107,4 +106,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 5f3ec80b87f4977959cce6d02f47621cf0a7af44..d13889968f144abf8cee44891645c21d3931ab78 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 namespace System.Configuration
 {
         [Flags]
@@ -38,4 +37,3 @@ namespace System.Configuration
                 IsKey = 4
         }
 }
-#endif
index 332bcd05e68e480323a4bbcdff5611582ff1dafd..452c483d18a85ddc0fc3a810031c8ea4a9c73594 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System;
 using System.ComponentModel;
 using System.Configuration;
@@ -71,5 +69,3 @@ namespace System.Configuration
                }
        }
 }
-
-#endif 
\ No newline at end of file
index a226764be90434aa55fff72ef6fd292952c4b10a..1c707f3f6520ad8a4effc1d6c04fd979b90e2ad7 100644 (file)
@@ -26,7 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 //
-#if NET_2_0
+
 using System;
 
 namespace System.Configuration 
@@ -49,4 +49,3 @@ namespace System.Configuration
                }
        }
 }
-#endif
\ No newline at end of file
index 2a8b8ef00d66bca5d321cbc07b7f76e82392bdb6..9c25122eef6013a5ac9745416ce93fc1ef73bcd2 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 //
-#if NET_2_0
+
 using System;
 
 namespace System.Configuration 
 {
        internal delegate void ConfigurationSaveEventHandler (Configuration sender, ConfigurationSaveEventArgs args);
 }
-#endif
-       
\ No newline at end of file
index 47f65000d20e36104a54a05279b086ef703b3830..2344dbd7e368f4b6f1199649cd245aad9c063d52 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 namespace System.Configuration
 {
         public enum ConfigurationSaveMode
@@ -36,4 +35,3 @@ namespace System.Configuration
                 Modified = 0
         }
 }
-#endif
index 74d7de303cf723701594ccec9488e487f3d62bb3..8a76dd6fff5a0ff29f7e323a158db89ce1b61e52 100644 (file)
@@ -29,7 +29,6 @@
 // Copyright (c) 2012 Xamarin Inc. (http://www.xamarin.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Xml;
 using System.IO;
@@ -284,4 +283,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 34848b119d9aef383322043bf19ce1ab8d5e7105..5b0f531e55d587d0fd1baeb8d20826a7bd236cc7 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -138,4 +137,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 4b212c54a499d92e7fe5a3c52b9ac1d2e420dafb..add89b5bd3f5bb673ecf4f83b3866822c205f6ae 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration
@@ -120,4 +119,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 52be097c8e75fd62693ae1f32cc4381e4be7d8c9..463868f54a7d26c42be8f93e1deefe1763c5eb79 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -132,4 +131,4 @@ namespace System.Configuration {
                }
        }
 }
-#endif
+
index 083a74d9872bc03b8a9854333a04120703ba7c6a..2e75d37e46ec2e0f0ab03d6af28b1fd9c3fd1a48 100644 (file)
@@ -25,7 +25,7 @@
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
-#if NET_2_0
+
 using System;
 
 namespace System.Configuration {
@@ -37,4 +37,3 @@ namespace System.Configuration {
                 PerUserRoamingAndLocal = 20
         }
 }
-#endif
index e8b0992a76ac8694205de2d1979fc9a1c15acf2f..49ef9f16e304b8900475d19cf96a31ddcafe15b0 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration
@@ -59,4 +58,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index c0930a98c2e39b4b3cfd6c8f100b1d9eda329458..b325ef2efc0f5a1e2f5c9282c748ca9e33ed4ddd 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration
@@ -45,4 +44,4 @@ namespace System.Configuration
                public abstract void Validate (object value);
        }
 }
-#endif
+
index eabcaa037b1557a9e7ff32b3a65b598de6521b77..7d4bb7859cd0477bc8f0d82f2c8adf864d309957 100644 (file)
@@ -28,8 +28,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 using System.ComponentModel;
 
@@ -110,4 +108,4 @@ namespace System.Configuration
                }
        }
 }
-#endif // NET_2_0
+
index d11c4051be71ea28a639826c7be1856942267161..7da715ce56b673905927aac7fa1ab18965da320d 100644 (file)
@@ -28,8 +28,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 
 namespace System.Configuration
@@ -126,4 +124,4 @@ namespace System.Configuration
         }
 
 }
-#endif // NET_2_0
+
index a891dd9ea6308af1542308c4eb7f0b4d26db32fc..fe41acb79a79d7c4d79d5ee2c06bdadc2390c844 100644 (file)
@@ -29,8 +29,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 using System.Xml;
 
@@ -73,4 +71,3 @@ namespace System.Configuration
         }
 
 }
-#endif // NET_2_0
index 01304d829638ef690a6c435312498bf48dc47327..b7831bf5752b6ccd8ba01ab617e6be4ec433edb5 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Xml;
 
@@ -60,4 +59,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index ab3b0800cd40ef84db1936e27337c4e80eec41a4..bfc0af5c25d5d2b8e661000df1c261bff109059b 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Xml;
 
@@ -85,4 +84,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 5dd484c647457e15b145108059388508e6a2cc7b..8991c4fc95fd40a962e69b415803428beaf84789 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -47,4 +46,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 50a4d0b14e03a2f68c38939a39845166204a6165..71fd65b193fcf99f29d2996059274a042ec0df96 100644 (file)
@@ -26,7 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
 using System.Xml;
 using System.Collections.Specialized;
 
@@ -67,4 +66,3 @@ it is suggested that you use the RsaProtectedConfigurationProvider.";
                }
        }
 }
-#endif
index 2f3be5c0d81e632b34193c4a63f16724356b6a54..7e5c729ce22302e4285ec6cde4083e81c15fe784 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 
 namespace System.Configuration
@@ -96,4 +95,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 7ebc071c3f9cab5c0864f9c0ebfebce2658a3566..331f1e998d8f42b47e03637499c336155194e9b2 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        public sealed class ExeConfigurationFileMap: ConfigurationFileMap
@@ -69,4 +67,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 0765c84f54f56ab06a0da1da253026b0bc1b90a5..e82908eb532526d6368c0e509c941469ffd09816 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Xml;
 
@@ -52,4 +51,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index bc57cca09729511e92e5c6d8b8167c481a81f890..bf075aecc93596af91c3f4d3fa60e5168f04ff18 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -58,4 +56,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 7cb13fd5dadeba14aac3296583952647d0880ddc..0e6672df18b5bb10dc4b1c5ce3af88e5333c3ddd 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections.Specialized;
 using System.Xml;
@@ -82,4 +81,3 @@ namespace System.Configuration {
                }
        }
 }
-#endif
index 8e5da4ef7c0778b4f86a2c3d237c413860603d9b..25bfeb666f45208128801ac9acd6b4c1cb652230 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -63,4 +61,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index d38645c8954ce5c293c857ffddba993a30d8d00b..5977737f74b3985d94144bab902334e6cf69f3cf 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -63,4 +61,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index fdad2901662fc49fefbbf269a4c425f5bfaf47c3..c24c86bfb57cf431ac493f602b9a6437f1bf977e 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.IO;
 
@@ -81,4 +80,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 9ce102b9293af770207ad888d0c527dc356c90eb..9323349b61f06142bf54cd5a1157ef234ffd4335 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -69,4 +68,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index bef6dbcb013184113c7c980e23ef46901b742c1d..528a129d1a044799ba62894631eebe39364c7728 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections;
 using System.Configuration.Internal;
@@ -77,4 +76,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index f5a4cd18a5345e20983e1f6d95a6875e1e4ca799..80f410891de15586043111546f0b43cad5588e8f 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System;
 using System.IO;
 using System.Security;
@@ -411,4 +409,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index d51b5fd81a20588409703d8ee09410a93f32a0a7..f5b391f5084bccf55650e312a31f7a231bb59462 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System;
 using System.Collections;
 using System.Configuration.Internal;
@@ -91,4 +89,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 16814e1826523b17179636ac805dfb098966678d..62422bf8b9a64c13f29b693021786544895a0792 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Xml;
 
@@ -98,4 +97,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 66476dd0bcbbb14260df4570cfa6951defd68b51..c66caab7b607f2238c465d8310e4d51700001ffa 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Xml;
 
@@ -79,4 +78,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index e8e585c6ba28d106b7308415263154f6f3d344a5..f2fd63df1034ce2a8f0e700638e77709d831b12d 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections.Specialized;
 using System.Xml;
 
@@ -57,4 +56,3 @@ namespace System.Configuration
 
        }
 }
-#endif
index b21173889eb317ba26feacb71460c239ffe31ddd..96c9cac1a017ec193f9b1c0f7c4b4a1067f9e210 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.IO;
 
@@ -78,4 +77,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 47c8225ecdc77d47fc041cea058131c44da9fabd..ef5d62fe526439702bfb1f99e3fd45fdd7cda83f 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -69,4 +68,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 74158384529b254a553171d01d1964071b6e7a87..f15fd15b96c60da1bf8436ba43e36c54f0eadc5e 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -106,4 +105,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index d11db1fa353d8970bdf99a23ffdbc3c96c6b32ca..19a07fd473df3a80737a44ffe30b40fbf640a8ac 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -74,4 +73,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index e5abf997743b9e624f85f05b5f9568cddb744640..24ec33958602998852ba0c248f0976efa655748e 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration
@@ -51,4 +50,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 13a1870ca7a848cc28199cab26967b012c575df3..6b4350e62a9fc462c0367792caaefc1e4fd54d7a 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -50,5 +49,3 @@ namespace System.Configuration {
                }
        }
 }
-
-#endif
index 32ff06450902d4a6b99eddafc774a9ea14be8e0f..8f3e223a80a8bf9c0b6f4fa1ffe657ee3ced76c5 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.ComponentModel;
 
 namespace System.Configuration
@@ -169,4 +168,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index fc839bf7f478c456d0d0129d4079f14397166c58..1cbf5f5d05c6494eda131d35a962f784f4f9a9c1 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Collections.Specialized;
 using System.Runtime.Serialization;
@@ -100,4 +99,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index e021cdb88f7b5b8835e6bb6f58532d8a096e8ffc..b1dbd5d57fb6e6f246d3904361339e1282b6d371 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        public enum PropertyValueOrigin
@@ -37,4 +35,3 @@ namespace System.Configuration
                SetHere = 2
        }
 }
-#endif
index 42cdd11be4023eb45352afeab3ea8821d777ef13..a3acc5e83b1364a0289c72218058b1c1d00a0b39 100644 (file)
@@ -26,7 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
 using System.Xml;
 using System.Collections.Specialized;
 using System.Security.Cryptography;
@@ -63,5 +62,3 @@ namespace System.Configuration
        }
 
 }
-
-#endif
index dbdcf34c97a0a271dc80adb84eccdd226f88d0bd..aca0c163f02bcc4587b7a7223635fe172c732c5c 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Xml;
 using System.Configuration.Provider;
 
@@ -43,4 +42,3 @@ namespace System.Configuration
                public abstract XmlNode Encrypt (XmlNode node);
        }
 }
-#endif
index 0fe7a705588ae09660b4b6b84190fecb6bf15663..4b1d1e155ca8297bdc0d15b829cc4d112379ffc5 100644 (file)
@@ -26,8 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System.Configuration.Provider;
 
 namespace System.Configuration
@@ -52,4 +50,3 @@ namespace System.Configuration
 
 }
 
-#endif
index 5cfda98a62059534565c0be4e61051136c8c4dac..30143f777e0b2f0c4f98fe353ed3bec2199092b8 100644 (file)
@@ -27,8 +27,6 @@
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.IO;
 using System.Xml;
 
@@ -113,4 +111,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 2cacd501698bd88ced6672b88b75eb74b294d64f..9f8e233215a5b5424df56e45b86d1a7c590aa655 100644 (file)
@@ -26,8 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        public class ProtectedProviderSettings : ConfigurationElement
@@ -56,4 +54,3 @@ namespace System.Configuration
 
 }
 
-#endif
index efbf00bdc41c1abece4444daa4bf69856fdabb51..6d4db6a0b077bb72ef79978599a6d32cfa999417 100644 (file)
@@ -28,8 +28,6 @@
 // Copyright (C) 2004,2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System;
 using System.Xml;
 using System.Collections.Specialized;
@@ -123,4 +121,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 31b3c323a43af76bc306cd3a09c0353fae5386d7..25bbc3a41f4094a9e51b3fa36898319bfe5290db 100644 (file)
@@ -28,8 +28,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 using System.Configuration;
 
@@ -82,4 +80,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 6ec0031412e3d1f856b6fe81050caa9a4c3cbe87..900a2e751e6b3cb8f79d8dc9bb3ef5be1f85fa23 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System;
 using System.Text.RegularExpressions;
 
@@ -55,4 +53,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 8fb2e41ea1a1800e6ad579d6c1fba7dff21041c9..225ed103b1193121c7a209c15abe78da45abf615 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        [AttributeUsage (AttributeTargets.Property)]
@@ -55,4 +53,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index f928490616946f33bd5b72e2d5bd1259d358ae62..bbb0eea08b302223ce6347cb7ad559d2f2fe5f2d 100644 (file)
@@ -26,7 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
 using System.Xml;
 using System.IO;
 using System.Collections.Specialized;
@@ -170,4 +169,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 3bb64d17db203d55de9ff23a24d7068e8913e099..c418d5160b17573c5b99abe2324d890b763575a4 100644 (file)
@@ -25,7 +25,7 @@
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
-#if NET_2_0
+
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -480,4 +480,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 965745a9db36e872176797bc8be3ac2163ba70b3..3a19ea27c332e5d08588e509b535c10272e848bb 100644 (file)
@@ -25,7 +25,7 @@
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
-#if NET_2_0
+
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -251,4 +251,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 24767c62a49525bb9885c2f33ad1f60b1bbe3311..f05406c4b5bf19f22054bca318f66cdef8f87a2a 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Xml;
 
@@ -214,4 +213,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 40cea56c843b135863ab6bcd022346f40efbbfe0..1b737b7e642d6f55088c11376b6f8411e34be572 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        public class StringValidator: ConfigurationValidatorBase
@@ -79,5 +77,3 @@ namespace System.Configuration
                }
        }
 }
-
-#endif
index 003b3eb0bf57eeac00345b1874371625dc799d78..deb6a969b050c6ee57dc97cf999d8000e0aa13ed 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        [AttributeUsage (AttributeTargets.Property)]
@@ -63,4 +61,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 22989efba07be78659250a3cf1c4d359f363810d..65926b1d81d99ba710918ea9545e1d84c169a449 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -53,5 +52,3 @@ namespace System.Configuration {
                }
        }
 }
-
-#endif
index 4d3cc9bb666e3691e60aedb2041fb46f02ab78ec..1663b8e9fd7e3f4b30cfa42711accb9c50654360 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -59,4 +58,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 71bfd3bbf54f99d51569205ad2e7e1ccb14aa974..95a7f44c79eb970bee3141a00c1ef39d90984d24 100644 (file)
@@ -27,8 +27,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -54,4 +52,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 72b387d7b7204255cf5d224056812e6eac893e10..03e09c289cc4f6005df04147f84bf09efb674763 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -59,5 +57,5 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
 
index 9b69594bd5a38762ad23c9298b71cd7002f9e85b..a839a8b54a796a149028d1d47f1efd31aa8477da 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -60,4 +58,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 8c68e1d398b1eda97295cbdba9341b30062d0caa..1cb0f0685f7d3bf67d7e683fedfa95cd505ed460 100644 (file)
@@ -27,8 +27,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -60,5 +58,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
 
index 7e1149b4113990a7f40946c94743d14f70a18665..54c1fd85aa6cc0415b032e97b42bae4b18ea5595 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration
@@ -75,4 +74,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 7723c130d5e2c03388f7217410ae88750ae394bc..cd1b2d7e2b11af08651096ec7277ccf0304285b0 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        [AttributeUsage (AttributeTargets.Property)]
@@ -75,4 +73,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index c58445465891af890fb8e52c132e5cf9aed0350c..6be4bc02a17758993f928a6908f37948aceec999 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -53,4 +51,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 64ae7913dbb4a84137157d17970af9f6a4e4d51d..4713a1d4a373cd0530ba6431a1367ef609149b1b 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.IO;
 
@@ -34,4 +33,3 @@ namespace System.Configuration {
        public delegate void ValidatorCallback (object o);
 }
 
-#endif
index 152d0a2c1a3f05ee6e68aee19b1f053ef36a9d64..3739d6504e5a35d0ff2e0fa32afe9d00c1eadffe 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -53,4 +51,3 @@ namespace System.Configuration
        }
 }
 
-#endif
diff --git a/mcs/class/System.Configuration/System.Configuration_test_net_2_0.dll.config b/mcs/class/System.Configuration/System.Configuration_test_net_2_0.dll.config
new file mode 120000 (symlink)
index 0000000..6f31b34
--- /dev/null
@@ -0,0 +1 @@
+Test/App.config
\ No newline at end of file
diff --git a/mcs/class/System.Configuration/System.Configuration_test_net_4_0.dll.config b/mcs/class/System.Configuration/System.Configuration_test_net_4_0.dll.config
new file mode 120000 (symlink)
index 0000000..6f31b34
--- /dev/null
@@ -0,0 +1 @@
+Test/App.config
\ No newline at end of file
diff --git a/mcs/class/System.Configuration/System.Configuration_test_net_4_5.dll.config b/mcs/class/System.Configuration/System.Configuration_test_net_4_5.dll.config
new file mode 120000 (symlink)
index 0000000..6f31b34
--- /dev/null
@@ -0,0 +1 @@
+Test/App.config
\ No newline at end of file
diff --git a/mcs/class/System.Configuration/Test/App.config b/mcs/class/System.Configuration/Test/App.config
new file mode 100644 (file)
index 0000000..ac4ae1b
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<configuration>
+       <connectionStrings>
+               <add name="test-connstring"
+                       connectionString="Server=(local);Initial Catalog=someDb;User Id=someUser;Password=somePassword;Application Name=someAppName;Min Pool Size=5;Max Pool Size=500;Connect Timeout=10;Connection Lifetime=29;" />
+       </connectionStrings>
+</configuration>
index f1a383110b2926d0fa2041a89d79b5b8acb270ce..613d0c10df54948e6d165cb5ef7ba9cd0b5f7c92 100644 (file)
@@ -611,5 +611,17 @@ namespace MonoTests.System.Configuration {
                                Assert.That (EvaluationContext != null, label);
                        }
                }
+
+
+               [Test]
+               public void TestConnectionStringRetrieval ()
+               {
+                       var connStringObj = ConfigurationManager.ConnectionStrings ["test-connstring"];
+                       Assert.IsNotNull (connStringObj);
+                       var connString = connStringObj.ConnectionString;
+                       Assert.IsFalse (String.IsNullOrEmpty (connString));
+                       Assert.AreEqual ("Server=(local);Initial Catalog=someDb;User Id=someUser;Password=somePassword;Application Name=someAppName;Min Pool Size=5;Max Pool Size=500;Connect Timeout=10;Connection Lifetime=29;",
+                                        connString);
+               }
        }
 }
index 955c4bb30046223bbf879ecc0efb6942898bd7c2..10e856a78e1e3fca4f1666575cbc5fce47cb501d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8F189E8F-4391-4E28-A66B-7ACB47381FFF}</ProjectGuid>\r
+    <ProjectGuid>{7E092751-BD4C-404C-960F-657A8D7DABCF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Core-build</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-build.csproj">\r
-      <Project>{B8B2866D-592F-4888-A1CB-697AD0F3CADE}</Project>\r
+      <Project>{2BD930A2-88A9-4AD0-ADE7-1531552DF896}</Project>\r
       <Name>corlib\corlib-build</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-build-1.csproj">\r
-      <Project>{C3638457-A40E-4E70-81B4-54ACB31DD76D}</Project>\r
+      <Project>{83D197B9-A796-4A0D-B8F9-930DD9415615}</Project>\r
       <Name>System\System-build-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-build.csproj">\r
-      <Project>{78F7614C-D0FE-49BE-9521-D2C7DD8A2C55}</Project>\r
+      <Project>{983EBE35-85B4-4D16-84AE-C3081CAE53EA}</Project>\r
       <Name>Mono.Posix\Mono.Posix-build</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0b1a3d8e603fa7bb10a4acba2078c72d80eb99b2..90364da6bf306e126f73abce5d4acea02d9c6d77 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</ProjectGuid>\r
+    <ProjectGuid>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Core-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a9371e03b383d2bb911fcde679dfd1ab904032b3..cfffdd43003338391da784520f64cc687385fc6b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2590BECB-2660-49C6-93B1-B9E7D0796214}</ProjectGuid>\r
+    <ProjectGuid>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Core-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cc7c7adac07f6ea3e47a36dd1d7da63da43d331e..20dcb9359d80eb6955f863d8bf64c3e06bbf7285 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</ProjectGuid>\r
+    <ProjectGuid>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Core-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}</Project>\r
+      <Project>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9dd8da78fe61680344cd7ccc014870652e688043..8ba8ca49433bf263f12bc8115f5eab9bb98c9a8e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B4C23420-200F-44D0-AF16-0878A5CA5DFF}</ProjectGuid>\r
+    <ProjectGuid>{F116BD24-9523-4644-817E-E8B30B468F44}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Core-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0897ef05d9684b131e8f90ae33742cb0020d02f9..4e730ca7f1702f42a6867fdc7fc6d2e083981a04 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4E99F056-01A5-4105-B6C7-DF57DB5DE27E}</ProjectGuid>\r
+    <ProjectGuid>{05BFB001-279E-4E81-B12B-E281D0883D4F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Core-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2cd0cbeaafc5698c0b1b8a5ac999e012a08b853e..936da3758eb9aa5ca4990a7b3e1cd92d7d970ef9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E52212C3-8609-434F-A1B3-5A63C057C119}</ProjectGuid>\r
+    <ProjectGuid>{9837CA8F-8FA7-4CE9-8BE8-BE4D5A236CDE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Core-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}</Project>\r
+      <Project>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 89547d0a059a2f196ca70cd897616932fcbcc897..71f392690a47666dc15496f0ffbcca58fe56dae7 100644 (file)
@@ -2885,7 +2885,7 @@ namespace System.Linq
                                collection.CopyTo (array, 0);
                                return array;
                        }
-                       
+
                        int pos = 0;
                        array = EmptyOf<TSource>.Instance;
                        foreach (var element in source) {
@@ -3105,6 +3105,11 @@ namespace System.Linq
                {
                        Check.SourceAndPredicate (source, predicate);
 
+                       // It cannot be IList<TSource> because it may break on user implementation
+                       var array = source as TSource[];
+                       if (array != null)
+                               return CreateWhereIterator (array, predicate);
+
                        return CreateWhereIterator (source, predicate);
                }
 
@@ -3115,14 +3120,27 @@ namespace System.Linq
                                        yield return element;
                }
 
+               static IEnumerable<TSource> CreateWhereIterator<TSource> (TSource[] source, Func<TSource, bool> predicate)
+               {
+                       for (int i = 0; i < source.Length; ++i) {
+                               var element = source [i];
+                               if (predicate (element))
+                                       yield return element;
+                       }
+               }       
+
                public static IEnumerable<TSource> Where<TSource> (this IEnumerable<TSource> source, Func<TSource, int, bool> predicate)
                {
                        Check.SourceAndPredicate (source, predicate);
 
+                       var array = source as TSource[];
+                       if (array != null)
+                               return CreateWhereIterator (array, predicate);
+
                        return CreateWhereIterator (source, predicate);
                }
 
-               static IEnumerable<TSource> CreateWhereIterator<TSource> (this IEnumerable<TSource> source, Func<TSource, int, bool> predicate)
+               static IEnumerable<TSource> CreateWhereIterator<TSource> (IEnumerable<TSource> source, Func<TSource, int, bool> predicate)
                {
                        int counter = 0;
                        foreach (TSource element in source) {
@@ -3132,6 +3150,15 @@ namespace System.Linq
                        }
                }
 
+               static IEnumerable<TSource> CreateWhereIterator<TSource> (TSource[] source, Func<TSource, int, bool> predicate)
+               {
+                       for (int i = 0; i < source.Length; ++i) {
+                               var element = source [i];
+                               if (predicate (element, i))
+                                       yield return element;
+                       }
+               }
+
                #endregion
 
                internal static ReadOnlyCollection<TSource> ToReadOnlyCollection<TSource> (this IEnumerable<TSource> source)
index 9518191c849b440568cd1ab4d086ee0a01623add..498df578696ef3dc31a28ea843b7d26d62828d40 100644 (file)
@@ -185,7 +185,7 @@ namespace System {
 
                                start = length = 0;
 
-                               int i = Array.BinarySearch (names, name);
+                               int i = Array.BinarySearch (names, name, StringComparer.Ordinal);
                                if (i < 0)
                                        return null;
 
@@ -291,6 +291,40 @@ namespace System {
                                        return buf.ToString ();
                                return null;
                        }
+
+#if SELF_TEST
+                       /*
+                        * Compile:
+                        *    mcs  /out:tzi.exe "/d:INSIDE_CORLIB;MONODROID;NET_4_0;LIBC;SELF_TEST" System/TimeZone*.cs ../../build/common/Consts.cs
+                        * Prep:
+                        *    mkdir -p usr/share/zoneinfo
+                        *    android_root=`adb shell echo '$ANDROID_ROOT' | tr -d "\r"`
+                        *    adb pull $android_root/usr/share/zoneinfo usr/share/zoneinfo
+                        * Run:
+                        *    ANDROID_ROOT=`pwd` mono tzi.exe
+                        */
+                       static void Main (string[] args)
+                       {
+                               Console.WriteLine ("Version: {0}", version);
+                               for (int i = 0; i < names.Length; ++i) {
+                                       Console.Write ("{0,3}\tname={1,-40} start={2,-10} length={3,-4} offset=0x{4,8}",
+                                                       i, names [i], starts [i], lengths [i], offsets [i].ToString ("x8"));
+                                       try {
+                                               TimeZoneInfo zone = _GetTimeZone (names [i]);
+                                               if (zone != null)
+                                                       Console.Write (" {0}", zone);
+                                               else {
+                                                       Console.Write (" ERROR:null Index? {0}",
+                                                                       Array.BinarySearch (names, names [i], StringComparer.Ordinal));
+                                               }
+                                       } catch (Exception e) {
+                                               Console.WriteLine ();
+                                               Console.Write ("ERROR: {0}", e);
+                                       }
+                                       Console.WriteLine ();
+                               }
+                       }
+#endif
                }
        }
 }
index f2732be53555f51d9722a8e5d059c5ea8baab07f..b0b5faa8af25d4c4b0e3ac8d35308755338fbe3b 100644 (file)
@@ -5,7 +5,7 @@
 // Authors:
 //     Sebastien Pouliot  <sebastien@xamarin.com>
 //
-// Copyright 2011 Xamarin Inc.
+// Copyright 2011-2013 Xamarin Inc.
 //
 // The class can be either constructed from a string (from user code)
 // or from a handle (from iphone-sharp.dll internal calls).  This
 #if (INSIDE_CORLIB && MONOTOUCH)
 
 using System;
+using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.IO;
-using System.Reflection;
+using System.Runtime.InteropServices;
 
 namespace System {
 
        public partial class TimeZoneInfo {
                
-               static Type nstimezone;
-               
-               static Type NSTimeZone {
-                       get {
-                               if (nstimezone == null)
-                                       nstimezone = Type.GetType ("MonoTouch.Foundation.NSTimeZone, monotouch, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
-                               return nstimezone;
-                       }
-               }
-               
+               [DllImport ("__Internal")]
+               extern static IntPtr monotouch_timezone_get_names (ref int count);
+
                static ReadOnlyCollection<string> GetMonoTouchNames ()
                {
-                       try {
-                               var p = NSTimeZone.GetProperty ("KnownTimeZoneNames", BindingFlags.Static | BindingFlags.Public);
-                               var m = p.GetGetMethod ();
-                               return (ReadOnlyCollection<string>) m.Invoke (null, null);
-                       }
-                       catch (TargetInvocationException tie) {
-                               throw tie.InnerException;
-                       }
-               }
-               
-               static Stream GetMonoTouchDefault ()
-               {
-                       try {
-                               var m = NSTimeZone.GetMethod ("_GetDefault", BindingFlags.Static | BindingFlags.NonPublic);
-                               return (Stream) m.Invoke (null, null);
-                       }
-                       catch (TargetInvocationException tie) {
-                               throw tie.InnerException;
+                       int count = 0;
+                       IntPtr array = monotouch_timezone_get_names (ref count);
+                       string [] names = new string [count];
+                       for (int i = 0, offset = 0; i < count; i++, offset += IntPtr.Size) {
+                               IntPtr p = Marshal.ReadIntPtr (array, offset);
+                               names [i] = Marshal.PtrToStringAnsi (p);
+                               Marshal.FreeHGlobal (p);
                        }
+                       Marshal.FreeHGlobal (array);
+                       return new ReadOnlyCollection<string> (names);
                }
 
+               [DllImport ("__Internal")]
+               extern static IntPtr monotouch_timezone_get_data (string name, ref int size);
+
                static Stream GetMonoTouchData (string name)
                {
-                       try {
-                               var m = NSTimeZone.GetMethod ("_GetData", BindingFlags.Static | BindingFlags.NonPublic);
-                               return (Stream) m.Invoke (null, new object[] { name });
-                       }
-                       catch (TargetInvocationException tie) {
-                               throw tie.InnerException;
+                       int size = 0;
+                       IntPtr data = monotouch_timezone_get_data (name, ref size);
+                       if (size <= 0)
+                               throw new TimeZoneNotFoundException ();
+
+                       unsafe {
+                               var s = new UnmanagedMemoryStream ((byte*) data, size);
+                               s.Closed += delegate {
+                                       Marshal.FreeHGlobal (data);
+                               };
+                               return s;
                        }
                }
        }
index e8e5ad7c3d9715ef13b9fa6aab3a03338912c1bf..ee440a4bd51daa99e02153f2e065e79b31adc04c 100644 (file)
@@ -88,7 +88,7 @@ namespace System
 #if MONODROID
                                        local = ZoneInfoDB.Default;
 #elif MONOTOUCH
-                                       using (Stream stream = GetMonoTouchDefault ()) {
+                                       using (Stream stream = GetMonoTouchData (null)) {
                                                local = BuildFromStream ("Local", stream);
                                        }
 #elif LIBC
index e846b3ac205d6c23fb22a80309aa26e26d191114..128678f91f8a96405de8e80c18c48305e1873850 100644 (file)
@@ -101,6 +101,10 @@ namespace MonoTests.System.Linq.Expressions {
                [ExpectedException (typeof (ArgumentException))]
                public void InstanceTypeDoesntMatchMethodDeclaringType ()
                {
+#if MOBILE
+                       // ensure that String.Intern won't be removed by the linker
+                       string s = String.Intern (String.Empty);
+#endif
                        Expression.Call (Expression.Constant (1), typeof (string).GetMethod ("Intern"));
                }
 
index 2ab978d51876f4e468d375dc9b74b98bd0a4188e..0fe89ea671075b2d1b4cc916ba211cc5bc61f49b 100644 (file)
@@ -163,6 +163,8 @@ namespace MonoTests.System.Linq.Expressions
                }
 
                [Test]
+               // #12987
+               [Category ("MobileNotWorking")]
                public void CoalesceNullableSlotIntoInteger ()
                {
                        var s = Expression.Parameter (typeof (Slot?), "s");
index 30b6738d4474aaa837dc2f242582b00c6800cd67..f5559ae00ea98c4d6b1ced3571c68675e2efaf60 100644 (file)
@@ -608,15 +608,27 @@ namespace MonoTests.System.Linq {
                        AssertException<ArgumentNullException> (delegate () { ((IEnumerable<string>) null).Contains ("2", (IEqualityComparer<string>) EqualityComparer<string>.Default); });
                }
 
+               static void IsFalse(bool b, int[] data) {
+                       if (b) {
+                               Console.WriteLine (data.Contains (0));
+                               object o = null;
+                               o.ToString ();
+                               Assert.IsFalse (true);
+                       }
+                       //Console.WriteLine ("HIT!");
+               }
+
                [Test]
                public void ContainsTest ()
                {
                        int [] data = { 5, 2, 3, 1, 6 };
-
+                       ICollection<int> icoll = data;
 
                        // Contains<TSource> (TSource)
                        Assert.IsTrue (data.Contains (2));
-                       Assert.IsFalse (data.Contains (0));
+                       for (int i = 0; i < 50; ++i)
+                               Console.WriteLine (icoll.Contains (0));//Console.WriteLine (data.Contains (0));
+                       IsFalse (data.Contains (0), data);
 
                        // Contains<TSource> (TSource, IEqualityComparer<TSource>)
                        Assert.IsTrue (data.Contains (2, EqualityComparer<int>.Default));
index 781a7b174b6bae12a690791a103c9182a9729f3f..4f5e43d10427d4e18429b5a89ffdae232a0bd3e4 100644 (file)
@@ -3,8 +3,8 @@
 ../../build/common/Consts.cs
 ../../build/common/Locale.cs
 ../../build/common/MonoTODOAttribute.cs
-../corlib/Mono.Security.Cryptography/CryptoTools.cs
-../corlib/Mono.Security.Cryptography/SymmetricTransform.cs
+../Mono.Security/Mono.Security.Cryptography/CryptoTools.cs
+../Mono.Security/Mono.Security.Cryptography/SymmetricTransform.cs
 ../corlib/System.Threading/AtomicBoolean.cs
 ../corlib/System.Collections.Generic/CollectionDebuggerView.cs
 ../corlib/System.Collections/HashPrimeNumbers.cs
index 51cb4e882d9c3bab278ae6fdcbf59257cab36725..c681f5a1f8b7bd6df177f0dce7e23161cf15a96f 100644 (file)
@@ -3,6 +3,7 @@
 #include dynamic_System.Core.dll.sources
 
 System/TimeZoneInfo.Android.cs
+System.Security.Cryptography/AesCryptoServiceProvider.cs
 System.Security.Cryptography/AesManaged.cs
 System.Security.Cryptography/AesTransform.cs
 
index 8d9fff04faaa017049ce2118b85dfc9b1b307b14..4dbb4ff12602b8f31991bf6067231db2e0362575 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{295579FC-90FD-4416-94E2-E032336DFEA6}</ProjectGuid>\r
+    <ProjectGuid>{26F9A955-8501-4FDB-8359-8672DE49142E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.DataSetExtensions-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ab8ebdc032c76ee22b57b7642d3199f9eb56ea89..81b966efb6e25c33ea33ea50fb222f22112ab3dd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A0DAB116-953E-4F95-87EB-E3887533179A}</ProjectGuid>\r
+    <ProjectGuid>{BEF6602C-3A78-4DAE-AD4D-724FE0A4B848}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.DataSetExtensions-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ae71fc348b2356d2c13e6b6bd59a8d0e07148fe4..e989c13150c470eeceb123adeb89ec02713f1879 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{99723243-801A-4F86-A51B-F88737F567B2}</ProjectGuid>\r
+    <ProjectGuid>{CE1B7764-9679-451A-9ACB-697088B116F1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.DataSetExtensions-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 50dca69e862ff8e970f59089b5449f2c45685456..fec95441dfd9b54b6d8882ce781ed84f395843ba 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{989AD83B-C73F-4C62-B240-9A94B0CC8502}</ProjectGuid>\r
+    <ProjectGuid>{A0960885-361A-44AF-A38A-67E8D3CAF9E0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.DataSetExtensions-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_2_0.csproj">\r
-      <Project>{295579FC-90FD-4416-94E2-E032336DFEA6}</Project>\r
+      <Project>{26F9A955-8501-4FDB-8359-8672DE49142E}</Project>\r
       <Name>System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 34bbd0da8edcb6294945a3ed8c373fe24f4192d4..9252699ac56b61086186b53c1f5bb80b742f8fd0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{802E3624-00CF-4576-8AA4-A738C5280F23}</ProjectGuid>\r
+    <ProjectGuid>{163F90CA-4924-437F-87A8-519B74FF2D07}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.DataSetExtensions-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_4_0.csproj">\r
-      <Project>{A0DAB116-953E-4F95-87EB-E3887533179A}</Project>\r
+      <Project>{BEF6602C-3A78-4DAE-AD4D-724FE0A4B848}</Project>\r
       <Name>System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0ab0ffdf38f1e2380d579f036798cc89942bb829..f25f237edcf29e2757b4dda5cca4a1f24e70b8f2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EAFF9F04-A5B5-458E-860B-76D7B2B7D745}</ProjectGuid>\r
+    <ProjectGuid>{53BEA1F5-AA08-429E-BD7A-EAD4DF7B9EE1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.DataSetExtensions-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_4_5.csproj">\r
-      <Project>{99723243-801A-4F86-A51B-F88737F567B2}</Project>\r
+      <Project>{CE1B7764-9679-451A-9ACB-697088B116F1}</Project>\r
       <Name>System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9b7ce9599310c8db9b6d5be87252bac3ed33159b..ad4174ca42a3b0f5d9857841f85cdc6c3accbc30 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8D8EF41B-C5E7-4905-9D89-08EEA9DA7C05}</ProjectGuid>\r
+    <ProjectGuid>{CBDA8DA6-4A33-419C-9150-98EA5B3BE543}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Linq-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b66f9091368e912321abcd4626893c67ca510c4d..49a70de97e26cc42e8782979925a4dabdeb4c577 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1ED806F6-FADE-43A4-B5FA-D3AD8281B326}</ProjectGuid>\r
+    <ProjectGuid>{1935FCB6-165D-4043-B048-BCEDD04F86B8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Linq-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 8ce46f2db4514b4bc06efa3dee951db29453cc44..5395da7777078796232facbbec44710869daaeb1 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</ProjectGuid>\r
+    <ProjectGuid>{D5F1C909-8875-4D37-8CC1-30851258C594}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Linq-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1445f4513c76560afc4a04158d4335d3f14113db..214d683d36609cf3836e66cee52ee065055d5aa2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5502AC97-CAE5-417B-9F53-7EFF385AC043}</ProjectGuid>\r
+    <ProjectGuid>{3FBFC2E2-4F2E-413D-9384-503983808EAA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Linq-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_2_0.csproj">\r
-      <Project>{8D8EF41B-C5E7-4905-9D89-08EEA9DA7C05}</Project>\r
+      <Project>{CBDA8DA6-4A33-419C-9150-98EA5B3BE543}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0a510606a526aeb36f00ddf9b79faf123634c079..83df81b9eb02fb154cb2311c11c4ae61d1bd0bec 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8446FA9C-8FA9-4D96-B332-FB0C394DA2A0}</ProjectGuid>\r
+    <ProjectGuid>{F5DF0317-B446-4E44-BB0D-0B36CB9455FE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Linq-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_0.csproj">\r
-      <Project>{1ED806F6-FADE-43A4-B5FA-D3AD8281B326}</Project>\r
+      <Project>{1935FCB6-165D-4043-B048-BCEDD04F86B8}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bd71ef697794f46b02fcc7d916906c36858e6a79..6096bd32c5375430319ca4926e1ba3330fe62598 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1FC59170-4045-4778-81DA-EC3EAAE7670C}</ProjectGuid>\r
+    <ProjectGuid>{1D746BE5-4458-4F6F-B87F-8B3EEEE2DD46}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Linq-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5bbe6ec01331bdd5217efba088f82b2fe2e2cc93..4a5bf0b34df631b973f130d7fd1380739aedef9e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CBCB1364-E9BC-4588-863C-F239F943FEFB}</ProjectGuid>\r
+    <ProjectGuid>{EB0B8D4B-E8CF-44EA-A8A8-22B5057ABC6D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.OracleClient-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 31eeaa6ec64b3b54182452f015450b653dbbca69..38cb93b1749cd3a3ad59e5aa055be35b9cb319e6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2837229A-230B-4279-B293-1B033C65DA8A}</ProjectGuid>\r
+    <ProjectGuid>{4679C254-E945-4B94-AFAE-7FD492EF140C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.OracleClient-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6178443b862b4f41b02350b9e558c9cfcbf5709c..013b396da585ee5d98b1a3890121b1a9a0dcd617 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7443D41A-D078-49E1-9A88-87902B6EDFFC}</ProjectGuid>\r
+    <ProjectGuid>{7EB08776-A0D3-415F-960A-58869EDFDA02}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.OracleClient-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c758c5b89ac96900f8904f5fabbf9c6fd6ebf425..04b2b1c111ba06b89f5741ad86cee1b24f92fbdd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AD3D10BB-4B00-49B9-B316-B0DD9D3F8D69}</ProjectGuid>\r
+    <ProjectGuid>{1C1E7C2D-0085-46DA-B17F-13FA75FE1DFB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.OracleClient-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.OracleClient\System.Data.OracleClient-net_2_0.csproj">\r
-      <Project>{CBCB1364-E9BC-4588-863C-F239F943FEFB}</Project>\r
+      <Project>{EB0B8D4B-E8CF-44EA-A8A8-22B5057ABC6D}</Project>\r
       <Name>System.Data.OracleClient\System.Data.OracleClient-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2cd4cd7606b28be2437008f9b8310cbaf8e6e81e..c77bebf67e52c8ca0903ce38f03deb5fd236e9da 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{24117801-22A1-4986-8BBE-4CD289586F90}</ProjectGuid>\r
+    <ProjectGuid>{619A8BFB-F3EC-4473-B156-B407A611513B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.OracleClient-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.OracleClient\System.Data.OracleClient-net_4_0.csproj">\r
-      <Project>{2837229A-230B-4279-B293-1B033C65DA8A}</Project>\r
+      <Project>{4679C254-E945-4B94-AFAE-7FD492EF140C}</Project>\r
       <Name>System.Data.OracleClient\System.Data.OracleClient-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 34375dde3ab2a551820fc851ada854a4647a7e7f..35fd05b0e6dc68cc468081776e62733e22765f11 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{93ABF627-F02A-4409-9BAE-0E564A43FC9A}</ProjectGuid>\r
+    <ProjectGuid>{228F1876-102C-4817-875C-1D80F17BADF9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.OracleClient-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.OracleClient\System.Data.OracleClient-net_4_5.csproj">\r
-      <Project>{7443D41A-D078-49E1-9A88-87902B6EDFFC}</Project>\r
+      <Project>{7EB08776-A0D3-415F-960A-58869EDFDA02}</Project>\r
       <Name>System.Data.OracleClient\System.Data.OracleClient-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b73a01bafe5974f951fd61455e1b770db9a355a0..743a3c72ed81aaacc5c0dfb9c184e8092a48fcff 100644 (file)
@@ -461,19 +461,19 @@ namespace System.Data.OracleClient.Oci
                        internal static extern int OCICharSetToUnicode (
                                IntPtr svchp,
                                [MarshalAs (UnmanagedType.LPWStr)] StringBuilder dst,
-                               [MarshalAs (UnmanagedType.U4)] int dstlen,
+                               [MarshalAs (UnmanagedType.SysUInt)] int dstlen,
                                byte [] src,
-                               [MarshalAs (UnmanagedType.U4)] int srclen,
-                               [MarshalAs (UnmanagedType.U4)] out int rsize);
+                               [MarshalAs (UnmanagedType.SysUInt)] int srclen,
+                               [MarshalAs (UnmanagedType.SysUInt)] out int rsize);
 
                        [DllImport ("oci")]
                        internal static extern int OCIUnicodeToCharSet (
                                IntPtr svchp,
                                byte [] dst,
-                               [MarshalAs (UnmanagedType.U4)] int dstlen,
+                               [MarshalAs (UnmanagedType.SysUInt)] int dstlen,
                                [MarshalAs (UnmanagedType.LPWStr)] string src,
-                               [MarshalAs (UnmanagedType.U4)] int srclen,
-                               [MarshalAs (UnmanagedType.U4)] out int rsize);
+                               [MarshalAs (UnmanagedType.SysUInt)] int srclen,
+                               [MarshalAs (UnmanagedType.SysUInt)] out int rsize);
                }
 
                #endregion
@@ -1196,7 +1196,7 @@ namespace System.Data.OracleClient.Oci
                        IntPtr svchp,
                        byte [] dst,
                        [MarshalAs (UnmanagedType.LPWStr)] string src,
-                       [MarshalAs (UnmanagedType.U4)] out int rsize)
+                       [MarshalAs (UnmanagedType.SysUInt)] out int rsize)
                {
                        #if TRACE
                        Trace.WriteLineIf(traceOci, "OCIUnicodeToCharSet", "OCI");
index c5973ff2712de2023903f343fa945e05ab79bd7f..df17716097dbae6007a10a25bcc7dea4e652ee27 100644 (file)
@@ -1116,8 +1116,14 @@ namespace System.Data.OracleClient
 
                private void SetOracleType (OracleType type, bool inferring)
                {
+                       Type valType;
                        FreeHandle ();
-                       Type valType = value.GetType ();
+
+                       if (value == null)
+                               valType = typeof(System.DBNull);
+                       else
+                               valType = value.GetType ();
+
                        string exception = String.Format ("No mapping exists from OracleType {0} to a known DbType.", type);
                        switch (type) {
                        case OracleType.BFile:
index eb6dbd0490c6d796da201edc395e74e821c63c62..86a85c24d1a62c9fc619cfcd2666046b7e7f34aa 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F74BFD27-8B84-4F0F-B1CB-3FEFB93FA244}</ProjectGuid>\r
+    <ProjectGuid>{28041CBC-632D-4961-B316-C2A15CFD9488}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services.Client-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_2_0.csproj">\r
-      <Project>{32FB4911-5E84-4692-975C-23AB21BF215B}</Project>\r
+      <Project>{13E70866-6FF1-4D25-803F-BAE8CF945920}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_2_0.csproj">\r
-      <Project>{FA9820E4-3756-46DD-A2A0-8508F4F043EA}</Project>\r
+      <Project>{6FC343B3-4186-4DB7-B678-3BDFEF0065CD}</Project>\r
       <Name>WindowsBase\WindowsBase-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 05f889fc979f6885ec02db019504650b8ca02450..45c051ab7adcf87b1ac01f4a63c02d0766d77f65 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E08BEE9C-69A5-46E9-9BA0-4C803470A62C}</ProjectGuid>\r
+    <ProjectGuid>{F743C94C-ACFF-461F-87AE-EA7427D158A5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services.Client-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_0.csproj">\r
-      <Project>{802B1060-BD79-4648-A24E-D38F34AE29A0}</Project>\r
+      <Project>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_0.csproj">\r
-      <Project>{7063C843-FB21-477B-ACC4-DA51C8C374E9}</Project>\r
+      <Project>{E016C66E-35A6-4A95-BD35-AF13FBCD3DA0}</Project>\r
       <Name>WindowsBase\WindowsBase-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 8de7d93f332d9cc745a34cbce9ae8fdb8d3845ab..7c054b085bdb76f33cb5a52f2345eb23f0764f67 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{515D27B3-F7B6-4F0D-9CF6-521F7D37118D}</ProjectGuid>\r
+    <ProjectGuid>{05D23556-E085-4A30-A6AF-8F39651CA284}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services.Client-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_5.csproj">\r
-      <Project>{6D23A57D-01AF-4266-8E58-C16E732FCF81}</Project>\r
+      <Project>{0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}</Project>\r
       <Name>WindowsBase\WindowsBase-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d8acd9f0fead5318ded3776824378c70e859f03b..d76ecc73ace2d5712902227a55a14324b4303b04 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7A80929F-2EFC-4A39-8969-6F74DA352144}</ProjectGuid>\r
+    <ProjectGuid>{99FD3D71-E25F-4F03-8C59-767F8CBF1FD0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_2_0.csproj">\r
-      <Project>{54969D84-6764-49E4-A6AF-51ADD6A7CDFA}</Project>\r
+      <Project>{C1E98610-9EA1-4973-A48B-E7CE2E790F40}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Services.Client\System.Data.Services.Client-net_2_0.csproj">\r
-      <Project>{F74BFD27-8B84-4F0F-B1CB-3FEFB93FA244}</Project>\r
+      <Project>{28041CBC-632D-4961-B316-C2A15CFD9488}</Project>\r
       <Name>System.Data.Services.Client\System.Data.Services.Client-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 650cfeee444e9bcdc1bec39223b8a8950d561737..e0e62349cdeaed8a3291c6b714df0fa4cad5fea7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{44105B5A-7674-4CE0-AB7A-DE36536CA3FA}</ProjectGuid>\r
+    <ProjectGuid>{DEA8B60B-F938-4920-B4AF-3B6D042FA740}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_0.csproj">\r
-      <Project>{2F40A7ED-89D4-414D-B916-6ECB39F15BD2}</Project>\r
+      <Project>{B9CFA1C3-B2EE-40CB-85EC-674A2D1CAC5F}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Services.Client\System.Data.Services.Client-net_4_0.csproj">\r
-      <Project>{E08BEE9C-69A5-46E9-9BA0-4C803470A62C}</Project>\r
+      <Project>{F743C94C-ACFF-461F-87AE-EA7427D158A5}</Project>\r
       <Name>System.Data.Services.Client\System.Data.Services.Client-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b260d2ed431e4b7c152952715b0f28919a0998d2..4c5ef4cf981bb4a89c30417211c52b8d78a396da 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{16E0F17C-FBA5-46E2-97D1-E04E9E0CBB6D}</ProjectGuid>\r
+    <ProjectGuid>{90405849-4C66-4BF7-B9F6-E0D81995231B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_5.csproj">\r
-      <Project>{89390ACC-32C7-45EE-A169-BA1A4EEE6C47}</Project>\r
+      <Project>{BC669CAE-D6F8-49B9-8AC3-68B48BD70587}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Services.Client\System.Data.Services.Client-net_4_5.csproj">\r
-      <Project>{515D27B3-F7B6-4F0D-9CF6-521F7D37118D}</Project>\r
+      <Project>{05D23556-E085-4A30-A6AF-8F39651CA284}</Project>\r
       <Name>System.Data.Services.Client\System.Data.Services.Client-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0594d6efbc03277aaa259a8f8723d7806979d456..20734d131f2054a0adf6abc316ad81f96ff5ca0f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BAC5423E-A9CD-4D05-B517-0B92E03E6671}</ProjectGuid>\r
+    <ProjectGuid>{B6995A25-E1CA-458A-B248-10EF04ED97E1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Services\System.Data.Services-net_2_0.csproj">\r
-      <Project>{7A80929F-2EFC-4A39-8969-6F74DA352144}</Project>\r
+      <Project>{99FD3D71-E25F-4F03-8C59-767F8CBF1FD0}</Project>\r
       <Name>System.Data.Services\System.Data.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a5d21f40be46d955fd23283fe64b58a1655a11c0..06039318a0b88dcc7c437fe131ac466ae784e746 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BBF2A1CC-B488-4739-82A7-E98832D3B873}</ProjectGuid>\r
+    <ProjectGuid>{6C64D29D-CAE4-4F98-9E01-0EBCED683AEF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Services\System.Data.Services-net_4_0.csproj">\r
-      <Project>{44105B5A-7674-4CE0-AB7A-DE36536CA3FA}</Project>\r
+      <Project>{DEA8B60B-F938-4920-B4AF-3B6D042FA740}</Project>\r
       <Name>System.Data.Services\System.Data.Services-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 695ddb634fdef0772cfd4970147f56f9b43558b3..ef4c55d3954417ed19c335cb2846ff393f847efa 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9C91B0D3-EEDF-4914-A1D1-13360A6B7A8F}</ProjectGuid>\r
+    <ProjectGuid>{FCB4DC7D-7B4C-4BD6-98CA-4F5AA08CB18B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Services\System.Data.Services-net_4_5.csproj">\r
-      <Project>{16E0F17C-FBA5-46E2-97D1-E04E9E0CBB6D}</Project>\r
+      <Project>{90405849-4C66-4BF7-B9F6-E0D81995231B}</Project>\r
       <Name>System.Data.Services\System.Data.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7b4031675460135482f5728f113af10ed085ca1e..e9a7e35a4d17fe07bc7adf4306f6196a3cd512dd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B8CA1780-FF35-49B9-B385-C24BD0558109}</ProjectGuid>\r
+    <ProjectGuid>{49220562-83E1-49A2-971F-5D31C4AB0258}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649</NoWarn>\r
     <OutputPath>bin\Debug\System.Data-net_2_0</OutputPath>\r
     <Compile Include="System.Data.Common\SchemaTableColumn.cs" />\r
     <Compile Include="System.Data.Common\SchemaTableOptionalColumn.cs" />\r
     <Compile Include="System.Data.Common\SupportedJoinOperators.cs" />\r
+    <Compile Include="System.Data.Common\TaskHelper.cs" />\r
     <Compile Include="System.Data.Odbc\libodbc.cs" />\r
     <Compile Include="System.Data.Odbc\NativeBuffer.cs" />\r
     <Compile Include="System.Data.Odbc\OdbcCategoryAttribute.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_2_0.csproj">\r
-      <Project>{FDB86B5C-19F4-49DB-807F-CB0466C121A1}</Project>\r
+      <Project>{99315C7A-EEDA-4247-96F4-14924760DB8B}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c113fed7d84b847cac2deda80dcb66e39e423460..86d013efe4adf656ada5f8fdbdc5d2d2aeb953b7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</ProjectGuid>\r
+    <ProjectGuid>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649</NoWarn>\r
     <OutputPath>bin\Debug\System.Data-net_4_0</OutputPath>\r
     <Compile Include="System.Data.Common\SchemaTableColumn.cs" />\r
     <Compile Include="System.Data.Common\SchemaTableOptionalColumn.cs" />\r
     <Compile Include="System.Data.Common\SupportedJoinOperators.cs" />\r
+    <Compile Include="System.Data.Common\TaskHelper.cs" />\r
     <Compile Include="System.Data.Odbc\libodbc.cs" />\r
     <Compile Include="System.Data.Odbc\NativeBuffer.cs" />\r
     <Compile Include="System.Data.Odbc\OdbcCategoryAttribute.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_4_0.csproj">\r
-      <Project>{2038AFC9-B4E4-4A05-B57B-11B698CA67DF}</Project>\r
+      <Project>{4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index adb74adbdd935e0c5f81857d48f4b652c0438ccc..eb0917787fc596326243599b28c64ad7d02f25ad 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</ProjectGuid>\r
+    <ProjectGuid>{663D8C81-B74E-4D44-8C59-2264C6942B30}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649</NoWarn>\r
     <OutputPath>bin\Debug\System.Data-net_4_5</OutputPath>\r
     <Compile Include="System.Data.Common\SchemaTableColumn.cs" />\r
     <Compile Include="System.Data.Common\SchemaTableOptionalColumn.cs" />\r
     <Compile Include="System.Data.Common\SupportedJoinOperators.cs" />\r
+    <Compile Include="System.Data.Common\TaskHelper.cs" />\r
     <Compile Include="System.Data.Odbc\libodbc.cs" />\r
     <Compile Include="System.Data.Odbc\NativeBuffer.cs" />\r
     <Compile Include="System.Data.Odbc\OdbcCategoryAttribute.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_4_5.csproj">\r
-      <Project>{2BB65926-A803-484F-A2D2-05CED0254A28}</Project>\r
+      <Project>{9B26C34E-8E81-4857-A1CB-B50F407EE7E1}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9ac23b46b53f6900215370fe956374becf3c4779..a7680e96131f5476c294cce72fd4b5d5886a4535 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{87ED984F-2902-4E39-BC59-9414811B589A}</ProjectGuid>\r
+    <ProjectGuid>{6E9FDC75-D6F9-4E25-A195-C9F1B02DD8C9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,618,169,612,219,168</NoWarn>\r
     <OutputPath>bin\Debug\System.Data-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_2_0.csproj">\r
-      <Project>{FDB86B5C-19F4-49DB-807F-CB0466C121A1}</Project>\r
+      <Project>{99315C7A-EEDA-4247-96F4-14924760DB8B}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="Mono.Data.Sqlite.dll">\r
index c8449d3e31415fdfeb992cd083f5df684e8906be..8783657bea91c284c32b03d6bf882a5d2263b41f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{307468CF-4DC4-4070-BB0C-9D45B135F886}</ProjectGuid>\r
+    <ProjectGuid>{53E634B3-1D02-4375-B94D-6BBA8BCC921D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,618,169,612,219,168</NoWarn>\r
     <OutputPath>bin\Debug\System.Data-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_4_0.csproj">\r
-      <Project>{2038AFC9-B4E4-4A05-B57B-11B698CA67DF}</Project>\r
+      <Project>{4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0.csproj">\r
-      <Project>{60E307F3-5E95-42FF-9B41-3FB8AD664AB6}</Project>\r
+      <Project>{991C45A8-3B22-45BB-B688-DBF8BA835992}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f3d4e4f70544ac3930b3059dfee6e8cf58003612..ba1719f480fa764309e68ab536a9ef9ad228787d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E763AC5D-E03A-4D54-8B0A-5F904B56FA69}</ProjectGuid>\r
+    <ProjectGuid>{4C5A0721-050A-4457-8D1C-8FB58DA895DE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,618,169,612,219,168</NoWarn>\r
     <OutputPath>bin\Debug\System.Data-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_4_5.csproj">\r
-      <Project>{2BB65926-A803-484F-A2D2-05CED0254A28}</Project>\r
+      <Project>{9B26C34E-8E81-4857-A1CB-B50F407EE7E1}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0.csproj">\r
-      <Project>{BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}</Project>\r
+      <Project>{F26434C1-BA3D-41FB-B560-C009CB72B1B6}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2eb219032caf85e574ce49fd453aa2099b9cf548..e7cbdbe6b40b6d30329711922f69c438ae10ed96 100644 (file)
@@ -151,10 +151,17 @@ namespace System.Data.Common {
                public abstract void Prepare ();
                
 #if NET_4_5
-               [MonoTODO]
                protected virtual Task<DbDataReader> ExecuteDbDataReaderAsync (CommandBehavior behavior, CancellationToken cancellationToken)
                {
-                       throw new NotImplementedException ();
+                       if (cancellationToken.IsCancellationRequested) {
+                               return TaskHelper.CreateCanceledTask<DbDataReader> ();
+                       }
+                       
+                       try {
+                               return Task.FromResult (ExecuteDbDataReader (behavior));
+                       } catch (Exception e) {
+                               return TaskHelper.CreateExceptionTask<DbDataReader> (e);
+                       }
                }
                
                public Task<int> ExecuteNonQueryAsync ()
@@ -162,10 +169,17 @@ namespace System.Data.Common {
                        return ExecuteNonQueryAsync (CancellationToken.None);
                }
                
-               [MonoTODO]
                public virtual Task<int> ExecuteNonQueryAsync (CancellationToken cancellationToken)
                {
-                       throw new NotImplementedException ();
+                       if (cancellationToken.IsCancellationRequested) {
+                               return TaskHelper.CreateCanceledTask<int> ();
+                       }
+                       
+                       try {
+                               return Task.FromResult (ExecuteNonQuery ());
+                       } catch (Exception e) {
+                               return TaskHelper.CreateExceptionTask<int> (e);
+                       }
                }
                
                public Task<Object> ExecuteScalarAsync ()
@@ -173,10 +187,17 @@ namespace System.Data.Common {
                        return ExecuteScalarAsync (CancellationToken.None);
                }
                
-               [MonoTODO]
                public virtual Task<Object> ExecuteScalarAsync (CancellationToken cancellationToken)
                {
-                       throw new NotImplementedException ();
+                       if (cancellationToken.IsCancellationRequested) {
+                               return TaskHelper.CreateCanceledTask<Object> ();
+                       }
+                       
+                       try {
+                               return Task.FromResult (ExecuteScalar ());
+                       } catch (Exception e) {
+                               return TaskHelper.CreateExceptionTask<Object> (e);
+                       }
                }
                
                public Task<DbDataReader> ExecuteReaderAsync ()
@@ -184,10 +205,17 @@ namespace System.Data.Common {
                        return ExecuteReaderAsync (CancellationToken.None);
                }
                
-               [MonoTODO]
                public Task<DbDataReader> ExecuteReaderAsync (CancellationToken cancellationToken)
                {
-                       throw new NotImplementedException ();
+                       if (cancellationToken.IsCancellationRequested) {
+                               return TaskHelper.CreateCanceledTask<DbDataReader> ();
+                       }
+                       
+                       try {
+                               return Task.FromResult (ExecuteReader ());
+                       } catch (Exception e) {
+                               return TaskHelper.CreateExceptionTask<DbDataReader> (e);
+                       }
                }
                
                public Task<DbDataReader> ExecuteReaderAsync (CommandBehavior behavior)
@@ -195,10 +223,17 @@ namespace System.Data.Common {
                        return ExecuteReaderAsync (behavior, CancellationToken.None);
                }
                
-               [MonoTODO]
                public Task<DbDataReader> ExecuteReaderAsync (CommandBehavior behavior, CancellationToken cancellationToken)
                {
-                       throw new NotImplementedException ();
+                       if (cancellationToken.IsCancellationRequested) {
+                               return TaskHelper.CreateCanceledTask<DbDataReader> ();
+                       }
+                       
+                       try {
+                               return Task.FromResult (ExecuteReader (behavior));
+                       } catch (Exception e) {
+                               return TaskHelper.CreateExceptionTask<DbDataReader> (e);
+                       }
                }
 
 #endif
index 5d04c218d033330ea588a63751fb4c2b95eb8b35..94355018c4ca9741791ba6d0486402cb6e04055f 100644 (file)
@@ -754,10 +754,18 @@ namespace System.Data.Common {
                        return OpenAsync (CancellationToken.None);
                }
                
-               [MonoTODO]
                public virtual Task OpenAsync (CancellationToken cancellationToken)
                {
-                       throw new NotImplementedException ();
+                       if (cancellationToken.IsCancellationRequested) {
+                               return TaskHelper.CreateCanceledTask ();
+                       }
+                       
+                       try {
+                               Open ();
+                               return TaskHelper.CreateVoidTask ();
+                       } catch (Exception e) {
+                               return TaskHelper.CreateExceptionTask (e);
+                       }
                }
 #endif
 
index 676fd1404f6872a64f2250086d0f4bc0887c95bf..a25b97882cfbad783b3da218b925a36442b7c6aa 100644 (file)
@@ -200,10 +200,17 @@ namespace System.Data.Common {
                        return GetFieldValueAsync<T> (ordinal, CancellationToken.None);
                }
                
-               [MonoTODO]
                public virtual Task<T> GetFieldValueAsync<T> (int ordinal, CancellationToken cancellationToken)
                {
-                       throw new NotImplementedException ();
+                       if (cancellationToken.IsCancellationRequested) {
+                               return TaskHelper.CreateCanceledTask<T> ();
+                       }
+                       
+                       try {
+                               return Task.FromResult<T> (GetFieldValue<T> (ordinal));
+                       } catch (Exception e) {
+                               return TaskHelper.CreateExceptionTask<T> (e);
+                       }
                }
                
                public Task<bool> NextResultAsync ()
@@ -228,16 +235,30 @@ namespace System.Data.Common {
                        throw new NotImplementedException ();   
                }
 
-               [MonoTODO]
                public virtual Task<bool> IsDBNullAsync (int ordinal, CancellationToken cancellationToken)
                {
-                       throw new NotImplementedException ();
+                       if (cancellationToken.IsCancellationRequested) {
+                               return TaskHelper.CreateCanceledTask<bool> ();
+                       }
+                       
+                       try {
+                               return Task.FromResult (IsDBNull (ordinal));
+                       } catch (Exception e) {
+                               return TaskHelper.CreateExceptionTask<bool> (e);
+                       }
                }
                
-               [MonoTODO]
                public virtual Task<bool> NextResultAsync (CancellationToken cancellationToken)
                {
-                       throw new NotImplementedException ();
+                       if (cancellationToken.IsCancellationRequested) {
+                               return TaskHelper.CreateCanceledTask<bool> ();
+                       }
+                       
+                       try {
+                               return Task.FromResult (NextResult ());
+                       } catch (Exception e) {
+                               return TaskHelper.CreateExceptionTask<bool> (e);
+                       }
                }
                
                public Task<bool> ReadAsync ()
@@ -245,10 +266,17 @@ namespace System.Data.Common {
                        return ReadAsync (CancellationToken.None);
                }
                
-               [MonoTODO]
                public virtual Task<bool> ReadAsync (CancellationToken cancellationToken)
                {
-                       throw new NotImplementedException ();
+                       if (cancellationToken.IsCancellationRequested) {
+                               return TaskHelper.CreateCanceledTask<bool> ();
+                       }
+                       
+                       try {
+                               return Task.FromResult (Read ());
+                       } catch (Exception e) {
+                               return TaskHelper.CreateExceptionTask<bool> (e);
+                       }
                }
 #endif
 
diff --git a/mcs/class/System.Data/System.Data.Common/TaskHelper.cs b/mcs/class/System.Data/System.Data.Common/TaskHelper.cs
new file mode 100644 (file)
index 0000000..511edbf
--- /dev/null
@@ -0,0 +1,71 @@
+//
+// System.Data.Common.TaskHelper.cs
+//
+// Copyright (C) 2013 Pēteris Ņikiforovs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_5
+
+using System;
+using System.Threading.Tasks;
+
+namespace System.Data.Common {
+       static class TaskHelper
+       {
+               internal static Task CreateCanceledTask ()
+               {
+                       TaskCompletionSource<object> tsc = new TaskCompletionSource<object> ();
+                       tsc.SetCanceled ();
+                       return tsc.Task;
+               }
+               
+               internal static Task<T> CreateCanceledTask<T> ()
+               {
+                       TaskCompletionSource<T> tsc = new TaskCompletionSource<T> ();
+                       tsc.SetCanceled ();
+                       return tsc.Task;
+               }
+               
+               internal static Task CreateExceptionTask (Exception e)
+               {
+                       TaskCompletionSource<object> tsc = new TaskCompletionSource<object> ();
+                       tsc.SetException (e);
+                       return tsc.Task;
+               }
+               
+               internal static Task<T> CreateExceptionTask<T> (Exception e)
+               {
+                       TaskCompletionSource<T> tsc = new TaskCompletionSource<T> ();
+                       tsc.SetException (e);
+                       return tsc.Task;
+               }
+               
+               internal static Task CreateVoidTask ()
+               {
+                       TaskCompletionSource<object> tsc = new TaskCompletionSource<object> ();
+                       tsc.SetResult (null);
+                       return tsc.Task;
+               }
+       }
+}
+
+#endif
index 4b7a24ec003b4e6dde9bb33c618a9e38ebc744aa..aeae903dbc907c5a880348a0459e045d06b1adfb 100644 (file)
@@ -176,6 +176,7 @@ System.Data.Common/SchemaInfo.cs
 System.Data.Common/SchemaTableColumn.cs
 System.Data.Common/SchemaTableOptionalColumn.cs
 System.Data.Common/SupportedJoinOperators.cs
+System.Data.Common/TaskHelper.cs
 System.Data.OleDb/libgda.cs
 System.Data.OleDb/OleDbParameterConverter.cs
 System.Data.OleDb/OleDbCommand.cs
index db4ad0c29c9a7c613b58052fd4454093a948cbb2..c3df83b3b0c3b4790f8a38dd7bb80271ff892bbe 100644 (file)
@@ -1365,7 +1365,7 @@ namespace System.Data {
                /// </summary>
                public void SetParentRow (DataRow parentRow, DataRelation relation)
                {
-                       if (_table == null || parentRow.Table == null)
+                       if (_table == null || (parentRow != null && parentRow.Table == null))
                                throw new RowNotInTableException ("This row has been removed from a table and does not have any data.  BeginEdit() will allow creation of new data in this row.");
 
                        if (parentRow != null && _table.DataSet != parentRow.Table.DataSet)
@@ -1378,10 +1378,13 @@ namespace System.Data {
                        BeginEdit();
 
                        IEnumerable relations;
-                       if (relation == null)
-                               relations = _table.ParentRelations;
-                       else
+                       if (relation != null) {
+                               if (parentRow != null && relation.ParentColumns [0].Table != parentRow.Table)
+                                       throw new InvalidConstraintException (string.Format ("Parent belongs to table {0} but relation is for table {1}", parentRow.Table, relation.ParentColumns [0].Table));
                                relations = new DataRelation [] { relation };
+                       } else {
+                               relations = _table.ParentRelations;
+                       }
 
                        foreach (DataRelation rel in relations) {
                                DataColumn [] childCols = rel.ChildColumns;
@@ -1390,7 +1393,7 @@ namespace System.Data {
                                for (int i = 0; i < parentCols.Length; i++) {
                                        if (parentRow == null) {
                                                childCols [i].DataContainer [Proposed] = DBNull.Value;
-                                       } else {
+                                       } else if (parentCols [i].Table == parentRow.Table) {
                                                int defaultIdx = parentRow.IndexFromVersion (DataRowVersion.Default);
                                                childCols [i].DataContainer.CopyValue(parentCols [i].DataContainer, defaultIdx, Proposed);
                                        }
index 21204a5d5680d74a660b4d786a850d48b05d1e89..36e93707be5e57b8032e0b31d64bf9e987239c9a 100644 (file)
@@ -274,9 +274,9 @@ namespace System.Data
                        int count = 0, match = -1;
                        for (int i = start; i < List.Count; i++) {
                                String name2 = ((DataTable) List[i]).TableName;
-                               if (String.Compare (name, name2, false) == 0)
+                               if (String.Compare (name, name2, false, dataSet.Locale) == 0)
                                        return i;
-                               if (String.Compare (name, name2, true) == 0) {
+                               if (String.Compare (name, name2, true, dataSet.Locale) == 0) {
                                        match = i;
                                        count++;
                                }
index 7446bb4e6266118449c686645e0d3006e682be27..2a9f7cdada47f9412343c5f13fffed815e86b799 100644 (file)
@@ -51,6 +51,9 @@ namespace MonoTests.System.Data.Common
        }\r
 \r
        [TestFixture]\r
+#if MOBILE\r
+       [Ignore ("CAS is not supported and parts will be linked away")]\r
+#endif\r
        public class DBDataPermissionAttributeTest\r
        {\r
                [Test]\r
index 9c2842619f4fc1686b43d6067164f1b5471c2892..ff8bd76f393dbadac8b95c70ba30b8e8e1caa555 100644 (file)
@@ -82,6 +82,9 @@ namespace MonoTests.System.Data.Common {
        }
 
        [TestFixture]
+#if MOBILE
+       [Ignore ("CAS is not supported and parts will be linked away")]
+#endif
        public class DBDataPermissionTest {
 
                private const string defaultConnectString = "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;";
index dfcd06289c6cd3b427150d999e81077db5476ec8..361380874dbed88ac3ae96b49ab1f254b5b92b91 100644 (file)
@@ -1791,6 +1791,7 @@ namespace MonoTests.System.Data.Common
                }
 
                 [Test]
+                               [NUnit.Framework.Category ("MobileNotWorking")] // DefaultMemberAttribute is removed by the tuner, causing #3 to fail
                 public void ICTD_GetClassNameTest ()
                 {
                         ICustomTypeDescriptor ictd = (ICustomTypeDescriptor) builder;
index 4923e644ebcf848af8ff4e1b5f23094f334f0b8d..f6d1336ae2ecd435b9328f4eaff497dab31246a6 100644 (file)
@@ -37,6 +37,9 @@ using System.Security.Permissions;
 namespace MonoTests.System.Data.SqlClient {\r
 \r
        [TestFixture]\r
+#if MOBILE\r
+       [Ignore ("CAS is not supported and parts will be linked away")]\r
+#endif\r
        public class SqlClientPermissionAttributeTest {\r
 \r
                [Test]\r
index da430b1ac2dd4d343f6f5cb0e5cfe9b83e0b9c8f..5d2602ae500eff277c2134f1ca392d3f83f5ee99 100644 (file)
@@ -39,6 +39,9 @@ namespace MonoTests.System.Data.SqlClient {
        // NOTE: Most tests are are located in the base class, DBDataPermission\r
 \r
        [TestFixture]\r
+#if MOBILE\r
+       [Ignore ("CAS is not supported and parts will be linked away")]\r
+#endif\r
        public class SqlClientPermissionTest {\r
 \r
                private void Check (string msg, DBDataPermission dbdp, bool blank, bool unrestricted, int count)\r
index d5bbcf4586ac4c91ae159585f6dff8797a3bed00..5b2fd8ca9f3d66c97964d7d1ae0b44fc596f32cd 100644 (file)
@@ -1007,5 +1007,163 @@ namespace MonoTests.System.Data
                        AssertEquals (DataRowState.Detached, dr.RowState);
                        object o = dr ["col"];
                }
+
+               [Test]
+               public void SetParentRow_Null ()
+               {
+                       DataSet ds = new DataSet();
+
+                       DataTable       child   = ds.Tables.Add("child");
+                       child.Columns.Add("column1");
+
+                       DataRow r1 = child.NewRow();
+
+                       r1.SetParentRow(null);
+               }
+
+               [Test]
+               public void SetParentRow_DataInheritance ()
+               {
+                       var ds = new DataSet() ;
+
+                       var     child                   = ds.Tables.Add("child") ;
+
+                       var     childColumn1    = child.Columns.Add("column1");
+                       var     childColumn2    = child.Columns.Add("column2");
+
+                       var     parent1                 = ds.Tables.Add("parent1");
+                       var     parent1Column1  = parent1.Columns.Add("column1");
+                       var     parent1Column2  = parent1.Columns.Add("column2");
+
+                       var     parent2                 = ds.Tables.Add("parent2");
+                       var     parent2Column1  = parent2.Columns.Add("column1");
+                       var     parent2Column2  = parent2.Columns.Add("column2");
+
+                       var relation1 = ds.Relations.Add("parent1-child", parent1Column1, childColumn1);
+                                                       ds.Relations.Add("parent2-child", parent2Column2, childColumn2);
+
+                       var childRow1   = child.NewRow();
+                       var parent1Row  = parent1.NewRow();
+                       var parent2Row  = parent2.NewRow();
+
+                       parent1Row[parent1Column1] = "p1c1";
+                       parent1Row[parent1Column2] = "p1c2";
+                       parent2Row[parent2Column1] = "p2c1";
+                       parent2Row[parent2Column2] = "p2c2";
+
+                       child.Rows.Add(childRow1);
+                       parent1.Rows.Add(parent1Row);
+                       parent2.Rows.Add(parent2Row);
+
+                       childRow1.SetParentRow(parent1Row);
+                       AssertEquals ("p1c1", childRow1[childColumn1]);
+                       AssertEquals (DBNull.Value, childRow1[childColumn2]);
+
+                       childRow1.SetParentRow(parent2Row);
+                       AssertEquals ("p1c1", childRow1[childColumn1]);
+                       AssertEquals ("p2c2", childRow1[childColumn2]);
+
+                       childRow1.SetParentRow(null);
+                       AssertEquals (DBNull.Value, childRow1[childColumn1]);
+                       AssertEquals (DBNull.Value, childRow1[childColumn2]);
+
+                       childRow1.SetParentRow(parent2Row);
+                       AssertEquals (DBNull.Value, childRow1[childColumn1]);
+                       AssertEquals ("p2c2", childRow1[childColumn2]);
+               }
+
+               [Test]
+               public void SetParentRow_with_Relation ()
+               {
+                       var ds = new DataSet() ;
+
+                       var     child                   = ds.Tables.Add("child") ;
+
+                       var     childColumn1    = child.Columns.Add("column1");
+                       var     childColumn2    = child.Columns.Add("column2");
+
+                       var     parent1                 = ds.Tables.Add("parent1");
+                       var     parent1Column1  = parent1.Columns.Add("column1");
+                       var     parent1Column2  = parent1.Columns.Add("column2");
+
+                       var     parent2                 = ds.Tables.Add("parent2");
+                       var     parent2Column1  = parent2.Columns.Add("column1");
+                       var     parent2Column2  = parent2.Columns.Add("column2");
+
+                       var relation1 = ds.Relations.Add("parent1-child", parent1Column1, childColumn1) ; 
+                       var relation2 = ds.Relations.Add("parent2-child", parent2Column2, childColumn2) ;
+
+                       var childRow1   = child.NewRow();
+                       var parent1Row  = parent1.NewRow();
+                       var parent2Row  = parent2.NewRow();
+
+                       parent1Row[parent1Column1] = "p1c1";
+                       parent1Row[parent1Column2] = "p1c2";
+                       parent2Row[parent2Column1] = "p2c1";
+                       parent2Row[parent2Column2] = "p2c2";
+
+                       child.Rows.Add(childRow1);
+                       parent1.Rows.Add(parent1Row);
+                       parent2.Rows.Add(parent2Row);
+
+
+                       childRow1.SetParentRow (null, relation2);
+                       AssertEquals (DBNull.Value, childRow1[childColumn1]);
+                       AssertEquals (DBNull.Value, childRow1[childColumn2]);
+
+                       try {
+                               childRow1.SetParentRow(parent1Row, relation2);
+                               Fail ("Must throw InvalidConstaintException");
+                       } catch (InvalidConstraintException e) {
+                       }
+                       AssertEquals (DBNull.Value, childRow1[childColumn1]);
+                       AssertEquals (DBNull.Value, childRow1[childColumn2]);
+
+                       childRow1.SetParentRow(parent1Row, relation1);
+                       AssertEquals ("p1c1", childRow1[childColumn1]);
+                       AssertEquals (DBNull.Value, childRow1[childColumn2]);
+
+
+                       childRow1.SetParentRow (null, relation2);
+                       AssertEquals ("p1c1", childRow1[childColumn1]);
+                       AssertEquals (DBNull.Value, childRow1[childColumn2]);
+
+                       childRow1.SetParentRow (null, relation1);
+                       AssertEquals (DBNull.Value, childRow1[childColumn1]);
+                       AssertEquals (DBNull.Value, childRow1[childColumn2]);
+               }
+
+               [Test]
+               public void SetParent_missing_ParentRow ()
+               {
+                       var ds = new DataSet() ;
+
+                       var     child                   = ds.Tables.Add("child") ;
+
+                       var     childColumn1    = child.Columns.Add("column1");
+                       var     childColumn2    = child.Columns.Add("column2");
+
+                       var     parent1                 = ds.Tables.Add("parent1");
+                       var     parentColumn1   = parent1.Columns.Add("column1");
+
+                       var     parent2                 = ds.Tables.Add("parent2");
+                       var     parentColumn2   = parent2.Columns.Add("column2");
+
+                       ds.Relations.Add("parent1-child", parentColumn1, childColumn1);
+                       ds.Relations.Add("parent2-child", parentColumn2, childColumn2);
+
+                       var childRow = child.NewRow();
+                       var parentRow = parent2.NewRow();
+
+                       parentRow[parentColumn2] = "value";
+
+                       child.Rows.Add(childRow);
+                       parent2.Rows.Add(parentRow);
+
+                       childRow.SetParentRow(parentRow);
+                       AssertEquals (DBNull.Value, childRow[childColumn1]);
+                       AssertEquals ("value", childRow[childColumn2]);
+               }
+
        }
 }
index 6a63a23207ea76380733151f69a4987b4db4bcd6..a8d26bdae3b2019f7d4381a23ec00c4829c1d638 100644 (file)
@@ -801,13 +801,14 @@ namespace MonoTests.System.Data
                        dataSet1.Tables.Add(table);\r
                        table.LoadDataRow(new object[]{1, "One"}, false);\r
                        table.LoadDataRow(new object[]{2, "Two"}, false);\r
+                       string file = Path.Combine (Path.GetTempPath (), "schemas-test.xml");\r
                        try {\r
-                               dataSet1.WriteXml("Test/System.Data/schemas/test.xml", XmlWriteMode.WriteSchema);\r
+                               dataSet1.WriteXml (file, XmlWriteMode.WriteSchema);\r
                        }\r
                        catch (Exception ex) {\r
                                Assert.Fail ("DSExtPropTest failed: WriteXml failed with : "+ex.Message);\r
                        } finally {\r
-                               File.Delete ("Test/System.Data/schemas/test.xml");\r
+                               File.Delete (file);\r
                        }\r
                        \r
                        DataSet dataSet2 = new DataSet();\r
index fe6701a579ede5b6c267595d56773a8fecf9c440..27df0f589849c36eb477a933314db4f1f253993c 100644 (file)
@@ -37,6 +37,7 @@ using MonoTests.System.Data.Utils;
 using System.Xml;
 using System.Runtime.Serialization;
 using System.Runtime.Serialization.Formatters.Binary;
+using System.Globalization;
 
 namespace MonoTests_System.Data
 {
@@ -985,6 +986,17 @@ namespace MonoTests_System.Data
                        Assert.AreEqual(culInfo , ds.Locale , "DS157");
                }
 
+               [Test]
+               [SetCulture ("cs-CZ")]
+               public void DataSetSpecificCulture ()
+               {                       
+                       var ds = new DataSet() ;
+                       ds.Locale = CultureInfo.GetCultureInfo (1033);
+                       var dt = ds.Tables.Add ("machine");
+                       dt.Locale = ds.Locale;
+                       Assert.AreSame (dt, ds.Tables["MACHINE"]);
+               }               
+
                [Test] public void MergeFailed()
                {
                        EventRaised = false;
@@ -2022,7 +2034,7 @@ namespace MonoTests_System.Data
 
                [Test] public void ReadXmlSchema_ByFileName()
                {
-                       string sTempFileName = "tmpDataSet_ReadWriteXml_43899.xml"  ;
+                       string sTempFileName = Path.Combine (Path.GetTempPath (), "tmpDataSet_ReadWriteXml_43899.xml");
 
                        DataSet ds1 = new DataSet();
                        ds1.Tables.Add(DataProvider.CreateParentDataTable());
index d41235ef4b3f9c441d409d9d71642c36a5976658..d752df4f1ac2c291267ff18e0a7ff3f7c12aaaee 100644 (file)
@@ -3091,8 +3091,8 @@ namespace MonoTests.System.Data
                [Test]
                public void ReadWriteXmlSchema_ByFileName ()
                {
-                       string sTempFileName1 = "tmpDataSet_ReadWriteXml_43899-1.xml";
-                       string sTempFileName2 = "tmpDataSet_ReadWriteXml_43899-2.xml";
+                       string sTempFileName1 = Path.Combine (Path.GetTempPath (), "tmpDataSet_ReadWriteXml_43899-1.xml");
+                       string sTempFileName2 = Path.Combine (Path.GetTempPath (), "tmpDataSet_ReadWriteXml_43899-2.xml");
 
                        DataSet ds1 = new DataSet ();
                        ds1.Tables.Add (DataProvider.CreateParentDataTable ());
index 64ad3df7ca647b60ca21fa69dfd903c34dba8500..b1174b836153b2507a9dfbdcc5b18e1a54ea3dcd 100644 (file)
@@ -171,6 +171,7 @@ System.Data.Common/SchemaInfo.cs
 System.Data.Common/SchemaTableColumn.cs
 System.Data.Common/SchemaTableOptionalColumn.cs
 System.Data.Common/SupportedJoinOperators.cs
+System.Data.Common/TaskHelper.cs
 System.Data.SqlTypes/INullable.cs
 System.Data.SqlTypes/SqlBinary.cs
 System.Data.SqlTypes/SqlBoolean.cs
index e8be02d982dd90d57d051b092916f20d1270b40b..68b44541096d00f041e09f28ae31e867ab597d0f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{89C94BC2-CBEF-4194-AC17-B1757DC2B182}</ProjectGuid>\r
+    <ProjectGuid>{FF5993DD-A243-4512-97FE-EB3613EF2860}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Design-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_2_0.csproj">\r
-      <Project>{BA19643F-7F03-4902-9BB6-E94F4467F56A}</Project>\r
+      <Project>{6088F0A1-9658-4B71-86DB-8685B9279154}</Project>\r
       <Name>Accessibility\Accessibility-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Drawing.Design.dll">\r
index 2101d23df2757f14024a9a005a70b9f178ad1be4..fe79201a3664464232c282e2a8bf00cdec90a4a4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{70B6D76F-F9A5-4E85-AF0E-3A793C0481AF}</ProjectGuid>\r
+    <ProjectGuid>{F3F4641D-417E-4C93-9254-4A2B6CB57FC6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Design-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_4_0.csproj">\r
-      <Project>{B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}</Project>\r
+      <Project>{3C0E9135-1458-47F6-9076-17FFB1E3E32F}</Project>\r
       <Name>Accessibility\Accessibility-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing.Design\System.Drawing.Design-net_2_0.csproj">\r
-      <Project>{A6599D9A-CDAD-4AF3-84A1-1A664D1CC300}</Project>\r
+      <Project>{21BEB426-C8FA-484B-A7B0-1D4A5BF3307B}</Project>\r
       <Name>System.Drawing.Design\System.Drawing.Design-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c992090d263665ce3e87ceb7409b08db3ce9ced6..575661478504df5e09c3d99a87fb89e5993e5230 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C0EEF402-0A7C-4FF1-8AE8-0D53850AB70E}</ProjectGuid>\r
+    <ProjectGuid>{2ABC2A54-EF46-42A3-BCCD-A58070E5D2F0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Design-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_4_5.csproj">\r
-      <Project>{7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}</Project>\r
+      <Project>{121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}</Project>\r
       <Name>Accessibility\Accessibility-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing.Design\System.Drawing.Design-net_4_0.csproj">\r
-      <Project>{6BFAB010-392A-4F3D-861D-19B5BEC476D5}</Project>\r
+      <Project>{8C367062-EFEF-4765-B1B1-5553608F6A60}</Project>\r
       <Name>System.Drawing.Design\System.Drawing.Design-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 019eacd4dce66e3aba4c9bd119dd33ab7f3b7fc2..26cb7cd1566ab66d1f0c178fbe12904ae9e61928 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AF5F10D5-D0C9-4D8F-A3EC-368A3F552E15}</ProjectGuid>\r
+    <ProjectGuid>{0FCBC103-009C-4138-948F-3E301D2B1912}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Design-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Design\System.Design-net_2_0-1.csproj">\r
-      <Project>{D75106C3-9D48-4054-82FF-DB9E7BAF216D}</Project>\r
+      <Project>{7BD57C92-6B92-45F0-8050-A0AEE810BC8D}</Project>\r
       <Name>System.Design\System.Design-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 679bf0591b6974730ea035068a442b439c51d0b2..62f61678b44034c830ab213d08d7b708efe03bbd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7C59519C-6D08-4503-B08D-D43F668C6701}</ProjectGuid>\r
+    <ProjectGuid>{C9676DB9-1951-4932-851D-F5EEA0C0B62C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Design-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Design\System.Design-net_4_0-1.csproj">\r
-      <Project>{6E8873F5-E704-4256-994D-5E4D9EE8EA1D}</Project>\r
+      <Project>{C8576BC8-9511-494F-B50E-C2219D151B4A}</Project>\r
       <Name>System.Design\System.Design-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a1e543a9eb5aecb63991fa8a84a8af8b73089b64..681de1e1ed0cacd716d9de9f2ad232386c2b6c59 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{00CB1FAE-7834-4589-94D0-40166739993E}</ProjectGuid>\r
+    <ProjectGuid>{5F2499BC-D237-48C8-B09A-0CD8C4FB4B2A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Design-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Design\System.Design-net_4_5-1.csproj">\r
-      <Project>{2414C54A-9454-4B25-932C-0724CF003A6D}</Project>\r
+      <Project>{54B3EC1E-F177-4E17-B4B9-ADF5C4AEE9B4}</Project>\r
       <Name>System.Design\System.Design-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 138cabb9d6b7ba430da391a0093bd87e15b2626b..8014c14c42a9c343e2a9e6a26959126f531af504 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DA3B855A-70BC-444D-A651-3341F419F513}</ProjectGuid>\r
+    <ProjectGuid>{3733F281-341E-4468-BEBC-D17F51743D39}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.DirectoryServices-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_2_0.csproj">\r
-      <Project>{EE7F7F21-5B86-4D33-A935-858260FD774D}</Project>\r
+      <Project>{FCCE71BD-4C5C-4616-8B3E-ED306528BE16}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ec4f9580a2ac75d2519feb20fcc316069473e54f..5b36e23d600eac6618b166c49f91287ad74bbfc8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AD2159B2-7AA6-414A-86B7-89E4BFDCD4E4}</ProjectGuid>\r
+    <ProjectGuid>{19B659AC-3FDF-450B-8F69-4E664DF20A46}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.DirectoryServices-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_0.csproj">\r
-      <Project>{07D6E719-7A7E-4CA2-9F0B-CADF9A190FE4}</Project>\r
+      <Project>{7738B238-7C12-401A-8CCF-D44B4BD8ABDE}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ff3d1efd0fcd716b0454c0e77576519859e676dd..4a3e01284d27fd8e30d1ee7165097c0e9b043f32 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{97C8B52D-2E89-4EB1-856C-C9BD3A75A56B}</ProjectGuid>\r
+    <ProjectGuid>{F3D6D651-192F-4209-B272-7F8354D0CDB6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.DirectoryServices-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5.csproj">\r
-      <Project>{74565932-18F5-4BEC-AAB6-98230A4B662C}</Project>\r
+      <Project>{BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c9750382d8ff396fe8f7b2a36056af8fc6655323..c7a6a75d8342cbb1140cfca84ccf7d6d0f05f326 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C30CABA1-1496-4963-8711-EE0B43583568}</ProjectGuid>\r
+    <ProjectGuid>{FCACAB13-C325-41F6-BDFB-834370D57856}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.DirectoryServices-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.DirectoryServices\System.DirectoryServices-net_2_0.csproj">\r
-      <Project>{DA3B855A-70BC-444D-A651-3341F419F513}</Project>\r
+      <Project>{3733F281-341E-4468-BEBC-D17F51743D39}</Project>\r
       <Name>System.DirectoryServices\System.DirectoryServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_2_0.csproj">\r
-      <Project>{EE7F7F21-5B86-4D33-A935-858260FD774D}</Project>\r
+      <Project>{FCCE71BD-4C5C-4616-8B3E-ED306528BE16}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 820078cfbfe6156c053603ad3b79cff9a750c814..2a309149cfd995b61bc8719308d23c3b731bf08f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C6B3877C-19AB-46BA-A731-CF65DA1B546E}</ProjectGuid>\r
+    <ProjectGuid>{B7E7A1B5-FFF1-407C-97DD-C5FDBAEC8256}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.DirectoryServices-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.DirectoryServices\System.DirectoryServices-net_4_0.csproj">\r
-      <Project>{AD2159B2-7AA6-414A-86B7-89E4BFDCD4E4}</Project>\r
+      <Project>{19B659AC-3FDF-450B-8F69-4E664DF20A46}</Project>\r
       <Name>System.DirectoryServices\System.DirectoryServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_0.csproj">\r
-      <Project>{07D6E719-7A7E-4CA2-9F0B-CADF9A190FE4}</Project>\r
+      <Project>{7738B238-7C12-401A-8CCF-D44B4BD8ABDE}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4e456897fca5bc06fd6b5226fe1fabe503a876d4..af92e368f57ff66a0c75d316534daf278ef4a257 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B7DE9FFF-1E5D-464F-9C4B-5A6DA9D6EBC3}</ProjectGuid>\r
+    <ProjectGuid>{D358D57B-1CF3-4DBC-B5F7-17B69814B7DE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.DirectoryServices-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.DirectoryServices\System.DirectoryServices-net_4_5.csproj">\r
-      <Project>{97C8B52D-2E89-4EB1-856C-C9BD3A75A56B}</Project>\r
+      <Project>{F3D6D651-192F-4209-B272-7F8354D0CDB6}</Project>\r
       <Name>System.DirectoryServices\System.DirectoryServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5.csproj">\r
-      <Project>{74565932-18F5-4BEC-AAB6-98230A4B662C}</Project>\r
+      <Project>{BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6b735e3ffc196a89d589f23b0fbc661001b38337..55ee67897c950bb5bbd59598ff8c24290fa0704d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A6599D9A-CDAD-4AF3-84A1-1A664D1CC300}</ProjectGuid>\r
+    <ProjectGuid>{21BEB426-C8FA-484B-A7B0-1D4A5BF3307B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing.Design-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1a1eadca57af3b09e2ca22ea904b2a5dca662985..c9d3d884ab849df49c667e92cfb84554d1672a73 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6BFAB010-392A-4F3D-861D-19B5BEC476D5}</ProjectGuid>\r
+    <ProjectGuid>{8C367062-EFEF-4765-B1B1-5553608F6A60}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing.Design-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 29cbc585a6060639dbd5aee1097564473fc5db58..d8e443b21026c0d8dc56dcedda1fa189a2046594 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{167298A3-F7FD-41D9-888E-AAAD48074482}</ProjectGuid>\r
+    <ProjectGuid>{8B8B57E4-285A-409A-BA4A-290DE0055301}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing.Design-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 516e49c8d4b94aca5a613144b06c4520664fa492..d023bbe5103ab0e5a1be00dbed522d20e8a7a3e6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</ProjectGuid>\r
+    <ProjectGuid>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c6ef57c6fff826192067e5bd30a0e36b4462fbbb..183aa98b9847933ee68b0171c0f65c042512cbde 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</ProjectGuid>\r
+    <ProjectGuid>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 03f80f77541faa57435c9448eb3891becc28ffd8..a516d3918fc18c6671142b4d4b65a550c07b905e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</ProjectGuid>\r
+    <ProjectGuid>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index dbd514676b1378deca3e730078dc9c307c809d81..f714bd243494f62340c6629b309cb7b2eea93981 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0EDFBC91-1A16-460C-857A-02FAA48FDD28}</ProjectGuid>\r
+    <ProjectGuid>{C94D612B-833E-4BF7-AA27-6F3420E5698B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169,1595</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Runtime.Serialization.Formatters.Soap.dll">\r
       <Private>False</Private>\r
     </Reference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 899b51bc01c1034ff59c1b92f05cededa662f26a..35ea9f4c3db8af6cf08d005d4211c1119f889adc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{26DC27D6-9854-4FF7-A4FE-B630E3B056B4}</ProjectGuid>\r
+    <ProjectGuid>{A238B822-D4AF-4D95-AB3B-C6D12C1ABBD4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169,1595</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj">\r
-      <Project>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</Project>\r
+      <Project>{85526C39-79CA-40DB-940A-3C83DF30DF85}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c483edeea10d48fd1843dddc766bb0ec510e0566..3971ee36d9b6ba820a423c43f326bf3f9761e979 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3F01DF0A-D726-4D86-8E47-DADB8EA4D994}</ProjectGuid>\r
+    <ProjectGuid>{1DFD7DE0-7771-4EE5-93B7-60551C6D3C6F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169,1595</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing-tests-net_4_5</OutputPath>\r
     <Compile Include="Test\System.Drawing\TestStringFormat.cs" />\r
     <Compile Include="Test\System.Drawing\TestSystemBrushes.cs" />\r
     <Compile Include="Test\System.Drawing\TestSystemPens.cs" />\r
-    <Compile Include="Test\System.Drawing\TextureBrushTest.cs" />\r
-  </ItemGroup>\r
+    <Compile Include="Test\System.Drawing\TextureBrushTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent>\r
+\r
     </PreBuildEvent>\r
     <PostBuildEvent>\r
       xcopy $(TargetName).* $(ProjectDir)..\lib\net_4_5\ /Y /R /D\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
+      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
+    </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj">\r
-      <Project>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</Project>\r
+      <Project>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
       <LogicalName>indexed.png</LogicalName>\r
     </EmbeddedResource>\r
   </ItemGroup>\r
-</Project>\r
+</Project>
index 0a58e6a0e357291450a15920c9782a33779bbd83..b2b800565a6a2f47932808f473fdfeb00b95ecf9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{407F9F21-F368-4FC4-843A-5DBD4CC583BF}</ProjectGuid>\r
+    <ProjectGuid>{A946C338-F886-4859-A100-1F13A23E2970}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Dynamic-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fc9cff1fd62bd69d6bb2989987719e6d410b9e1f..bea64ea29b6b09423a69af574707a612c76bae70 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ADDB864A-84AC-41AB-A978-268B68E98EAF}</ProjectGuid>\r
+    <ProjectGuid>{FB9F6B34-05B5-444F-885E-FF87DA721F12}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Dynamic-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b5ab1168f9109eae50246141a18c28ff7fe1f2bd..72fe3f63aa082c5a98062e3aa83a0b3b12bb3ddf 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</ProjectGuid>\r
+    <ProjectGuid>{92E7A483-839B-4EFA-A77D-16C68F051941}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,162</NoWarn>\r
     <OutputPath>bin\Debug\System.EnterpriseServices-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5c9e91e30bf91d975921244195c71cf9e6dc15c3..30a52a03df793ee84d5e5d241a21743ee7f1a019 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</ProjectGuid>\r
+    <ProjectGuid>{31465E05-7B4F-4209-8B9B-5F596A032D27}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,162</NoWarn>\r
     <OutputPath>bin\Debug\System.EnterpriseServices-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2ad886024d1452a0f67d0fc1f16a447b2368605c..e6ce58d59c664ebe89bb781e0df66707ba3014d9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2B2808F7-930A-4416-A060-57D9F8DC879C}</ProjectGuid>\r
+    <ProjectGuid>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,162</NoWarn>\r
     <OutputPath>bin\Debug\System.EnterpriseServices-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 20ddee2d77cf7ed719e8ef19e40f32697d27605f..233b180c61dc6685ecbcedc7520b6b4bfb17017e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{33F1FAD8-42DA-489B-BEEE-E7E4EFE3891F}</ProjectGuid>\r
+    <ProjectGuid>{5A185DDB-82E9-4241-8216-82988647755A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel.Selectors-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_2_0.csproj">\r
-      <Project>{F2FA985C-3E81-483E-BB6E-E814706D57AE}</Project>\r
+      <Project>{FB6EBCB1-9EAF-4671-A9CB-505DC2FEC8A0}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 95c0619df99e4edb215cb8c3507f8170d3f780be..4e55b27a363e58911d6697a95b660ab6a9c49dec 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}</ProjectGuid>\r
+    <ProjectGuid>{45FB5242-B51C-43BC-A7B5-75E5E17C4E95}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel.Selectors-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_0.csproj">\r
-      <Project>{4326E85E-00B2-47F8-9A54-A8E15021CBA3}</Project>\r
+      <Project>{F3D909C0-D548-4FBC-BA04-BC8A445954EA}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5ea897ae8480cb06642d879d46e02959d1d33a78..43ed0c9446ce6c9362fb06f97e6d00f84b56f3de 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}</ProjectGuid>\r
+    <ProjectGuid>{5889C0B9-25DF-4405-A240-AC0615F4B3EB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel.Selectors-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_5.csproj">\r
-      <Project>{1B9AFE07-4230-4DE0-8A9F-C277179098FF}</Project>\r
+      <Project>{1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 00c4bebd99d21eb5f5ba88a1045901b38fb671d5..fb95c791c03639cec92e689518516682fcd93849 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F2FA985C-3E81-483E-BB6E-E814706D57AE}</ProjectGuid>\r
+    <ProjectGuid>{FB6EBCB1-9EAF-4671-A9CB-505DC2FEC8A0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 8ae224be8e5a8e8b1e4db6d673e3497d16e5707c..95caecc82cc973c35220e722cf82a634b18a9c5d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4326E85E-00B2-47F8-9A54-A8E15021CBA3}</ProjectGuid>\r
+    <ProjectGuid>{F3D909C0-D548-4FBC-BA04-BC8A445954EA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 203fc4278e1e067d9952ea695ff62103f79440a4..0414af47742db2c1e13e3ed140b578da33071f11 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1B9AFE07-4230-4DE0-8A9F-C277179098FF}</ProjectGuid>\r
+    <ProjectGuid>{1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4ab4232b6782faf90125add69dbf4d55fdad514b..fb59b3967036e7ba4f411d4915c82ab8539298a2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8013B230-BE02-4CE1-ABE8-BB834870FEC3}</ProjectGuid>\r
+    <ProjectGuid>{3852A17A-5D9C-4348-AEBF-2EE0EC3216FD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_2_0.csproj">\r
-      <Project>{F2FA985C-3E81-483E-BB6E-E814706D57AE}</Project>\r
+      <Project>{FB6EBCB1-9EAF-4671-A9CB-505DC2FEC8A0}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 89cbf67021bbc00fbb6d26dce6e93b089e55ec92..084bf0a3689b10224da71e15d90b95db9941cf85 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0E0B4A97-BE69-42C4-B5A5-B901FD60DBCC}</ProjectGuid>\r
+    <ProjectGuid>{EAA2407E-0E00-46D9-85F4-4EA31B1A0A95}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_0.csproj">\r
-      <Project>{4326E85E-00B2-47F8-9A54-A8E15021CBA3}</Project>\r
+      <Project>{F3D909C0-D548-4FBC-BA04-BC8A445954EA}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4ead3d1affa26f5f26ba2b07c81b5dd212c9534d..b6667fe1e77e1d9e69ff739d7e0de791455d49bc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{79CC8709-A8CF-4AB2-8077-924F769AC65E}</ProjectGuid>\r
+    <ProjectGuid>{74D8D6B9-1D98-4F19-A834-A0C603AD1482}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_5.csproj">\r
-      <Project>{1B9AFE07-4230-4DE0-8A9F-C277179098FF}</Project>\r
+      <Project>{1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6c35868c35dc49d1ea93bcfc2ef6628e73e616dc..1ff5a5fd49cb428eb40fda74cea3bd73fcd325be 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{05BDD718-DDD2-4300-A960-3283290059A0}</ProjectGuid>\r
+    <ProjectGuid>{524097C2-FED2-464A-878B-4A782E51093F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Json.Microsoft-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.CSharp\Microsoft.CSharp-net_4_0.csproj">\r
-      <Project>{56A7FA9E-7F2B-4BCB-8523-FD4EEE876BE0}</Project>\r
+      <Project>{342E1BD0-A935-4D49-B71E-ECDF0B42F90F}</Project>\r
       <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1e29d352a0688eb12cadb5273c94e2b23554422e..865b072da4c19fc7dac8765ec6337ef46126c058 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DC000DEB-DEAE-4B93-994A-F9EB4DFB9901}</ProjectGuid>\r
+    <ProjectGuid>{A0CB0E7E-B383-4EE6-A7B8-E553318C3DBE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Json.Microsoft-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.CSharp\Microsoft.CSharp-net_4_5.csproj">\r
-      <Project>{94E8FEFF-9695-4F77-A8AB-85370336FE0D}</Project>\r
+      <Project>{AC2AB4A1-8005-4458-8B2B-614DA9BBC644}</Project>\r
       <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
diff --git a/mcs/class/System.Json/System.Json-net_2_0.csproj b/mcs/class/System.Json/System.Json-net_2_0.csproj
new file mode 100644 (file)
index 0000000..f05b5ed
--- /dev/null
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <PropertyGroup>\r
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
+    <ProductVersion>9.0.30729</ProductVersion>\r
+    <SchemaVersion>2.0</SchemaVersion>\r
+    <ProjectGuid>{0D85D5CB-96C9-47D3-9738-DF3D729063F4}</ProjectGuid>\r
+    <OutputType>Library</OutputType>\r
+    <NoWarn>1699</NoWarn>\r
+    <OutputPath>bin\Debug\System.Json-net_2_0</OutputPath>\r
+    <NoStdLib>True</NoStdLib>\r
+    <NoConfig>True</NoConfig>\r
+    \r
+    <AppDesignerFolder>Properties</AppDesignerFolder>\r
+    <RootNamespace>\r
+    </RootNamespace>\r
+    <AssemblyName>System.Json</AssemblyName>\r
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>\r
+    <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+    <DebugSymbols>true</DebugSymbols>\r
+    <DebugType>full</DebugType>\r
+    <NoWarn>1699</NoWarn>\r
+    <Optimize>false</Optimize>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+    <DebugType>pdbonly</DebugType>\r
+    <NoWarn>1699</NoWarn>\r
+    <Optimize>true</Optimize>\r
+    <DefineConstants>NET_1_1;NET_2_0</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+  </PropertyGroup>\r
+  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
+  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
+  is a problem to compile the Mono mscorlib.dll -->\r
+  <PropertyGroup>\r
+    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
+  </PropertyGroup>\r
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
+  <ItemGroup>\r
+    <Compile Include="..\..\build\common\Consts.cs" />\r
+    <Compile Include="..\System.ServiceModel.Web\System.Runtime.Serialization.Json\JavaScriptReader.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="System.Json\JsonArray.cs" />\r
+    <Compile Include="System.Json\JsonObject.cs" />\r
+    <Compile Include="System.Json\JsonPrimitive.cs" />\r
+    <Compile Include="System.Json\JsonType.cs" />\r
+    <Compile Include="System.Json\JsonValue.cs" />\r  </ItemGroup>\r
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
+       Other similar extension points exist, see Microsoft.Common.targets.\r
+  <Target Name="BeforeBuild">\r
+  </Target>\r
+  <Target Name="AfterBuild">\r
+  </Target>\r
+  -->\r
+  <PropertyGroup>\r
+    <PreBuildEvent>\r
+\r
+    </PreBuildEvent>\r
+    <PostBuildEvent>\r
+      xcopy $(TargetName).* $(ProjectDir)..\lib\net_2_0\ /Y /R /D\r
+  </PostBuildEvent>\r
+  </PropertyGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
+      <Name>corlib\corlib-net_2_0</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
+      <Name>System\System-net_2_0-2</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
+      <Name>System.XML\System.Xml-net_2_0-1</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
+      <Name>System.Core\System.Core-net_2_0</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_2_0.csproj">\r
+      <Project>{C1E98610-9EA1-4973-A48B-E7CE2E790F40}</Project>\r
+      <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_2_0</Name>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Folder Include="Properties\" />\r
+  </ItemGroup>\r
+</Project>
index 4d69e0332eb3da1922109f32bb1deb3e88523842..b41628c9a49c483c93ed304682fd77fcd0fd8491 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2EF16F5D-C799-4D6D-B489-3E5F75813927}</ProjectGuid>\r
+    <ProjectGuid>{71477BE9-736B-4E63-87FB-D3BCBA4BB863}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Json-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_0.csproj">\r
-      <Project>{2F40A7ED-89D4-414D-B916-6ECB39F15BD2}</Project>\r
+      <Project>{B9CFA1C3-B2EE-40CB-85EC-674A2D1CAC5F}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 57c6923a3690cd180e76ec6e9c299a0fd99570c4..a92505cd37f6cd867d57c695c1de90473c652f07 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DBD6E6AA-45EA-4844-989B-C95A001A0440}</ProjectGuid>\r
+    <ProjectGuid>{EB9696AB-2203-48F1-92B4-86BD28340248}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Json-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_5.csproj">\r
-      <Project>{89390ACC-32C7-45EE-A169-BA1A4EEE6C47}</Project>\r
+      <Project>{BC669CAE-D6F8-49B9-8AC3-68B48BD70587}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 59647fba93d752a58c42916f39999fc0d877654e..182c6bbcfdf3d32badad7bb33ffbab17dfb6ffb2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7D8F59BB-6E83-4C14-9669-6CAFE72B2EFD}</ProjectGuid>\r
+    <ProjectGuid>{63979AFA-C8E9-4FE6-8033-DE3913BAC11F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Json-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Json\System.Json-net_4_0.csproj">\r
-      <Project>{2EF16F5D-C799-4D6D-B489-3E5F75813927}</Project>\r
+      <Project>{71477BE9-736B-4E63-87FB-D3BCBA4BB863}</Project>\r
       <Name>System.Json\System.Json-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_0.csproj">\r
-      <Project>{2F40A7ED-89D4-414D-B916-6ECB39F15BD2}</Project>\r
+      <Project>{B9CFA1C3-B2EE-40CB-85EC-674A2D1CAC5F}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9b32df4258744b2d96cd72603cd37e847524e4bc..343fbd74875f51c4743521a450bf6d6326002a74 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4E2A4405-91F8-4A5F-9925-D16C0AE8BBB5}</ProjectGuid>\r
+    <ProjectGuid>{704ADB45-E58F-432D-955A-69E3B5DDEE77}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Json-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Json\System.Json-net_4_5.csproj">\r
-      <Project>{DBD6E6AA-45EA-4844-989B-C95A001A0440}</Project>\r
+      <Project>{EB9696AB-2203-48F1-92B4-86BD28340248}</Project>\r
       <Name>System.Json\System.Json-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_5.csproj">\r
-      <Project>{89390ACC-32C7-45EE-A169-BA1A4EEE6C47}</Project>\r
+      <Project>{BC669CAE-D6F8-49B9-8AC3-68B48BD70587}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5880acb77419fc442857d9303dc8f099ac2a08fa..ae6fe2e1c60823b2f301a71016102db22ea8fbb7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{39FA0360-6014-4819-9619-309FDAD12413}</ProjectGuid>\r
+    <ProjectGuid>{4A7B27F4-8841-4DF0-A062-8F26F2E0924B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Management-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_2_0.csproj">\r
-      <Project>{33DED2E2-4FCD-4070-BE3A-026D4F80D3C8}</Project>\r
+      <Project>{5CE6E3F2-E63D-4C2B-9CCE-6446021A1AF5}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e665b3d6bf01522f1cc5181b160c19d5b85a873d..cb91cfbd8eec485dc5bd500a04a26c8a5a25c55f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{08DC1959-A393-422D-B10D-322F5A702219}</ProjectGuid>\r
+    <ProjectGuid>{3BA8519F-6DBF-48EC-8BBD-2E69F5010E86}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Management-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_0.csproj">\r
-      <Project>{878F802D-3249-41E8-8322-A32C406383C6}</Project>\r
+      <Project>{3C248397-71FD-4A63-B4A5-9F2A28C4D983}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f34206b03916896263c72c31abae4b2bea17a9a5..31b3b4c8f12ee4b3fdbda29e9efe549dc26232ba 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A99FD368-6E3E-448C-83C5-A7D64762924E}</ProjectGuid>\r
+    <ProjectGuid>{07BD11C9-C562-4EC3-8B7E-26EA909393C0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Management-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_5.csproj">\r
-      <Project>{348A36EC-8291-460B-9CC2-8CA8AD1759A2}</Project>\r
+      <Project>{D413E89D-CE81-4766-BBC1-AC17A3FD5C95}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c65ae2f8c9c196c2929250c4880624dcff88391b..feede7a40faad00c5b95796545d041e91d564036 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{02BA7387-C09A-40FB-BE80-39588B822A29}</ProjectGuid>\r
+    <ProjectGuid>{858BC3D5-8B2D-4B24-8BD9-BDC36A1DAFE4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Messaging-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_2_0.csproj">\r
-      <Project>{33DED2E2-4FCD-4070-BE3A-026D4F80D3C8}</Project>\r
+      <Project>{5CE6E3F2-E63D-4C2B-9CCE-6446021A1AF5}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_2_0.csproj">\r
-      <Project>{6D5EFF77-937D-4425-9DDC-B88F7A4AB456}</Project>\r
+      <Project>{A516A3FA-33AA-46AB-9542-49952ED25A0F}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 982ee48959e26bd007af6ba45d8a399cd81fee0e..ecd8faed788096575f71e55def6d078006f93d3e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}</ProjectGuid>\r
+    <ProjectGuid>{443D0D78-0A65-4288-80C2-B58011E3A5D1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Messaging-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_0.csproj">\r
-      <Project>{878F802D-3249-41E8-8322-A32C406383C6}</Project>\r
+      <Project>{3C248397-71FD-4A63-B4A5-9F2A28C4D983}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_0.csproj">\r
-      <Project>{7D27EF3B-540A-4BBD-873C-878ABC927401}</Project>\r
+      <Project>{CD0A320A-620E-42D0-86CD-2D32F5592E57}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1657976adc208338cbe7d74daaaf73dc0c8caf1d..c033a41bd3217ab4cc89ea24be2b84f523744fb6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{47046600-6AFB-46AB-BCF6-8E9EDD67FA97}</ProjectGuid>\r
+    <ProjectGuid>{A8B93174-06DF-4FC7-8E3E-45F395A943EB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Messaging-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_5.csproj">\r
-      <Project>{348A36EC-8291-460B-9CC2-8CA8AD1759A2}</Project>\r
+      <Project>{D413E89D-CE81-4766-BBC1-AC17A3FD5C95}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_5.csproj">\r
-      <Project>{3D737371-B7D6-49E4-AA91-F67EF2E07A45}</Project>\r
+      <Project>{1CB843E3-75E7-4115-9EE6-7B7262AC6C96}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e8a8c3d331cdaed7f5b71290136bcfdbd4158de8..0dae6d8f1bed0e39ff03cfd5d379f52ecc288947 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{77EAF39A-5236-4980-9B23-C96AEAEC65BA}</ProjectGuid>\r
+    <ProjectGuid>{C6B37C3E-439F-425C-A48D-096CD95CF803}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Messaging-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_2_0.csproj">\r
-      <Project>{02BA7387-C09A-40FB-BE80-39588B822A29}</Project>\r
+      <Project>{858BC3D5-8B2D-4B24-8BD9-BDC36A1DAFE4}</Project>\r
       <Name>System.Messaging\System.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_2_0.csproj">\r
-      <Project>{33DED2E2-4FCD-4070-BE3A-026D4F80D3C8}</Project>\r
+      <Project>{5CE6E3F2-E63D-4C2B-9CCE-6446021A1AF5}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_2_0.csproj">\r
-      <Project>{6D5EFF77-937D-4425-9DDC-B88F7A4AB456}</Project>\r
+      <Project>{A516A3FA-33AA-46AB-9542-49952ED25A0F}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index 6f049ad6360667922925f8694c9f64eaa880539b..c9ecc7d3171018fc585c1aed7378e671c99b3691 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FF8EE1D0-E929-4217-AA07-060B8ECBD066}</ProjectGuid>\r
+    <ProjectGuid>{FFBBBC97-F827-49CA-A47F-92CF7B74AC2E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Messaging-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_0.csproj">\r
-      <Project>{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}</Project>\r
+      <Project>{443D0D78-0A65-4288-80C2-B58011E3A5D1}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_0.csproj">\r
-      <Project>{878F802D-3249-41E8-8322-A32C406383C6}</Project>\r
+      <Project>{3C248397-71FD-4A63-B4A5-9F2A28C4D983}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_0.csproj">\r
-      <Project>{7D27EF3B-540A-4BBD-873C-878ABC927401}</Project>\r
+      <Project>{CD0A320A-620E-42D0-86CD-2D32F5592E57}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index 0444cad8559c9f66780c89cecf8116d9343ea59e..467944924f56fd86daa523c174694a44b550ad89 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CF3B58EF-C823-47AD-B77F-ACAF6C2DE9DC}</ProjectGuid>\r
+    <ProjectGuid>{2A3A7368-D302-4166-820C-8CB18138740C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Messaging-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_5.csproj">\r
-      <Project>{47046600-6AFB-46AB-BCF6-8E9EDD67FA97}</Project>\r
+      <Project>{A8B93174-06DF-4FC7-8E3E-45F395A943EB}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_5.csproj">\r
-      <Project>{348A36EC-8291-460B-9CC2-8CA8AD1759A2}</Project>\r
+      <Project>{D413E89D-CE81-4766-BBC1-AC17A3FD5C95}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_5.csproj">\r
-      <Project>{3D737371-B7D6-49E4-AA91-F67EF2E07A45}</Project>\r
+      <Project>{1CB843E3-75E7-4115-9EE6-7B7262AC6C96}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index bcbdc177df21d2c3266ac28d613dcd10574b657f..57707fbb15d1b466f3cb70ffb0be67161921068a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{23304250-6657-44F1-851B-8EF6C5A9CEF7}</ProjectGuid>\r
+    <ProjectGuid>{9BDDA23D-1ABF-477A-AAA6-CD489033208E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Net.Http.Formatting-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net.Http\System.Net.Http-net_4_5.csproj">\r
-      <Project>{46CFCFD7-D328-4896-86F2-215A6577548C}</Project>\r
+      <Project>{BE71D058-35CB-4623-AA66-631C7EB5F139}</Project>\r
       <Name>System.Net.Http\System.Net.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
diff --git a/mcs/class/System.Net.Http.WebRequest/Assembly/AssemblyInfo.cs b/mcs/class/System.Net.Http.WebRequest/Assembly/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..c74c9c9
--- /dev/null
@@ -0,0 +1,58 @@
+//
+// AssemblyInfo.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Resources;
+using System.Security;
+using System.Security.Permissions;
+using System.Diagnostics;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Information about this assembly is defined by the following attributes. 
+// Change them to the values specific to your project.
+
+[assembly: AssemblyTitle ("System.Net.Http.WebRequest.dll")]
+[assembly: AssemblyDescription ("System.Net.Http.WebRequest.dll")]
+[assembly: AssemblyDefaultAlias ("System.Net.Http.WebRequest.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: SatelliteContractVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+
+[assembly: NeutralResourcesLanguage ("en-US")]
+[assembly: CLSCompliant (true)]
+[assembly: AssemblyDelaySign (true)]
+
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ComVisible (false)]
+
diff --git a/mcs/class/System.Net.Http.WebRequest/Makefile b/mcs/class/System.Net.Http.WebRequest/Makefile
new file mode 100644 (file)
index 0000000..2af118a
--- /dev/null
@@ -0,0 +1,11 @@
+thisdir = class/System.Net.Http.WebRequest
+SUBDIRS = 
+include ../../build/rules.make
+
+LIBRARY = System.Net.Http.WebRequest.dll
+
+LIB_MCS_FLAGS = -r:System.Net.Http.dll -r:System.dll
+
+TEST_MCS_FLAGS = -r:System.Net.Http.dll
+
+include ../../build/library.make
diff --git a/mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest.dll.sources b/mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest.dll.sources
new file mode 100644 (file)
index 0000000..ea3f5d0
--- /dev/null
@@ -0,0 +1,4 @@
+../../build/common/Consts.cs
+../../build/common/MonoTODOAttribute.cs
+Assembly/AssemblyInfo.cs
+System.Net.Http.WebRequest/WebRequestHandler.cs
diff --git a/mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest/WebRequestHandler.cs b/mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest/WebRequestHandler.cs
new file mode 100644 (file)
index 0000000..b19e6b8
--- /dev/null
@@ -0,0 +1,154 @@
+//
+// WebRequestHandler.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.Net.Cache;
+using System.Net.Security;
+using System.Security.Principal;
+using System.Security.Cryptography.X509Certificates;
+
+namespace System.Net.Http
+{
+       public class WebRequestHandler : HttpClientHandler
+       {
+               bool allowPipelining;
+               RequestCachePolicy cachePolicy;
+               AuthenticationLevel authenticationLevel;
+               TimeSpan continueTimeout;
+               TokenImpersonationLevel impersonationLevel;
+               int maxResponseHeadersLength;
+               int readWriteTimeout;
+               RemoteCertificateValidationCallback serverCertificateValidationCallback;
+               bool unsafeAuthenticatedConnectionSharing;
+
+               public WebRequestHandler ()
+               {
+                       allowPipelining = true;
+                       authenticationLevel = AuthenticationLevel.MutualAuthRequested;
+                       cachePolicy = System.Net.WebRequest.DefaultCachePolicy;
+                       continueTimeout = TimeSpan.FromMilliseconds (350);
+                       impersonationLevel = TokenImpersonationLevel.Delegation;
+                       maxResponseHeadersLength = HttpWebRequest.DefaultMaximumResponseHeadersLength;
+                       readWriteTimeout = 300000;
+                       serverCertificateValidationCallback = null;
+                       unsafeAuthenticatedConnectionSharing = false;
+               }
+
+               public bool AllowPipelining {
+                       get { return allowPipelining; }
+                       set {
+                               EnsureModifiability ();
+                               allowPipelining = value;
+                       }
+               }
+
+               public RequestCachePolicy CachePolicy {
+                       get { return cachePolicy; }
+                       set {
+                               EnsureModifiability ();
+                               cachePolicy = value;
+                       }
+               }
+
+               public AuthenticationLevel AuthenticationLevel {
+                       get { return authenticationLevel; }
+                       set {
+                               EnsureModifiability ();
+                               authenticationLevel = value;
+                       }
+               }
+
+               [MonoTODO]
+               public X509CertificateCollection ClientCertificates {
+                       get { throw new NotImplementedException (); }
+               }
+
+               [MonoTODO]
+               public TimeSpan ContinueTimeout {
+                       get { return continueTimeout; }
+                       set {
+                               EnsureModifiability ();
+                               continueTimeout = value;
+                       }
+               }
+
+               public TokenImpersonationLevel ImpersonationLevel {
+                       get { return impersonationLevel; }
+                       set {
+                               EnsureModifiability ();
+                               impersonationLevel = value;
+                       }
+               }
+
+               public int MaxResponseHeadersLength {
+                       get { return maxResponseHeadersLength; }
+                       set {
+                               EnsureModifiability ();
+                               maxResponseHeadersLength = value;
+                       }
+               }
+
+               public int ReadWriteTimeout {
+                       get { return readWriteTimeout; }
+                       set {
+                               EnsureModifiability ();
+                               readWriteTimeout = value;
+                       }
+               }
+
+               [MonoTODO]
+               public RemoteCertificateValidationCallback ServerCertificateValidationCallback {
+                       get { return serverCertificateValidationCallback; }
+                       set {
+                               EnsureModifiability ();
+                               serverCertificateValidationCallback = value;
+                       }
+               }
+
+               public bool UnsafeAuthenticatedConnectionSharing {
+                       get { return unsafeAuthenticatedConnectionSharing; }
+                       set {
+                               EnsureModifiability ();
+                               unsafeAuthenticatedConnectionSharing = value;
+                       }
+               }
+
+               internal override HttpWebRequest CreateWebRequest (HttpRequestMessage request)
+               {
+                       HttpWebRequest wr = base.CreateWebRequest (request);
+
+                       wr.Pipelined = allowPipelining;
+                       wr.AuthenticationLevel = authenticationLevel;
+                       wr.CachePolicy = cachePolicy;
+                       wr.ImpersonationLevel = impersonationLevel;
+                       wr.MaximumResponseHeadersLength = maxResponseHeadersLength;
+                       wr.ReadWriteTimeout = readWriteTimeout;
+                       wr.UnsafeAuthenticatedConnectionSharing = unsafeAuthenticatedConnectionSharing;
+
+                       return wr;
+               }
+       }
+}
+
index 869ab38bc95ef97f051374682be282473a69ef47..8e2d0dfeff3a1fff94f8d6626e08e82d7df944f4 100644 (file)
@@ -57,3 +57,5 @@ using System.Runtime.InteropServices;
 
 [assembly: ComVisible (false)]
 
+[assembly: InternalsVisibleTo ("System.Net.Http.WebRequest, PublicKey=002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e84aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293")]
+
index e9dafd76e9bb8307d548ee29f65752858e5cd915..448c48377a1017e2c4dd0f27eb860bd781d4c520 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{46CFCFD7-D328-4896-86F2-215A6577548C}</ProjectGuid>\r
+    <ProjectGuid>{BE71D058-35CB-4623-AA66-631C7EB5F139}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Net.Http-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0a6793c965ceb5196d6e6bb460a2582bca640ce1..533032b93bc3f136ca5b44be49a192b6a2b1481a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A99841AC-505D-4E3F-8EC7-17232A175EB9}</ProjectGuid>\r
+    <ProjectGuid>{7F42459F-0D03-42BF-BC81-7EDF54F78C05}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Net.Http-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net.Http\System.Net.Http-net_4_5.csproj">\r
-      <Project>{46CFCFD7-D328-4896-86F2-215A6577548C}</Project>\r
+      <Project>{BE71D058-35CB-4623-AA66-631C7EB5F139}</Project>\r
       <Name>System.Net.Http\System.Net.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f8d351e243f937b88bf6f3e97da9a49c80833a98..042fa7cd2dca2c1e6046f1912e890c4078a8a655 100644 (file)
@@ -85,7 +85,8 @@ namespace System.Net.Http.Headers
                                        throw new ArgumentNullException ("MediaType");
 
                                string temp;
-                               if (TryParseMediaType (new Lexer (value), out temp) != Token.Type.End)
+                               var token = TryParseMediaType (new Lexer (value), out temp);
+                               if (token == null || token.Value.Kind != Token.Type.End)
                                        throw new FormatException ();
 
                                media_type = temp;
index 2714835fee85f637165a8799484d14482ff6c1fa..1e1fcbf1021ffd69ea9e7814a9b69bbffec4c2c5 100644 (file)
@@ -38,7 +38,7 @@ namespace System.Net.Http
                static readonly TimeSpan TimeoutDefault = TimeSpan.FromSeconds (100);
 
                Uri base_address;
-               CancellationTokenSource cancellation_token;
+               CancellationTokenSource cts;
                bool disposed;
                HttpRequestHeaders headers;
                long buffer_size;
@@ -59,6 +59,7 @@ namespace System.Net.Http
                {
                        buffer_size = int.MaxValue;
                        timeout = TimeoutDefault;
+                       cts = new CancellationTokenSource ();
                }
 
                public Uri BaseAddress {
@@ -102,10 +103,9 @@ namespace System.Net.Http
 
                public void CancelPendingRequests ()
                {
-                       if (cancellation_token != null)
-                               cancellation_token.Cancel ();
-
-                       cancellation_token = new CancellationTokenSource ();
+                       // Cancel only any already running requests not any new request after this cancellation
+                       using (var c = Interlocked.Exchange (ref cts, new CancellationTokenSource ()))
+                               c.Cancel ();
                }
 
                protected override void Dispose (bool disposing)
@@ -113,8 +113,7 @@ namespace System.Net.Http
                        if (disposing && !disposed) {
                                disposed = true;
 
-                               if (cancellation_token != null)
-                                       cancellation_token.Dispose ();
+                               cts.Dispose ();
                        }
                        
                        base.Dispose (disposing);
@@ -264,33 +263,25 @@ namespace System.Net.Http
 
                async Task<HttpResponseMessage> SendAsyncWorker (HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
                {
-                       try {
-                               if (cancellation_token == null)
-                                       cancellation_token = new CancellationTokenSource ();
-
-                               using (var cts = CancellationTokenSource.CreateLinkedTokenSource (cancellation_token.Token, cancellationToken)) {
-                                       cts.CancelAfter (timeout);
+                       using (var lcts = CancellationTokenSource.CreateLinkedTokenSource (cts.Token, cancellationToken)) {
+                               lcts.CancelAfter (timeout);
 
-                                       var task = base.SendAsync (request, cts.Token);
-                                       if (task == null)
-                                               throw new InvalidOperationException ("Handler failed to return a value");
+                               var task = base.SendAsync (request, lcts.Token);
+                               if (task == null)
+                                       throw new InvalidOperationException ("Handler failed to return a value");
                                        
-                                       var response = await task.ConfigureAwait (false);
-                                       if (response == null)
-                                               throw new InvalidOperationException ("Handler failed to return a response");
-
-                                       //
-                                       // Read the content when default HttpCompletionOption.ResponseContentRead is set
-                                       //
-                                       if (response.Content != null && (completionOption & HttpCompletionOption.ResponseHeadersRead) == 0) {
-                                               await response.Content.LoadIntoBufferAsync (MaxResponseContentBufferSize).ConfigureAwait (false);
-                                       }
-                                       
-                                       return response;
+                               var response = await task.ConfigureAwait (false);
+                               if (response == null)
+                                       throw new InvalidOperationException ("Handler failed to return a response");
+
+                               //
+                               // Read the content when default HttpCompletionOption.ResponseContentRead is set
+                               //
+                               if (response.Content != null && (completionOption & HttpCompletionOption.ResponseHeadersRead) == 0) {
+                                       await response.Content.LoadIntoBufferAsync (MaxResponseContentBufferSize).ConfigureAwait (false);
                                }
-                       } finally {
-                               cancellation_token.Dispose ();
-                               cancellation_token = null;
+                                       
+                               return response;
                        }
                }
 
index eb336f70d87b43a048592bfa00181f251b22b19b..656911ee0e2e0ef8caf9b5cd5ebc4f18434c62c6 100644 (file)
@@ -58,7 +58,7 @@ namespace System.Net.Http
                        useProxy = true;
                }
 
-               void EnsureModifiability ()
+               internal void EnsureModifiability ()
                {
                        if (sentRequest)
                                throw new InvalidOperationException (
@@ -219,7 +219,7 @@ namespace System.Net.Http
                        base.Dispose (disposing);
                }
 
-               HttpWebRequest CreateWebRequest (HttpRequestMessage request)
+               internal virtual HttpWebRequest CreateWebRequest (HttpRequestMessage request)
                {
                        var wr = new HttpWebRequest (request.RequestUri);
                        wr.ThrowOnError = false;
@@ -308,12 +308,26 @@ namespace System.Net.Http
                                        }
                                }
 
-                               var stream = wrequest.GetRequestStream ();
+                               var stream = await wrequest.GetRequestStreamAsync ().ConfigureAwait (false);
                                await request.Content.CopyToAsync (stream).ConfigureAwait (false);
                        }
 
-                       // FIXME: GetResponseAsync does not accept cancellationToken
-                       var wresponse = (HttpWebResponse) await wrequest.GetResponseAsync ().ConfigureAwait (false);
+                       HttpWebResponse wresponse = null;
+                       using (cancellationToken.Register (l => ((HttpWebRequest) l).Abort (), wrequest)) {
+                               try {
+                                       wresponse = (HttpWebResponse) await wrequest.GetResponseAsync ().ConfigureAwait (false);
+                               } catch (WebException we) {
+                                       if (we.Status != WebExceptionStatus.RequestCanceled)
+                                               throw;
+                               }
+
+                               if (cancellationToken.IsCancellationRequested) {
+                                       var cancelled = new TaskCompletionSource<HttpResponseMessage> ();
+                                       cancelled.SetCanceled ();
+                                       return await cancelled.Task;
+                               }
+                       }
+                       
                        return CreateResponseMessage (wresponse, request);
                }
        }
index 6651be4a64fac113d36b852cf72cbec8efe32fa4..818a90d855220117589cf4367f7176b64f02d677 100644 (file)
@@ -684,6 +684,16 @@ namespace MonoTests.System.Net.Http
                        Assert.That (client.GetStringAsync ("Computer").Result != null);
                }
 
+               [Test]
+               [Category ("MobileNotWorking")] // Missing encoding
+               public void GetString_Many ()
+               {
+                       var client = new HttpClient ();
+                       var t1 = client.GetStringAsync ("http://www.google.com");
+                       var t2 = client.GetStringAsync ("http://www.google.com");
+                       Assert.IsTrue (Task.WaitAll (new [] { t1, t2 }, WaitTimeout));          
+               }
+
                [Test]
                public void GetByteArray_ServerError ()
                {
index 7da53393fa35b522915d9114a388713189acbc24..aa7b942e2ba28c3dff75dd17db533cca15e580a9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{52BCBA52-95B9-4437-B630-4A7C492BF560}</ProjectGuid>\r
+    <ProjectGuid>{87D4A457-1D00-48A7-8BD6-E786E93CC4CA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Net-net_2_0</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_2_1;NET_2_0;NET_1_1;NET_3_5</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_2_1;NET_2_0;NET_1_1;NET_3_5</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -47,6 +47,7 @@
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="Assembly\TypeForwarders.cs" />\r
     <Compile Include="System.Net\IPEndPointCollection.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 07db29c90bbfec61397c86c076621d8f392c8616..4b15fde41e4696ad55e04caa39be78596b3431c8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{26480A1B-A6B9-4865-8492-C18019094CE4}</ProjectGuid>\r
+    <ProjectGuid>{0653CFE2-4A19-4B91-A51F-793F8D516790}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Net-net_4_0</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_2_1;NET_2_0;NET_1_1;NET_3_5</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_3_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_2_1;NET_2_0;NET_1_1;NET_3_5</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_3_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -47,6 +47,7 @@
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="Assembly\TypeForwarders.cs" />\r
     <Compile Include="System.Net\IPEndPointCollection.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3e6954e6b0037dcd3bbb01f9da0ee68931a15414..41c2a691ee58e973fc5aa589c512b8928914a96a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{204C086B-F0B0-4570-89F1-50245F0E0491}</ProjectGuid>\r
+    <ProjectGuid>{ADF802C8-DED6-4991-A5AE-34B8F1440EE4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Net-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;NET_2_0;NET_1_1;NET_3_5</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;NET_2_0;NET_1_1;NET_3_5</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -47,6 +47,7 @@
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="Assembly\TypeForwarders.cs" />\r
     <Compile Include="System.Net\IPEndPointCollection.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 696a2834fae4c64e75b1f6f36d7897a05a1ce7ae..c975ca182be9112636c9a370731213f17bc8efb8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D1AE499F-8B3D-44A2-9EB4-A9D336A2866C}</ProjectGuid>\r
+    <ProjectGuid>{9BE7809F-583C-4F8C-B9BB-7BE45B78CC93}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Numerics-net_4_0</OutputPath>\r
@@ -45,6 +45,7 @@
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
+    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="System.Numerics\BigInteger.cs" />\r
     <Compile Include="System.Numerics\Complex.cs" />\r  </ItemGroup>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fe65b1368af7bc14597a307ac00803f5beb9cf9b..d62bc7e48bfced9860a6b6bba0ed85456685d4b0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C807E510-3FB6-4C77-A7CC-6EAC73823C3C}</ProjectGuid>\r
+    <ProjectGuid>{9A7E3AA8-1EB4-4A43-A806-636E6B220A76}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Numerics-net_4_5</OutputPath>\r
@@ -45,6 +45,7 @@
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
+    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="System.Numerics\BigInteger.cs" />\r
     <Compile Include="System.Numerics\Complex.cs" />\r  </ItemGroup>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cba210eaad92cc4808eca35434490e248e989cb1..510a4cac3be73596ea43a288be3de0bfead62828 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{22EE988C-2F34-4538-873F-35DA98075332}</ProjectGuid>\r
+    <ProjectGuid>{6067C2B4-C6BA-4D06-93A6-42365C0DB6EE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Numerics-tests-net_4_0</OutputPath>\r
@@ -44,7 +44,8 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="Test\System.Numerics\BigIntegerTest.cs" />\r  </ItemGroup>\r
+    <Compile Include="Test\System.Numerics\BigIntegerTest.cs" />\r
+    <Compile Include="Test\System.Numerics\ComplexTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Numerics\System.Numerics-net_4_0.csproj">\r
-      <Project>{D1AE499F-8B3D-44A2-9EB4-A9D336A2866C}</Project>\r
+      <Project>{9BE7809F-583C-4F8C-B9BB-7BE45B78CC93}</Project>\r
       <Name>System.Numerics\System.Numerics-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d1429d9435fe69ba29d818b82147c7211c201c6b..e1fa62deab6284060c3404e5bf3adfd1165e256d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0FCF1047-D9AE-48DA-B794-5505284027A9}</ProjectGuid>\r
+    <ProjectGuid>{1A3E2D13-1CE7-43CB-9748-9C7D586A897F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Numerics-tests-net_4_5</OutputPath>\r
@@ -44,7 +44,8 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="Test\System.Numerics\BigIntegerTest.cs" />\r  </ItemGroup>\r
+    <Compile Include="Test\System.Numerics\BigIntegerTest.cs" />\r
+    <Compile Include="Test\System.Numerics\ComplexTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Numerics\System.Numerics-net_4_5.csproj">\r
-      <Project>{C807E510-3FB6-4C77-A7CC-6EAC73823C3C}</Project>\r
+      <Project>{9A7E3AA8-1EB4-4A43-A806-636E6B220A76}</Project>\r
       <Name>System.Numerics\System.Numerics-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 39c80a6bd379b1a8c8f82856e2e39058535a9b44..816ca2ffceeb3a6a250e8b1f682e77919a3f658d 100644 (file)
@@ -324,7 +324,7 @@ namespace System.Numerics {
                }
 
                public bool IsEven {
-                       get { return (data [0] & 0x1) == 0; }
+                       get { return sign == 0 || (data [0] & 0x1) == 0; }
                }               
 
                public bool IsOne {
@@ -384,6 +384,8 @@ namespace System.Numerics {
 
                public static explicit operator int (BigInteger value)
                {
+                       if (value.sign == 0)
+                               return 0;
                        if (value.data.Length > 1)
                                throw new OverflowException ();
                        uint data = value.data [0];
@@ -404,6 +406,8 @@ namespace System.Numerics {
                [CLSCompliantAttribute (false)]
                public static explicit operator uint (BigInteger value)
                {
+                       if (value.sign == 0)
+                               return 0;
                        if (value.data.Length > 1 || value.sign == -1)
                                throw new OverflowException ();
                        return value.data [0];
@@ -478,6 +482,8 @@ namespace System.Numerics {
                [CLSCompliantAttribute (false)]
                public static explicit operator ulong (BigInteger value)
                {
+                       if (value.sign == 0)
+                               return 0;
                        if (value.data.Length > 2 || value.sign == -1)
                                throw new OverflowException ();
 
@@ -741,6 +747,9 @@ namespace System.Numerics {
 
                public static BigInteger operator++ (BigInteger value)
                {
+                       if (value.sign == 0)
+                               return One;
+
                        short sign = value.sign;
                        uint[] data = value.data;
                        if (data.Length == 1) {
@@ -760,6 +769,9 @@ namespace System.Numerics {
 
                public static BigInteger operator-- (BigInteger value)
                {
+                       if (value.sign == 0)
+                               return MinusOne;
+
                        short sign = value.sign;
                        uint[] data = value.data;
                        if (data.Length == 1) {
@@ -1033,11 +1045,18 @@ namespace System.Numerics {
                        int bit_shift = shift & 0x1F;
                        int carry_shift = 32 - bit_shift;
 
-                       for (int i = 0; i < data.Length; ++i) {
-                               uint word = data [i];
-                               res [i + idx_shift] |= word << bit_shift;
-                               if (i + idx_shift + 1 < res.Length)
-                                       res [i + idx_shift + 1] = word >> carry_shift;
+                       if (carry_shift == 32) {
+                               for (int i = 0; i < data.Length; ++i) {
+                                       uint word = data [i];
+                                       res [i + idx_shift] |= word << bit_shift;
+                               }
+                       } else {
+                               for (int i = 0; i < data.Length; ++i) {
+                                       uint word = data [i];
+                                       res [i + idx_shift] |= word << bit_shift;
+                                       if (i + idx_shift + 1 < res.Length)
+                                               res [i + idx_shift + 1] = word >> carry_shift;
+                               }
                        }
 
                        return new BigInteger ((short)sign, res);
@@ -1071,13 +1090,23 @@ namespace System.Numerics {
                        uint[] res = new uint [size];
                        int carry_shift = 32 - bit_shift;
 
-                       for (int i = data.Length - 1; i >= idx_shift; --i) {
-                               uint word = data [i];
+                       if (carry_shift == 32) {
+                               for (int i = data.Length - 1; i >= idx_shift; --i) {
+                                       uint word = data [i];
+
+                                       if (i - idx_shift < res.Length)
+                                               res [i - idx_shift] |= word >> bit_shift;
+                               }
+                       } else {
+                               for (int i = data.Length - 1; i >= idx_shift; --i) {
+                                       uint word = data [i];
+
+                                       if (i - idx_shift < res.Length)
+                                               res [i - idx_shift] |= word >> bit_shift;
+                                       if (i - idx_shift - 1 >= 0)
+                                               res [i - idx_shift - 1] = word << carry_shift;
+                               }
 
-                               if (i - idx_shift < res.Length)
-                                       res [i - idx_shift] |= word >> bit_shift;
-                               if (i - idx_shift - 1 >= 0)
-                                       res [i - idx_shift - 1] = word << carry_shift;
                        }
 
                        //Round down instead of toward zero
@@ -1273,9 +1302,13 @@ namespace System.Numerics {
                {
                        if (sign != other.sign)
                                return false;
-                       if (data.Length != other.data.Length)
+
+                       int alen = data != null ? data.Length : 0;
+                       int blen = other.data != null ? other.data.Length : 0;
+
+                       if (alen != blen)
                                return false;
-                       for (int i = 0; i < data.Length; ++i) {
+                       for (int i = 0; i < alen; ++i) {
                                if (data [i] != other.data [i])
                                        return false;
                        }
@@ -1687,14 +1720,14 @@ namespace System.Numerics {
 
                public static BigInteger GreatestCommonDivisor (BigInteger left, BigInteger right)
                {
-                       if (left.data.Length == 1 && left.data [0] == 1)
+                       if (left.sign != 0 && left.data.Length == 1 && left.data [0] == 1)
                                return new BigInteger (1, ONE);
-                       if (right.data.Length == 1 && right.data [0] == 1)
+                       if (right.sign != 0 && right.data.Length == 1 && right.data [0] == 1)
                                return new BigInteger (1, ONE);
                        if (left.IsZero)
-                               return right;
+                               return Abs(right);
                        if (right.IsZero)
-                               return left;
+                               return Abs(left);
 
                        BigInteger x = new BigInteger (1, left.data);
                        BigInteger y = new BigInteger (1, right.data);
@@ -1801,8 +1834,9 @@ namespace System.Numerics {
                public override int GetHashCode ()
                {
                        uint hash = (uint)(sign * 0x01010101u);
+                       int len = data != null ? data.Length : 0;
 
-                       for (int i = 0; i < data.Length; ++i)
+                       for (int i = 0; i < len; ++i)
                                hash ^= data [i];
                        return (int)hash;
                }
@@ -2168,8 +2202,8 @@ namespace System.Numerics {
 
                static int CoreCompare (uint[] a, uint[] b)
                {
-                       int     al = a.Length;
-                       int bl = b.Length;
+                       int al = a != null ? a.Length : 0;
+                       int bl = b != null ? b.Length : 0;
 
                        if (al > bl)
                                return 1;
index 7871730a242a8fc87af6cc2af273a0ac381e5844..02bc81a4533a275892a918af2d6424a9c9c155a8 100644 (file)
@@ -1,3 +1,13 @@
+2013-06-12 Christoph Ruegg <git@cdrnet.ch>
+
+       * BigInteger.cs: Fix GreatestCommonDivisor to
+       return absolute value if one of the args is zero.
+
+2013-06-09 Christoph Ruegg <git@cdrnet.ch>
+
+       * Complex.cs: Fix IFormattable.ToString to pass custom
+       format strings to double.ToString instead of string.Format.
+
 2010-07-12  Jb Evain  <jbevain@novell.com>
 
        * Complex.cs: implement IFormattable.
index 7f870fce6601c182fe57bc1e3f1ff8c3ec430aa5..6c172751b38ec23c1ae4deb7ede853e274f63733 100644 (file)
@@ -338,12 +338,12 @@ namespace System.Numerics {
 
                public string ToString (string format)
                {
-                       return string.Format ("({0}, {1})", string.Format (format, real), string.Format (format, imaginary));
+                       return string.Format ("({0}, {1})", real.ToString (format), imaginary.ToString (format));
                }
 
                public string ToString (string format, IFormatProvider provider)
                {
-                       return string.Format ("({0}, {1})", string.Format (provider, format, real), string.Format (provider, format, imaginary));
+                       return string.Format ("({0}, {1})", real.ToString (format, provider), imaginary.ToString (format, provider));
                }
        }
 }
index 27223aee50d231fe926ffb63f41e477ae9698405..3511abf825567cc4e5ff77c724ce2016d0f6d5f4 100644 (file)
@@ -1 +1,2 @@
 System.Numerics/BigIntegerTest.cs
+System.Numerics/ComplexTest.cs
index cc20c787370d768ee4be0506bbe8293c09ba9d7f..098c50854b78f1be97ebd61df42710541e7ccbbc 100644 (file)
@@ -150,6 +150,9 @@ namespace MonoTests.System.Numerics
                        Assert.AreEqual (2, (int)BigInteger.GreatestCommonDivisor (-12345678, -8765432), "#14");
 
                        Assert.AreEqual (40, (int)BigInteger.GreatestCommonDivisor (5581 * 40, 6671 * 40), "#15");
+
+                       Assert.AreEqual (5, (int)BigInteger.GreatestCommonDivisor (-5, 0), "#16");
+                       Assert.AreEqual (5, (int)BigInteger.GreatestCommonDivisor (0, -5), "#17");
                }
 
                [Test]
@@ -925,5 +928,222 @@ namespace MonoTests.System.Numerics
                        Assert.AreEqual (-1, b.CompareTo (2000));
                        Assert.AreEqual (-1, b.CompareTo (-2000));
                }
+
+               [Test]
+               public void LeftShitByInt ()
+               {
+                       var v = BigInteger.Parse("230794411440927908251127453634");
+
+                       Assert.AreEqual ("230794411440927908251127453634", (v << 0).ToString (), "#0");
+                       Assert.AreEqual ("461588822881855816502254907268", (v << 1).ToString (), "#1");
+                       Assert.AreEqual ("923177645763711633004509814536", (v << 2).ToString (), "#2");
+                       Assert.AreEqual ("1846355291527423266009019629072", (v << 3).ToString (), "#3");
+                       Assert.AreEqual ("3692710583054846532018039258144", (v << 4).ToString (), "#4");
+                       Assert.AreEqual ("7385421166109693064036078516288", (v << 5).ToString (), "#5");
+                       Assert.AreEqual ("14770842332219386128072157032576", (v << 6).ToString (), "#6");
+                       Assert.AreEqual ("29541684664438772256144314065152", (v << 7).ToString (), "#7");
+                       Assert.AreEqual ("59083369328877544512288628130304", (v << 8).ToString (), "#8");
+                       Assert.AreEqual ("118166738657755089024577256260608", (v << 9).ToString (), "#9");
+                       Assert.AreEqual ("236333477315510178049154512521216", (v << 10).ToString (), "#10");
+                       Assert.AreEqual ("472666954631020356098309025042432", (v << 11).ToString (), "#11");
+                       Assert.AreEqual ("945333909262040712196618050084864", (v << 12).ToString (), "#12");
+                       Assert.AreEqual ("1890667818524081424393236100169728", (v << 13).ToString (), "#13");
+                       Assert.AreEqual ("3781335637048162848786472200339456", (v << 14).ToString (), "#14");
+                       Assert.AreEqual ("7562671274096325697572944400678912", (v << 15).ToString (), "#15");
+                       Assert.AreEqual ("15125342548192651395145888801357824", (v << 16).ToString (), "#16");
+                       Assert.AreEqual ("30250685096385302790291777602715648", (v << 17).ToString (), "#17");
+                       Assert.AreEqual ("60501370192770605580583555205431296", (v << 18).ToString (), "#18");
+                       Assert.AreEqual ("121002740385541211161167110410862592", (v << 19).ToString (), "#19");
+                       Assert.AreEqual ("242005480771082422322334220821725184", (v << 20).ToString (), "#20");
+                       Assert.AreEqual ("484010961542164844644668441643450368", (v << 21).ToString (), "#21");
+                       Assert.AreEqual ("968021923084329689289336883286900736", (v << 22).ToString (), "#22");
+                       Assert.AreEqual ("1936043846168659378578673766573801472", (v << 23).ToString (), "#23");
+                       Assert.AreEqual ("3872087692337318757157347533147602944", (v << 24).ToString (), "#24");
+                       Assert.AreEqual ("7744175384674637514314695066295205888", (v << 25).ToString (), "#25");
+                       Assert.AreEqual ("15488350769349275028629390132590411776", (v << 26).ToString (), "#26");
+                       Assert.AreEqual ("30976701538698550057258780265180823552", (v << 27).ToString (), "#27");
+                       Assert.AreEqual ("61953403077397100114517560530361647104", (v << 28).ToString (), "#28");
+                       Assert.AreEqual ("123906806154794200229035121060723294208", (v << 29).ToString (), "#29");
+                       Assert.AreEqual ("247813612309588400458070242121446588416", (v << 30).ToString (), "#30");
+                       Assert.AreEqual ("495627224619176800916140484242893176832", (v << 31).ToString (), "#31");
+                       Assert.AreEqual ("991254449238353601832280968485786353664", (v << 32).ToString (), "#32");
+                       Assert.AreEqual ("1982508898476707203664561936971572707328", (v << 33).ToString (), "#33");
+                       Assert.AreEqual ("3965017796953414407329123873943145414656", (v << 34).ToString (), "#34");
+                       Assert.AreEqual ("7930035593906828814658247747886290829312", (v << 35).ToString (), "#35");
+                       Assert.AreEqual ("15860071187813657629316495495772581658624", (v << 36).ToString (), "#36");
+                       Assert.AreEqual ("31720142375627315258632990991545163317248", (v << 37).ToString (), "#37");
+                       Assert.AreEqual ("63440284751254630517265981983090326634496", (v << 38).ToString (), "#38");
+                       Assert.AreEqual ("126880569502509261034531963966180653268992", (v << 39).ToString (), "#39");
+                       Assert.AreEqual ("253761139005018522069063927932361306537984", (v << 40).ToString (), "#40");
+                       Assert.AreEqual ("507522278010037044138127855864722613075968", (v << 41).ToString (), "#41");
+                       Assert.AreEqual ("1015044556020074088276255711729445226151936", (v << 42).ToString (), "#42");
+                       Assert.AreEqual ("2030089112040148176552511423458890452303872", (v << 43).ToString (), "#43");
+                       Assert.AreEqual ("4060178224080296353105022846917780904607744", (v << 44).ToString (), "#44");
+                       Assert.AreEqual ("8120356448160592706210045693835561809215488", (v << 45).ToString (), "#45");
+                       Assert.AreEqual ("16240712896321185412420091387671123618430976", (v << 46).ToString (), "#46");
+                       Assert.AreEqual ("32481425792642370824840182775342247236861952", (v << 47).ToString (), "#47");
+                       Assert.AreEqual ("64962851585284741649680365550684494473723904", (v << 48).ToString (), "#48");
+                       Assert.AreEqual ("129925703170569483299360731101368988947447808", (v << 49).ToString (), "#49");
+                       Assert.AreEqual ("259851406341138966598721462202737977894895616", (v << 50).ToString (), "#50");
+                       Assert.AreEqual ("519702812682277933197442924405475955789791232", (v << 51).ToString (), "#51");
+                       Assert.AreEqual ("1039405625364555866394885848810951911579582464", (v << 52).ToString (), "#52");
+                       Assert.AreEqual ("2078811250729111732789771697621903823159164928", (v << 53).ToString (), "#53");
+                       Assert.AreEqual ("4157622501458223465579543395243807646318329856", (v << 54).ToString (), "#54");
+                       Assert.AreEqual ("8315245002916446931159086790487615292636659712", (v << 55).ToString (), "#55");
+                       Assert.AreEqual ("16630490005832893862318173580975230585273319424", (v << 56).ToString (), "#56");
+                       Assert.AreEqual ("33260980011665787724636347161950461170546638848", (v << 57).ToString (), "#57");
+                       Assert.AreEqual ("66521960023331575449272694323900922341093277696", (v << 58).ToString (), "#58");
+                       Assert.AreEqual ("133043920046663150898545388647801844682186555392", (v << 59).ToString (), "#59");
+                       Assert.AreEqual ("266087840093326301797090777295603689364373110784", (v << 60).ToString (), "#60");
+                       Assert.AreEqual ("532175680186652603594181554591207378728746221568", (v << 61).ToString (), "#61");
+                       Assert.AreEqual ("1064351360373305207188363109182414757457492443136", (v << 62).ToString (), "#62");
+                       Assert.AreEqual ("2128702720746610414376726218364829514914984886272", (v << 63).ToString (), "#63");
+                       Assert.AreEqual ("4257405441493220828753452436729659029829969772544", (v << 64).ToString (), "#64");
+                       Assert.AreEqual ("8514810882986441657506904873459318059659939545088", (v << 65).ToString (), "#65");
+                       Assert.AreEqual ("17029621765972883315013809746918636119319879090176", (v << 66).ToString (), "#66");
+                       Assert.AreEqual ("34059243531945766630027619493837272238639758180352", (v << 67).ToString (), "#67");
+                       Assert.AreEqual ("68118487063891533260055238987674544477279516360704", (v << 68).ToString (), "#68");
+                       Assert.AreEqual ("136236974127783066520110477975349088954559032721408", (v << 69).ToString (), "#69");
+               }
+
+
+               [Test]
+               public void RightShitByInt ()
+               {
+                       var v = BigInteger.Parse("230794411440927908251127453634");
+                       v = v * BigInteger.Pow (2, 70);
+
+                       Assert.AreEqual ("272473948255566133040220955950698177909118065442816", (v >> 0).ToString (), "#0");
+                       Assert.AreEqual ("136236974127783066520110477975349088954559032721408", (v >> 1).ToString (), "#1");
+                       Assert.AreEqual ("68118487063891533260055238987674544477279516360704", (v >> 2).ToString (), "#2");
+                       Assert.AreEqual ("34059243531945766630027619493837272238639758180352", (v >> 3).ToString (), "#3");
+                       Assert.AreEqual ("17029621765972883315013809746918636119319879090176", (v >> 4).ToString (), "#4");
+                       Assert.AreEqual ("8514810882986441657506904873459318059659939545088", (v >> 5).ToString (), "#5");
+                       Assert.AreEqual ("4257405441493220828753452436729659029829969772544", (v >> 6).ToString (), "#6");
+                       Assert.AreEqual ("2128702720746610414376726218364829514914984886272", (v >> 7).ToString (), "#7");
+                       Assert.AreEqual ("1064351360373305207188363109182414757457492443136", (v >> 8).ToString (), "#8");
+                       Assert.AreEqual ("532175680186652603594181554591207378728746221568", (v >> 9).ToString (), "#9");
+                       Assert.AreEqual ("266087840093326301797090777295603689364373110784", (v >> 10).ToString (), "#10");
+                       Assert.AreEqual ("133043920046663150898545388647801844682186555392", (v >> 11).ToString (), "#11");
+                       Assert.AreEqual ("66521960023331575449272694323900922341093277696", (v >> 12).ToString (), "#12");
+                       Assert.AreEqual ("33260980011665787724636347161950461170546638848", (v >> 13).ToString (), "#13");
+                       Assert.AreEqual ("16630490005832893862318173580975230585273319424", (v >> 14).ToString (), "#14");
+                       Assert.AreEqual ("8315245002916446931159086790487615292636659712", (v >> 15).ToString (), "#15");
+                       Assert.AreEqual ("4157622501458223465579543395243807646318329856", (v >> 16).ToString (), "#16");
+                       Assert.AreEqual ("2078811250729111732789771697621903823159164928", (v >> 17).ToString (), "#17");
+                       Assert.AreEqual ("1039405625364555866394885848810951911579582464", (v >> 18).ToString (), "#18");
+                       Assert.AreEqual ("519702812682277933197442924405475955789791232", (v >> 19).ToString (), "#19");
+                       Assert.AreEqual ("259851406341138966598721462202737977894895616", (v >> 20).ToString (), "#20");
+                       Assert.AreEqual ("129925703170569483299360731101368988947447808", (v >> 21).ToString (), "#21");
+                       Assert.AreEqual ("64962851585284741649680365550684494473723904", (v >> 22).ToString (), "#22");
+                       Assert.AreEqual ("32481425792642370824840182775342247236861952", (v >> 23).ToString (), "#23");
+                       Assert.AreEqual ("16240712896321185412420091387671123618430976", (v >> 24).ToString (), "#24");
+                       Assert.AreEqual ("8120356448160592706210045693835561809215488", (v >> 25).ToString (), "#25");
+                       Assert.AreEqual ("4060178224080296353105022846917780904607744", (v >> 26).ToString (), "#26");
+                       Assert.AreEqual ("2030089112040148176552511423458890452303872", (v >> 27).ToString (), "#27");
+                       Assert.AreEqual ("1015044556020074088276255711729445226151936", (v >> 28).ToString (), "#28");
+                       Assert.AreEqual ("507522278010037044138127855864722613075968", (v >> 29).ToString (), "#29");
+                       Assert.AreEqual ("253761139005018522069063927932361306537984", (v >> 30).ToString (), "#30");
+                       Assert.AreEqual ("126880569502509261034531963966180653268992", (v >> 31).ToString (), "#31");
+                       Assert.AreEqual ("63440284751254630517265981983090326634496", (v >> 32).ToString (), "#32");
+                       Assert.AreEqual ("31720142375627315258632990991545163317248", (v >> 33).ToString (), "#33");
+                       Assert.AreEqual ("15860071187813657629316495495772581658624", (v >> 34).ToString (), "#34");
+                       Assert.AreEqual ("7930035593906828814658247747886290829312", (v >> 35).ToString (), "#35");
+                       Assert.AreEqual ("3965017796953414407329123873943145414656", (v >> 36).ToString (), "#36");
+                       Assert.AreEqual ("1982508898476707203664561936971572707328", (v >> 37).ToString (), "#37");
+                       Assert.AreEqual ("991254449238353601832280968485786353664", (v >> 38).ToString (), "#38");
+                       Assert.AreEqual ("495627224619176800916140484242893176832", (v >> 39).ToString (), "#39");
+                       Assert.AreEqual ("247813612309588400458070242121446588416", (v >> 40).ToString (), "#40");
+                       Assert.AreEqual ("123906806154794200229035121060723294208", (v >> 41).ToString (), "#41");
+                       Assert.AreEqual ("61953403077397100114517560530361647104", (v >> 42).ToString (), "#42");
+                       Assert.AreEqual ("30976701538698550057258780265180823552", (v >> 43).ToString (), "#43");
+                       Assert.AreEqual ("15488350769349275028629390132590411776", (v >> 44).ToString (), "#44");
+                       Assert.AreEqual ("7744175384674637514314695066295205888", (v >> 45).ToString (), "#45");
+                       Assert.AreEqual ("3872087692337318757157347533147602944", (v >> 46).ToString (), "#46");
+                       Assert.AreEqual ("1936043846168659378578673766573801472", (v >> 47).ToString (), "#47");
+                       Assert.AreEqual ("968021923084329689289336883286900736", (v >> 48).ToString (), "#48");
+                       Assert.AreEqual ("484010961542164844644668441643450368", (v >> 49).ToString (), "#49");
+                       Assert.AreEqual ("242005480771082422322334220821725184", (v >> 50).ToString (), "#50");
+                       Assert.AreEqual ("121002740385541211161167110410862592", (v >> 51).ToString (), "#51");
+                       Assert.AreEqual ("60501370192770605580583555205431296", (v >> 52).ToString (), "#52");
+                       Assert.AreEqual ("30250685096385302790291777602715648", (v >> 53).ToString (), "#53");
+                       Assert.AreEqual ("15125342548192651395145888801357824", (v >> 54).ToString (), "#54");
+                       Assert.AreEqual ("7562671274096325697572944400678912", (v >> 55).ToString (), "#55");
+                       Assert.AreEqual ("3781335637048162848786472200339456", (v >> 56).ToString (), "#56");
+                       Assert.AreEqual ("1890667818524081424393236100169728", (v >> 57).ToString (), "#57");
+                       Assert.AreEqual ("945333909262040712196618050084864", (v >> 58).ToString (), "#58");
+                       Assert.AreEqual ("472666954631020356098309025042432", (v >> 59).ToString (), "#59");
+                       Assert.AreEqual ("236333477315510178049154512521216", (v >> 60).ToString (), "#60");
+                       Assert.AreEqual ("118166738657755089024577256260608", (v >> 61).ToString (), "#61");
+                       Assert.AreEqual ("59083369328877544512288628130304", (v >> 62).ToString (), "#62");
+                       Assert.AreEqual ("29541684664438772256144314065152", (v >> 63).ToString (), "#63");
+                       Assert.AreEqual ("14770842332219386128072157032576", (v >> 64).ToString (), "#64");
+                       Assert.AreEqual ("7385421166109693064036078516288", (v >> 65).ToString (), "#65");
+                       Assert.AreEqual ("3692710583054846532018039258144", (v >> 66).ToString (), "#66");
+                       Assert.AreEqual ("1846355291527423266009019629072", (v >> 67).ToString (), "#67");
+                       Assert.AreEqual ("923177645763711633004509814536", (v >> 68).ToString (), "#68");
+                       Assert.AreEqual ("461588822881855816502254907268", (v >> 69).ToString (), "#69");
+               }
+
+               [Test]
+               public void Bug10887 ()
+               {
+                       BigInteger b = 0;
+                       for(int i = 1; i <= 16; i++)
+                               b = b * 256 + i;
+                       BigInteger p = BigInteger.Pow (2, 32);
+                       Assert.AreEqual ("1339673755198158349044581307228491536", b.ToString (), "#1");
+                       Assert.AreEqual ("1339673755198158349044581307228491536", ((b << 32) / p).ToString (), "#2");
+                       Assert.AreEqual ("1339673755198158349044581307228491536", (b * p >> 32).ToString (), "#3");
+               }
+
+               [Test]
+               public void DefaultCtorWorks ()
+               {
+                       var a = new BigInteger ();
+                       Assert.AreEqual (BigInteger.One, ++a, "#1");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (BigInteger.MinusOne, --a, "#2");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (BigInteger.MinusOne, ~a, "#3");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual ("0", a.ToString (), "#4");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (true, a == a, "#5");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (false, a < a, "#6");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (true, a < 10l, "#7");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (true, a.IsEven, "#8");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (0, (int)a, "#9");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (0, (uint)a, "#10");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (0, (ulong)a, "#11");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (true, a.Equals (a), "#12");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (a, BigInteger.Min (a, a), "#13");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (a, BigInteger.GreatestCommonDivisor (a, a), "#14");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (BigInteger.Zero.GetHashCode (), a.GetHashCode (), "#15");
+               }
        }
 }
index 45754ed8bdb49db5d1f7e47e0af0ba63eabaf37c..ec7ae1f94b4cf85f9518da5f72c4ce43323a6bc6 100644 (file)
@@ -1,3 +1,13 @@
+2013-06-13 Christoph Ruegg <git@cdrnet.ch>
+
+       * BigIntegerTest.cs: Extended tests for
+       GreatestCommonDivisor to cover zero-args.
+
+2013-06-09 Christoph Ruegg <git@cdrnet.ch>
+
+       * ComplexTest.cs: Created; Tests ToString
+       with special format strings.
+
 2010-03-06 Rodrigo Kumpera  <rkumpera@novell.com>
 
        * BigIntegerTest.cs: Tests for decimal stuff.
diff --git a/mcs/class/System.Numerics/Test/System.Numerics/ComplexTest.cs b/mcs/class/System.Numerics/Test/System.Numerics/ComplexTest.cs
new file mode 100644 (file)
index 0000000..781c2c9
--- /dev/null
@@ -0,0 +1,32 @@
+// ComplexTest.cs
+//
+// Authors:
+//   Christoph Ruegg <git@cdrnet.ch>
+//
+// Copyright (C) 2013 Novell, Inc (http://www.novell.com)
+//
+
+using System;
+using System.Numerics;
+using System.Globalization;
+using NUnit.Framework;
+
+namespace MonoTests.System.Numerics
+{
+       [TestFixture]
+       public class ComplexTest
+       {
+               [Test]
+               public void TestToStringFormats ()
+               {
+                       Assert.AreEqual ("(1, 2)", new Complex (1, 2).ToString (), "#1");
+                       Assert.AreEqual ("(1, 2)", new Complex (1, 2).ToString ("G"), "#2");
+                       Assert.AreEqual ("(1, 2)", new Complex (1, 2).ToString ((string)null), "#3");
+
+                       IFormatProvider provider = CultureInfo.InvariantCulture;
+                       Assert.AreEqual ("(1, 2)", new Complex (1, 2).ToString (provider), "#4");
+                       Assert.AreEqual ("(1, 2)", new Complex (1, 2).ToString ("G", provider), "#5");
+                       Assert.AreEqual ("(1, 2)", new Complex (1, 2).ToString ((string)null, provider), "#6");
+               }
+       }
+}
index e6395385c1b41aa8798c4dcdece97d44cc3746fd..d56ecc9c089141149ac55cb6fb607415eb0020ef 100644 (file)
@@ -23,12 +23,12 @@ RESOURCES = $(RESX_RESOURCES)
 PREBUILT = $(RESX_RESOURCES:=.prebuilt)
 
 ifeq (2.1, $(FRAMEWORK_VERSION))
-LIB_MCS_FLAGS += -d:NO_TASK_DELAY
+LIB_MCS_FLAGS += -d:NO_TASK_DELAY -d:HAS_AWAIT
 endif
 
 NET_4_5 := $(filter 4.5, $(FRAMEWORK_VERSION))
 ifdef NET_4_5
-LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC
+LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT
 endif
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
index 0b7c02a36a78e0fbe2f38ade47a982a5697df899..b49f9cd31d8b08539ccde1ea0fb667935aa8ec8c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</ProjectGuid>\r
+    <ProjectGuid>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Core-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\ObservableBase.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\ObserverBase.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Unit.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Strings_Core.Generated.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Strings_Core.Generated.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 65d30c049ba6fdb0d50cc4d9083fc485f588f5b9..8c6dee9af40207a26fe02edc69c121ed6d1292b0 100644 (file)
@@ -12,12 +12,12 @@ LIB_MCS_FLAGS = \
                -r:System.Reactive.Linq.dll
 
 ifeq (2.1, $(FRAMEWORK_VERSION))
-LIB_MCS_FLAGS += -d:NO_TASK_DELAY
+LIB_MCS_FLAGS += -d:NO_TASK_DELAY -d:HAS_AWAIT
 endif
 
 NET_4_5 := $(filter 4.5, $(FRAMEWORK_VERSION))
 ifdef NET_4_5
-LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC
+LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT
 endif
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
index 8447a1ca3ae5e88df956d0567d56af66428873c5..4591cafad86b201d57608b2b22cc50392c4e8710 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6B1ABEA7-1774-41A8-B6B6-5A3CFDED2882}</ProjectGuid>\r
+    <ProjectGuid>{68AE2077-862E-4351-A159-D3CD817059CF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Debugger-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -45,7 +45,8 @@
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Debugger\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Debugger\Reactive\Linq\QueryDebugger.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Debugger\Reactive\Linq\QueryDebugger.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</Project>\r
+      <Project>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</Project>\r
       <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 966b95daff9a43e63db6640e93b20e32d99ba172..e7b128f3813acfa295c09e97bdde638075c55f04 100644 (file)
@@ -12,12 +12,12 @@ LIB_MCS_FLAGS = \
                -r:System.Reactive.Linq.dll
 
 ifeq (2.1, $(FRAMEWORK_VERSION))
-LIB_MCS_FLAGS += -d:NO_TASK_DELAY
+LIB_MCS_FLAGS += -d:NO_TASK_DELAY -d:HAS_AWAIT
 endif
 
 NET_4_5 := $(filter 4.5, $(FRAMEWORK_VERSION))
 ifdef NET_4_5
-LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC
+LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT
 endif
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
index ad476ccc70db085f53fcc1021bde05e6357b2e06..7ddd29f94d381f9e6cd2125bdba2ace6ac6429ab 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6DDBDFA1-00F6-4584-801D-A2FC8691AEE1}</ProjectGuid>\r
+    <ProjectGuid>{36C5B564-9E57-4DD3-ADA4-4EC79402B02E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Experimental-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -53,7 +53,8 @@
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\Linq\QbservableEx.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\Linq\QbservableEx.Generated.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\Linq\QueryLanguageEx.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\ListObservable.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\ListObservable.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</Project>\r
+      <Project>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</Project>\r
       <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b001529523d0f4a1cf51c57746625c794b3c4585..967a34327dedc252bce24e7128581e54bc2fbb1c 100644 (file)
@@ -9,12 +9,12 @@ LIB_MCS_FLAGS = \
                -r:System.Core.dll
 
 ifeq (2.1, $(FRAMEWORK_VERSION))
-LIB_MCS_FLAGS += -d:NO_TASK_DELAY
+LIB_MCS_FLAGS += -d:NO_TASK_DELAY -d:HAS_AWAIT
 endif
 
 NET_4_5 := $(filter 4.5, $(FRAMEWORK_VERSION))
 ifdef NET_4_5
-LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC
+LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT
 endif
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
index 7e85fa8136ebeb3be200d13e889634e7f308cc3d..6d4b53fe96f9253e1853151c21c1c0b6c3e93c44 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</ProjectGuid>\r
+    <ProjectGuid>{D80FD091-3F53-4879-B0BB-08897139CF97}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Interfaces-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -67,7 +67,8 @@
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Linq\IQbservableProvider.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Subjects\IConnectableObservable.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Subjects\ISubject.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Subjects\ISubject.Multi.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Subjects\ISubject.Multi.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 690aa82dbc5e38df7fc53a798e2baf3d511d469e..3afa5560431d689a6389bafd2c99f783b123ce06 100644 (file)
@@ -24,12 +24,12 @@ RESOURCES = $(RESX_RESOURCES)
 PREBUILT = $(RESX_RESOURCES:=.prebuilt)
 
 ifeq (2.1, $(FRAMEWORK_VERSION))
-LIB_MCS_FLAGS += -d:NO_TASK_DELAY
+LIB_MCS_FLAGS += -d:NO_TASK_DELAY -d:HAS_AWAIT
 endif
 
 NET_4_5 := $(filter 4.5, $(FRAMEWORK_VERSION))
 ifdef NET_4_5
-LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC
+LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT
 endif
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
index 2ff285e58c1a6f5fc79a1020dd73ed6650dd0d4a..ad60e93be367d33ef13f4657e009eaf61b3b6418 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</ProjectGuid>\r
+    <ProjectGuid>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Linq-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Threading\Tasks\TaskObservableExtensions.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\TimeInterval.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Timestamped.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Strings_Linq.Generated.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Strings_Linq.Generated.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e8b78f2d3bba873857f86db5c98ffdfd4fad0b8e..80e88566ca6d2b1006b7e4a20d63e4097ccff13a 100644 (file)
@@ -25,12 +25,12 @@ RESOURCES = $(RESX_RESOURCES)
 PREBUILT = $(RESX_RESOURCES:=.prebuilt)
 
 ifeq (2.1, $(FRAMEWORK_VERSION))
-LIB_MCS_FLAGS += -d:NO_TASK_DELAY
+LIB_MCS_FLAGS += -d:NO_TASK_DELAY -d:HAS_AWAIT
 endif
 
 NET_4_5 := $(filter 4.5, $(FRAMEWORK_VERSION))
 ifdef NET_4_5
-LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC
+LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT
 endif
 
 NO_TASK_DELAY := $(filter 4.5 2.1, $(FRAMEWORK_VERSION))
index 952f753a9123f4516587bdcf57302da36b1d1bf7..13353ce842871a4ae7d28b454e68304541add977 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A01E9CA8-9B09-4D80-923B-67E8B60D2723}</ProjectGuid>\r
+    <ProjectGuid>{6A74098E-D4D5-4D6F-A673-8E95CBF8726E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.PlatformServices-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -62,7 +62,8 @@
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Internal\PlatformEnlightenmentProvider.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Internal\StopwatchImpl.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Internal\Stubs.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Strings_PlatformServices.Generated.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Strings_PlatformServices.Generated.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</Project>\r
+      <Project>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</Project>\r
       <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 44088a17101c830f8e70d80864bbd4bd9ba46de2..06ec402a0df5d5c058ce2fedfeb1b411c0bc9ace 100644 (file)
@@ -25,12 +25,12 @@ RESOURCES = $(RESX_RESOURCES)
 PREBUILT = $(RESX_RESOURCES:=.prebuilt)
 
 ifeq (2.1, $(FRAMEWORK_VERSION))
-LIB_MCS_FLAGS += -d:NO_TASK_DELAY
+LIB_MCS_FLAGS += -d:NO_TASK_DELAY -d:HAS_AWAIT
 endif
 
 NET_4_5 := $(filter 4.5, $(FRAMEWORK_VERSION))
 ifdef NET_4_5
-LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC
+LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT
 endif
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
index 12b07443ab2aee2b38d0b0ca4732fd5b521e9fd8..2ebe682dded0ffbab408a473d5bbda64714535e2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3EC882EF-A451-467F-BE31-CE6E98A538F0}</ProjectGuid>\r
+    <ProjectGuid>{03DD638D-4D60-42BB-94D6-3C7112C62C20}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Providers-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -55,7 +55,8 @@
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Reactive\Linq\Qbservable.Generated.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Reactive\Linq\Qbservable.Joins.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Reactive\ObservableQuery.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Strings_Providers.Generated.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Strings_Providers.Generated.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</Project>\r
+      <Project>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</Project>\r
       <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index deaf483c32776a66c99eb9a5ea0c47bca18ac18e..e5fbf287ad261a8568c4a08ba84d2029acdf1a60 100644 (file)
@@ -17,7 +17,7 @@ endif
 
 NET_4_5 := $(filter 4.5, $(FRAMEWORK_VERSION))
 ifdef NET_4_5
-LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC
+LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT
 endif
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
index 83d195e1bb50709f68fc665d1571ee3a60e83f3c..291d1d4a9e6cf1801159ed062d1dbf8d82a99e37 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F2A9349E-4A1E-4FA2-86D7-E970CF54C6A5}</ProjectGuid>\r
+    <ProjectGuid>{5462ACB9-395E-4152-8292-B24612453210}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Runtime.Remoting-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -47,7 +47,8 @@
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Runtime.Remoting\GlobalSuppressions.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Runtime.Remoting\Properties\AssemblyInfo.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Runtime.Remoting\Reactive\Linq\Observable.Remoting.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Runtime.Remoting\Reactive\Linq\QueryLanguage.Remoting.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Runtime.Remoting\Reactive\Linq\QueryLanguage.Remoting.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</Project>\r
+      <Project>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</Project>\r
       <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 63b3fe0f4a529541c664f7111fd81fbb45896f7a..bc427b92a19e358efaa0acc2e53a41d36f646e31 100644 (file)
@@ -13,12 +13,12 @@ LIB_MCS_FLAGS = \
                -r:System.Windows.Forms.dll
 
 ifeq (2.1, $(FRAMEWORK_VERSION))
-LIB_MCS_FLAGS += -d:NO_TASK_DELAY
+LIB_MCS_FLAGS += -d:NO_TASK_DELAY -d:HAS_AWAIT
 endif
 
 NET_4_5 := $(filter 4.5, $(FRAMEWORK_VERSION))
 ifdef NET_4_5
-LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC
+LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT
 endif
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
index 2ff80ec35e0fdb8ea4d57568ee84aba4b8b66055..6fa79f1a9215eefe62d8b252690e48d810a906e5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AB071CEE-330F-4AA3-B73C-9154150914C1}</ProjectGuid>\r
+    <ProjectGuid>{A12A96AC-3AAD-417A-90FB-B40573189AC4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Windows.Forms-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -47,7 +47,8 @@
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Forms\GlobalSuppressions.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Forms\Properties\AssemblyInfo.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Forms\Reactive\Concurrency\ControlScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Forms\Reactive\Linq\ControlObservable.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Forms\Reactive\Linq\ControlObservable.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</Project>\r
+      <Project>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</Project>\r
       <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 8e1641a8cb5793371b6bb28fe38a255c74a1979f..dd68cd5a03bd484cf8d4d7447c057e7854ac4584 100644 (file)
@@ -26,12 +26,12 @@ RESOURCES = $(RESX_RESOURCES)
 PREBUILT = $(RESX_RESOURCES:=.prebuilt)
 
 ifeq (2.1, $(FRAMEWORK_VERSION))
-LIB_MCS_FLAGS += -d:NO_TASK_DELAY
+LIB_MCS_FLAGS += -d:NO_TASK_DELAY -d:HAS_AWAIT
 endif
 
 NET_4_5 := $(filter 4.5, $(FRAMEWORK_VERSION))
 ifdef NET_4_5
-LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC
+LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT
 endif
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
index 430ec157fae475981de4f175db8c8ed0224a969b..80f691f48b9d65d3dbf3eaef0757c23baaff3eac 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{490E03A7-434E-41D6-B134-BD090A9CE383}</ProjectGuid>\r
+    <ProjectGuid>{6E6F15CD-2244-4DD8-AD9E-02FECE17DB0D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Windows.Threading-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -51,7 +51,8 @@
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Reactive\Internal\Constants.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Reactive\Linq\CoreDispatcherObservable.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Reactive\Linq\DispatcherObservable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Strings_WindowsThreading.Generated.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Strings_WindowsThreading.Generated.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</Project>\r
+      <Project>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</Project>\r
       <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_5.csproj">\r
-      <Project>{6D23A57D-01AF-4266-8E58-C16E732FCF81}</Project>\r
+      <Project>{0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}</Project>\r
       <Name>WindowsBase\WindowsBase-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 965fa031b3962af386ebf54075ddec68e8c7511e..a32346f8dcae945bb7ed6e352a6ce927ef2566a7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{89B24A2B-F179-4270-99AD-37AA03B77E09}</ProjectGuid>\r
+    <ProjectGuid>{B0813837-153F-4D87-8BDC-4224CE7413BA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Caching-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0d99374799c6e7dd0b63b16ff8f6fa07f79b2351..9b319930ba9b94910b7893c55dea3083aaa90973 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8645A982-AA1E-48CB-B996-7FCC4F8703CE}</ProjectGuid>\r
+    <ProjectGuid>{C18ABE89-33D2-4780-93BE-AB89B8187581}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Caching-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2b3b21521f6357f9f54b034d787ba21ede4df5ab..8e8c3796fa0994cab115529144b81a33d1870185 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{70ABD0A7-58E3-420D-97F3-24953E2F35AA}</ProjectGuid>\r
+    <ProjectGuid>{0618397F-59F6-4775-AE8F-F7BE2B619841}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Caching-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Caching\System.Runtime.Caching-net_4_0.csproj">\r
-      <Project>{89B24A2B-F179-4270-99AD-37AA03B77E09}</Project>\r
+      <Project>{B0813837-153F-4D87-8BDC-4224CE7413BA}</Project>\r
       <Name>System.Runtime.Caching\System.Runtime.Caching-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b9455dea1f76a81a10b9335e28195e8d02001532..db99a265058ca4484574a4314661703084884858 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8AA31784-B653-4727-B8AD-ED2756AF1C3D}</ProjectGuid>\r
+    <ProjectGuid>{CE2E44C6-7B7F-43BB-992D-44749DFA7D71}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Caching-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Caching\System.Runtime.Caching-net_4_5.csproj">\r
-      <Project>{8645A982-AA1E-48CB-B996-7FCC4F8703CE}</Project>\r
+      <Project>{C18ABE89-33D2-4780-93BE-AB89B8187581}</Project>\r
       <Name>System.Runtime.Caching\System.Runtime.Caching-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index dceb63bfc593b3b78d1e5cb2d5da82560fdce2be..45b0ace1186f212f3f6349c4f4fcd40bfc8e10f4 100644 (file)
@@ -65,8 +65,12 @@ namespace System.Runtime.Caching
                        }
 
                        if (heapCount >= heapSize) {
-                               heapSize <<= 1;
-                               Array.Resize <MemoryCacheEntry> (ref heap, heapSize);
+                               checked {
+                                       heapSize <<= 1;
+                               }
+
+                               if (heapSize <= Int32.MaxValue)
+                                       Array.Resize <MemoryCacheEntry> (ref heap, heapSize);
                        }
 
                        return heap;
@@ -78,10 +82,14 @@ namespace System.Runtime.Caching
                                return null;
 
                        if (heapSize > HEAP_RESIZE_THRESHOLD) {
-                               int halfTheSize = heapSize >> 1;
-
-                               if (heapCount < halfTheSize)
-                                       Array.Resize <MemoryCacheEntry> (ref heap, halfTheSize + (heapCount / 3));
+                               int halfTheSize, newSize;
+                               checked {
+                                       halfTheSize = heapSize >> 1;
+                                       newSize = halfTheSize + (heapCount / 3);
+                               }
+
+                               if ((heapCount < halfTheSize) && newSize > -1)
+                                       Array.Resize <MemoryCacheEntry> (ref heap, newSize);
                        }
                        
                        return heap;
@@ -99,7 +107,7 @@ namespace System.Runtime.Caching
                                queueLock.EnterWriteLock ();
                                locked = true;
                                heap = GetHeapWithGrow ();
-                               heap [heapCount++] = item;
+                               heap [checked(heapCount++)] = item;
                                BubbleUp (heap);
                        } finally {
                                if (locked)
@@ -122,7 +130,7 @@ namespace System.Runtime.Caching
                                        return null;
 
                                ret = heap [0];
-                               index = --heapCount;
+                               index = checked(--heapCount);
                                heap [0] = heap [index];
                                heap [index] = null;
                                
@@ -164,7 +172,7 @@ namespace System.Runtime.Caching
                        while (selected < heapCount && heap [selected].ExpiresAt < item.ExpiresAt) {
                                heap [index] = heap [selected];
                                index = selected;
-                               left = (index << 1) + 1;
+                               left = checked((index << 1) + 1);
                                right = left + 1;
                                selected = right < heapCount && heap [right].ExpiresAt < heap [left].ExpiresAt ? right : left;
                        }
@@ -179,8 +187,8 @@ namespace System.Runtime.Caching
                        if (heapCount <= 1)
                                return;
                        
-                       index = heapCount - 1;
-                       parentIndex = (index - 1) >> 1;
+                       index = checked(heapCount - 1);
+                       parentIndex = checked((index - 1) >> 1);
 
                        item = heap [index];
                        while (index > 0) {
index f75168716f3f007d92eac1c7992e37b05ce09d97..b12a4c6cb830dc96dfc3e32adbcc1a4ffeb1f72f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3327D147-BA8F-4844-A60B-AF7C5F1267EB}</ProjectGuid>\r
+    <ProjectGuid>{F83A320D-A0B2-4123-AC1D-0AD8B202FD6B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.DurableInstancing-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_0.csproj">\r
-      <Project>{802B1060-BD79-4648-A24E-D38F34AE29A0}</Project>\r
+      <Project>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 80d3baab13a49078c9f81412a123121eac04d948..0f6ac25b722a2977a270219c43a61eb549ab88ca 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C07F9E49-E65C-40C7-A3BD-02F932A33C2A}</ProjectGuid>\r
+    <ProjectGuid>{DD189B9C-5CB4-4CB8-988C-90C36AB0BDA2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.DurableInstancing-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fcf1beac741e96fc6b7d9f2bcc1781e81f7190cc..d94977c005abf7e06c3c750b48d05fefdce277f8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FBC4BF16-5D2A-4636-8370-FCEB23B6A2F0}</ProjectGuid>\r
+    <ProjectGuid>{B87B8FC2-C5AB-4BCC-B730-1D0C759E1D9E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.DurableInstancing-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-net_4_0.csproj">\r
-      <Project>{3327D147-BA8F-4844-A60B-AF7C5F1267EB}</Project>\r
+      <Project>{F83A320D-A0B2-4123-AC1D-0AD8B202FD6B}</Project>\r
       <Name>System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_0.csproj">\r
-      <Project>{802B1060-BD79-4648-A24E-D38F34AE29A0}</Project>\r
+      <Project>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 526ed7c680538d63128cef278b822cb31098aaf9..2b7c8bd6195e61de580e9ea6a6d95d5351b69e53 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{590FFFA8-EFBA-4B65-87A7-FB3B42C9FF02}</ProjectGuid>\r
+    <ProjectGuid>{6D34CFEC-13B9-4E34-A253-CE4E46322542}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.DurableInstancing-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-net_4_5.csproj">\r
-      <Project>{C07F9E49-E65C-40C7-A3BD-02F932A33C2A}</Project>\r
+      <Project>{DD189B9C-5CB4-4CB8-988C-90C36AB0BDA2}</Project>\r
       <Name>System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0493c8a20984f1abdc4b19b5e0aa4551bb2ae6cb..cbd3ee075ed8de66004d946f2c2582efb8d745b7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{926909ED-BEFF-44E4-86E7-627D7F1A7182}</ProjectGuid>\r
+    <ProjectGuid>{6B643779-A807-456A-85CF-53FC62DE8D4A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Remoting-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj">\r
-      <Project>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</Project>\r
+      <Project>{85526C39-79CA-40DB-940A-3C83DF30DF85}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 311f1983d1fb37cef9688dcebb10572dadca86bf..3c4d083a0e8b8a9b8573cfc1349a774d68b5359c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D139665B-3687-45E1-849E-4B25B434A48D}</ProjectGuid>\r
+    <ProjectGuid>{4EC486E1-0880-46D4-8384-D50EC53E81F6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Remoting-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj">\r
-      <Project>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</Project>\r
+      <Project>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6cab7dc9776661fbd846c7bf738d5fe466985522..a73b46eb211ebac8f05de38650efb0d4f5a01c67 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4DB64CBC-A1A0-4EF6-9AC8-EABD847E9553}</ProjectGuid>\r
+    <ProjectGuid>{7E62A1A2-DEED-44AD-9FF2-178065ED8A44}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Remoting-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ad7b80288bef755207659a3125305b51f5e7b1c7..f9486469abf77ff4f04989e4a11035528c998f8e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D7FD3F6B-2827-4281-88B0-435C7DEA540D}</ProjectGuid>\r
+    <ProjectGuid>{482313A1-343C-45DB-BE6C-BDD12C56F2C3}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Remoting-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Remoting\System.Runtime.Remoting-net_2_0.csproj">\r
-      <Project>{926909ED-BEFF-44E4-86E7-627D7F1A7182}</Project>\r
+      <Project>{6B643779-A807-456A-85CF-53FC62DE8D4A}</Project>\r
       <Name>System.Runtime.Remoting\System.Runtime.Remoting-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj">\r
-      <Project>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</Project>\r
+      <Project>{85526C39-79CA-40DB-940A-3C83DF30DF85}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Remoting\System.Runtime.Remoting-net_2_0.csproj">\r
-      <Project>{926909ED-BEFF-44E4-86E7-627D7F1A7182}</Project>\r
+      <Project>{6B643779-A807-456A-85CF-53FC62DE8D4A}</Project>\r
       <Name>System.Runtime.Remoting\System.Runtime.Remoting-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c0a4421aa3b37b9233ba4f1882c242e17102a328..7d74e77fb4c55ea23a0be9d86f951237124d0aa2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{63800585-DE84-42FC-929C-E8F261D6755F}</ProjectGuid>\r
+    <ProjectGuid>{BBF90808-7545-4E6A-A7C6-C5C6E39F7EA6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Remoting-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Remoting\System.Runtime.Remoting-net_4_0.csproj">\r
-      <Project>{D139665B-3687-45E1-849E-4B25B434A48D}</Project>\r
+      <Project>{4EC486E1-0880-46D4-8384-D50EC53E81F6}</Project>\r
       <Name>System.Runtime.Remoting\System.Runtime.Remoting-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj">\r
-      <Project>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</Project>\r
+      <Project>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Remoting\System.Runtime.Remoting-net_4_0.csproj">\r
-      <Project>{D139665B-3687-45E1-849E-4B25B434A48D}</Project>\r
+      <Project>{4EC486E1-0880-46D4-8384-D50EC53E81F6}</Project>\r
       <Name>System.Runtime.Remoting\System.Runtime.Remoting-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7e0d6a090e4a75e3df5f5aaa471be41e53df1348..c513f7760ae63630dd5f978c7d25ab3c43b014e0 100644 (file)
@@ -5,12 +5,13 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7F9CCA1F-1778-4BB6-A8B6-D761429B4B8C}</ProjectGuid>\r
+    <ProjectGuid>{E19661F8-3BCE-48C0-A408-8F712F87A396}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Remoting-tests-net_4_5</OutputPath>\r
     <NoStdLib>True</NoStdLib>\r
     <NoConfig>False</NoConfig>\r
+    \r
     <AppDesignerFolder>Properties</AppDesignerFolder>\r
     <RootNamespace>\r
     </RootNamespace>\r
@@ -62,8 +63,7 @@
     <Compile Include="Test\ServerObject.cs" />\r
     <Compile Include="Test\SyncCalls.cs" />\r
     <Compile Include="Test\System.Runtime.Remoting.Channels.Tcp\TcpChannelTest.cs" />\r
-    <Compile Include="Test\TcpCalls.cs" />\r
-  </ItemGroup>\r
+    <Compile Include="Test\TcpCalls.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
@@ -73,6 +73,7 @@
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent>\r
+\r
     </PreBuildEvent>\r
     <PostBuildEvent>\r
       xcopy $(TargetName).* $(ProjectDir)..\lib\net_4_5\ /Y /R /D\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Remoting\System.Runtime.Remoting-net_4_5.csproj">\r
-      <Project>{4DB64CBC-A1A0-4EF6-9AC8-EABD847E9553}</Project>\r
+      <Project>{7E62A1A2-DEED-44AD-9FF2-178065ED8A44}</Project>\r
       <Name>System.Runtime.Remoting\System.Runtime.Remoting-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\System.Runtime.Remoting\System.Runtime.Remoting-net_4_5.csproj">\r
+      <Project>{7E62A1A2-DEED-44AD-9FF2-178065ED8A44}</Project>\r
+      <Name>System.Runtime.Remoting\System.Runtime.Remoting-net_4_5</Name>\r
+    </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
-</Project>\r
+</Project>
index 9af384c56f97d2a40be8448329807a08a068f8c1..02fe0d5340c571e7ec50f38e0bcda24499b1315d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</ProjectGuid>\r
+    <ProjectGuid>{85526C39-79CA-40DB-940A-3C83DF30DF85}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization.Formatters.Soap-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0e023973d9353827b62f665cc671d41e7f3979be..e439e1d38930ef6d8579b34f14cb143f8ded487d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</ProjectGuid>\r
+    <ProjectGuid>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization.Formatters.Soap-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7e77aae20de9b5563f2d1d517e41ac5e1371e99c..3dc62b1e985872c720366a8cea430ceba2db2629 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E9E47642-19D3-48A0-81C4-D51810976A70}</ProjectGuid>\r
+    <ProjectGuid>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization.Formatters.Soap-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 76bf2b92caf507b1430164ddb2bff76cb1d98b7b..d7a09ea4af4575425ade29c93d055bbd3491dc40 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D03F3879-5F44-4AD2-B695-93C8A6068134}</ProjectGuid>\r
+    <ProjectGuid>{7D65F1E4-3908-4DB1-A750-ADD717FE96BD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization.Formatters.Soap-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj">\r
-      <Project>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</Project>\r
+      <Project>{85526C39-79CA-40DB-940A-3C83DF30DF85}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fcc0465ea928007249eed03d2ec663b4aec3313a..718b43176466c693081e06ec3a39f85ab4a2e266 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F89529E2-B0EA-45EF-8C09-013B5A094DA2}</ProjectGuid>\r
+    <ProjectGuid>{55ED50A9-7ABD-4856-A395-210BF169ECBB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization.Formatters.Soap-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj">\r
-      <Project>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</Project>\r
+      <Project>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c48b5accc14680d2dc8775d7322b6fde19fccda1..1b00862f3f94f4d4a853532b580cea773a7448a3 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{86595D30-C24E-4A0F-9419-499980DE4B79}</ProjectGuid>\r
+    <ProjectGuid>{287E4CA2-E854-4E18-AFEE-B71E893A30EA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization.Formatters.Soap-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7ca011f4a93e99c6c1495e25474e9ae399a5a20b..8559abaae845b265556fe0586d5e7f816de1c8d9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</ProjectGuid>\r
+    <ProjectGuid>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,169,219,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2d02e1d778878b86ea69331b7bd358d72dd973b5..753ddab437f31c3100f044207c43e621e907fe54 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</ProjectGuid>\r
+    <ProjectGuid>{4F614C6C-A83E-4C3C-859B-0548391F519E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,169,219,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a76f67bade72b1f9eb33ba66ed20bd94ab896859..d6efa31761b653d662def8b99f2aaca8c0ba3c7d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{088AB4AB-1904-4365-A74B-F7557A034945}</ProjectGuid>\r
+    <ProjectGuid>{E90544E8-C031-49EE-BB6F-8688382E8618}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,169,219,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization-net_4_5</OutputPath>\r
@@ -48,6 +48,7 @@
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="..\System.ServiceModel.Web\System.Runtime.Serialization.Json\DataContractJsonSerializer.cs" />\r
+    <Compile Include="..\System.ServiceModel.Web\System.Runtime.Serialization.Json\DataContractJsonSerializerSettings.cs" />\r
     <Compile Include="..\System.ServiceModel.Web\System.Runtime.Serialization.Json\IXmlJsonReaderInitializer.cs" />\r
     <Compile Include="..\System.ServiceModel.Web\System.Runtime.Serialization.Json\IXmlJsonWriterInitializer.cs" />\r
     <Compile Include="..\System.ServiceModel.Web\System.Runtime.Serialization.Json\JsonReader.cs" />\r
     <Compile Include="System.Runtime.Serialization\DataContractAttribute.cs" />\r
     <Compile Include="System.Runtime.Serialization\DataContractResolver.cs" />\r
     <Compile Include="System.Runtime.Serialization\DataContractSerializer.cs" />\r
+    <Compile Include="System.Runtime.Serialization\DataContractSerializerSettings.cs" />\r
     <Compile Include="System.Runtime.Serialization\DataMemberAttribute.cs" />\r
+    <Compile Include="System.Runtime.Serialization\DateTimeFormat.cs" />\r
+    <Compile Include="System.Runtime.Serialization\EmitTypeInformation.cs" />\r
     <Compile Include="System.Runtime.Serialization\EnumMemberAttribute.cs" />\r
     <Compile Include="System.Runtime.Serialization\ExportOptions.cs" />\r
     <Compile Include="System.Runtime.Serialization\ExtensionDataObject.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3dfb175cf3134d10970e8509e815999f132f93cf..31b5991e72a4b0d56243ec88f47a222bcc1eb04e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{30E9DDDA-1C01-437E-9444-78B95197167C}</ProjectGuid>\r
+    <ProjectGuid>{27F5B712-0010-4A46-8C55-4CACA30F4E78}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,169,219,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization-tests-net_2_0</OutputPath>\r
@@ -54,6 +54,7 @@
     <Compile Include="Test\System.Runtime.Serialization\CollectionSerialization.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractResolverTest.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_DuplicateQName.cs" />\r
+    <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_InvalidCharacters.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_NullableWithDictionary.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\KnownTypeAttributeTest.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\WsdlHelper.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.ServiceModel.dll">\r
       <Private>False</Private>\r
     </Reference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0cfec1d5a04148fbb6b6e7648b191feecad575b7..04417003e2b1a1f4f1e75bc45b6971ac865f814d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{11013E7D-73BE-4CAF-80D1-1C7CDD85D40A}</ProjectGuid>\r
+    <ProjectGuid>{5E9D8F32-D3F0-4243-AA10-B896ACB084F7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,169,219,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization-tests-net_4_0</OutputPath>\r
@@ -54,6 +54,7 @@
     <Compile Include="Test\System.Runtime.Serialization\CollectionSerialization.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractResolverTest.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_DuplicateQName.cs" />\r
+    <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_InvalidCharacters.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_NullableWithDictionary.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\KnownTypeAttributeTest.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\WsdlHelper.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_0.csproj">\r
-      <Project>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</Project>\r
+      <Project>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6f1755896dc420e99c4c346eb0f5492d356b91b6..513c10228954e41250d0b37525958900dfe26de8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8748B03E-D19A-4A32-B0BC-67DE3F224EDC}</ProjectGuid>\r
+    <ProjectGuid>{DC1A3B5B-AFAC-4EE0-B9B8-6664F9E744B7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,169,219,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization-tests-net_4_5</OutputPath>\r
@@ -54,6 +54,7 @@
     <Compile Include="Test\System.Runtime.Serialization\CollectionSerialization.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractResolverTest.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_DuplicateQName.cs" />\r
+    <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_InvalidCharacters.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_NullableWithDictionary.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\KnownTypeAttributeTest.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\WsdlHelper.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 034c0081eee6d45cdd771abb7c621193674d08b8..0a10af2bddb1420133269fcca4aab035ae64a749 100755 (executable)
@@ -689,6 +689,8 @@ namespace System.Runtime.Serialization
                        // First, check XmlSchemaProviderAttribute and try GetSchema() to see if it returns a schema in the expected format.
                        var xpa = type.GetCustomAttribute<XmlSchemaProviderAttribute> (true);
                        if (xpa != null) {
+                               if (xpa.IsAny)
+                                       return XmlQualifiedName.Empty;
                                var mi = type.GetMethod (xpa.MethodName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);
                                if (mi != null) {
                                        try {
@@ -997,7 +999,7 @@ namespace System.Runtime.Serialization
 
                        QName qname = GetSerializableQName (type);
 
-                       if (FindUserMap (qname, type) != null)
+                       if (!QName.Empty.Equals (qname) && FindUserMap (qname, type) != null)
                                throw new InvalidOperationException (String.Format ("There is already a registered type for XML name {0}", qname));
 
                        XmlSerializableMap ret = new XmlSerializableMap (type, qname, this);
index 9c0319d943382ef8b982633dbfe375cf037e64bf..2abb7663fed0fb002c3a3d00223a1fd65a5c9dec 100644 (file)
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-#if NET_2_0
 using System;
 using System.Collections;
 using System.IO;
+using System.Text;
 using System.Reflection;
 using System.Runtime.Serialization.Formatters.Binary;
 using System.Xml;
@@ -61,7 +61,9 @@ namespace System.Runtime.Serialization
 
                public virtual object ReadObject (Stream stream)
                {
-                       return ReadObject (XmlReader.Create (stream));
+                       var settings = new XmlReaderSettings ();
+                       settings.CheckCharacters = false;
+                       return ReadObject (XmlReader.Create (stream, settings));
                }
 
                public virtual object ReadObject (XmlReader reader)
@@ -86,7 +88,12 @@ namespace System.Runtime.Serialization
 
                public virtual void WriteObject (Stream stream, object graph)
                {
-                       using (XmlWriter xw = XmlDictionaryWriter.CreateTextWriter (stream)) {
+                       var settings = new XmlWriterSettings ();
+                       settings.Encoding = Encoding.UTF8;
+                       settings.CloseOutput = false;
+                       settings.OmitXmlDeclaration = true;
+                       settings.CheckCharacters = false;
+                       using (XmlWriter xw = XmlDictionaryWriter.CreateDictionaryWriter (XmlWriter.Create (stream, settings))) {
                                WriteObject (xw, graph);
                        }
                }
@@ -130,4 +137,3 @@ namespace System.Runtime.Serialization
                        XmlDictionaryWriter writer);
        }
 }
-#endif
index aa860040ea37f40861adb0f20c5fbf723d2c9467..9c52901aa8bac2b12b420ddf47f0cd41343119b6 100644 (file)
@@ -7,6 +7,7 @@ System.Runtime.Serialization/Bug695203Test.cs
 System.Runtime.Serialization/DataContractResolverTest.cs
 System.Runtime.Serialization/DataContractSerializerTest_DuplicateQName.cs
 System.Runtime.Serialization/DataContractSerializerTest_NullableWithDictionary.cs
+System.Runtime.Serialization/DataContractSerializerTest_InvalidCharacters.cs
 System.Runtime.Serialization/KnownTypeAttributeTest.cs
 System.Runtime.Serialization/XmlObjectSerializerTest.cs
 System.Runtime.Serialization/XsdDataContractExporterTest.cs
diff --git a/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/DataContractSerializerTest_InvalidCharacters.cs b/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/DataContractSerializerTest_InvalidCharacters.cs
new file mode 100644 (file)
index 0000000..260c3e3
--- /dev/null
@@ -0,0 +1,71 @@
+//
+// DataContractSerializerTest_InvalidCharacters.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.IO;
+using System.Text;
+using System.Runtime.Serialization;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Runtime.Serialization
+{
+       [TestFixture]
+       public class DataContractSerializerTest_InvalidCharacters
+       {
+               [Serializable]
+               public class MyData
+               {
+                       public string Text;
+               }
+
+               [Test]
+               public void Test ()
+               {
+                       var data = new MyData
+                       {
+                               Text = "Test " + ASCIIEncoding.ASCII.GetString (new byte[] { 0x06 })
+                       };
+
+                       var serializer = new DataContractSerializer (typeof(MyData), "MyData", string.Empty);
+
+                       string serialized;
+                       using (var ms = new MemoryStream ()) {
+                               serializer.WriteObject (ms, data);
+                               serialized = new string (Encoding.UTF8.GetChars (ms.GetBuffer ()));
+
+                               Assert.IsTrue (serialized.Contains ("Test &#x6;"), "#1");
+
+                               ms.Seek (0, SeekOrigin.Begin);
+
+                               var data2 = (MyData)serializer.ReadObject (ms);
+                               Assert.AreEqual (data2.Text.Length, 6, "#2");
+                               Assert.AreEqual (data2.Text [5], (char)0x06, "#3");
+                       }
+               }
+
+               
+       }
+}
index a2b66f4176d3331c5208e560d15f928f8142e032..9500cfee151300bb1020e79f8a0f14b996c71446 100755 (executable)
@@ -81,7 +81,7 @@ namespace MonoTests.System.Runtime.Serialization
                public void ConstructorKnownTypesNull ()
                {
                        // null knownTypes is allowed. Though the property is filled.
-                       Assert.IsNotNull (new DataContractSerializer (typeof (Sample1), null).KnownTypes, "#1");
+                       Assert.IsNotNull (new DataContractSerializer (typeof (Sample1), (IEnumerable<Type>)null).KnownTypes, "#1");
                        Assert.IsNotNull (new DataContractSerializer (typeof (Sample1), "Foo", String.Empty, null).KnownTypes, "#2");
                        Assert.IsNotNull (new DataContractSerializer (typeof (Sample1), new XmlDictionary ().Add ("Foo"), XmlDictionaryString.Empty, null).KnownTypes, "#3");
                }
@@ -138,7 +138,8 @@ namespace MonoTests.System.Runtime.Serialization
                        ser.WriteObject (sw, 1);
                        string expected = "<int xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">1</int>";
                        byte[] buf = sw.ToArray ();
-                       Assert.AreEqual (expected, Encoding.UTF8.GetString (buf, 0, buf.Length));
+                       // Skip the utf8 bom
+                       Assert.AreEqual (expected, Encoding.UTF8.GetString (buf, 3, buf.Length - 3));
                }
 
                [Test]
index 7996abd8c611a97b1664edc3a1215d6f9d7b3228..4c1a589f65a051837047d5bc4dab225f23528ac9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</ProjectGuid>\r
+    <ProjectGuid>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Security-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-1.csproj">\r
-      <Project>{980C299E-664F-4905-B01C-19599BBE78FF}</Project>\r
+      <Project>{FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}</Project>\r
       <Name>System\System-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0.csproj">\r
-      <Project>{67A04408-CBEF-4B63-B975-29D827B0DBED}</Project>\r
+      <Project>{2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}</Project>\r
       <Name>System.XML\System.Xml-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b2f29fe6ebdf224dc69b045f592f39008a73a574..d0bb54e2a478cfe9b9b3026ca1425cc88b1d17ba 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</ProjectGuid>\r
+    <ProjectGuid>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Security-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-1.csproj">\r
-      <Project>{C57BB644-EEFC-475A-AF6F-43EF29C75933}</Project>\r
+      <Project>{FCBCCC55-006E-41B2-A649-CF9A843E34BD}</Project>\r
       <Name>System\System-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0.csproj">\r
-      <Project>{18CD7C68-EF7C-4C7A-B8D6-FE9834145437}</Project>\r
+      <Project>{8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}</Project>\r
       <Name>System.XML\System.Xml-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d8c3ed42982c5262991f304f989a322b9a2bc110..584a037df7c89d52173888885273e1e7fe167e0d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</ProjectGuid>\r
+    <ProjectGuid>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Security-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-1.csproj">\r
-      <Project>{B53B8417-E392-4660-86F0-54E7B7FAD4BA}</Project>\r
+      <Project>{B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}</Project>\r
       <Name>System\System-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</Project>\r
+      <Project>{F96F7491-66DB-4291-8803-F2F165B33B55}</Project>\r
       <Name>System.XML\System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c9aa2ff42f20492f5a14727ab77a682a18e6b82f..2c019879d3117239154d55c73386d371df98acd0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F12D783C-73C7-4929-8FA6-76BB06FEF3DE}</ProjectGuid>\r
+    <ProjectGuid>{FB4FDBCF-EC4C-456A-963D-21F345994BF9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,414,169,219,1595,168,183,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Security-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-1.csproj">\r
-      <Project>{980C299E-664F-4905-B01C-19599BBE78FF}</Project>\r
+      <Project>{FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}</Project>\r
       <Name>System\System-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0.csproj">\r
-      <Project>{67A04408-CBEF-4B63-B975-29D827B0DBED}</Project>\r
+      <Project>{2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}</Project>\r
       <Name>System.XML\System.Xml-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d0dce791766b162c45083086ce3e93e359f923b2..122f7736607b66a36ce81486b84353a23063ebc0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{35CA0215-5507-43AB-BBB1-10B274733076}</ProjectGuid>\r
+    <ProjectGuid>{7CD39108-AA65-4A1D-A185-658C4DFED0F6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,414,169,219,1595,168,183,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Security-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-1.csproj">\r
-      <Project>{C57BB644-EEFC-475A-AF6F-43EF29C75933}</Project>\r
+      <Project>{FCBCCC55-006E-41B2-A649-CF9A843E34BD}</Project>\r
       <Name>System\System-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0.csproj">\r
-      <Project>{18CD7C68-EF7C-4C7A-B8D6-FE9834145437}</Project>\r
+      <Project>{8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}</Project>\r
       <Name>System.XML\System.Xml-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a6748208b704866832594378238641ac4aee2680..99b0424278187ebf4d357b12f3e63d60a10d189f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5AF47E2F-C295-4410-BB78-F08FE99C0E76}</ProjectGuid>\r
+    <ProjectGuid>{65F07468-96FC-4A71-8565-2CD7A50728CC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,414,169,219,1595,168,183,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Security-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-1.csproj">\r
-      <Project>{B53B8417-E392-4660-86F0-54E7B7FAD4BA}</Project>\r
+      <Project>{B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}</Project>\r
       <Name>System\System-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</Project>\r
+      <Project>{F96F7491-66DB-4291-8803-F2F165B33B55}</Project>\r
       <Name>System.XML\System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2d6d915f716ec60ede480d2d66cb1dad381d987f..72a06ccc7f37bc5a82dc42066b3978e3da70ed87 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7E650C81-1CCE-4A49-9DC8-011DBBCECD02}</ProjectGuid>\r
+    <ProjectGuid>{C4790F29-45CF-4D74-85FC-95F9F35D6B8E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Discovery-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_0.csproj">\r
-      <Project>{802B1060-BD79-4648-A24E-D38F34AE29A0}</Project>\r
+      <Project>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 18f422faf80d0a58ddd4f57e8310ab0c95a8d43e..68ac0cafcac67aa4b486d89d85bca67b673a4e71 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C06900FB-F604-4640-AFDC-000BF6BB38CC}</ProjectGuid>\r
+    <ProjectGuid>{875503E2-28DA-4301-99D4-9A897BDC06F1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Discovery-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2474fc02927280dba3b90406810f14bfe7b6bee0..577e826e13577b5c0e27b6c749ebb0d2d952edda 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2AD05316-EDB9-49CA-A96C-6951FC6B4A6F}</ProjectGuid>\r
+    <ProjectGuid>{563F4358-F2E3-4067-A4AF-BB3248905DD4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Discovery-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Discovery\System.ServiceModel.Discovery-net_4_0.csproj">\r
-      <Project>{7E650C81-1CCE-4A49-9DC8-011DBBCECD02}</Project>\r
+      <Project>{C4790F29-45CF-4D74-85FC-95F9F35D6B8E}</Project>\r
       <Name>System.ServiceModel.Discovery\System.ServiceModel.Discovery-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_0.csproj">\r
-      <Project>{802B1060-BD79-4648-A24E-D38F34AE29A0}</Project>\r
+      <Project>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index efb5d46089cfebb9472e56cf57d5c68634575f93..02f467196309346b74117383355273ec9687c689 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BB7A44E8-2F00-4A87-843D-5387CD8611E3}</ProjectGuid>\r
+    <ProjectGuid>{C776055D-B157-4022-8926-DC1DCE41832F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Discovery-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Discovery\System.ServiceModel.Discovery-net_4_5.csproj">\r
-      <Project>{C06900FB-F604-4640-AFDC-000BF6BB38CC}</Project>\r
+      <Project>{875503E2-28DA-4301-99D4-9A897BDC06F1}</Project>\r
       <Name>System.ServiceModel.Discovery\System.ServiceModel.Discovery-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9007006b91a7b629cd485047f11255aab377c069..d04edff196e86df06673451a6bfa29a00f17ceef 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{61C55877-8EA9-4410-98BB-115E98FA6CA1}</ProjectGuid>\r
+    <ProjectGuid>{27FEFDE2-8058-4C92-A095-172994B224B9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Routing-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2c09bb6ee7fdf6b7e6e88afdbc82d1641cdc5f23..ca59f54a2aabcebed4d6b7c3e55c2b6758931c93 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{74243378-7F6B-4B8D-81E3-E61C7AD8B87D}</ProjectGuid>\r
+    <ProjectGuid>{C60066A8-6929-44CD-BD9F-4556AFFC0087}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Routing-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f58657f7769ee862db58fec73973c7957b1c15c5..97c88830976542ee11ec081e577b11c4366d5d9a 100644 (file)
@@ -15,7 +15,8 @@ TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
 
 EXTRA_DISTFILES = $(RESOURCE_FILES) \
        Test/config/webHttpBinding \
-       Test/config/webHttpBinding.config
+       Test/config/webHttpBinding.config \
+       System.Runtime.Serialization.Json/DataContractJsonSerializerSettings.cs
 
 VALID_PROFILE := $(filter 2 4, $(FRAMEWORK_VERSION_MAJOR))
 ifndef VALID_PROFILE
index 1194e7177db53a1287a058f84630b62152095e8a..f8d772dea15334dabf44159a83adfa3a10d6547d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{54969D84-6764-49E4-A6AF-51ADD6A7CDFA}</ProjectGuid>\r
+    <ProjectGuid>{C1E98610-9EA1-4973-A48B-E7CE2E790F40}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Web-net_2_0</OutputPath>\r
@@ -48,6 +48,7 @@
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="Assembly\TypeForwarders.cs" />\r
     <Compile Include="System.Runtime.Serialization.Json\DataContractJsonSerializer.cs" />\r
     <Compile Include="System.Runtime.Serialization.Json\IXmlJsonReaderInitializer.cs" />\r
     <Compile Include="System.Runtime.Serialization.Json\IXmlJsonWriterInitializer.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_2_0.csproj">\r
-      <Project>{F0188B31-4CA0-41B2-8554-42C84D351D5E}</Project>\r
+      <Project>{2081F80F-9D8D-4D22-AF56-367D7BAC61D6}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 61fc00a3466a2fe1ec2801f6d7cb0d9576eea217..153bac008e30d3ed28ba39f525b0cc57b39d7168 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2F40A7ED-89D4-414D-B916-6ECB39F15BD2}</ProjectGuid>\r
+    <ProjectGuid>{B9CFA1C3-B2EE-40CB-85EC-674A2D1CAC5F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Web-net_4_0</OutputPath>\r
@@ -48,6 +48,7 @@
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="Assembly\TypeForwarders.cs" />\r
     <Compile Include="System.ServiceModel.Activation\WebScriptServiceHostFactory.cs" />\r
     <Compile Include="System.ServiceModel.Activation\WebServiceHostFactory.cs" />\r
     <Compile Include="System.ServiceModel.Channels\WebBodyFormatMessageProperty.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_0.csproj">\r
-      <Project>{70CE3BCD-3BFA-42A9-AC82-C2F3B2CAC59B}</Project>\r
+      <Project>{B98941D0-3811-41A0-B07B-E48D4A7765DF}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 69a941ba9352e585c3d4b570529dd0099d3a8c6b..9f9f3659839ef8655312a2211852f072a7efb74c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{89390ACC-32C7-45EE-A169-BA1A4EEE6C47}</ProjectGuid>\r
+    <ProjectGuid>{BC669CAE-D6F8-49B9-8AC3-68B48BD70587}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Web-net_4_5</OutputPath>\r
@@ -48,6 +48,7 @@
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="Assembly\TypeForwarders.cs" />\r
     <Compile Include="System.ServiceModel.Activation\WebScriptServiceHostFactory.cs" />\r
     <Compile Include="System.ServiceModel.Activation\WebServiceHostFactory.cs" />\r
     <Compile Include="System.ServiceModel.Channels\WebBodyFormatMessageProperty.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{88F3463D-A057-4531-AEE8-802F5B6342E9}</Project>\r
+      <Project>{74E571CD-0506-4A52-B780-FDA9445675FB}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ea567074555498a58557577a1ee893646beed862..22e964a2598613766cfdc6296743b3d5cbd922ce 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C7B73985-3AA4-4070-A4F9-893C3EFB2AEC}</ProjectGuid>\r
+    <ProjectGuid>{87C220D2-8B51-4F16-A266-DF2067863135}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Web-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_2_0.csproj">\r
-      <Project>{54969D84-6764-49E4-A6AF-51ADD6A7CDFA}</Project>\r
+      <Project>{C1E98610-9EA1-4973-A48B-E7CE2E790F40}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_2_0.csproj">\r
-      <Project>{F0188B31-4CA0-41B2-8554-42C84D351D5E}</Project>\r
+      <Project>{2081F80F-9D8D-4D22-AF56-367D7BAC61D6}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 705f76f23f62dce8b0025afdb8b73c003224693d..fca2c73c1bb7aa1a4869cdc64432e96d3d9cadef 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DB7FC495-2119-4090-8259-FE9AA872D09E}</ProjectGuid>\r
+    <ProjectGuid>{04D60744-2326-4D9C-9CD9-7A64D431F00B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Web-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_0.csproj">\r
-      <Project>{2F40A7ED-89D4-414D-B916-6ECB39F15BD2}</Project>\r
+      <Project>{B9CFA1C3-B2EE-40CB-85EC-674A2D1CAC5F}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_0.csproj">\r
-      <Project>{70CE3BCD-3BFA-42A9-AC82-C2F3B2CAC59B}</Project>\r
+      <Project>{B98941D0-3811-41A0-B07B-E48D4A7765DF}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ab52676931a6a54ab0398314912b8176261f70f1..33f1e381eaf506654550ea8016227bea3a97ee84 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4EE7AB4A-30BD-4795-AF12-1BFFA4108CF7}</ProjectGuid>\r
+    <ProjectGuid>{E8E13C56-208F-44E9-B0F9-F1A4996C595A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Web-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_5.csproj">\r
-      <Project>{89390ACC-32C7-45EE-A169-BA1A4EEE6C47}</Project>\r
+      <Project>{BC669CAE-D6F8-49B9-8AC3-68B48BD70587}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{88F3463D-A057-4531-AEE8-802F5B6342E9}</Project>\r
+      <Project>{74E571CD-0506-4A52-B780-FDA9445675FB}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d55c6ce183c85b3febcfc304c819dc7715571a75..3361cfe8e0788339df794a2f5c6ef573c547a70c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</ProjectGuid>\r
+    <ProjectGuid>{28B2271C-CC55-4812-B732-A67317405AA9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_2_0.csproj">\r
-      <Project>{F2FA985C-3E81-483E-BB6E-E814706D57AE}</Project>\r
+      <Project>{FB6EBCB1-9EAF-4671-A9CB-505DC2FEC8A0}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_2_0.csproj">\r
-      <Project>{33F1FAD8-42DA-489B-BEEE-E7E4EFE3891F}</Project>\r
+      <Project>{5A185DDB-82E9-4241-8216-82988647755A}</Project>\r
       <Name>System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_2_0.csproj">\r
-      <Project>{02BA7387-C09A-40FB-BE80-39588B822A29}</Project>\r
+      <Project>{858BC3D5-8B2D-4B24-8BD9-BDC36A1DAFE4}</Project>\r
       <Name>System.Messaging\System.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ecb58b1578bc45ce555224c3a02d5c459c31a00e..db6d3a06a4cb6124c35ae38a8b20701f7e145650 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{93532CB9-2FFB-4458-820F-BA280A6E6796}</ProjectGuid>\r
+    <ProjectGuid>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel-net_4_0</OutputPath>\r
     <Compile Include="System.ServiceModel.Channels\HostedTransportConfiguration.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HtmlizedException.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpChannelFactory.cs" />\r
+    <Compile Include="System.ServiceModel.Channels\HttpCookieContainerBindingElement.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpRequestChannel.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpRequestMessageProperty.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpResponseMessageProperty.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IDuplexChannel.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IDuplexSession.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IDuplexSessionChannel.cs" />\r
+    <Compile Include="System.ServiceModel.Channels\IHttpCookieContainer.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IInputChannel.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IInputSession.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IInputSessionChannel.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_0.csproj">\r
-      <Project>{4326E85E-00B2-47F8-9A54-A8E15021CBA3}</Project>\r
+      <Project>{F3D909C0-D548-4FBC-BA04-BC8A445954EA}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_0.csproj">\r
-      <Project>{DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}</Project>\r
+      <Project>{45FB5242-B51C-43BC-A7B5-75E5E17C4E95}</Project>\r
       <Name>System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_0.csproj">\r
-      <Project>{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}</Project>\r
+      <Project>{443D0D78-0A65-4288-80C2-B58011E3A5D1}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_0.csproj">\r
-      <Project>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</Project>\r
+      <Project>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bab26002734c48c59c3b6ee654b24d392186ca7b..db6d6320b92ffb4759d3a7f1003193add17043b2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</ProjectGuid>\r
+    <ProjectGuid>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel-net_4_5</OutputPath>\r
     <Compile Include="System.ServiceModel.Channels\HostedTransportConfiguration.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HtmlizedException.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpChannelFactory.cs" />\r
+    <Compile Include="System.ServiceModel.Channels\HttpCookieContainerBindingElement.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpRequestChannel.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpRequestMessageProperty.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpResponseMessageProperty.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IDuplexChannel.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IDuplexSession.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IDuplexSessionChannel.cs" />\r
+    <Compile Include="System.ServiceModel.Channels\IHttpCookieContainer.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IInputChannel.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IInputSession.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IInputSessionChannel.cs" />\r
     <Compile Include="System.ServiceModel.Channels\TransportSecurityBindingElement.cs" />\r
     <Compile Include="System.ServiceModel.Channels\UnderstoodHeaders.cs" />\r
     <Compile Include="System.ServiceModel.Channels\UseManagedPresentationBindingElement.cs" />\r
+    <Compile Include="System.ServiceModel.Channels\WebSocketTransportSettings.cs" />\r
+    <Compile Include="System.ServiceModel.Channels\WebSocketTransportUsage.cs" />\r
     <Compile Include="System.ServiceModel.Channels\WindowsStreamSecurityBindingElement.cs" />\r
     <Compile Include="System.ServiceModel.Channels\XmlObjectSerializerBodyWriter.cs" />\r
     <Compile Include="System.ServiceModel.Channels\XmlReaderBodyWriter.cs" />\r
     <Compile Include="System.ServiceModel\MsmqPoisonMessageException.cs" />\r
     <Compile Include="System.ServiceModel\MsmqTransportSecurity.cs" />\r
     <Compile Include="System.ServiceModel\NamedPipeTransportSecurity.cs" />\r
+    <Compile Include="System.ServiceModel\NetHttpBinding.cs" />\r
+    <Compile Include="System.ServiceModel\NetHttpMessageEncoding.cs" />\r
     <Compile Include="System.ServiceModel\NetMsmqBinding.cs" />\r
     <Compile Include="System.ServiceModel\NetMsmqSecurity.cs" />\r
     <Compile Include="System.ServiceModel\NetNamedPipeBinding.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_5.csproj">\r
-      <Project>{1B9AFE07-4230-4DE0-8A9F-C277179098FF}</Project>\r
+      <Project>{1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5.csproj">\r
-      <Project>{C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}</Project>\r
+      <Project>{5889C0B9-25DF-4405-A240-AC0615F4B3EB}</Project>\r
       <Name>System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_5.csproj">\r
-      <Project>{47046600-6AFB-46AB-BCF6-8E9EDD67FA97}</Project>\r
+      <Project>{A8B93174-06DF-4FC7-8E3E-45F395A943EB}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9d962e9d23fe4a2e505c12c6c56ee344ad24827e..44cce0a48e47bdada6cfe2a90113c737a1b9a8b0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3483A463-CDF1-44C2-B179-93FED99F1AD5}</ProjectGuid>\r
+    <ProjectGuid>{4EF40B67-F851-4296-8C07-5AD7CCBBA66F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_2_0.csproj">\r
-      <Project>{F2FA985C-3E81-483E-BB6E-E814706D57AE}</Project>\r
+      <Project>{FB6EBCB1-9EAF-4671-A9CB-505DC2FEC8A0}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_2_0.csproj">\r
-      <Project>{33F1FAD8-42DA-489B-BEEE-E7E4EFE3891F}</Project>\r
+      <Project>{5A185DDB-82E9-4241-8216-82988647755A}</Project>\r
       <Name>System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_2_0.csproj">\r
-      <Project>{02BA7387-C09A-40FB-BE80-39588B822A29}</Project>\r
+      <Project>{858BC3D5-8B2D-4B24-8BD9-BDC36A1DAFE4}</Project>\r
       <Name>System.Messaging\System.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d20e3d92a76f5d44604a60bdcf3b46622dc46aeb..63126dd1492993ac0f0904d00e620ac4aff135a7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C900AF96-95E8-43ED-89F7-F39ED49EFC7E}</ProjectGuid>\r
+    <ProjectGuid>{C5659E3B-71A0-4528-A6DF-9303DAD0EE4E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_0.csproj">\r
-      <Project>{4326E85E-00B2-47F8-9A54-A8E15021CBA3}</Project>\r
+      <Project>{F3D909C0-D548-4FBC-BA04-BC8A445954EA}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_0.csproj">\r
-      <Project>{DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}</Project>\r
+      <Project>{45FB5242-B51C-43BC-A7B5-75E5E17C4E95}</Project>\r
       <Name>System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_0.csproj">\r
-      <Project>{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}</Project>\r
+      <Project>{443D0D78-0A65-4288-80C2-B58011E3A5D1}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_0.csproj">\r
-      <Project>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</Project>\r
+      <Project>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1114d7140ea814f305a3403e30f29425a97dbc45..4e60879747b1220e3e53c2372dc642c9f747fd26 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D1B6CD53-1030-468E-AAF4-4D2253086D25}</ProjectGuid>\r
+    <ProjectGuid>{5F59D153-79FB-4348-B615-419F2DA69166}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_5.csproj">\r
-      <Project>{1B9AFE07-4230-4DE0-8A9F-C277179098FF}</Project>\r
+      <Project>{1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5.csproj">\r
-      <Project>{C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}</Project>\r
+      <Project>{5889C0B9-25DF-4405-A240-AC0615F4B3EB}</Project>\r
       <Name>System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_5.csproj">\r
-      <Project>{47046600-6AFB-46AB-BCF6-8E9EDD67FA97}</Project>\r
+      <Project>{A8B93174-06DF-4FC7-8E3E-45F395A943EB}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0fe6bbfd0d5f0d8c764b6e66b3c3eb7aeb904499..50ae808fcbd680be813ba1b64265e5abb64379ad 100644 (file)
@@ -38,7 +38,7 @@ namespace System.ServiceModel.Channels
 {
        internal class HttpChannelFactory<TChannel> : TransportChannelFactoryBase<TChannel>
        {
-#if NET_2_1
+#if NET_2_1 || NET_4_0
                IHttpCookieContainerManager cookie_manager;
 #endif
 
@@ -50,12 +50,16 @@ namespace System.ServiceModel.Channels
                                MessageEncodingBindingElement mbe = be as MessageEncodingBindingElement;
                                if (mbe != null) {
                                        MessageEncoder = CreateEncoder<TChannel> (mbe);
-                                       break;
+                                       continue;
                                }
 #if NET_2_1
                                var cbe = be as HttpCookieContainerBindingElement;
                                if (cbe != null)
                                        cookie_manager = cbe.GetProperty<IHttpCookieContainerManager> (ctx);
+#elif NET_4_0
+                               var tbe = be as HttpTransportBindingElement;
+                               if (tbe != null)
+                                       cookie_manager = tbe.GetProperty<IHttpCookieContainerManager> (ctx);
 #endif
                        }
                        if (MessageEncoder == null)
@@ -109,7 +113,7 @@ namespace System.ServiceModel.Channels
 
                public override T GetProperty<T> ()
                {
-#if NET_2_1
+#if NET_2_1 || NET_4_0
                        if (cookie_manager is T)
                                return (T) (object) cookie_manager;
 #endif
index d718bfb467a2381a9001cc534d70bd1787e708d2..b9dc0ab748df237b0440160306389619cf1b2caa 100644 (file)
@@ -4,6 +4,9 @@ using System.ServiceModel;
 
 namespace System.ServiceModel.Channels
 {
+#if NET_4_0
+       [Obsolete ("Use AllowCookies.")]
+#endif
        public class HttpCookieContainerBindingElement : BindingElement
        {
                HttpCookieContainerManager manager;
index ff5d658f39fc7cad5d3e0eac157fd4baa121080c..e209ec8062b37a374ac7b6a661e66d5072a0d2b3 100644 (file)
@@ -90,11 +90,11 @@ namespace System.ServiceModel.Channels
                        result.WebRequest = web_request;
                        web_request.Method = "POST";
                        web_request.ContentType = Encoder.ContentType;
-#if NET_2_1
+#if NET_2_1 || NET_4_0
                        HttpWebRequest hwr = (web_request as HttpWebRequest);
-                               var cmgr = source.GetProperty<IHttpCookieContainerManager> ();
-                               if (cmgr != null)
-                                       hwr.CookieContainer = cmgr.CookieContainer;
+                       var cmgr = source.GetProperty<IHttpCookieContainerManager> ();
+                       if (cmgr != null)
+                               hwr.CookieContainer = cmgr.CookieContainer;
 #endif
 
                        // client authentication (while SL3 has NetworkCredential class, it is not implemented yet. So, it is non-SL only.)
index 2c6b082867592bb770b231f7fcce7b9d7e603784..84388adcb087a721ba4997cc371084baa54be586 100644 (file)
@@ -62,6 +62,9 @@ namespace System.ServiceModel.Channels
                AuthenticationSchemes proxy_auth_scheme =
                        AuthenticationSchemes.Anonymous;
                // If you add fields, do not forget them in copy constructor.
+#if NET_4_0
+               HttpCookieContainerManager cookie_manager;
+#endif
 
                public HttpTransportBindingElement ()
                {
@@ -90,6 +93,7 @@ namespace System.ServiceModel.Channels
                        DecompressionEnabled = other.DecompressionEnabled;
                        LegacyExtendedProtectionPolicy = other.LegacyExtendedProtectionPolicy;
                        ExtendedProtectionPolicy = other.ExtendedProtectionPolicy;
+                       cookie_manager = other.cookie_manager;
 #endif
                }
 
@@ -257,6 +261,15 @@ namespace System.ServiceModel.Channels
                                return (T) (object) new HttpBindingProperties (this);
                        if (typeof (T) == typeof (TransferMode))
                                return (T) (object) TransferMode;
+#if NET_4_0
+                       if (typeof(T) == typeof(IHttpCookieContainerManager)) {
+                               if (!AllowCookies)
+                                       return null;
+                               if (cookie_manager == null)
+                                       cookie_manager = new HttpCookieContainerManager ();
+                               return (T) (object) cookie_manager;
+                       }
+#endif
                        return base.GetProperty<T> (context);
                }
                
index e016772f0b504c25bd260c28d7a329bbf4d522d6..b14d7a2290b9cd944fcd8e8626d14b884e10b772 100644 (file)
@@ -1,3 +1,4 @@
+#if NET_2_1 || NET_4_0
 using System;
 using System.Net;
 
@@ -9,3 +10,4 @@ namespace System.ServiceModel.Channels
                CookieContainer CookieContainer { get; set; }
        }
 }
+#endif
index 0ff234382a2e71750bcc894e33a008b7f56d9ab8..89d971656ff844c0604e758fa2e3cbcaf547603a 100644 (file)
@@ -66,12 +66,14 @@ namespace System.ServiceModel.Channels
                {
                        if (bufferManager == null)
                                throw new ArgumentNullException ("bufferManager");
+                       var settings = new XmlReaderSettings ();
+                       settings.CheckCharacters = false;
                        var ret = Message.CreateMessage (
                                XmlDictionaryReader.CreateDictionaryReader (
                                        XmlReader.Create (new StreamReader (
                                                new MemoryStream (
                                                buffer.Array, buffer.Offset,
-                                               buffer.Count), encoding))),
+                                               buffer.Count), encoding), settings)),
                                // FIXME: supply max header size
                                int.MaxValue,
                                version);
@@ -84,9 +86,11 @@ namespace System.ServiceModel.Channels
                {
                        if (stream == null)
                                throw new ArgumentNullException ("stream");
+                       var settings = new XmlReaderSettings ();
+                       settings.CheckCharacters = false;
                        var ret = Message.CreateMessage (
                                XmlDictionaryReader.CreateDictionaryReader (
-                                       XmlReader.Create (new StreamReader (stream, encoding))),
+                                       XmlReader.Create (new StreamReader (stream, encoding), settings)),
                                maxSizeOfHeaders,
                                version);
                        ret.Properties.Encoder = this;
@@ -113,6 +117,7 @@ namespace System.ServiceModel.Channels
 
                        XmlWriterSettings s = new XmlWriterSettings ();
                        s.Encoding = encoding;
+                       s.CheckCharacters = false;
                        using (XmlWriter w = XmlWriter.Create (stream, s)) {
                                message.WriteMessage (
                                        XmlDictionaryWriter.CreateDictionaryWriter (w));
@@ -131,6 +136,7 @@ namespace System.ServiceModel.Channels
                                messageOffset, maxMessageSize);
                        XmlWriterSettings s = new XmlWriterSettings ();
                        s.Encoding = encoding;
+                       s.CheckCharacters = false;
                        using (XmlWriter w = XmlWriter.Create (
                                new MemoryStream (seg.Array, seg.Offset, seg.Count), s)) {
                                message.WriteMessage (
index 5b0f404f090cbf7cf75979b127eeb77d5e0f83f3..4feebc7a115d7a98ceb6ef70cefc67d83f62c679 100644 (file)
@@ -98,7 +98,15 @@ namespace System.ServiceModel
                }
 
 #if NET_2_1
-               public bool EnableHttpCookieContainer { get; set; }
+               public bool EnableHttpCookieContainer {
+                       get; set;
+               }
+#elif NET_4_5
+               [Obsolete ("Use AllowCookies.")]
+               public bool EnableHttpCookieContainer {
+                       get { return AllowCookies; }
+                       set { AllowCookies = value; }
+               }
 #endif
 
                public HostNameComparisonMode HostNameComparisonMode {
index 5e15c5a72bee4bcb66bcc2470d9fd8553e80fa83..442a33113f543c1ee0fae0fc83a71ec0e4ab94af 100644 (file)
@@ -282,7 +282,7 @@ namespace System.ServiceModel
                public T GetProperty<T> () where T : class
                {
                        if (OpenedChannelFactory != null)
-                               OpenedChannelFactory.GetProperty<T> ();
+                               return OpenedChannelFactory.GetProperty<T> ();
                        return null;
                }
 
index fafcd01f62bb16e0276220185b38407334c0ae7b..742c71e6d14d6112fca75470ed0f661dd7e21407 100644 (file)
@@ -224,6 +224,11 @@ namespace MonoTests.System.ServiceModel.Description
                }
 
                [Test]
+               [Category ("NotWorking")]
+               // System.Xml.Schema.XmlSchemaException : XmlSchema error: Named item
+               // http://schemas.datacontract.org/2004/07/System.Reflection:ArrayOfTypeInfo was already contained
+               // in the schema object table. Consider setting MONO_STRICT_MS_COMPLIANT to 'yes' to mimic
+               // MS implementation. Related schema item SourceUri: , Line 0, Position 0.
                public void ExportMessageContract ()
                {
                        WsdlExporter we = new WsdlExporter ();
index f8b48c78c8388b1483b8cce3f1effdfc43bc849e..9a588704229f82a800f9096d12a3cfcc813f9982 100644 (file)
@@ -2,6 +2,9 @@
 ../../build/common/MonoTODOAttribute.cs
 #include System.ServiceModel.dll.sources
 
+System.ServiceModel.Channels/IHttpCookieContainer.cs
+System.ServiceModel.Channels/HttpCookieContainerBindingElement.cs
+
 ../System.ServiceModel.Web/System.ServiceModel.Syndication/Atom10FeedFormatter.cs
 ../System.ServiceModel.Web/System.ServiceModel.Syndication/Atom10FeedFormatter_1.cs
 ../System.ServiceModel.Web/System.ServiceModel.Syndication/Atom10ItemFormatter.cs
index dd32b4161fe25820df1cecf5e9c51cab404770dc..a85a054c230c703cff3988a97882a6a613e0e87b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{28D81FF5-DF27-4A4A-BBFB-D922FD2CCCF5}</ProjectGuid>\r
+    <ProjectGuid>{523116C5-1B31-443C-B431-F716517CD061}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceProcess-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_2_0.csproj">\r
-      <Project>{33DED2E2-4FCD-4070-BE3A-026D4F80D3C8}</Project>\r
+      <Project>{5CE6E3F2-E63D-4C2B-9CCE-6446021A1AF5}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fbaccc8f087068b2fbd57024ba4ae045b8e65c40..f6c95d21934705f013357edc0c926e8aa55a3165 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5BA1F558-FD7C-4F85-9BB2-8568EDBC0353}</ProjectGuid>\r
+    <ProjectGuid>{700F95F4-78BE-41D5-9F7C-259592FBB267}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceProcess-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_0.csproj">\r
-      <Project>{878F802D-3249-41E8-8322-A32C406383C6}</Project>\r
+      <Project>{3C248397-71FD-4A63-B4A5-9F2A28C4D983}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 22222526ccce9a682dc750e2b094ffe4b8cfb8ba..71e450eb3e82a99b89ca5975198b16238ed4fdcb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4F0B9DF5-C9AC-43CE-9229-BAE2B3C4AE52}</ProjectGuid>\r
+    <ProjectGuid>{99FAEDEC-48C5-4B12-8707-13A8CF11CFEF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceProcess-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_5.csproj">\r
-      <Project>{348A36EC-8291-460B-9CC2-8CA8AD1759A2}</Project>\r
+      <Project>{D413E89D-CE81-4766-BBC1-AC17A3FD5C95}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 989a3308c7709918aa76d980ae07ac73ff42054c..3a894d8d132cdb5bf85ea1e55918e2321a46615f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{60F97E73-B32C-4602-9BBA-33F09F3EB6F1}</ProjectGuid>\r
+    <ProjectGuid>{1785BCAA-5ECE-4080-A741-64A0A021AEE0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceProcess-tests-net_2_0</OutputPath>\r
@@ -44,6 +44,7 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
+    <Compile Include="Test\System.ServiceProcess\ServiceBaseTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerPermissionAttributeTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerPermissionTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerTest.cs" />\r  </ItemGroup>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceProcess\System.ServiceProcess-net_2_0.csproj">\r
-      <Project>{28D81FF5-DF27-4A4A-BBFB-D922FD2CCCF5}</Project>\r
+      <Project>{523116C5-1B31-443C-B431-F716517CD061}</Project>\r
       <Name>System.ServiceProcess\System.ServiceProcess-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_2_0.csproj">\r
-      <Project>{33DED2E2-4FCD-4070-BE3A-026D4F80D3C8}</Project>\r
+      <Project>{5CE6E3F2-E63D-4C2B-9CCE-6446021A1AF5}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cfe1158e3ec359fefc8505b85423edbe14b89d9a..c191887f765b4968908815bcaffa9efd7d177d38 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{592D71D4-B8BF-44C0-80B1-F191EC2D86F2}</ProjectGuid>\r
+    <ProjectGuid>{23D08061-44FC-4D15-9FB2-FDBC43B84D37}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceProcess-tests-net_4_0</OutputPath>\r
@@ -44,6 +44,7 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
+    <Compile Include="Test\System.ServiceProcess\ServiceBaseTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerPermissionAttributeTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerPermissionTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerTest.cs" />\r  </ItemGroup>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceProcess\System.ServiceProcess-net_4_0.csproj">\r
-      <Project>{5BA1F558-FD7C-4F85-9BB2-8568EDBC0353}</Project>\r
+      <Project>{700F95F4-78BE-41D5-9F7C-259592FBB267}</Project>\r
       <Name>System.ServiceProcess\System.ServiceProcess-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_0.csproj">\r
-      <Project>{878F802D-3249-41E8-8322-A32C406383C6}</Project>\r
+      <Project>{3C248397-71FD-4A63-B4A5-9F2A28C4D983}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6ad9ed70fd626681a0b57b5281f8cb7157d264aa..8d74f16e8a857c2c71d99f3931d87839ac0100dd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F8218843-5463-4D1D-BD93-4E1A507FFAF9}</ProjectGuid>\r
+    <ProjectGuid>{D86B8C00-9D5A-46D0-8BF0-49E4D7606EAD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceProcess-tests-net_4_5</OutputPath>\r
@@ -44,6 +44,7 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
+    <Compile Include="Test\System.ServiceProcess\ServiceBaseTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerPermissionAttributeTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerPermissionTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerTest.cs" />\r  </ItemGroup>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceProcess\System.ServiceProcess-net_4_5.csproj">\r
-      <Project>{4F0B9DF5-C9AC-43CE-9229-BAE2B3C4AE52}</Project>\r
+      <Project>{99FAEDEC-48C5-4B12-8707-13A8CF11CFEF}</Project>\r
       <Name>System.ServiceProcess\System.ServiceProcess-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_5.csproj">\r
-      <Project>{348A36EC-8291-460B-9CC2-8CA8AD1759A2}</Project>\r
+      <Project>{D413E89D-CE81-4766-BBC1-AC17A3FD5C95}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 816dbc993b0bc7f84b249236b57a8ba54d603a19..55caa203c1a450586c50a0fdf3878dc9df1eaa5b 100644 (file)
@@ -154,12 +154,8 @@ namespace System.ServiceProcess
                }
 
 #if NET_2_0
-               [MonoTODO]
                [ComVisible (false)]
-               public int ExitCode {
-                       get { throw new NotImplementedException (); }
-                       set { throw new NotImplementedException (); }
-               }
+               public int ExitCode { get; set; }
 
                [MonoTODO]
                [EditorBrowsable (EditorBrowsableState.Advanced)]
@@ -235,9 +231,9 @@ namespace System.ServiceProcess
                        throw new NotImplementedException ();
                }
 
-               [MonoTODO]
                public void Stop ()
                {
+                       OnStop ();
                }
 #endif
 
index a4666793dfd69d79123ecfdb358cd51670ae6a5f..9cecbce11fde51d42b54ec7fd1c249d665849d13 100644 (file)
@@ -33,9 +33,7 @@
 using System;
 using System.ComponentModel;
 using System.Globalization;
-#if NET_2_0
 using System.Runtime.InteropServices;
-#endif
 using System.ServiceProcess.Design;
 using System.Threading;
 
@@ -43,9 +41,7 @@ namespace System.ServiceProcess
 {
        [Designer("System.ServiceProcess.Design.ServiceControllerDesigner, " + Consts.AssemblySystem_Design)]
        [MonoTODO ("No unix implementation")]
-#if NET_2_0
        [ServiceProcessDescription ("Provides the ability to connect to, query, and manipulate running or stopped Windows services.")]
-#endif
        public class ServiceController : Component
        {
                private string _name;
@@ -84,9 +80,7 @@ namespace System.ServiceProcess
                [ServiceProcessDescription ("Whether this service recognizes the Pause and Continue commands.")]
                public bool CanPauseAndContinue {
                        get {
-#if NET_2_0
                                ValidateServiceName (ServiceName);
-#endif
                                return _impl.CanPauseAndContinue;
                        }
                }
@@ -96,9 +90,7 @@ namespace System.ServiceProcess
                public bool CanShutdown {
                        get
                        {
-#if NET_2_0
                                ValidateServiceName (ServiceName);
-#endif
                                return _impl.CanShutdown;
                        }
                }
@@ -108,9 +100,7 @@ namespace System.ServiceProcess
                public bool CanStop {
                        get
                        {
-#if NET_2_0
                                ValidateServiceName (ServiceName);
-#endif
                                return _impl.CanStop;
                        }
                }
@@ -120,9 +110,7 @@ namespace System.ServiceProcess
                public ServiceController [] DependentServices {
                        get
                        {
-#if NET_2_0
                                ValidateServiceName (ServiceName);
-#endif
                                if (_dependentServices == null)
                                        _dependentServices = _impl.DependentServices;
                                return _dependentServices;
@@ -207,9 +195,7 @@ namespace System.ServiceProcess
                                if (_serviceName == value)
                                        return;
 
-#if NET_2_0
                                ValidateServiceName (value);
-#endif
 
                                _serviceName = value;
 
@@ -233,16 +219,13 @@ namespace System.ServiceProcess
                public ServiceController [] ServicesDependedOn {
                        get
                        {
-#if NET_2_0
                                ValidateServiceName (ServiceName);
-#endif
                                if (_servicesDependedOn == null)
                                        _servicesDependedOn = _impl.ServicesDependedOn;
                                return _servicesDependedOn;
                        }
                }
 
-#if NET_2_0
                [MonoTODO]
                [Browsable (false)]
                [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
@@ -252,16 +235,13 @@ namespace System.ServiceProcess
                                throw new NotImplementedException ();
                        }
                }
-#endif
 
                [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
                [ServiceProcessDescription ("The type of this service.")]
                public ServiceType ServiceType {
                        get
                        {
-#if NET_2_0
                                ValidateServiceName (ServiceName);
-#endif
                                return _impl.ServiceType;
                        }
                }
@@ -271,9 +251,7 @@ namespace System.ServiceProcess
                public ServiceControllerStatus Status {
                        get
                        {
-#if NET_2_0
                                ValidateServiceName (ServiceName);
-#endif
                                return _impl.Status;
                        }
                }
@@ -285,9 +263,7 @@ namespace System.ServiceProcess
 
                public void Continue ()
                {
-#if NET_2_0
                        ValidateServiceName (ServiceName);
-#endif
                        _impl.Continue ();
                }
 
@@ -299,9 +275,7 @@ namespace System.ServiceProcess
 
                public void ExecuteCommand (int command)
                {
-#if NET_2_0
                        ValidateServiceName (ServiceName);
-#endif
                        _impl.ExecuteCommand (command);
                }
 
@@ -337,9 +311,7 @@ namespace System.ServiceProcess
 
                public void Pause ()
                {
-#if NET_2_0
                        ValidateServiceName (ServiceName);
-#endif
                        _impl.Pause ();
                }
 
@@ -362,17 +334,13 @@ namespace System.ServiceProcess
 
                public void Start (string [] args)
                {
-#if NET_2_0
                        ValidateServiceName (ServiceName);
-#endif
                        _impl.Start (args);
                }
 
                public void Stop ()
                {
-#if NET_2_0
                        ValidateServiceName (ServiceName);
-#endif
                        _impl.Stop ();
                }
 
@@ -383,9 +351,7 @@ namespace System.ServiceProcess
 
                public void WaitForStatus (ServiceControllerStatus desiredStatus, TimeSpan timeout)
                {
-#if NET_2_0
                        ValidateServiceName (ServiceName);
-#endif
 
                        DateTime start = DateTime.Now;
                        while (Status != desiredStatus) {
@@ -425,7 +391,6 @@ namespace System.ServiceProcess
                        }
                }
 
-#if NET_2_0
                private static void ValidateServiceName (string serviceName)
                {
                        if (serviceName.Length == 0 || serviceName.Length > 80)
@@ -433,7 +398,6 @@ namespace System.ServiceProcess
                                        "Service name {0} contains invalid characters, is empty"
                                        + " or is too long (max length = 80).", serviceName));
                }
-#endif
 
                private static void ValidateMachineName (string machineName)
                {
index 51c26fff79a94f4622f524143fe0fe06c705ca9e..6a85bfc9e8d22ac0068c5de552aa2012bbecaf92 100644 (file)
@@ -1,3 +1,4 @@
+System.ServiceProcess/ServiceBaseTest.cs
 System.ServiceProcess/ServiceControllerTest.cs
 System.ServiceProcess/ServiceControllerPermissionAttributeTest.cs
 System.ServiceProcess/ServiceControllerPermissionTest.cs
diff --git a/mcs/class/System.ServiceProcess/Test/System.ServiceProcess/ServiceBaseTest.cs b/mcs/class/System.ServiceProcess/Test/System.ServiceProcess/ServiceBaseTest.cs
new file mode 100644 (file)
index 0000000..7a3c014
--- /dev/null
@@ -0,0 +1,118 @@
+//
+// ServiceBaseTest.cs -
+//     NUnit Test Cases for ServiceBase
+//
+// Author:
+//     Andres G. Aragoneses  (andres@7digital.com)
+//
+// Copyright (C) 2013 7digital Media, Ltd (http://www.7digital.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.ServiceProcess;
+using NUnit.Framework;
+
+namespace Test
+{
+       [TestFixture]
+       public class ServiceBaseTest
+       {
+               const int SOME_ERROR_CODE = 1;
+
+               public partial class ServiceFoo : ServiceBase
+               {
+                       public ServiceFoo ()
+                       {
+                               InitializeComponent ();
+                       }
+
+                       protected override void OnStart (string[] args)
+                       {
+                       }
+
+                       protected override void OnStop ()
+                       {
+                               ExitCode = SOME_ERROR_CODE;
+                       }
+
+                       public void StartHook ()
+                       {
+                               OnStart (new string [] { });
+                       }
+               }
+
+               [Test]
+               public void StopCallsOnStop ()
+               {
+                       var s = new ServiceFoo ();
+                       Assert.AreEqual (0, s.ExitCode);
+                       s.Stop ();
+                       Assert.AreEqual (SOME_ERROR_CODE, s.ExitCode);
+               }
+
+               [Test]
+               public void ExitCodeIsNotResetByBaseClassServiceBaseBetweenRuns ()
+               {
+                       var s = new ServiceFoo ();
+                       Assert.AreEqual (0, s.ExitCode);
+                       s.Stop ();
+                       Assert.AreEqual (SOME_ERROR_CODE, s.ExitCode);
+                       s.StartHook ();
+                       Assert.AreEqual (SOME_ERROR_CODE, s.ExitCode);
+               }
+
+               partial class ServiceFoo
+               {
+                       /// <summary>
+                       /// Required designer variable.
+                       /// </summary>
+                       private System.ComponentModel.IContainer components = null;
+
+                       /// <summary>
+                       /// Clean up any resources being used.
+                       /// </summary>
+                       /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+                       protected override void Dispose(bool disposing)
+                       {
+                               if (disposing && (components != null))
+                               {
+                                       components.Dispose();
+                               }
+                               base.Dispose(disposing);
+                       }
+
+                       #region Component Designer generated code
+
+                       /// <summary>
+                       /// Required method for Designer support - do not modify
+                       /// the contents of this method with the code editor.
+                       /// </summary>
+                       private void InitializeComponent()
+                       {
+                               components = new System.ComponentModel.Container();
+                               this.ServiceName = "ServiceFoo";
+                       }
+
+                       #endregion
+               }
+       }
+}
+
index 0c13b7536bd971fcc7ceb57550c1af97f392eb4f..3647a414f01838a98c40ad5d95b52d900ef61355 100644 (file)
@@ -53,7 +53,6 @@ namespace MonoTests.System.ServiceProcess
                        try {
                                bool value = sc.CanPauseAndContinue;
                                Assert.Fail ("#A1: " + value.ToString ());
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -64,29 +63,10 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#A6");
                                Assert.IsNull (ex.InnerException, "#A7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
-                               Assert.IsNotNull (ex.Message, "#A3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#A4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#A5");
-                               Assert.IsNotNull (ex.InnerException, "#A6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#A7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#A8");
-                               Assert.IsNotNull (win32Error.Message, "#A9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#A10");
-                               Assert.IsNull (win32Error.InnerException, "#A11");
-                       }
-#endif
 
                        try {
                                bool value = sc.CanShutdown;
                                Assert.Fail ("#B1: " + value.ToString ());
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -97,29 +77,10 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#B6");
                                Assert.IsNull (ex.InnerException, "#B7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
-                               Assert.IsNotNull (ex.Message, "#B3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#B4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#B5");
-                               Assert.IsNotNull (ex.InnerException, "#B6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#B7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#B8");
-                               Assert.IsNotNull (win32Error.Message, "#B9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#B10");
-                               Assert.IsNull (win32Error.InnerException, "#B11");
-                       }
-#endif
 
                        try {
                                bool value = sc.CanStop;
                                Assert.Fail ("#C1: " + value.ToString ());
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -130,24 +91,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#C6");
                                Assert.IsNull (ex.InnerException, "#C7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
-                               Assert.IsNotNull (ex.Message, "#C3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#C4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#C5");
-                               Assert.IsNotNull (ex.InnerException, "#C6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#C7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#C8");
-                               Assert.IsNotNull (win32Error.Message, "#C9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#C10");
-                               Assert.IsNull (win32Error.InnerException, "#C11");
-                       }
-#endif
 
                        // closing the ServiceController does not result in exception
                        sc.Close ();
@@ -155,7 +98,6 @@ namespace MonoTests.System.ServiceProcess
                        try {
                                sc.Continue ();
                                Assert.Fail ("#D1");
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -166,28 +108,9 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#D6");
                                Assert.IsNull (ex.InnerException, "#D7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
-                               Assert.IsNotNull (ex.Message, "#D3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#D4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#D5");
-                               Assert.IsNotNull (ex.InnerException, "#D6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#D7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#D8");
-                               Assert.IsNotNull (win32Error.Message, "#D9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#D10");
-                               Assert.IsNull (win32Error.InnerException, "#D11");
-                       }
-#endif
 
                        try {
                                Assert.Fail ("#E1: " + sc.DependentServices.Length);
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -198,24 +121,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#E6");
                                Assert.IsNull (ex.InnerException, "#E7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E2");
-                               Assert.IsNotNull (ex.Message, "#E3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#E4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#E5");
-                               Assert.IsNotNull (ex.InnerException, "#E6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#E7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#E8");
-                               Assert.IsNotNull (win32Error.Message, "#E9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#E10");
-                               Assert.IsNull (win32Error.InnerException, "#E11");
-                       }
-#endif
 
                        Assert.IsNotNull (sc.DisplayName, "#F1");
                        Assert.AreEqual (string.Empty, sc.DisplayName, "#F2");
@@ -223,7 +128,6 @@ namespace MonoTests.System.ServiceProcess
                        try {
                                sc.ExecuteCommand (0);
                                Assert.Fail ("#G1");
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -234,24 +138,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#G6");
                                Assert.IsNull (ex.InnerException, "#G7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#G2");
-                               Assert.IsNotNull (ex.Message, "#G3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#G4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#G5");
-                               Assert.IsNotNull (ex.InnerException, "#G6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#G7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#G8");
-                               Assert.IsNotNull (win32Error.Message, "#G9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#G10");
-                               Assert.IsNull (win32Error.InnerException, "#G11");
-                       }
-#endif
 
                        Assert.IsNotNull (sc.MachineName, "#H1");
                        Assert.AreEqual (".", sc.MachineName, "#H2");
@@ -260,7 +146,6 @@ namespace MonoTests.System.ServiceProcess
                        try {
                                sc.Pause ();
                                Assert.Fail ("#I1");
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -271,24 +156,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#I6");
                                Assert.IsNull (ex.InnerException, "#I7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#I2");
-                               Assert.IsNotNull (ex.Message, "#I3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#I4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#I5");
-                               Assert.IsNotNull (ex.InnerException, "#I6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#I7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#I8");
-                               Assert.IsNotNull (win32Error.Message, "#I9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#I10");
-                               Assert.IsNull (win32Error.InnerException, "#I11");
-                       }
-#endif
                }
 
                [Test]
@@ -695,16 +562,10 @@ namespace MonoTests.System.ServiceProcess
                [Test]
                public void CanPauseAndContinue_ServiceName_Empty ()
                {
-#if ONLY_1_1
-                       if (RunningOnUnix)
-                               return;
-#endif
-
                        ServiceController sc = new ServiceController ();
                        try {
                                bool canPauseAndContinue = sc.CanPauseAndContinue;
                                Assert.Fail ("#1: " + canPauseAndContinue);
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -715,24 +576,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#6");
                                Assert.IsNull (ex.InnerException, "#7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
-                               Assert.IsNotNull (ex.Message, "#3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
-                               Assert.IsNotNull (ex.InnerException, "#6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
-                               Assert.IsNotNull (win32Error.Message, "#9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
-                               Assert.IsNull (win32Error.InnerException, "#11");
-                       }
-#endif
                }
 
                [Test]
@@ -934,16 +777,10 @@ namespace MonoTests.System.ServiceProcess
                [Test]
                public void CanShutdown_ServiceName_Empty ()
                {
-#if ONLY_1_1
-                       if (RunningOnUnix)
-                               return;
-#endif
-
                        ServiceController sc = new ServiceController ();
                        try {
                                bool canShutdown = sc.CanShutdown;
                                Assert.Fail ("#1: " + canShutdown);
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -954,24 +791,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#6");
                                Assert.IsNull (ex.InnerException, "#7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
-                               Assert.IsNotNull (ex.Message, "#3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
-                               Assert.IsNotNull (ex.InnerException, "#6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
-                               Assert.IsNotNull (win32Error.Message, "#9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
-                               Assert.IsNull (win32Error.InnerException, "#11");
-                       }
-#endif
                }
 
                [Test]
@@ -1173,16 +992,10 @@ namespace MonoTests.System.ServiceProcess
                [Test]
                public void CanStop_ServiceName_Empty ()
                {
-#if ONLY_1_1
-                       if (RunningOnUnix)
-                               return;
-#endif
-
                        ServiceController sc = new ServiceController ();
                        try {
                                bool canStop = sc.CanStop;
                                Assert.Fail ("#1: " + canStop);
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -1193,24 +1006,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#6");
                                Assert.IsNull (ex.InnerException, "#7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
-                               Assert.IsNotNull (ex.Message, "#3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
-                               Assert.IsNotNull (ex.InnerException, "#6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
-                               Assert.IsNotNull (win32Error.Message, "#9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
-                               Assert.IsNull (win32Error.InnerException, "#11");
-                       }
-#endif
                }
 
                [Test]
@@ -1450,16 +1245,10 @@ namespace MonoTests.System.ServiceProcess
                [Test]
                public void Continue_ServiceName_Empty ()
                {
-#if ONLY_1_1
-                       if (RunningOnUnix)
-                               return;
-#endif
-
                        ServiceController sc = new ServiceController ();
                        try {
                                sc.Continue ();
                                Assert.Fail ("#1");
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -1470,24 +1259,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#6");
                                Assert.IsNull (ex.InnerException, "#7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
-                               Assert.IsNotNull (ex.Message, "#3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
-                               Assert.IsNotNull (ex.InnerException, "#6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
-                               Assert.IsNotNull (win32Error.Message, "#9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
-                               Assert.IsNull (win32Error.InnerException, "#11");
-                       }
-#endif
                }
 
                [Test]
@@ -1666,16 +1437,10 @@ namespace MonoTests.System.ServiceProcess
                [Test]
                public void DependentServices_ServiceName_Empty ()
                {
-#if ONLY_1_1
-                       if (RunningOnUnix)
-                               return;
-#endif
-
                        ServiceController sc = new ServiceController ();
                        try {
                                ServiceController [] dependenServices = sc.DependentServices;
                                Assert.Fail ("#1: " + dependenServices.Length);
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -1686,24 +1451,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#6");
                                Assert.IsNull (ex.InnerException, "#7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
-                               Assert.IsNotNull (ex.Message, "#3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
-                               Assert.IsNotNull (ex.InnerException, "#6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
-                               Assert.IsNotNull (win32Error.Message, "#9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
-                               Assert.IsNull (win32Error.InnerException, "#11");
-                       }
-#endif
                }
 
                [Test]
@@ -2912,16 +2659,10 @@ namespace MonoTests.System.ServiceProcess
                [Test]
                public void ExecuteCommand_ServiceName_Empty ()
                {
-#if ONLY_1_1
-                       if (RunningOnUnix)
-                               return;
-#endif
-
                        ServiceController sc = new ServiceController ();
                        try {
                                sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_INTERROGATE);
                                Assert.Fail ("#1");
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -2932,24 +2673,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#6");
                                Assert.IsNull (ex.InnerException, "#7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
-                               Assert.IsNotNull (ex.Message, "#3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
-                               Assert.IsNotNull (ex.InnerException, "#6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
-                               Assert.IsNotNull (win32Error.Message, "#9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
-                               Assert.IsNull (win32Error.InnerException, "#11");
-                       }
-#endif
                }
 
                [Test]
@@ -3020,9 +2743,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
                                Assert.IsNotNull (ex.Message, "#3");
                                Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
-#if ONLY_1_1
-                               Assert.IsNull (ex.InnerException, "#5");
-#else
                                Assert.IsNotNull (ex.InnerException, "#5");
 
                                // The RPC server is unavailable
@@ -3032,7 +2752,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNotNull (win32Error.Message, "#8");
                                Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
                                Assert.IsNull (win32Error.InnerException, "#10");
-#endif
                        }
                }
 
@@ -3136,9 +2855,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
                                Assert.IsNotNull (ex.Message, "#3");
                                Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
-#if ONLY_1_1
-                               Assert.IsNull (ex.InnerException, "#5");
-#else
                                Assert.IsNotNull (ex.InnerException, "#5");
 
                                // The RPC server is unavailable
@@ -3148,7 +2864,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNotNull (win32Error.Message, "#8");
                                Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
                                Assert.IsNull (win32Error.InnerException, "#10");
-#endif
                        }
                }
 
@@ -3508,16 +3223,10 @@ namespace MonoTests.System.ServiceProcess
                [Test]
                public void Pause_ServiceName_Empty ()
                {
-#if ONLY_1_1
-                       if (RunningOnUnix)
-                               return;
-#endif
-
                        ServiceController sc = new ServiceController ();
                        try {
                                sc.Pause ();
                                Assert.Fail ("#1");
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -3528,24 +3237,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#6");
                                Assert.IsNull (ex.InnerException, "#7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
-                               Assert.IsNotNull (ex.Message, "#3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
-                               Assert.IsNotNull (ex.InnerException, "#6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
-                               Assert.IsNotNull (win32Error.Message, "#9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
-                               Assert.IsNull (win32Error.InnerException, "#11");
-                       }
-#endif
                }
 
                [Test]
@@ -3915,12 +3606,6 @@ namespace MonoTests.System.ServiceProcess
                        Assert.AreEqual ("Workstation", sc.DisplayName, "#B1");
                        Assert.AreEqual ("lanmanworkstation", sc.ServiceName, "#B2");
 
-#if ONLY_1_1
-                       sc.ServiceName = string.Empty;
-
-                       Assert.AreEqual (string.Empty, sc.DisplayName, "#C1");
-                       Assert.AreEqual (string.Empty, sc.ServiceName, "#C2");
-#else
                        try {
                                sc.ServiceName = string.Empty;
                                Assert.Fail ("#C1");
@@ -3934,7 +3619,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#A6");
                                Assert.IsNull (ex.InnerException, "#A7");
                        }
-#endif
                }
 
                [Test]
@@ -4174,16 +3858,10 @@ namespace MonoTests.System.ServiceProcess
                [Test]
                public void ServicesDependedOn_ServiceName_Empty ()
                {
-#if ONLY_1_1
-                       if (RunningOnUnix)
-                               return;
-#endif
-
                        ServiceController sc = new ServiceController ();
                        try {
                                ServiceController [] servicesDependedOn = sc.ServicesDependedOn;
                                Assert.Fail ("#1: " + servicesDependedOn.Length);
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -4194,24 +3872,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#6");
                                Assert.IsNull (ex.InnerException, "#7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
-                               Assert.IsNotNull (ex.Message, "#3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
-                               Assert.IsNotNull (ex.InnerException, "#6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
-                               Assert.IsNotNull (win32Error.Message, "#9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
-                               Assert.IsNull (win32Error.InnerException, "#11");
-                       }
-#endif
                }
 
                [Test]
@@ -4610,16 +4270,10 @@ namespace MonoTests.System.ServiceProcess
                [Test]
                public void Stop_ServiceName_Empty ()
                {
-#if ONLY_1_1
-                       if (RunningOnUnix)
-                               return;
-#endif
-
                        ServiceController sc = new ServiceController ();
                        try {
                                sc.Stop ();
                                Assert.Fail ("#1");
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -4630,24 +4284,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#6");
                                Assert.IsNull (ex.InnerException, "#7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
-                               Assert.IsNotNull (ex.Message, "#3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
-                               Assert.IsNotNull (ex.InnerException, "#6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
-                               Assert.IsNotNull (win32Error.Message, "#9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
-                               Assert.IsNull (win32Error.InnerException, "#11");
-                       }
-#endif
                }
 
                [Test]
@@ -4748,10 +4384,8 @@ namespace MonoTests.System.ServiceProcess
                        } catch (TimeoutException ex) {
                                // Time out has expired and the operation has not been completed
                                Assert.AreEqual (typeof (TimeoutException), ex.GetType (), "#B2");
-#if NET_2_0
                                Assert.IsNotNull (ex.Data, "#B3");
                                Assert.AreEqual (0, ex.Data.Count, "#B4");
-#endif
                                Assert.IsNotNull (ex.Message, "#B5");
                                Assert.IsNull (ex.InnerException, "#B6");
                        }
@@ -4810,10 +4444,8 @@ namespace MonoTests.System.ServiceProcess
                        } catch (TimeoutException ex) {
                                // Time out has expired and the operation has not been completed
                                Assert.AreEqual (typeof (TimeoutException), ex.GetType (), "#B2");
-#if NET_2_0
                                Assert.IsNotNull (ex.Data, "#B3");
                                Assert.AreEqual (0, ex.Data.Count, "#B4");
-#endif
                                Assert.IsNotNull (ex.Message, "#B5");
                                Assert.IsNull (ex.InnerException, "#B6");
                        }
@@ -4825,17 +4457,11 @@ namespace MonoTests.System.ServiceProcess
                [Test]
                public void WaitForStatus_ServiceName_Empty ()
                {
-#if ONLY_1_1
-                       if (RunningOnUnix)
-                               return;
-#endif
-
                        ServiceController sc = new ServiceController ();
                        try {
                                sc.WaitForStatus (ServiceControllerStatus.Stopped,
                                        new TimeSpan (0, 0, 1));
                                Assert.Fail ("#1");
-#if NET_2_0
                        } catch (ArgumentException ex) {
                                // Service name  contains invalid characters, is empty or is
                                // too long (max length = 80)
@@ -4846,24 +4472,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#6");
                                Assert.IsNull (ex.InnerException, "#7");
                        }
-#else
-                       } catch (InvalidOperationException ex) {
-                               // Cannot open  service on computer '.'
-                               Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
-                               Assert.IsNotNull (ex.Message, "#3");
-                               Assert.IsTrue (ex.Message.IndexOf ("  ") != -1, "#4");
-                               Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
-                               Assert.IsNotNull (ex.InnerException, "#6");
-
-                               // The filename, directory name, or volume label is incorrect
-                               Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
-                               Win32Exception win32Error = (Win32Exception) ex.InnerException;
-                               //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
-                               Assert.IsNotNull (win32Error.Message, "#9");
-                               Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
-                               Assert.IsNull (win32Error.InnerException, "#11");
-                       }
-#endif
                }
 
                [Test]
@@ -4885,10 +4493,8 @@ namespace MonoTests.System.ServiceProcess
                        } catch (TimeoutException ex) {
                                // Time out has expired and the operation has not been completed
                                Assert.AreEqual (typeof (TimeoutException), ex.GetType (), "#B2");
-#if NET_2_0
                                Assert.IsNotNull (ex.Data, "#B3");
                                Assert.AreEqual (0, ex.Data.Count, "#B4");
-#endif
                                Assert.IsNotNull (ex.Message, "#B5");
                                Assert.IsNull (ex.InnerException, "#B6");
                        }
index b77c15936377432f348c9199e02aa72a7851f269..22a97f3d47e106de8769680e81bca145d754686f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D7EDCA7E-F61D-4D8A-8540-B0DDAED8A927}</ProjectGuid>\r
+    <ProjectGuid>{82B719BA-7803-4832-B837-42928A0E1CEB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Threading.Tasks.Dataflow-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3443c94eeba7dec5142bfda22fb74d626177aaa2..bf953e2b1a6d41f984e2264e6b2529d56665f983 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F87B162C-A83C-45FD-8FED-FFFB1E4C002C}</ProjectGuid>\r
+    <ProjectGuid>{8A83591A-6906-48BF-BB8E-1515D264B2D7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Threading.Tasks.Dataflow-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Threading.Tasks.Dataflow\System.Threading.Tasks.Dataflow-net_4_5.csproj">\r
-      <Project>{D7EDCA7E-F61D-4D8A-8540-B0DDAED8A927}</Project>\r
+      <Project>{82B719BA-7803-4832-B837-42928A0E1CEB}</Project>\r
       <Name>System.Threading.Tasks.Dataflow\System.Threading.Tasks.Dataflow-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 034604af33bed82559ecfb90958423b47c9120e1..6955048fe34abb22773962d2cbb42ab27907ac86 100644 (file)
@@ -230,10 +230,17 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        scheduler.ExecuteAll ();
                        Assert.IsTrue (target.HasPostponed);
 
-                       ((IDataflowBlock)source).Fault (new Exception ());
+                       var exception = new Exception ();
+                       ((IDataflowBlock)source).Fault (exception);
 
                        scheduler.ExecuteAll ();
-                       Thread.Sleep (100);
+
+                       try {
+                               source.Completion.Wait (1000);
+                               Assert.Fail ("Task must be faulted");
+                       } catch (AggregateException ex) {
+                               Assert.AreEqual (exception, ex.InnerException, "#9");
+                       }
 
                        Assert.IsTrue (source.Completion.IsFaulted);
                        int value;
@@ -254,27 +261,33 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        var target = new TestTargetBlock<int> { Postpone = true };
                        Assert.IsNotNull (source.LinkTo (target));
 
-                       Assert.IsTrue (source.Post (1));
-                       Assert.IsTrue (source.Post (2));
-                       Assert.IsTrue (source.Post (3));
-                       Thread.Sleep (500);
-                       Assert.IsTrue (target.HasPostponed);
+                       Assert.IsTrue (source.Post (1), "#1");
+                       Assert.IsTrue (source.Post (2), "#2");
+                       Assert.IsTrue (source.Post (3), "#3");
+                       target.PostponedEvent.Wait (1000);
+                       Assert.IsTrue (target.HasPostponed, "#4");
 
-                       ((IDataflowBlock)source).Fault (new Exception ());
+                       var exception = new Exception ();
+                       ((IDataflowBlock)source).Fault (exception);
 
-                       Thread.Sleep (100);
+                       source.Completion.Wait (1000);
 
-                       Assert.IsFalse (source.Completion.IsFaulted);
+                       Assert.IsFalse (source.Completion.IsFaulted, "#5");
                        int value;
-                       Assert.IsTrue (target.RetryPostponed (out value));
-                       Assert.AreEqual (1, value);
+                       Assert.IsTrue (target.RetryPostponed (out value), "#6");
+                       Assert.AreEqual (1, value, "#7");
 
                        evt.Set ();
 
-                       Thread.Sleep (100);
+                       try {
+                               source.Completion.Wait (1000);
+                               Assert.Fail ("Task must be faulted");
+                       } catch (AggregateException ex) {
+                               Assert.AreEqual (exception, ex.InnerException, "#9");
+                       }
 
-                       Assert.IsTrue (source.Completion.IsFaulted);
-                       Assert.IsFalse (target.RetryPostponed (out value));
+                       Assert.IsTrue (source.Completion.IsFaulted, "#10");
+                       Assert.IsFalse (target.RetryPostponed (out value), "#11");
                }
 
                [Test]
@@ -382,6 +395,8 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                public T DirectlyAccepted { get; private set; }
 
+               public ManualResetEventSlim PostponedEvent = new ManualResetEventSlim ();
+
                public DataflowMessageStatus OfferMessage (
                        DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source,
                        bool consumeToAccept)
@@ -391,6 +406,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        if (Postpone) {
                                postponed = Tuple.Create (source, messageHeader);
+                               PostponedEvent.Set ();
                                return DataflowMessageStatus.Postponed;
                        }
 
index 1a0adfb45ab0f5e6ade87a496643d170239ef591..9d6ece4f8fcf12fa3d986eb5233e029068aab79c 100644 (file)
@@ -85,11 +85,11 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        var action = new ActionBlock<int> (i => received = true);
                        transformMany.LinkTo (action);
 
-                       Assert.IsTrue (transformMany.Post (1));
+                       Assert.IsTrue (transformMany.Post (1), "#1");
 
                        transformMany.Complete ();
-                       Assert.IsTrue (transformMany.Completion.Wait (100));
-                       Assert.IsFalse (received);
+                       Assert.IsTrue (transformMany.Completion.Wait (100), "#2");
+                       Assert.IsFalse (received, "#3");
                }
 
                [Test]
index 1d59b64bd611ac5982589b05176bef0d17380084..320df00fb9b56e06a8e6b6554b593d4c12af82e3 100644 (file)
@@ -55,13 +55,13 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        block.LinkTo (action1);
                        block.LinkTo (action2);
 
-                       Assert.IsTrue (block.Post (42));
-                       Assert.IsFalse (block.Post (43));
+                       Assert.IsTrue (block.Post (42), "#1");
+                       Assert.IsFalse (block.Post (43), "#2");
 
-                       Assert.IsTrue (evt.Wait (100));
+                       Assert.IsTrue (evt.Wait (100), "#3");
 
-                       Assert.IsTrue (act1);
-                       Assert.IsTrue (act2);
+                       Assert.IsTrue (act1, "#4");
+                       Assert.IsTrue (act2, "#5");
                }
 
                [Test]
index f5a5ce34dd3aa0992e0dbcd21cdd8c862279884e..2c65e830bb8fd24f7e25c3a65543aad571b9aad2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</ProjectGuid>\r
+    <ProjectGuid>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Transactions-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f763b185c79bdc16b7e38629a9308a6531a94503..27d7170910a27b0bd9346b84abe8d167f3ab672d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{46371E88-F274-4BE7-8587-444F4E6F7247}</ProjectGuid>\r
+    <ProjectGuid>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Transactions-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ff899736da4c7a517b461ffaf77f52a13271e784..8f198bc8d08a10361c25d2007ba8f88801ee532a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</ProjectGuid>\r
+    <ProjectGuid>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Transactions-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cf714cdae21a31c361937f5278eaf7df1942780d..4f5c4c113fa6b09080102c472cccf99431b07e98 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5AB33E94-8744-4B43-B981-C346A8157E26}</ProjectGuid>\r
+    <ProjectGuid>{49F6C0AF-5470-43A2-BDE3-5E4D3065C4E9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1595</NoWarn>\r
     <OutputPath>bin\Debug\System.Transactions-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 617c8afb8cff0613c67b64224cd3ed939a4542ae..1f3d341e9d3fed2681764bb32c1b3e214bf5de72 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{93E62493-63D7-4FF7-A69D-E52DE804F35A}</ProjectGuid>\r
+    <ProjectGuid>{70637A21-BC09-43D1-ADC1-03D8B21BEE51}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1595</NoWarn>\r
     <OutputPath>bin\Debug\System.Transactions-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ec094c2d2feb3a1e2c51d3b14a17a13675a98324..2de71b81fe8dad9369dd41992e0f8701e192dac0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{801B7F88-6DE4-48B9-A830-450BF14DBBA1}</ProjectGuid>\r
+    <ProjectGuid>{D1129EE6-1E08-4393-8EF2-EA2EA6C1D5A9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1595</NoWarn>\r
     <OutputPath>bin\Debug\System.Transactions-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f2424177a0c7eb5dadb02aa10c34803e42f745dc..eb781cd73ad3384faf0f257486c865a5a7c931cc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</ProjectGuid>\r
+    <ProjectGuid>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Abstractions-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7e905a23476df918963e53dc659e0a0ccf346eac..73a727fb16e598cfb31a643e2bf48fa7d767e74f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4C775D7D-F2B3-4A1F-B74B-CEFDB72959A5}</ProjectGuid>\r
+    <ProjectGuid>{3ED0B5B2-9897-4427-9510-BBC309B60C35}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Abstractions-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 22e3f7883a1e1f39e1613c4a2c48e5fc2531b5d9..cadb9c4ab45654eb884e1dd61a06d1c836af5da8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</ProjectGuid>\r
+    <ProjectGuid>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Abstractions-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e44c31bb0f5ba0f415f226613a27853888084246..0ed3646a10c18a2d69812900fccadcc53dd5a3da 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C7BB118D-5D06-4408-BF49-559823082741}</ProjectGuid>\r
+    <ProjectGuid>{FFD6E740-A675-44BA-9875-746959238825}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Abstractions-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_2_0.csproj">\r
-      <Project>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</Project>\r
+      <Project>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 277346a38b3f2b257449d000e35255fd30c25673..492b35d4b8bb3c23673e65cbd42170b8ca5bc8fd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B237BAE8-A3C5-4EEF-A192-D35D400871F5}</ProjectGuid>\r
+    <ProjectGuid>{49024E6C-B034-4657-B7CD-D67CAA1D4D49}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Abstractions-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_0.csproj">\r
-      <Project>{4C775D7D-F2B3-4A1F-B74B-CEFDB72959A5}</Project>\r
+      <Project>{3ED0B5B2-9897-4427-9510-BBC309B60C35}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 08ace55044c090b553cd3e97f29fef95f238e5f4..8b84fc6cbddb4bcc2d127ef9411e29d6303b6b68 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4EB0E45D-D6AE-4CBA-8771-2CDDCAB24372}</ProjectGuid>\r
+    <ProjectGuid>{3AD60A26-BA14-4B61-9293-D98C1BF9552C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Abstractions-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</Project>\r
+      <Project>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bf1fae0873731a0a680cb94bda7b87fe1743856e..dc5a565c17e531d935c6edede1fc7b8677c99e50 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{472CD7DA-4C6E-4CA6-A165-FF8C753C3420}</ProjectGuid>\r
+    <ProjectGuid>{E5B3EB0A-A257-4230-AA90-25B2D7922126}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.ApplicationServices-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1a13a794c65ab1d687b2befe4f18ed212021ef66..1c3f0d2c40da4aa58c3be09c81134eb3bdc1c9fc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5D580843-B172-4BF3-AABD-116A64020C1C}</ProjectGuid>\r
+    <ProjectGuid>{8EF189A4-B862-4825-9938-00658C43B534}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.ApplicationServices-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 33052f977f551115d331610117b44946a09d90a7..aa46cb9bb2280519019dd7bc87ba22bbabc52981 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AD80D595-2812-412E-9F06-2A91C7283A48}</ProjectGuid>\r
+    <ProjectGuid>{394BAC94-3126-4DAE-8C55-5547372BAB46}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.ApplicationServices-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ed2ad87b71124708038f2d329e0bf96f3db881b7..11038b205c2c7e8e26406593d986b0a4128d448e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{182889E2-07DF-4792-94DF-8187BCD725BE}</ProjectGuid>\r
+    <ProjectGuid>{6881658B-5F01-49C2-8DB8-DF577EA525CE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.DynamicData-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0.csproj">\r
-      <Project>{B38D3949-9075-4450-8101-0D26C6B2CC4D}</Project>\r
+      <Project>{E3E1BF16-7D12-4CCD-85D0-B542F0AC3442}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_2_0.csproj">\r
-      <Project>{8D8EF41B-C5E7-4905-9D89-08EEA9DA7C05}</Project>\r
+      <Project>{CBDA8DA6-4A33-419C-9150-98EA5B3BE543}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_2_0.csproj">\r
-      <Project>{F0188B31-4CA0-41B2-8554-42C84D351D5E}</Project>\r
+      <Project>{2081F80F-9D8D-4D22-AF56-367D7BAC61D6}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_2_0.csproj">\r
-      <Project>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</Project>\r
+      <Project>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_2_0.csproj">\r
-      <Project>{99262D2F-6F5C-4BB4-A309-741AB0AE9C41}</Project>\r
+      <Project>{20D4E13A-7CC1-431F-BE4F-BB4BABB657E9}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5d043c3f15f827f34119a6b103c4640d378f294e..088d1dfb50d5261f88619d4a55ee6369268e2623 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B869C99D-EFFB-4820-BB03-D034C810DF76}</ProjectGuid>\r
+    <ProjectGuid>{6837587B-79E1-4EE1-938C-DE756B097444}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.DynamicData-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0.csproj">\r
-      <Project>{420D9BE2-8DD3-41E6-A115-6BFFA4B6EB04}</Project>\r
+      <Project>{F74623F8-5517-4015-8F3A-EB04E926E720}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_0.csproj">\r
-      <Project>{1ED806F6-FADE-43A4-B5FA-D3AD8281B326}</Project>\r
+      <Project>{1935FCB6-165D-4043-B048-BCEDD04F86B8}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_0.csproj">\r
-      <Project>{70CE3BCD-3BFA-42A9-AC82-C2F3B2CAC59B}</Project>\r
+      <Project>{B98941D0-3811-41A0-B07B-E48D4A7765DF}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_0.csproj">\r
-      <Project>{4C775D7D-F2B3-4A1F-B74B-CEFDB72959A5}</Project>\r
+      <Project>{3ED0B5B2-9897-4427-9510-BBC309B60C35}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_0.csproj">\r
-      <Project>{77AEBAA7-06AF-46E4-9BAB-E6AF85D20A8E}</Project>\r
+      <Project>{3DD9CA2F-A471-4BBB-867C-BE15EF24420F}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 156c331d06e3ffa08694c0309bf2970ae72b7942..4d1911f17517be8c94ba28fbebef2ddd9066e52f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FCB921CD-F90B-453A-A546-F47CCC019EF3}</ProjectGuid>\r
+    <ProjectGuid>{02E0DC5C-2182-45D8-95E3-FF5ED16C318E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.DynamicData-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{88F3463D-A057-4531-AEE8-802F5B6342E9}</Project>\r
+      <Project>{74E571CD-0506-4A52-B780-FDA9445675FB}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</Project>\r
+      <Project>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_5.csproj">\r
-      <Project>{6D8FBB29-646A-4F94-B80D-04DD8768F1E7}</Project>\r
+      <Project>{83FDEDF8-E46D-437E-8CEF-DD2C36E05324}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 755d1e599c1e2fb8b9526ed0a5b6048f4f88f3f8..5ab8354730030c87400974ecaac6fa76a1a65e2b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{24CBC4DB-11EB-4BAF-B7DC-13E1FCA9400E}</ProjectGuid>\r
+    <ProjectGuid>{91028A81-C26E-4906-AC77-078271157C13}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.DynamicData-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.DynamicData\System.Web.DynamicData-net_2_0.csproj">\r
-      <Project>{182889E2-07DF-4792-94DF-8187BCD725BE}</Project>\r
+      <Project>{6881658B-5F01-49C2-8DB8-DF577EA525CE}</Project>\r
       <Name>System.Web.DynamicData\System.Web.DynamicData-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0.csproj">\r
-      <Project>{B38D3949-9075-4450-8101-0D26C6B2CC4D}</Project>\r
+      <Project>{E3E1BF16-7D12-4CCD-85D0-B542F0AC3442}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_2_0.csproj">\r
-      <Project>{8D8EF41B-C5E7-4905-9D89-08EEA9DA7C05}</Project>\r
+      <Project>{CBDA8DA6-4A33-419C-9150-98EA5B3BE543}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_2_0.csproj">\r
-      <Project>{F0188B31-4CA0-41B2-8554-42C84D351D5E}</Project>\r
+      <Project>{2081F80F-9D8D-4D22-AF56-367D7BAC61D6}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_2_0.csproj">\r
-      <Project>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</Project>\r
+      <Project>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_2_0.csproj">\r
-      <Project>{99262D2F-6F5C-4BB4-A309-741AB0AE9C41}</Project>\r
+      <Project>{20D4E13A-7CC1-431F-BE4F-BB4BABB657E9}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_2_0.csproj">\r
-      <Project>{FA446F0C-75D2-439A-9C1D-81CB6EDB8953}</Project>\r
+      <Project>{C13E6BD8-A2FC-41C2-B21B-9BF414BB4DA0}</Project>\r
       <Name>SystemWebTestShim\SystemWebTestShim-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 50dda90fd8ebcefec1383d5e7fdb17f32bc973e4..a035f141ad677dfe9479b772aa4f7e296e8ccf02 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{344BE71C-2CC7-4549-A7E0-BEEAB8EF58A2}</ProjectGuid>\r
+    <ProjectGuid>{79B0B763-8F67-43AC-83A1-F3C83BE07C15}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.DynamicData-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.DynamicData\System.Web.DynamicData-net_4_0.csproj">\r
-      <Project>{B869C99D-EFFB-4820-BB03-D034C810DF76}</Project>\r
+      <Project>{6837587B-79E1-4EE1-938C-DE756B097444}</Project>\r
       <Name>System.Web.DynamicData\System.Web.DynamicData-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0.csproj">\r
-      <Project>{420D9BE2-8DD3-41E6-A115-6BFFA4B6EB04}</Project>\r
+      <Project>{F74623F8-5517-4015-8F3A-EB04E926E720}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_0.csproj">\r
-      <Project>{1ED806F6-FADE-43A4-B5FA-D3AD8281B326}</Project>\r
+      <Project>{1935FCB6-165D-4043-B048-BCEDD04F86B8}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_0.csproj">\r
-      <Project>{70CE3BCD-3BFA-42A9-AC82-C2F3B2CAC59B}</Project>\r
+      <Project>{B98941D0-3811-41A0-B07B-E48D4A7765DF}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_0.csproj">\r
-      <Project>{4C775D7D-F2B3-4A1F-B74B-CEFDB72959A5}</Project>\r
+      <Project>{3ED0B5B2-9897-4427-9510-BBC309B60C35}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_0.csproj">\r
-      <Project>{77AEBAA7-06AF-46E4-9BAB-E6AF85D20A8E}</Project>\r
+      <Project>{3DD9CA2F-A471-4BBB-867C-BE15EF24420F}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_4_0.csproj">\r
-      <Project>{2CA35670-6F91-4423-A36A-12560A182E0D}</Project>\r
+      <Project>{08486D58-12AA-4B53-82F7-1B2C62EAE9D5}</Project>\r
       <Name>SystemWebTestShim\SystemWebTestShim-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1c5d9dc28b89fe17a51120a9e09293d9e679cc60..707e32dbe1e35f31a965ede1f2be6473adb37056 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8178EA24-D36C-43EC-8783-6325059CBA5E}</ProjectGuid>\r
+    <ProjectGuid>{1500FD28-7DB2-40B3-BAB2-A8FBE3960A4E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.DynamicData-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.DynamicData\System.Web.DynamicData-net_4_5.csproj">\r
-      <Project>{FCB921CD-F90B-453A-A546-F47CCC019EF3}</Project>\r
+      <Project>{02E0DC5C-2182-45D8-95E3-FF5ED16C318E}</Project>\r
       <Name>System.Web.DynamicData\System.Web.DynamicData-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{88F3463D-A057-4531-AEE8-802F5B6342E9}</Project>\r
+      <Project>{74E571CD-0506-4A52-B780-FDA9445675FB}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</Project>\r
+      <Project>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_5.csproj">\r
-      <Project>{6D8FBB29-646A-4F94-B80D-04DD8768F1E7}</Project>\r
+      <Project>{83FDEDF8-E46D-437E-8CEF-DD2C36E05324}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_4_5.csproj">\r
-      <Project>{AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}</Project>\r
+      <Project>{3D24376B-ECC8-4E7B-9433-C77CC67880AA}</Project>\r
       <Name>SystemWebTestShim\SystemWebTestShim-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1399637d7a644dfd65c8c41723ea65d70ca9a666..4073d07429f6f41bee4b3c92c51aaaaf9f8009d2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DFB67D8B-86E5-4164-8D94-E8E98F18EEB7}</ProjectGuid>\r
+    <ProjectGuid>{94DBDE83-D7A4-4E3D-93CD-C73013D28E48}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions.Design-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Design\System.Design-net_2_0-1.csproj">\r
-      <Project>{D75106C3-9D48-4054-82FF-DB9E7BAF216D}</Project>\r
+      <Project>{7BD57C92-6B92-45F0-8050-A0AEE810BC8D}</Project>\r
       <Name>System.Design\System.Design-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index aee87f9fce1354970dcd46ebf8493689f69da5a3..9ba0406bc405508579dcaa1e0cf090dfc17649e0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1167DB40-44BA-45A3-AFD9-08C8EEC5BD9B}</ProjectGuid>\r
+    <ProjectGuid>{4ED85265-D05C-4F8E-9A95-31BF0D524B71}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions.Design-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Design\System.Design-net_4_0-1.csproj">\r
-      <Project>{6E8873F5-E704-4256-994D-5E4D9EE8EA1D}</Project>\r
+      <Project>{C8576BC8-9511-494F-B50E-C2219D151B4A}</Project>\r
       <Name>System.Design\System.Design-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ba6e9ffd7e993cd99e4899972d69d44618b115d3..15748f07385db4fda03e762d2c3598c2e56d0a87 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B1C41A6E-22FC-4208-8B2A-9CBDE0B80FFF}</ProjectGuid>\r
+    <ProjectGuid>{9F8B1088-2610-4E4D-A6E4-EDF2771104D9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions.Design-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Design\System.Design-net_4_5-1.csproj">\r
-      <Project>{2414C54A-9454-4B25-932C-0724CF003A6D}</Project>\r
+      <Project>{54B3EC1E-F177-4E17-B4B9-ADF5C4AEE9B4}</Project>\r
       <Name>System.Design\System.Design-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 30f6474f27d91f741f72fe77a0f360148850038a..9c103b3d418a70511d8a96917d70141332305e0a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D5DD9106-80E8-4EDB-B897-67F350DEE28E}</ProjectGuid>\r
+    <ProjectGuid>{BE605E88-3670-4349-9A9A-2FEEDEAB2DB6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions.Design_1.0-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Design\System.Design-net_2_0-1.csproj">\r
-      <Project>{D75106C3-9D48-4054-82FF-DB9E7BAF216D}</Project>\r
+      <Project>{7BD57C92-6B92-45F0-8050-A0AEE810BC8D}</Project>\r
       <Name>System.Design\System.Design-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index db5273a157d80410dab3625e5cb9819e8f1625c2..5740ce24073ded5e76b0be577b4362ad24cafe05 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F0188B31-4CA0-41B2-8554-42C84D351D5E}</ProjectGuid>\r
+    <ProjectGuid>{2081F80F-9D8D-4D22-AF56-367D7BAC61D6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_2_0.csproj">\r
-      <Project>{8D8EF41B-C5E7-4905-9D89-08EEA9DA7C05}</Project>\r
+      <Project>{CBDA8DA6-4A33-419C-9150-98EA5B3BE543}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ab8013a794e560fddfab09215a2dcda05479d98d..e0bcbc5e5f99a5101b4d2c0f03b7045a742c75ab 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{70CE3BCD-3BFA-42A9-AC82-C2F3B2CAC59B}</ProjectGuid>\r
+    <ProjectGuid>{B98941D0-3811-41A0-B07B-E48D4A7765DF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_0.csproj">\r
-      <Project>{1ED806F6-FADE-43A4-B5FA-D3AD8281B326}</Project>\r
+      <Project>{1935FCB6-165D-4043-B048-BCEDD04F86B8}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_0.csproj">\r
-      <Project>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</Project>\r
+      <Project>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c3e0682013d863a98e9aa6e7119844dce4912294..6a55639c983d99a9247c26255316d7499174c693 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{88F3463D-A057-4531-AEE8-802F5B6342E9}</ProjectGuid>\r
+    <ProjectGuid>{74E571CD-0506-4A52-B780-FDA9445675FB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 50083d9ebef991234f2634cea2ecacab97e81e13..d90774ec6551cc19a6fed6e399de4d4b6e21ce3d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9F2FE51F-DC60-4F62-9BA6-77DFEA8F118B}</ProjectGuid>\r
+    <ProjectGuid>{2C6D48E2-460F-4415-9D66-47A09FAEFBC7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,169,1591</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_2_0.csproj">\r
-      <Project>{F0188B31-4CA0-41B2-8554-42C84D351D5E}</Project>\r
+      <Project>{2081F80F-9D8D-4D22-AF56-367D7BAC61D6}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_2_0.csproj">\r
-      <Project>{8D8EF41B-C5E7-4905-9D89-08EEA9DA7C05}</Project>\r
+      <Project>{CBDA8DA6-4A33-419C-9150-98EA5B3BE543}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_2_0.csproj">\r
-      <Project>{FA446F0C-75D2-439A-9C1D-81CB6EDB8953}</Project>\r
+      <Project>{C13E6BD8-A2FC-41C2-B21B-9BF414BB4DA0}</Project>\r
       <Name>SystemWebTestShim\SystemWebTestShim-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 46b5db312ff99c095f888be655fb90a11d5f4c68..b8ea84c13bd190a173b7fb923770f137535c8e3f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FBB90247-A135-4A81-B18E-EB1156344F0A}</ProjectGuid>\r
+    <ProjectGuid>{D474E879-9410-4998-806C-E9BFFD8290EF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,169,1591</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_0.csproj">\r
-      <Project>{70CE3BCD-3BFA-42A9-AC82-C2F3B2CAC59B}</Project>\r
+      <Project>{B98941D0-3811-41A0-B07B-E48D4A7765DF}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_0.csproj">\r
-      <Project>{1ED806F6-FADE-43A4-B5FA-D3AD8281B326}</Project>\r
+      <Project>{1935FCB6-165D-4043-B048-BCEDD04F86B8}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_0.csproj">\r
-      <Project>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</Project>\r
+      <Project>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_4_0.csproj">\r
-      <Project>{2CA35670-6F91-4423-A36A-12560A182E0D}</Project>\r
+      <Project>{08486D58-12AA-4B53-82F7-1B2C62EAE9D5}</Project>\r
       <Name>SystemWebTestShim\SystemWebTestShim-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f5704dd130277b9f3754eb5b08bca28504c767cd..8602d284b8fee813ae34a78eb520efaf5f4f02d6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{496386B9-294B-4D76-A15F-2C25E7E6A941}</ProjectGuid>\r
+    <ProjectGuid>{F70BF1C1-23E0-449D-966D-0A0657F0AB02}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,169,1591</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{88F3463D-A057-4531-AEE8-802F5B6342E9}</Project>\r
+      <Project>{74E571CD-0506-4A52-B780-FDA9445675FB}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_4_5.csproj">\r
-      <Project>{AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}</Project>\r
+      <Project>{3D24376B-ECC8-4E7B-9433-C77CC67880AA}</Project>\r
       <Name>SystemWebTestShim\SystemWebTestShim-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0b331555ce56bd8c6432900103678fa45e0e1af5..e695f880bf4a54e8258402e6b3110335f618b620 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B12E9FE0-4ED0-4424-ABE4-E9CDC77B0EED}</ProjectGuid>\r
+    <ProjectGuid>{37C7D569-AAFD-4B6B-A881-9D7EA940E46F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions_1.0-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 06d8fa9355d5dc9054a833566a4c126377a5162e..69a35dfb329bcde40179d6bc8cfc8c3ac5fed31a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{53C6EE8D-8590-4805-B016-FD9C8E360A21}</ProjectGuid>\r
+    <ProjectGuid>{00562AD9-16A9-4A82-8236-9FFCC0FC9B26}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Http.SelfHost-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net.Http\System.Net.Http-net_4_5.csproj">\r
-      <Project>{46CFCFD7-D328-4896-86F2-215A6577548C}</Project>\r
+      <Project>{BE71D058-35CB-4623-AA66-631C7EB5F139}</Project>\r
       <Name>System.Net.Http\System.Net.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_5.csproj">\r
-      <Project>{1B9AFE07-4230-4DE0-8A9F-C277179098FF}</Project>\r
+      <Project>{1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Http\System.Web.Http-net_4_5.csproj">\r
-      <Project>{0410DC95-B046-49E0-954A-A2CDA3368100}</Project>\r
+      <Project>{9E5FB1DD-0691-445E-8048-C90981B6948D}</Project>\r
       <Name>System.Web.Http\System.Web.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5.csproj">\r
-      <Project>{23304250-6657-44F1-851B-8EF6C5A9CEF7}</Project>\r
+      <Project>{9BDDA23D-1ABF-477A-AAA6-CD489033208E}</Project>\r
       <Name>System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
diff --git a/mcs/class/System.Web.Http.WebHost/Makefile b/mcs/class/System.Web.Http.WebHost/Makefile
new file mode 100644 (file)
index 0000000..0a898cf
--- /dev/null
@@ -0,0 +1,23 @@
+thisdir = class/System.Web.Http.WebHost        
+SUBDIRS = 
+include ../../build/rules.make
+
+LIBRARY = System.Web.Http.WebHost.dll
+
+System.Web.Http.WebHost.Properties.CommonWebApiResources.resources: ../../../external/aspnetwebstack/src/Common/CommonWebApiResources.resx
+       $(RESGEN) "$<" "$@"
+       
+System.Web.Http.WebHost.Properties.SRResources.resources: ../../../external/aspnetwebstack/src/System.Web.Http.WebHost/Properties/SRResources.resx
+       $(RESGEN) "$<" "$@"
+
+
+LIB_MCS_FLAGS = -r:System.Core.dll -r:System.dll -r:System.Xml.dll -r:System.Configuration.dll -r:System.Net.Http.dll \
+               -r:System.Runtime.Serialization.dll -r:System.ServiceModel.dll -r:System.IdentityModel.dll \
+               -r:System.Web.Http.dll -r:System.Net.Http.Formatting.dll  -r:System.Web.Routing.dll -r:System.Web.dll \
+        -r:Microsoft.Web.Infrastructure.dll \
+               -d:ASPNETMVC -keyfile:../winfx.pub -delaysign
+
+include ../../build/library.make
+
+$(the_lib): System.Web.Http.WebHost.Properties.CommonWebApiResources.resources \
+       System.Web.Http.WebHost.Properties.SRResources.resources
diff --git a/mcs/class/System.Web.Http.WebHost/System.Web.Http.WebHost.dll.sources b/mcs/class/System.Web.Http.WebHost/System.Web.Http.WebHost.dll.sources
new file mode 100644 (file)
index 0000000..a71b88d
--- /dev/null
@@ -0,0 +1,32 @@
+../../../external/aspnetwebstack/src/CommonAssemblyInfo.cs
+../../../external/aspnetwebstack/src/TransparentCommonAssemblyInfo.cs
+
+../../../external/aspnetwebstack/src/Common/DictionaryExtensions.cs
+../../../external/aspnetwebstack/src/Common/Error.cs
+../../../external/aspnetwebstack/src/Common/HttpMethodHelper.cs
+../../../external/aspnetwebstack/src/Common/TaskHelpers.cs
+../../../external/aspnetwebstack/src/Common/TaskHelpersExtensions.cs
+../../../external/aspnetwebstack/src/Common/CommonWebApiResources.Designer.cs
+
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/GlobalConfiguration.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/GlobalSuppressions.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/HttpControllerHandler.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/HttpControllerRouteHandler.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/HttpControllerTypeCacheSerializer.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/PreApplicationStartCode.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/Properties/SRResources.Designer.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/Properties/AssemblyInfo.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/RouteCollectionExtensions.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/Routing/HostedHttpRouteCollection.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/Routing/HostedHttpVirtualPathData.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/Routing/HttpContextBaseExtensions.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/Routing/HostedHttpRouteData.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/Routing/HttpRouteExtensions.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/Routing/HttpRouteDataExtensions.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/Routing/HttpWebRoute.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/Routing/HostedHttpRoute.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/SuppressFormsAuthRedirectModule.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/TaskWrapperAsyncResult.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/WebHostAssembliesResolver.cs
+../../../external/aspnetwebstack/src/System.Web.Http.WebHost/WebHostHttpControllerTypeResolver.cs
+
index 73c06cf52ff1d4404f930bcb352e9f04234a2067..e816c780f6e425b73b668410a103468ae9bf5a8d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0410DC95-B046-49E0-954A-A2CDA3368100}</ProjectGuid>\r
+    <ProjectGuid>{9E5FB1DD-0691-445E-8048-C90981B6948D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Http-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net.Http\System.Net.Http-net_4_5.csproj">\r
-      <Project>{46CFCFD7-D328-4896-86F2-215A6577548C}</Project>\r
+      <Project>{BE71D058-35CB-4623-AA66-631C7EB5F139}</Project>\r
       <Name>System.Net.Http\System.Net.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5.csproj">\r
-      <Project>{23304250-6657-44F1-851B-8EF6C5A9CEF7}</Project>\r
+      <Project>{9BDDA23D-1ABF-477A-AAA6-CD489033208E}</Project>\r
       <Name>System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Caching\System.Runtime.Caching-net_4_5.csproj">\r
-      <Project>{8645A982-AA1E-48CB-B996-7FCC4F8703CE}</Project>\r
+      <Project>{C18ABE89-33D2-4780-93BE-AB89B8187581}</Project>\r
       <Name>System.Runtime.Caching\System.Runtime.Caching-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 27545adb94bcc3b8ed8a28aa47dd1de810cbeb2b..e19687971cac2c3b40bab5ad589f1ff39889cec6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CAEA3F98-8317-4C90-B410-8725DD165431}</ProjectGuid>\r
+    <ProjectGuid>{0C7AD733-5388-4160-821B-D9817B39AEF3}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Mvc-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_2_0.csproj">\r
-      <Project>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</Project>\r
+      <Project>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_2_0.csproj">\r
-      <Project>{99262D2F-6F5C-4BB4-A309-741AB0AE9C41}</Project>\r
+      <Project>{20D4E13A-7CC1-431F-BE4F-BB4BABB657E9}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions_1.0\System.Web.Extensions_1.0-net_2_0.csproj">\r
-      <Project>{B12E9FE0-4ED0-4424-ABE4-E9CDC77B0EED}</Project>\r
+      <Project>{37C7D569-AAFD-4B6B-A881-9D7EA940E46F}</Project>\r
       <Name>System.Web.Extensions_1.0\System.Web.Extensions_1.0-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c137b8a1626dad0db21d10910cbbbcdf4cf32616..70438dd397211dab6bb3fd39d4adbd5a3c556fc5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0C35DE8D-4460-4327-B345-0E9789CEF27F}</ProjectGuid>\r
+    <ProjectGuid>{BA2241DF-BD0E-470F-BF2A-AFD61A5798A6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Mvc2-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_2_0.csproj">\r
-      <Project>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</Project>\r
+      <Project>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_2_0.csproj">\r
-      <Project>{99262D2F-6F5C-4BB4-A309-741AB0AE9C41}</Project>\r
+      <Project>{20D4E13A-7CC1-431F-BE4F-BB4BABB657E9}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_2_0.csproj">\r
-      <Project>{F0188B31-4CA0-41B2-8554-42C84D351D5E}</Project>\r
+      <Project>{2081F80F-9D8D-4D22-AF56-367D7BAC61D6}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0.csproj">\r
-      <Project>{B38D3949-9075-4450-8101-0D26C6B2CC4D}</Project>\r
+      <Project>{E3E1BF16-7D12-4CCD-85D0-B542F0AC3442}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_2_0.csproj">\r
-      <Project>{8D8EF41B-C5E7-4905-9D89-08EEA9DA7C05}</Project>\r
+      <Project>{CBDA8DA6-4A33-419C-9150-98EA5B3BE543}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 681e457127f8facb883d0c7598336127d6ac1d8c..5afda5b830978ad1ab5e7772a5a88b466e692fbf 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F657C9E0-BBA5-437A-AAF9-206F26BE487F}</ProjectGuid>\r
+    <ProjectGuid>{68C09E47-FC3E-4337-89B7-25E5A7320852}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Mvc2-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_0.csproj">\r
-      <Project>{4C775D7D-F2B3-4A1F-B74B-CEFDB72959A5}</Project>\r
+      <Project>{3ED0B5B2-9897-4427-9510-BBC309B60C35}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_0.csproj">\r
-      <Project>{77AEBAA7-06AF-46E4-9BAB-E6AF85D20A8E}</Project>\r
+      <Project>{3DD9CA2F-A471-4BBB-867C-BE15EF24420F}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_0.csproj">\r
-      <Project>{70CE3BCD-3BFA-42A9-AC82-C2F3B2CAC59B}</Project>\r
+      <Project>{B98941D0-3811-41A0-B07B-E48D4A7765DF}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0.csproj">\r
-      <Project>{420D9BE2-8DD3-41E6-A115-6BFFA4B6EB04}</Project>\r
+      <Project>{F74623F8-5517-4015-8F3A-EB04E926E720}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_0.csproj">\r
-      <Project>{1ED806F6-FADE-43A4-B5FA-D3AD8281B326}</Project>\r
+      <Project>{1935FCB6-165D-4043-B048-BCEDD04F86B8}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7c5f98d34c67d8195dfb4915ed5814cde4f5a685..a7e70816442045ec7c404d1c68a83d28ecd1b23b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5CC8078D-0307-481D-AAAE-EE62ED123A61}</ProjectGuid>\r
+    <ProjectGuid>{C4643395-6B5B-47D9-BD50-9F6804478AFD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Mvc2-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</Project>\r
+      <Project>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_5.csproj">\r
-      <Project>{6D8FBB29-646A-4F94-B80D-04DD8768F1E7}</Project>\r
+      <Project>{83FDEDF8-E46D-437E-8CEF-DD2C36E05324}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{88F3463D-A057-4531-AEE8-802F5B6342E9}</Project>\r
+      <Project>{74E571CD-0506-4A52-B780-FDA9445675FB}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 18bb1819870888e2c3bb52a5f71a21bc92ce247d..fbc391b07e9eaa19ba21ce23725b98fc78797d8e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5797142C-571A-4B83-B837-0821D077236A}</ProjectGuid>\r
+    <ProjectGuid>{3DB9B990-AE64-4B64-8A75-3797970AF64A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Mvc3-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5.csproj">\r
-      <Project>{ADFD4824-AEDB-445C-9B52-D0E0A9318B87}</Project>\r
+      <Project>{4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}</Project>\r
       <Name>Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</Project>\r
+      <Project>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_5.csproj">\r
-      <Project>{6D8FBB29-646A-4F94-B80D-04DD8768F1E7}</Project>\r
+      <Project>{83FDEDF8-E46D-437E-8CEF-DD2C36E05324}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{88F3463D-A057-4531-AEE8-802F5B6342E9}</Project>\r
+      <Project>{74E571CD-0506-4A52-B780-FDA9445675FB}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Caching\System.Runtime.Caching-net_4_5.csproj">\r
-      <Project>{8645A982-AA1E-48CB-B996-7FCC4F8703CE}</Project>\r
+      <Project>{C18ABE89-33D2-4780-93BE-AB89B8187581}</Project>\r
       <Name>System.Runtime.Caching\System.Runtime.Caching-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Razor\System.Web.Razor-net_4_5.csproj">\r
-      <Project>{2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}</Project>\r
+      <Project>{030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}</Project>\r
       <Name>System.Web.Razor\System.Web.Razor-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.WebPages.Razor\System.Web.WebPages.Razor-net_4_5.csproj">\r
-      <Project>{D8E8B136-69B6-461F-872A-9C0F12272D53}</Project>\r
+      <Project>{7A8432CA-9024-4496-A751-18AEFC8932E7}</Project>\r
       <Name>System.Web.WebPages.Razor\System.Web.WebPages.Razor-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.WebPages\System.Web.WebPages-net_4_5.csproj">\r
-      <Project>{4A2FA66A-594D-4A7B-9943-B7956C46D856}</Project>\r
+      <Project>{E9421151-F425-415F-8D32-5F28974E3C72}</Project>\r
       <Name>System.Web.WebPages\System.Web.WebPages-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fa37c610b689f93901c3853f9a98eb71020d91e2..375ba6d363416e9b8d0c09e25aa0abb3a4d738bc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}</ProjectGuid>\r
+    <ProjectGuid>{030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Razor-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 31ae94f94ff73dc0d89ff3f4e173d0a54e33e268..e930e3dd78afb33878b2ac34bd7461165dd52c67 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{99262D2F-6F5C-4BB4-A309-741AB0AE9C41}</ProjectGuid>\r
+    <ProjectGuid>{20D4E13A-7CC1-431F-BE4F-BB4BABB657E9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Routing-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_2_0.csproj">\r
-      <Project>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</Project>\r
+      <Project>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ac742ec83eb06c35af5b88ae55198fa9c82e6f3c..8adf86dcf1a91901228cf9a0b52f13f2073a3603 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{77AEBAA7-06AF-46E4-9BAB-E6AF85D20A8E}</ProjectGuid>\r
+    <ProjectGuid>{3DD9CA2F-A471-4BBB-867C-BE15EF24420F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Routing-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_0.csproj">\r
-      <Project>{4C775D7D-F2B3-4A1F-B74B-CEFDB72959A5}</Project>\r
+      <Project>{3ED0B5B2-9897-4427-9510-BBC309B60C35}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2cdfe60ff5906ae848ae9c01202f96f80d0bfcc8..451460f6f034fce437c25ccc707f475444d45609 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6D8FBB29-646A-4F94-B80D-04DD8768F1E7}</ProjectGuid>\r
+    <ProjectGuid>{83FDEDF8-E46D-437E-8CEF-DD2C36E05324}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Routing-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</Project>\r
+      <Project>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 87821a135ee6ff8bd1a93d6810932551b93e05fb..001e200a2bd2368270a25da0d04410e0f61aa8c0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7929EF81-CB30-43E8-9FA4-6CA6E47D9CA3}</ProjectGuid>\r
+    <ProjectGuid>{F7B47B0F-E690-4BFD-BBD2-5305157D99F8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Routing-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_2_0.csproj">\r
-      <Project>{99262D2F-6F5C-4BB4-A309-741AB0AE9C41}</Project>\r
+      <Project>{20D4E13A-7CC1-431F-BE4F-BB4BABB657E9}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_2_0.csproj">\r
-      <Project>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</Project>\r
+      <Project>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d658cb97b27f87b90963076bac6306b2743e2525..c9600ea5ee70121820ad644dafcbc017bbba1c97 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9028D9D6-3F54-4B5A-8A1F-AF25E365F443}</ProjectGuid>\r
+    <ProjectGuid>{0819E4EF-4AE1-4FDC-AFB2-50F6857B89CE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Routing-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_0.csproj">\r
-      <Project>{77AEBAA7-06AF-46E4-9BAB-E6AF85D20A8E}</Project>\r
+      <Project>{3DD9CA2F-A471-4BBB-867C-BE15EF24420F}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_0.csproj">\r
-      <Project>{4C775D7D-F2B3-4A1F-B74B-CEFDB72959A5}</Project>\r
+      <Project>{3ED0B5B2-9897-4427-9510-BBC309B60C35}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1d58a45132008cf851238e1b7581db312d124939..8ffd07dbf5dfe3e69225023c6bb2e6ad2c2c1422 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0A2B6514-DC20-4DC3-A976-622FEA39D4EB}</ProjectGuid>\r
+    <ProjectGuid>{8E750A9D-7421-408C-B859-62A8C92D3FE2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Routing-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_5.csproj">\r
-      <Project>{6D8FBB29-646A-4F94-B80D-04DD8768F1E7}</Project>\r
+      <Project>{83FDEDF8-E46D-437E-8CEF-DD2C36E05324}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</Project>\r
+      <Project>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5c8b07a135861a8c880cad3610128f2af3408336..ea321dc46924c4bc5e52cc85df1d70b91cc6e94a 100644 (file)
@@ -32,8 +32,11 @@ using System;
 using System.Collections.Generic;
 using System.Security.Permissions;
 using System.Text;
+using System.Text.RegularExpressions;
 using System.Web;
 using System.Web.Util;
+using System.Diagnostics;
+using System.Globalization;
 
 namespace System.Web.Routing
 {
@@ -207,6 +210,61 @@ namespace System.Web.Routing
                        return dict;
                }
 
+               static bool ParametersAreEqual (object a, object b)
+               {
+                       if (a is string && b is string) {
+                               return String.Equals (a as string, b as string, StringComparison.OrdinalIgnoreCase);
+                       } else {
+                               // Parameter may be a boxed value type, need to use .Equals() for comparison
+                               return object.Equals (a, b);
+                       }
+               }
+
+               static bool ParameterIsNonEmpty (object param)
+               {
+                       if (param is string)
+                               return !string.IsNullOrEmpty (param as string);
+
+                       return param != null;
+               }
+
+               bool IsParameterRequired (string parameterName, RouteValueDictionary defaultValues, out object defaultValue)
+               {
+                       foreach (var token in tokens) {
+                               if (token == null)
+                                       continue;
+
+                               if (string.Equals (token.Name, parameterName, StringComparison.OrdinalIgnoreCase)) {
+                                       if (token.Type == PatternTokenType.CatchAll) {
+                                               defaultValue = null;
+                                               return false;
+                                       }
+                               }
+                       }
+
+                       if (defaultValues == null)
+                               throw new ArgumentNullException ("defaultValues is null?!");
+
+                       return !defaultValues.TryGetValue (parameterName, out defaultValue);
+               }
+
+               static string EscapeReservedCharacters (Match m)
+               {
+                       if (m == null)
+                               throw new ArgumentNullException("m");
+
+                       return Uri.HexEscape (m.Value[0]);
+               }
+
+               static string UriEncode (string str)
+               {
+                       if (string.IsNullOrEmpty (str))
+                               return str;
+
+                       string escape = Uri.EscapeUriString (str);
+                       return Regex.Replace (escape, "([#?])", new MatchEvaluator (EscapeReservedCharacters));
+               }
+
                bool MatchSegment (int segIndex, int argsCount, string[] argSegs, List <PatternToken> tokens, RouteValueDictionary ret)
                {
                        string pathSegment = argSegs [segIndex];
@@ -373,180 +431,290 @@ namespace System.Web.Routing
                                return null;
 
                        RouteData routeData = requestContext.RouteData;
-                       RouteValueDictionary defaultValues = route != null ? route.Defaults : null;
-                       RouteValueDictionary ambientValues = routeData.Values;
-
-                       if (defaultValues != null && defaultValues.Count == 0)
-                               defaultValues = null;
-                       if (ambientValues != null && ambientValues.Count == 0)
-                               ambientValues = null;
-                       if (userValues != null && userValues.Count == 0)
-                               userValues = null;
-
-                       // Check URL parameters
-                       // It is allowed to take ambient values for required parameters if:
-                       //
-                       //   - there are no default values provided
-                       //   - the default values dictionary contains at least one required
-                       //     parameter value
-                       //
-                       bool canTakeFromAmbient;
-                       if (defaultValues == null)
-                               canTakeFromAmbient = true;
-                       else {
-                               canTakeFromAmbient = false;
-                               foreach (KeyValuePair <string, bool> de in parameterNames) {
-                                       if (defaultValues.ContainsKey (de.Key)) {
-                                               canTakeFromAmbient = true;
+                       var currentValues = routeData.Values ?? new RouteValueDictionary ();
+                       var values = userValues ?? new RouteValueDictionary ();
+                       var defaultValues = (route != null ? route.Defaults : null) ?? new RouteValueDictionary ();
+
+                       // The set of values we should be using when generating the URL in this route
+                       var acceptedValues = new RouteValueDictionary ();
+
+                       // Keep track of which new values have been used
+                       HashSet<string> unusedNewValues = new HashSet<string> (values.Keys, StringComparer.OrdinalIgnoreCase);
+
+                       // This route building logic is based on System.Web.Http's Routing code (which is Apache Licensed by MS)
+                       // and which can be found at mono's external/aspnetwebstack/src/System.Web.Http/Routing/HttpParsedRoute.cs
+                       // Hopefully this will ensure a much higher compatiblity with MS.NET's System.Web.Routing logic. (pruiz)
+
+                       #region Step 1: Get the list of values we're going to use to match and generate this URL
+                       // Find out which entries in the URL are valid for the URL we want to generate.
+                       // If the URL had ordered parameters a="1", b="2", c="3" and the new values
+                       // specified that b="9", then we need to invalidate everything after it. The new
+                       // values should then be a="1", b="9", c=<no value>.
+                       foreach (var item in parameterNames) {
+                               var parameterName = item.Key;
+
+                               object newParameterValue;
+                               bool hasNewParameterValue = values.TryGetValue (parameterName, out newParameterValue);
+                               if (hasNewParameterValue) {
+                                       unusedNewValues.Remove(parameterName);
+                               }
+
+                               object currentParameterValue;
+                               bool hasCurrentParameterValue = currentValues.TryGetValue (parameterName, out currentParameterValue);
+
+                               if (hasNewParameterValue && hasCurrentParameterValue) {
+                                       if (!ParametersAreEqual (currentParameterValue, newParameterValue)) {
+                                               // Stop copying current values when we find one that doesn't match
                                                break;
                                        }
                                }
-                       }
-                       
-                       bool allMustBeInUserValues = false;
-                       foreach (KeyValuePair <string, bool> de in parameterNames) {
-                               string parameterName = de.Key;
-                               // Is the parameter required?
-                               if (defaultValues == null || !defaultValues.ContainsKey (parameterName)) {
-                                       // Yes, it is required (no value in defaults)
-                                       // Has the user provided value for it?
-                                       if (userValues == null || !userValues.ContainsKey (parameterName)) {
-                                               if (allMustBeInUserValues)
-                                                       return null; // partial override => no match
-                                               
-                                               if (!canTakeFromAmbient || ambientValues == null || !ambientValues.ContainsKey (parameterName))
-                                                       return null; // no value provided => no match
-                                       } else if (canTakeFromAmbient)
-                                               allMustBeInUserValues = true;
+
+                               // If the parameter is a match, add it to the list of values we will use for URL generation
+                               if (hasNewParameterValue) {
+                                       if (ParameterIsNonEmpty (newParameterValue)) {
+                                               acceptedValues.Add (parameterName, newParameterValue);
+                                       }
+                               }
+                               else {
+                                       if (hasCurrentParameterValue) {
+                                               acceptedValues.Add (parameterName, currentParameterValue);
+                                       }
                                }
                        }
 
-                       // Check for non-url parameters
-                       if (defaultValues != null) {
-                               foreach (var de in defaultValues) {
-                                       string parameterName = de.Key;
-                                       
-                                       if (parameterNames.ContainsKey (parameterName))
-                                               continue;
-
-                                       object parameterValue = null;
-                                       // Has the user specified value for this parameter and, if
-                                       // yes, is it the same as the one in defaults?
-                                       if (userValues != null && userValues.TryGetValue (parameterName, out parameterValue)) {
-                                               object defaultValue = de.Value;
-                                               if (defaultValue is string && parameterValue is string) {
-                                                       if (String.Compare ((string)defaultValue, (string)parameterValue, StringComparison.OrdinalIgnoreCase) != 0)
-                                                               return null; // different value => no match
-                                               // Parameter may be a boxed value type, need to use .Equals() for comparison
-                                               } else if (!object.Equals (parameterValue, defaultValue))
-                                                       return null; // different value => no match
-                                       }
+                       // Add all remaining new values to the list of values we will use for URL generation
+                       foreach (var newValue in values) {
+                               if (ParameterIsNonEmpty (newValue.Value) && !acceptedValues.ContainsKey (newValue.Key)) {
+                                       acceptedValues.Add (newValue.Key, newValue.Value);
                                }
                        }
 
-                       // We're a match, generate the URL
-                       var ret = new StringBuilder ();
-                       usedValues = new RouteValueDictionary ();
-                       bool canTrim = true;
-                       
-                       // Going in reverse order, so that we can trim without much ado
-                       int tokensCount = tokens.Length - 1;
-                       for (int i = tokensCount; i >= 0; i--) {
-                               PatternToken token = tokens [i];
-                               if (token == null) {
-                                       if (i < tokensCount && ret.Length > 0 && ret [0] != '/')
-                                               ret.Insert (0, '/');
-                                       continue;
+                       // Add all current values that aren't in the URL at all
+                       foreach (var currentValue in currentValues) {
+                               if (!acceptedValues.ContainsKey (currentValue.Key) && !parameterNames.ContainsKey (currentValue.Key)) {
+                                       acceptedValues.Add (currentValue.Key, currentValue.Value);
                                }
-                               
-                               if (token.Type == PatternTokenType.Literal) {
-                                       ret.Insert (0, token.Name);
-                                       continue;
+                       }
+
+                       // Add all remaining default values from the route to the list of values we will use for URL generation
+                       foreach (var item in parameterNames) {
+                               object defaultValue;
+                               if (!acceptedValues.ContainsKey (item.Key) && !IsParameterRequired (item.Key, defaultValues, out defaultValue)) {
+                                       // Add the default value only if there isn't already a new value for it and
+                                       // only if it actually has a default value, which we determine based on whether
+                                       // the parameter value is required.
+                                       acceptedValues.Add (item.Key, defaultValue);
                                }
+                       }
 
-                               string parameterName = token.Name;
-                               object tokenValue;
+                       // All required parameters in this URL must have values from somewhere (i.e. the accepted values)
+                       foreach (var item in parameterNames) {
+                               object defaultValue;
+                               if (IsParameterRequired (item.Key, defaultValues, out defaultValue) && !acceptedValues.ContainsKey (item.Key)) {
+                                       // If the route parameter value is required that means there's
+                                       // no default value, so if there wasn't a new value for it
+                                       // either, this route won't match.
+                                       return null;
+                               }
+                       }
 
-#if SYSTEMCORE_DEP
-                               if (userValues.GetValue (parameterName, out tokenValue)) {
-                                       if (tokenValue != null)
-                                               usedValues.Add (parameterName, tokenValue.ToString ());
+                       // All other default values must match if they are explicitly defined in the new values
+                       var otherDefaultValues = new RouteValueDictionary (defaultValues);
+                       foreach (var item in parameterNames) {
+                               otherDefaultValues.Remove (item.Key);
+                       }
 
-                                       if (!defaultValues.Has (parameterName, tokenValue)) {
-                                               canTrim = false;
-                                               if (tokenValue != null)
-                                                       ret.Insert (0, tokenValue.ToString ());
-                                               continue;
+                       foreach (var defaultValue in otherDefaultValues) {
+                               object value;
+                               if (values.TryGetValue (defaultValue.Key, out value)) {
+                                       unusedNewValues.Remove (defaultValue.Key);
+                                       if (!ParametersAreEqual (value, defaultValue.Value)) {
+                                               // If there is a non-parameterized value in the route and there is a
+                                               // new value for it and it doesn't match, this route won't match.
+                                               return null;
                                        }
-
-                                       if (!canTrim && tokenValue != null)
-                                               ret.Insert (0, tokenValue.ToString ());
-
-                                       continue;
                                }
+                       }
+                       #endregion
 
-                               if (defaultValues.GetValue (parameterName, out tokenValue)) {
-                                       object ambientTokenValue;
-                                       if (ambientValues.GetValue (parameterName, out ambientTokenValue))
-                                               tokenValue = ambientTokenValue;
+                       #region Step 2: If the route is a match generate the appropriate URL
 
-                                       if (!canTrim && tokenValue != null)
-                                               ret.Insert (0, tokenValue.ToString ());
+                       var uri = new StringBuilder ();
+                       var pendingParts = new StringBuilder ();
+                       var pendingPartsAreAllSafe = false;
+                       bool blockAllUriAppends = false;
+                       var allSegments = new List<PatternSegment?> ();
 
-                                       usedValues.Add (parameterName, tokenValue.ToString ());
-                                       continue;
-                               }
+                       // Build a list of segments plus separators we can use as template.
+                       foreach (var segment in segments) {
+                               if (allSegments.Count > 0)
+                                       allSegments.Add (null); // separator exposed as null.
+                               allSegments.Add (segment);
+                       }
 
-                               canTrim = false;
-                               if (ambientValues.GetValue (parameterName, out tokenValue)) {
-                                       if (tokenValue != null)
-                                       {
-                                               ret.Insert (0, tokenValue.ToString ());
-                                               usedValues.Add (parameterName, tokenValue.ToString ());
+                       // Finally loop thru al segment-templates building the actual uri.
+                       foreach (var item in allSegments) {
+                               var segment = item.GetValueOrDefault ();
+
+                               // If segment is a separator..
+                               if (item == null) {
+                                       if (pendingPartsAreAllSafe) {
+                                               // Accept
+                                               if (pendingParts.Length > 0) {
+                                                       if (blockAllUriAppends)
+                                                               return null;
+
+                                                       // Append any pending literals to the URL
+                                                       uri.Append (pendingParts.ToString ());
+                                                       pendingParts.Length = 0;
+                                               }
                                        }
-                                       continue;
-                               }
+                                       pendingPartsAreAllSafe = false;
+
+                                       // Guard against appending multiple separators for empty segments
+                                       if (pendingParts.Length > 0 && pendingParts[pendingParts.Length - 1] == '/') {
+                                               // Dev10 676725: Route should not be matched if that causes mismatched tokens
+                                               // Dev11 86819: We will allow empty matches if all subsequent segments are null
+                                               if (blockAllUriAppends)
+                                                       return null;
+
+                                               // Append any pending literals to the URI (without the trailing slash) and prevent any future appends
+                                               uri.Append(pendingParts.ToString (0, pendingParts.Length - 1));
+                                               pendingParts.Length = 0;
+                                       } else {
+                                               pendingParts.Append ("/");
+                                       }
+#if false
+                               } else if (segment.AllLiteral) {
+                                       // Spezial (optimized) case: all elements of segment are literals.
+                                       pendingPartsAreAllSafe = true;
+                                       foreach (var tk in segment.Tokens)
+                                               pendingParts.Append (tk.Name);
 #endif
-                       }
+                               } else {
+                                       // Segments are treated as all-or-none. We should never output a partial segment.
+                                       // If we add any subsegment of this segment to the generated URL, we have to add
+                                       // the complete match. For example, if the subsegment is "{p1}-{p2}.xml" and we
+                                       // used a value for {p1}, we have to output the entire segment up to the next "/".
+                                       // Otherwise we could end up with the partial segment "v1" instead of the entire
+                                       // segment "v1-v2.xml".
+                                       bool addedAnySubsegments = false;
+
+                                       foreach (var token in segment.Tokens) {
+                                               if (token.Type == PatternTokenType.Literal) {
+                                                       // If it's a literal we hold on to it until we are sure we need to add it
+                                                       pendingPartsAreAllSafe = true;
+                                                       pendingParts.Append (token.Name);
+                                               } else {
+                                                       if (token.Type == PatternTokenType.Standard) {
+                                                               if (pendingPartsAreAllSafe) {
+                                                                       // Accept
+                                                                       if (pendingParts.Length > 0) {
+                                                                               if (blockAllUriAppends)
+                                                                                       return null;
+
+                                                                               // Append any pending literals to the URL
+                                                                               uri.Append (pendingParts.ToString ());
+                                                                               pendingParts.Length = 0;
+
+                                                                               addedAnySubsegments = true;
+                                                                       }
+                                                               }
+                                                               pendingPartsAreAllSafe = false;
+
+                                                               // If it's a parameter, get its value
+                                                               object acceptedParameterValue;
+                                                               bool hasAcceptedParameterValue = acceptedValues.TryGetValue (token.Name, out acceptedParameterValue);
+                                                               if (hasAcceptedParameterValue)
+                                                                       unusedNewValues.Remove (token.Name);
+
+                                                               object defaultParameterValue;
+                                                               defaultValues.TryGetValue (token.Name, out defaultParameterValue);
+
+                                                               if (ParametersAreEqual (acceptedParameterValue, defaultParameterValue)) {
+                                                                       // If the accepted value is the same as the default value, mark it as pending since
+                                                                       // we won't necessarily add it to the URL we generate.
+                                                                       pendingParts.Append (Convert.ToString (acceptedParameterValue, CultureInfo.InvariantCulture));
+                                                               } else {
+                                                                       if (blockAllUriAppends)
+                                                                               return null;
+
+                                                                       // Add the new part to the URL as well as any pending parts
+                                                                       if (pendingParts.Length > 0) {
+                                                                               // Append any pending literals to the URL
+                                                                               uri.Append (pendingParts.ToString ());
+                                                                               pendingParts.Length = 0;
+                                                                       }
+                                                                       uri.Append (Convert.ToString (acceptedParameterValue, CultureInfo.InvariantCulture));
+
+                                                                       addedAnySubsegments = true;
+                                                               }
+                                                       } else {
+                                                               Debug.Fail ("Invalid path subsegment type");
+                                                       }
+                                               }
+                                       }
 
-                       // All the values specified in userValues that aren't part of the original
-                       // URL, the constraints or defaults collections are treated as overflow
-                       // values - they are appended as query parameters to the URL
-                       if (userValues != null) {
-                               bool first = true;
-                               foreach (var de in userValues) {
-                                       string parameterName = de.Key;
+                                       if (addedAnySubsegments) {
+                                               // See comment above about why we add the pending parts
+                                               if (pendingParts.Length > 0) {
+                                                       if (blockAllUriAppends)
+                                                               return null;
 
-#if SYSTEMCORE_DEP
-                                       if (parameterNames.ContainsKey (parameterName) || defaultValues.Has (parameterName) || constraints.Has (parameterName))
-                                               continue;
-#endif
+                                                       // Append any pending literals to the URL
+                                                       uri.Append (pendingParts.ToString ());
+                                                       pendingParts.Length = 0;
+                                               }
+                                       }
+                               }
+                       }
 
-                                       object parameterValue = de.Value;
-                                       if (parameterValue == null)
-                                               continue;
+                       if (pendingPartsAreAllSafe) {
+                               // Accept
+                               if (pendingParts.Length > 0) {
+                                       if (blockAllUriAppends)
+                                               return null;
 
-                                       var parameterValueAsString = parameterValue as string;
-                                       if (parameterValueAsString != null && parameterValueAsString.Length == 0)
-                                               continue;
-                                       
-                                       if (first) {
-                                               ret.Append ('?');
-                                               first = false;
-                                       } else
-                                               ret.Append ('&');
+                                       // Append any pending literals to the URI
+                                       uri.Append (pendingParts.ToString ());
+                               }
+                       }
 
-                                       
-                                       ret.Append (Uri.EscapeDataString (parameterName));
-                                       ret.Append ('=');
-                                       if (parameterValue != null)
-                                               ret.Append (Uri.EscapeDataString (de.Value.ToString ()));
+                       // Process constraints keys
+                       if (constraints != null) {
+                               // If there are any constraints, mark all the keys as being used so that we don't
+                               // generate query string items for custom constraints that don't appear as parameters
+                               // in the URI format.
+                               foreach (var constraintsItem in constraints) {
+                                       unusedNewValues.Remove (constraintsItem.Key);
+                               }
+                       }
 
-                                       usedValues.Add (parameterName, de.Value.ToString ());
+                       // Encode the URI before we append the query string, otherwise we would double encode the query string
+                       var encodedUri = new StringBuilder ();
+                       encodedUri.Append (UriEncode (uri.ToString ()));
+                       uri = encodedUri;
+
+                       // Add remaining new values as query string parameters to the URI
+                       if (unusedNewValues.Count > 0) {
+                               // Generate the query string
+                               bool firstParam = true;
+                               foreach (string unusedNewValue in unusedNewValues) {
+                                       object value;
+                                       if (acceptedValues.TryGetValue (unusedNewValue, out value)) {
+                                               uri.Append (firstParam ? '?' : '&');
+                                               firstParam = false;
+                                               uri.Append (Uri.EscapeDataString (unusedNewValue));
+                                               uri.Append ('=');
+                                               uri.Append (Uri.EscapeDataString (Convert.ToString (value, CultureInfo.InvariantCulture)));
+                                       }
                                }
                        }
-                       
-                       return ret.ToString ();
+
+                       #endregion
+
+                       usedValues = acceptedValues;
+                       return uri.ToString();
                }
        }
 }
index 27328c67bec253bfde54ac62e8c122c4ab5607e7..4ac8cbcdcd95c0b06643ffceedd1dea84eb5b193 100644 (file)
@@ -1116,6 +1116,53 @@ namespace MonoTests.System.Web.Routing
                        Assert.IsNull (vp);
                }
 
+               [Test]
+               public void GetVirtualPath4_2 ()
+               {
+                       var r = new MyRoute("{foo}/{bar}", new MyRouteHandler());
+                       var hc = new HttpContextStub2("~/x/y", String.Empty);
+                       var rd = r.GetRouteData(hc);
+
+                       // override a value incompletely
+                       var values = new RouteValueDictionary();
+                       values["bar"] = "A";
+
+                       var vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+                       Assert.IsNotNull(vp);
+                       Assert.AreEqual("x/A", vp.VirtualPath);
+               }
+
+               [Test]
+               public void GetVirtualPath4Bis ()
+               {
+                       var r = new MyRoute("part/{foo}/{bar}", new MyRouteHandler());
+                       var hc = new HttpContextStub2("~/part/x/y", String.Empty);
+                       var rd = r.GetRouteData(hc);
+
+                       // override a value incompletely
+                       var values = new RouteValueDictionary();
+                       values["foo"] = "A";
+
+                       var vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+                       Assert.IsNull(vp);
+               }
+
+               [Test]
+               public void GetVirtualPath4_2Bis ()
+               {
+                       var r = new MyRoute("part/{foo}/{bar}", new MyRouteHandler());
+                       var hc = new HttpContextStub2("~/part/x/y", String.Empty);
+                       var rd = r.GetRouteData(hc);
+
+                       // override a value incompletely
+                       var values = new RouteValueDictionary();
+                       values["bar"] = "A";
+
+                       var vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+                       Assert.IsNotNull(vp);
+                       Assert.AreEqual("part/x/A", vp.VirtualPath);
+               }
+
                [Test]
                public void GetVirtualPath5 ()
                {
@@ -1491,6 +1538,167 @@ namespace MonoTests.System.Web.Routing
                        Assert.AreEqual ("HelloWorld", uppercase.VirtualPath, "#A6");
                }
 
+               [Test]
+               public void GetVirtualPath20 ()
+               {
+                       var r = new MyRoute("summary/{controller}/{id}/{action}", new MyRouteHandler())
+                       {
+                               Defaults = new RouteValueDictionary(new { action = "Index" })
+                       };
+                       var hc = new HttpContextStub2("~/summary/kind/1/test", String.Empty);
+                       var rd = r.GetRouteData(hc);
+                       Assert.IsNotNull(rd, "#1");
+
+                       var values = new RouteValueDictionary(new { id = "2", action = "save" });
+                       var vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+
+                       Assert.IsNotNull(vp, "#2");
+                       Assert.AreEqual("summary/kind/2/save", vp.VirtualPath, "#2-1");
+                       Assert.AreEqual(r, vp.Route, "#2-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#2-3");
+
+                       values = new RouteValueDictionary(new { id = "3", action = "save", extra = "stuff" });
+                       vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+
+                       Assert.IsNotNull(vp, "#3");
+                       Assert.AreEqual("summary/kind/3/save?extra=stuff", vp.VirtualPath, "#3-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#3-3");
+               }
+
+               [Test]
+               public void GetVirtualPath21 ()
+               {
+                       var r = new MyRoute("summary/{controller}/{id}/{action}", new MyRouteHandler())
+                       {
+                               Defaults = new RouteValueDictionary(new { action = "Index" })
+                       };
+                       var hc = new HttpContextStub2("~/summary/kind/1/test", String.Empty);
+                       var rd = r.GetRouteData(hc);
+                       Assert.IsNotNull(rd, "#1");
+                       Assert.AreEqual("1", rd.Values["id"]);
+
+                       var values = new RouteValueDictionary(new { action = "save" });
+                       var vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+
+                       Assert.IsNotNull(vp, "#2");
+                       Assert.AreEqual("summary/kind/1/save", vp.VirtualPath, "#2-1");
+                       Assert.AreEqual(r, vp.Route, "#2-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#2-3");
+
+                       values = new RouteValueDictionary(new { action = "save", extra = "stuff" });
+                       vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+
+                       Assert.IsNotNull(vp, "#3");
+                       Assert.AreEqual("summary/kind/1/save?extra=stuff", vp.VirtualPath, "#3-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#3-3");
+               }
+
+               [Test]
+               public void GetVirtualPath22 ()
+               {
+                       var r = new MyRoute("summary/{controller}/{id}/{action}", new MyRouteHandler())
+                       {
+                               Defaults = new RouteValueDictionary(new { action = "Index" })
+                       };
+                       var hc = new HttpContextStub2("~/summary/kind/90941a4f-daf3-4c89-a6dc-83e8de4e3db5/test", String.Empty);
+                       var rd = r.GetRouteData(hc);
+                       Assert.IsNotNull(rd, "#0");
+                       Assert.AreEqual("90941a4f-daf3-4c89-a6dc-83e8de4e3db5", rd.Values["id"]);
+
+                       var values = new RouteValueDictionary(new { action = "Index" });
+                       var vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+
+                       Assert.IsNotNull(vp, "#1");
+                       Assert.AreEqual("summary/kind/90941a4f-daf3-4c89-a6dc-83e8de4e3db5", vp.VirtualPath, "#1-1");
+                       Assert.AreEqual(r, vp.Route, "#1-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#1-3");
+
+                       values = new RouteValueDictionary(new { action = "save" });
+                       vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+
+                       Assert.IsNotNull(vp, "#2");
+                       Assert.AreEqual("summary/kind/90941a4f-daf3-4c89-a6dc-83e8de4e3db5/save", vp.VirtualPath, "#2-1");
+                       Assert.AreEqual(r, vp.Route, "#2-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#2-3");
+
+                       values = new RouteValueDictionary(new { action = "save", extra = "stuff" });
+                       vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+
+                       Assert.IsNotNull(vp, "#3");
+                       Assert.AreEqual("summary/kind/90941a4f-daf3-4c89-a6dc-83e8de4e3db5/save?extra=stuff", vp.VirtualPath, "#3-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#3-3");
+               }
+
+               [Test]
+               public void GetVirtualPath23 ()
+               {
+                       var r0 = new MyRoute ("summary/{id}", new MyRouteHandler());
+                       var r1 = new MyRoute ("summary/{controller}/{id}/{action}", new MyRouteHandler())
+                       {
+                               Defaults = new RouteValueDictionary (new { action = "Index" })
+                       };
+                       var hc = new HttpContextStub2 ("~/summary/90941a4f-daf3-4c89-a6dc-83e8de4e3db5", String.Empty);
+                       var rd = r0.GetRouteData (hc);
+                       Assert.IsNotNull (rd, "#0");
+                       Assert.AreEqual ("90941a4f-daf3-4c89-a6dc-83e8de4e3db5", rd.Values["id"]);
+
+                       var values = new RouteValueDictionary ()
+                       {
+                               { "controller", "SomeThing" },
+                               { "action", "Index" }
+                       };
+                       var vp = r1.GetVirtualPath (new RequestContext (hc, rd), values);
+
+                       Assert.IsNotNull (vp, "#1");
+                       Assert.AreEqual ("summary/SomeThing/90941a4f-daf3-4c89-a6dc-83e8de4e3db5", vp.VirtualPath, "#1-1");
+                       Assert.AreEqual (r1, vp.Route, "#1-2");
+                       Assert.AreEqual (0, vp.DataTokens.Count, "#1-3");
+               }
+
+               [Test]
+               public void GetVirtualPath24 ()
+               {
+                       var r = new MyRoute ("{controller}/{country}-{locale}/{action}", new MyRouteHandler())
+                       {
+                               Defaults = new RouteValueDictionary (new { action = "Index", country = "us", locale = "en" })
+                       };
+                       var hc = new HttpContextStub2 ("~/login", String.Empty);
+                       var rd = r.GetRouteData (hc);
+                       Assert.IsNull (rd, "#0");
+
+                       var values = new RouteValueDictionary ()
+                       {
+                               { "controller", "SomeThing" },
+                               { "action", "Index" },
+                               { "country", "es" }
+                       };
+                       var vp = r.GetVirtualPath (new RequestContext (hc, new RouteData()), values);
+
+                       Assert.IsNotNull (vp, "#1");
+                       Assert.AreEqual ("SomeThing/es-en", vp.VirtualPath, "#1-1");
+                       Assert.AreEqual (r, vp.Route, "#1-2");
+                       Assert.AreEqual (0, vp.DataTokens.Count, "#1-3");
+
+                       // Case #2: pass no country, but locale as user value.
+                       values.Remove("country");
+                       values.Add("locale", "xx");
+                       vp = r.GetVirtualPath(new RequestContext(hc, new RouteData()), values);
+
+                       Assert.IsNotNull(vp, "#2");
+                       Assert.AreEqual("SomeThing/us-xx", vp.VirtualPath, "#2-1");
+                       Assert.AreEqual(r, vp.Route, "#2-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#2-3");
+
+                       // Case #3: make contry required.
+                       r = new MyRoute("{controller}/{country}-{locale}/{action}", new MyRouteHandler())
+                       {
+                               Defaults = new RouteValueDictionary(new { action = "Index", locale = "en" })
+                       };
+                       vp = r.GetVirtualPath(new RequestContext(hc, new RouteData()), values);
+
+                       Assert.IsNull(vp, "#3");
+               }
+
                // Bug #500739
                [Test]
                public void RouteGetRequiredStringWithDefaults ()
index 991baae611f5cb69e801976db890fb839a56d500..a2d9734f53af07208c9fae7363b73ce036ef4e4b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</ProjectGuid>\r
+    <ProjectGuid>{71444193-6B64-4C1B-A87D-580CCB548952}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Services-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0.csproj">\r
-      <Project>{F30781EC-D410-4A00-BD91-0971E37DE140}</Project>\r
+      <Project>{4796A339-E32F-476E-9D7D-69C771CD618C}</Project>\r
       <Name>System.Web\System.Web-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 67fd635f98b2b100a222717884e6249c4e1c9e1c..cc4d99a28a3489c60688b68f6e35fe12bf5ac399 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</ProjectGuid>\r
+    <ProjectGuid>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Services-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0.csproj">\r
-      <Project>{39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}</Project>\r
+      <Project>{BAC369E3-E94E-4E5A-97FF-0CF696D07814}</Project>\r
       <Name>System.Web\System.Web-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 431f96bb40fb687284a577d289515ad01d9a3500..4329f20fd4a140cefcc3386daecc23de1856f81c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</ProjectGuid>\r
+    <ProjectGuid>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Services-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5.csproj">\r
-      <Project>{3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}</Project>\r
+      <Project>{0B03F192-EC11-49E5-A7F6-E97C0D559E51}</Project>\r
       <Name>System.Web\System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 587754b104decba79d543c03669ad37c4b2eeb02..8f6f11db744a7ddd567893b3c7164002dd8120ff 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{973CA341-1810-47B6-9D02-E82306853252}</ProjectGuid>\r
+    <ProjectGuid>{16AAB3B7-6DB2-4531-961B-F995C2F2A852}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,169,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Services-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0.csproj">\r
-      <Project>{F30781EC-D410-4A00-BD91-0971E37DE140}</Project>\r
+      <Project>{4796A339-E32F-476E-9D7D-69C771CD618C}</Project>\r
       <Name>System.Web\System.Web-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d53aa7a25b470bc0611a3f8cef3a9e6bb39fa8a5..537657a0faddb144133f6a9973ef3dbf2d607539 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3D61D05D-1D14-446E-AE72-E568B9812179}</ProjectGuid>\r
+    <ProjectGuid>{A24EEFB1-AEB7-450C-87AC-254A039DB5FF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,169,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Services-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_0.csproj">\r
-      <Project>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</Project>\r
+      <Project>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0.csproj">\r
-      <Project>{39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}</Project>\r
+      <Project>{BAC369E3-E94E-4E5A-97FF-0CF696D07814}</Project>\r
       <Name>System.Web\System.Web-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index dcbc4f25ff0ffbfcfa579d6c67490dab2f02b632..d1930135fa193dc5429c99b865cf11491c775f1f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{10182EEF-2616-46BB-894E-6820BFA07D45}</ProjectGuid>\r
+    <ProjectGuid>{7DA0BC53-8555-4547-BAE6-BD72EF93B109}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,169,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Services-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5.csproj">\r
-      <Project>{3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}</Project>\r
+      <Project>{0B03F192-EC11-49E5-A7F6-E97C0D559E51}</Project>\r
       <Name>System.Web\System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 99fe6c62b0df8c072c2cf370fcb83b016ff37b45..a0c0489d7017db62fa427059ba04759fc30253ba 100644 (file)
@@ -59,7 +59,7 @@ namespace MonoTests.System.Web.Services.Description
                [Test]
                public void Namespaces ()
                {
-                       FileStream fs = new FileStream ("Test/System.Web.Services.Description/test.wsdl", FileMode.Open);
+                       FileStream fs = new FileStream ("Test/System.Web.Services.Description/test.wsdl", FileMode.Open, FileAccess.Read);
                        XmlTextReader xtr = new XmlTextReader (fs);
 
                        ServiceDescription sd = ServiceDescription.Read (xtr);
@@ -84,7 +84,7 @@ namespace MonoTests.System.Web.Services.Description
                [Test]
                public void ExtensibleAttributes ()
                {
-                   FileStream fs = new FileStream("Test/System.Web.Services.Description/test.wsdl", FileMode.Open);
+                   FileStream fs = new FileStream ("Test/System.Web.Services.Description/test.wsdl", FileMode.Open, FileAccess.Read);
                    XmlTextReader xtr = new XmlTextReader(fs);
 
                    ServiceDescription sd = ServiceDescription.Read(xtr);
@@ -105,7 +105,7 @@ namespace MonoTests.System.Web.Services.Description
                [Test]
                public void Extensions ()
                {
-                   FileStream fs = new FileStream("Test/System.Web.Services.Description/test.wsdl", FileMode.Open);
+                       FileStream fs = new FileStream("Test/System.Web.Services.Description/test.wsdl", FileMode.Open, FileAccess.Read);
                    XmlTextReader xtr = new XmlTextReader(fs);
 
                    ServiceDescription sd = ServiceDescription.Read(xtr);
index 460a6c2156c7184025078fb43469430f1749189d..daa1ea3a323e6dab789260d7e5540ff874009904 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{20363524-CE98-4FCB-8477-AF79DDC1A909}</ProjectGuid>\r
+    <ProjectGuid>{0089F43D-5A83-46A4-9299-A98B0A86A70A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.WebPages.Deployment-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5.csproj">\r
-      <Project>{ADFD4824-AEDB-445C-9B52-D0E0A9318B87}</Project>\r
+      <Project>{4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}</Project>\r
       <Name>Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index db92940653abe4a346d08c5e36cb5f2598cf2f77..58497ced78d481ad165afb4c316e7b1a0498c95e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D8E8B136-69B6-461F-872A-9C0F12272D53}</ProjectGuid>\r
+    <ProjectGuid>{7A8432CA-9024-4496-A751-18AEFC8932E7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.WebPages.Razor-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.WebPages\System.Web.WebPages-net_4_5.csproj">\r
-      <Project>{4A2FA66A-594D-4A7B-9943-B7956C46D856}</Project>\r
+      <Project>{E9421151-F425-415F-8D32-5F28974E3C72}</Project>\r
       <Name>System.Web.WebPages\System.Web.WebPages-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Razor\System.Web.Razor-net_4_5.csproj">\r
-      <Project>{2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}</Project>\r
+      <Project>{030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}</Project>\r
       <Name>System.Web.Razor\System.Web.Razor-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c273919519c7ee209d80cde98c3ce7abaef9d0ec..618f58a07e15ccec43234d520d26ce715c23f5a3 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4A2FA66A-594D-4A7B-9943-B7956C46D856}</ProjectGuid>\r
+    <ProjectGuid>{E9421151-F425-415F-8D32-5F28974E3C72}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.WebPages-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.CSharp\Microsoft.CSharp-net_4_5.csproj">\r
-      <Project>{94E8FEFF-9695-4F77-A8AB-85370336FE0D}</Project>\r
+      <Project>{AC2AB4A1-8005-4458-8B2B-614DA9BBC644}</Project>\r
       <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5.csproj">\r
-      <Project>{ADFD4824-AEDB-445C-9B52-D0E0A9318B87}</Project>\r
+      <Project>{4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}</Project>\r
       <Name>Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.WebPages.Deployment\System.Web.WebPages.Deployment-net_4_5.csproj">\r
-      <Project>{20363524-CE98-4FCB-8477-AF79DDC1A909}</Project>\r
+      <Project>{0089F43D-5A83-46A4-9299-A98B0A86A70A}</Project>\r
       <Name>System.Web.WebPages.Deployment\System.Web.WebPages.Deployment-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Razor\System.Web.Razor-net_4_5.csproj">\r
-      <Project>{2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}</Project>\r
+      <Project>{030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}</Project>\r
       <Name>System.Web.Razor\System.Web.Razor-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bf2f8ad2cd409e3fc377c6d8eedb0a13bb2f1efd..365fb9cbe1faa91e0ea08b1d92ce3918b6a506fb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F30781EC-D410-4A00-BD91-0971E37DE140}</ProjectGuid>\r
+    <ProjectGuid>{4796A339-E32F-476E-9D7D-69C771CD618C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612,618,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web-net_2_0</OutputPath>\r
     <Compile Include="System.Web.Configuration_2.0\IdentitySection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\IRemoteWebConfigurationHostServer.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\LowerCaseStringConverter.cs" />\r
+    <Compile Include="System.Web.Configuration_2.0\LruCache.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyRegistryStorage.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeySection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyValidation.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj">\r
-      <Project>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</Project>\r
+      <Project>{85526C39-79CA-40DB-940A-3C83DF30DF85}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0.csproj">\r
-      <Project>{60E307F3-5E95-42FF-9B41-3FB8AD664AB6}</Project>\r
+      <Project>{991C45A8-3B22-45BB-B688-DBF8BA835992}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Web.Services.dll">\r
       <Private>False</Private>\r
     </Reference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1a6861ddef2bcaf78979d8a5360dbc793b25c454..a8860030f32960ebdedf8e7219508166d248a7ee 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}</ProjectGuid>\r
+    <ProjectGuid>{BAC369E3-E94E-4E5A-97FF-0CF696D07814}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612,618,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web-net_4_0</OutputPath>\r
     <Compile Include="System.Web.Configuration_2.0\IdentitySection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\IRemoteWebConfigurationHostServer.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\LowerCaseStringConverter.cs" />\r
+    <Compile Include="System.Web.Configuration_2.0\LruCache.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyCompatibilityMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyRegistryStorage.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeySection.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj">\r
-      <Project>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</Project>\r
+      <Project>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0.csproj">\r
-      <Project>{BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}</Project>\r
+      <Project>{F26434C1-BA3D-41FB-B560-C009CB72B1B6}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Web\Mono.Web-net_2_0.csproj">\r
-      <Project>{4E0AB773-6BB3-4866-881F-B362A573C8DD}</Project>\r
+      <Project>{D0D311A2-725A-4413-B7FA-EF61E2A4C0C0}</Project>\r
       <Name>Mono.Web\Mono.Web-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 96db60cdfbbff9a7fe92816281184e7254b9b153..40f005749997268690bc59bf6e9736e8f69cc140 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A945645C-6DF3-414E-B5F1-25DC35C95136}</ProjectGuid>\r
+    <ProjectGuid>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612,618,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web-net_4_5-1</OutputPath>\r
     <Compile Include="System.Web.Configuration_2.0\IdentitySection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\IRemoteWebConfigurationHostServer.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\LowerCaseStringConverter.cs" />\r
+    <Compile Include="System.Web.Configuration_2.0\LruCache.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyCompatibilityMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyRegistryStorage.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeySection.cs" />\r
     <Compile Include="System.Web\InputFilterStream.cs" />\r
     <Compile Include="System.Web\IntPtrStream.cs" />\r
     <Compile Include="System.Web\IPartitionResolver.cs" />\r
+    <Compile Include="System.Web\MimeMapping.cs" />\r
     <Compile Include="System.Web\MimeTypes.cs" />\r
     <Compile Include="System.Web\NoParamsInvoker.cs" />\r
     <Compile Include="System.Web\OutputFilterStream.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}</Project>\r
+      <Project>{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Web\Mono.Web-net_4_5.csproj">\r
-      <Project>{ABD934FF-6F3A-40CB-85DB-98316F708226}</Project>\r
+      <Project>{82BD591A-1377-41BD-9B2C-1037574BB935}</Project>\r
       <Name>Mono.Web\Mono.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d755c33488b9b0894a1bb1412874ebfb1c6da4f2..aa170c5e481c1a9fb0aaae9f9b69bb9544c9e5bf 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</ProjectGuid>\r
+    <ProjectGuid>{93406A57-422B-4A7E-886A-B37F2E97DB78}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612,618,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web-net_4_5-2</OutputPath>\r
     <Compile Include="System.Web.Configuration_2.0\IdentitySection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\IRemoteWebConfigurationHostServer.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\LowerCaseStringConverter.cs" />\r
+    <Compile Include="System.Web.Configuration_2.0\LruCache.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyCompatibilityMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyRegistryStorage.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeySection.cs" />\r
     <Compile Include="System.Web\InputFilterStream.cs" />\r
     <Compile Include="System.Web\IntPtrStream.cs" />\r
     <Compile Include="System.Web\IPartitionResolver.cs" />\r
+    <Compile Include="System.Web\MimeMapping.cs" />\r
     <Compile Include="System.Web\MimeTypes.cs" />\r
     <Compile Include="System.Web\NoParamsInvoker.cs" />\r
     <Compile Include="System.Web\OutputFilterStream.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}</Project>\r
+      <Project>{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Web\Mono.Web-net_4_5.csproj">\r
-      <Project>{ABD934FF-6F3A-40CB-85DB-98316F708226}</Project>\r
+      <Project>{82BD591A-1377-41BD-9B2C-1037574BB935}</Project>\r
       <Name>Mono.Web\Mono.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 175f925d94ce38272bb8c39b9d97d8caf1698297..b9c954aabc911735ae80b3eb10800091529c0a39 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}</ProjectGuid>\r
+    <ProjectGuid>{0B03F192-EC11-49E5-A7F6-E97C0D559E51}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612,618,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web-net_4_5</OutputPath>\r
     <Compile Include="System.Web.Configuration_2.0\IdentitySection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\IRemoteWebConfigurationHostServer.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\LowerCaseStringConverter.cs" />\r
+    <Compile Include="System.Web.Configuration_2.0\LruCache.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyCompatibilityMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyRegistryStorage.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeySection.cs" />\r
     <Compile Include="System.Web\InputFilterStream.cs" />\r
     <Compile Include="System.Web\IntPtrStream.cs" />\r
     <Compile Include="System.Web\IPartitionResolver.cs" />\r
+    <Compile Include="System.Web\MimeMapping.cs" />\r
     <Compile Include="System.Web\MimeTypes.cs" />\r
     <Compile Include="System.Web\NoParamsInvoker.cs" />\r
     <Compile Include="System.Web\OutputFilterStream.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}</Project>\r
+      <Project>{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_0.csproj">\r
-      <Project>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</Project>\r
+      <Project>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Web\Mono.Web-net_4_0.csproj">\r
-      <Project>{2C2BA4BC-CDE5-46D0-A225-9E84EE42997F}</Project>\r
+      <Project>{AA8CFAB1-B81C-434E-AA60-C2373B27EB56}</Project>\r
       <Name>Mono.Web\Mono.Web-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 418011d2c5c7c59b146118ea92512b6e01581f18..8818fcc2a59e56f1ed9c782be50ef8db77bd5614 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{640C4A33-1B69-422D-BB17-42E3A4BB0CFC}</ProjectGuid>\r
+    <ProjectGuid>{A3AE69CF-C19A-4ADE-831A-829687ECB0C1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612,618,618,219,169,1591</NoWarn>\r
     <OutputPath>bin\Debug\System.Web-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}</Project>\r
+      <Project>{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Web\Mono.Web-net_4_5.csproj">\r
-      <Project>{ABD934FF-6F3A-40CB-85DB-98316F708226}</Project>\r
+      <Project>{82BD591A-1377-41BD-9B2C-1037574BB935}</Project>\r
       <Name>Mono.Web\Mono.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_4_5.csproj">\r
-      <Project>{AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}</Project>\r
+      <Project>{3D24376B-ECC8-4E7B-9433-C77CC67880AA}</Project>\r
       <Name>SystemWebTestShim\SystemWebTestShim-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 46c8b0a44d55a165ed7743543955839f3c005d11..308560a45f2a0da5f6d341d1a86b826d9c1c7287 100644 (file)
@@ -64,6 +64,9 @@ namespace System.Web.Configuration
                static ConfigurationProperty maxUrlLengthProp;
                static ConfigurationProperty encoderTypeProp;
                static ConfigurationProperty relaxedUrlToFileSystemMappingProp;
+#endif
+#if NET_4_5
+               static ConfigurationProperty targetFrameworkProp;
 #endif
                static ConfigurationPropertyCollection properties;
 
@@ -141,6 +144,12 @@ namespace System.Web.Configuration
                                                                     ConfigurationPropertyOptions.None);
                        relaxedUrlToFileSystemMappingProp = new ConfigurationProperty ("relaxedUrlToFileSystemMapping", typeof (bool), false);
 #endif
+#if NET_4_5
+                       targetFrameworkProp = new ConfigurationProperty ("targetFramework", typeof (Version), new Version (4, 0),
+                                                                               PropertyHelper.VersionConverter,
+                                                                               PropertyHelper.DefaultValidator,
+                                                                               ConfigurationPropertyOptions.None);
+#endif
                        
                        properties = new ConfigurationPropertyCollection();
                        properties.Add (apartmentThreadingProp);
@@ -169,6 +178,9 @@ namespace System.Web.Configuration
                        properties.Add (maxUrlLengthProp);
                        properties.Add (encoderTypeProp);
                        properties.Add (relaxedUrlToFileSystemMappingProp);
+#endif
+#if NET_4_5
+                       properties.Add (targetFrameworkProp);
 #endif
                }
 
@@ -342,6 +354,14 @@ namespace System.Web.Configuration
                        get { return (bool) base [relaxedUrlToFileSystemMappingProp]; }
                        set { base [relaxedUrlToFileSystemMappingProp] = value; }
                }
+#endif
+#if NET_4_5
+               [ConfigurationProperty ("targetFramework", DefaultValue = "4.0")]
+               [TypeConverter ("System.Web.Configuration.VersionConverter")]
+               public Version TargetFramework {
+                       get { return (Version) base [targetFrameworkProp]; }
+                       set { base [targetFrameworkProp] = value; }
+               }
 #endif
                protected internal override ConfigurationPropertyCollection Properties {
                        get { return properties; }
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/LruCache.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/LruCache.cs
new file mode 100644 (file)
index 0000000..3bd9599
--- /dev/null
@@ -0,0 +1,144 @@
+//
+// A simple LRU cache
+//
+// Authors:
+//   Miguel de Icaza (miguel@gnome.org)
+//   Andres G. Aragoneses (andres@7digital.com)
+//
+// Copyright 2010 Miguel de Icaza
+// Copyright 2013 7digital Media Ltd.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+
+namespace System.Web.Configuration {
+
+       class LruCache<TKey, TValue> {
+               Dictionary<TKey, LinkedListNode <TValue>> dict;
+               Dictionary<LinkedListNode<TValue>, TKey> revdict;
+               LinkedList<TValue> list;
+               int entry_limit;
+
+               bool eviction_warning_shown;
+               int evictions;
+               bool size_overriden;
+
+               internal string EvictionWarning { set; private get; }
+
+               public LruCache (int entryLimit)
+               {
+                       entry_limit = entryLimit;
+                       dict = new Dictionary<TKey, LinkedListNode<TValue>> ();
+                       revdict = new Dictionary<LinkedListNode<TValue>, TKey> ();
+                       list = new LinkedList<TValue> ();
+               }
+
+               //for debugging: public int Count { get { return dict.Count; } }
+
+               void Evict ()
+               {
+                       var last = list.Last;
+                       if (last == null)
+                               return;
+
+                       var key = revdict [last];
+
+                       dict.Remove (key);
+                       revdict.Remove (last);
+                       list.RemoveLast ();
+                       DisposeValue (last.Value);
+                       evictions++;
+
+                       if (!String.IsNullOrEmpty (EvictionWarning) && !eviction_warning_shown && (evictions >= entry_limit)) {
+                               Console.Error.WriteLine ("WARNING: " + EvictionWarning);
+                               eviction_warning_shown = true;
+                       }
+               }
+
+               public void Clear ()
+               {
+                       foreach (var element in list) {
+                               DisposeValue (element);
+                       }
+
+                       dict.Clear ();
+                       revdict.Clear ();
+                       list.Clear ();
+                       eviction_warning_shown = false;
+                       evictions = 0;
+               }
+
+               void DisposeValue (TValue value)
+               {
+                       if (value is IDisposable) {
+                               ((IDisposable)value).Dispose ();
+                       }
+               }
+
+               public bool TryGetValue (TKey key, out TValue value)
+               {
+                       LinkedListNode<TValue> node;
+
+                       if (dict.TryGetValue (key, out node)){
+                               list.Remove (node);
+                               list.AddFirst (node);
+
+                               value = node.Value;
+                               return true;
+                       }
+                       value = default (TValue);
+                       return false;
+               }
+
+               public void Add (TKey key, TValue value)
+               {
+                       LinkedListNode<TValue> node;
+
+                       if (dict.TryGetValue (key, out node)){
+
+                               // If we already have a key, move it to the front
+                               list.Remove (node);
+                               list.AddFirst (node);
+
+                               // Remove the old value
+                               DisposeValue (node.Value);
+
+                               node.Value = value;
+                               return;
+                       }
+
+                       if (dict.Count >= entry_limit)
+                               Evict ();
+
+                       // Adding new node
+                       node = new LinkedListNode<TValue> (value);
+                       list.AddFirst (node);
+                       dict [key] = node;
+                       revdict [node] = key;
+               }
+
+               public override string ToString ()
+               {
+                       return "LRUCache dict={0} revdict={1} list={2}";
+               }
+       }
+}
index 9c7b8524e48114c8ae935e909c22188d42058ad9..63cca69d6e643b3d3ca11c9190d6861ed01976be 100644 (file)
@@ -72,11 +72,10 @@ namespace System.Web.Configuration {
                
                // See comment for the cacheLock field at top of System.Web.Caching/Cache.cs
                static readonly ReaderWriterLockSlim sectionCacheLock;
-               
+
 #if !TARGET_J2EE
                static IInternalConfigConfigurationFactory configFactory;
                static Hashtable configurations = Hashtable.Synchronized (new Hashtable ());
-               static Dictionary <int, object> sectionCache = new Dictionary <int, object> ();
                static Hashtable configPaths = Hashtable.Synchronized (new Hashtable ());
                static bool suppressAppReload;
 #else
@@ -188,9 +187,28 @@ namespace System.Web.Configuration {
                                }
                        }
                }
+
+               const int DEFAULT_SECTION_CACHE_SIZE = 100;
+               const string CACHE_SIZE_OVERRIDING_KEY = "MONO_ASPNET_WEBCONFIG_CACHESIZE";
+               static LruCache<int, object> sectionCache;
                
                static WebConfigurationManager ()
                {
+                       var section_cache_size = DEFAULT_SECTION_CACHE_SIZE;
+                       int section_cache_size_override;
+                       bool size_overriden = false;
+                       if (int.TryParse (Environment.GetEnvironmentVariable (CACHE_SIZE_OVERRIDING_KEY), out section_cache_size_override)) {
+                               section_cache_size = section_cache_size_override;
+                               size_overriden = true;
+                               Console.WriteLine ("WebConfigurationManager's LRUcache Size overriden to: {0} (via {1})", section_cache_size_override, CACHE_SIZE_OVERRIDING_KEY);
+                       }
+                       sectionCache = new LruCache<int, object> (section_cache_size);
+                       string eviction_warning = "WebConfigurationManager's LRUcache evictions count reached its max size";
+                       if (!size_overriden)
+                               eviction_warning += String.Format ("{0}Cache Size: {1} (overridable via {2})",
+                                                                  Environment.NewLine, section_cache_size, CACHE_SIZE_OVERRIDING_KEY);
+                       sectionCache.EvictionWarning = eviction_warning;
+
                        configFactory = ConfigurationManager.ConfigurationFactory;
                        _Configuration.SaveStart += ConfigurationSaveHandler;
                        _Configuration.SaveEnd += ConfigurationSaveHandler;
@@ -452,7 +470,7 @@ namespace System.Web.Configuration {
                                baseCacheKey ^= configPath.GetHashCode ();
                        
                        try {
-                               sectionCacheLock.EnterReadLock ();
+                               sectionCacheLock.EnterWriteLock ();
                                
                                object o;
                                if (pathPresent) {
@@ -468,7 +486,7 @@ namespace System.Web.Configuration {
                                if (sectionCache.TryGetValue (baseCacheKey, out o))
                                        return o;
                        } finally {
-                               sectionCacheLock.ExitReadLock ();
+                               sectionCacheLock.ExitWriteLock ();
                        }
 
                        string cachePath = null;
@@ -693,29 +711,19 @@ namespace System.Web.Configuration {
                {
                        object cachedSection;
 
+                       bool locked = false;
                        try {
-                               if (!sectionCacheLock.TryEnterUpgradeableReadLock (SECTION_CACHE_LOCK_TIMEOUT))
+                               if (!sectionCacheLock.TryEnterWriteLock (SECTION_CACHE_LOCK_TIMEOUT))
                                        return;
-                                       
+                               locked = true;
+
                                if (sectionCache.TryGetValue (key, out cachedSection) && cachedSection != null)
                                        return;
 
-                               try {
-                                       if (!sectionCacheLock.TryEnterWriteLock (SECTION_CACHE_LOCK_TIMEOUT))
-                                               return;
-                                       sectionCache.Add (key, section);
-                               } finally {
-                                       try {
-                                               sectionCacheLock.ExitWriteLock ();
-                                       } catch (SynchronizationLockException) {
-                                               // we can ignore it here
-                                       }
-                               }
+                               sectionCache.Add (key, section);
                        } finally {
-                               try {
-                                       sectionCacheLock.ExitUpgradeableReadLock ();
-                               } catch (SynchronizationLockException) {
-                                       // we can ignore it here
+                               if (locked) {
+                                       sectionCacheLock.ExitWriteLock ();
                                }
                        }
                }
index 377652f2aef91f01fc32b0b9658ce489580311dc..449b02e34be98f536b35dc7a3f49cc7b3dbb789b 100644 (file)
@@ -191,6 +191,7 @@ System.Web.Configuration_2.0/IConfigMapPath.cs
 System.Web.Configuration_2.0/IConfigMapPathFactory.cs
 System.Web.Configuration_2.0/IRemoteWebConfigurationHostServer.cs
 System.Web.Configuration_2.0/LowerCaseStringConverter.cs
+System.Web.Configuration_2.0/LruCache.cs
 System.Web.Configuration_2.0/MachineKeyRegistryStorage.cs
 System.Web.Configuration_2.0/MachineKeySection.cs
 System.Web.Configuration_2.0/MachineKeyValidation.cs
index cbb1746bdb06cab76b2daa6ff1321c2c2985677d..2e68a21a852dfd90b51c9520f2d8890f0362cb51 100644 (file)
@@ -329,6 +329,21 @@ namespace System.Web
                internal static HttpRuntimeSection Section { get { return runtime_section; } }
 
                public static bool UsingIntegratedPipeline { get { return false; } }
+
+#if NET_4_5
+               public static Version IISVersion {
+                       get {
+                               // Null means not hosted by IIS
+                               return null;
+                       }
+               }
+               
+               public static Version TargetFramework {
+                       get {
+                               return runtime_section.TargetFramework;
+                       }
+               }
+#endif
                
                [SecurityPermission (SecurityAction.Demand, UnmanagedCode = true)]
                public static void Close ()
diff --git a/mcs/class/System.Web/System.Web/MimeMapping.cs b/mcs/class/System.Web/System.Web/MimeMapping.cs
new file mode 100644 (file)
index 0000000..83bc872
--- /dev/null
@@ -0,0 +1,43 @@
+//
+// System.Web.MimeMapping
+//
+// Authors:
+//     Jb Evain (jbevain@gmail.com)
+//
+// (C) 2013 Jb Evain
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_5
+
+namespace System.Web {
+
+       public static class MimeMapping {
+
+               public static string GetMimeMapping (string fileName)
+               {
+                       return MimeTypes.GetMimeType (fileName);
+               }
+       }
+}
+
+#endif
index ee7207ac3acc06404b4666da21090ec833262642..b92554ec98aaad28d2464d75ed0e31a9b8b22ae0 100644 (file)
@@ -57,7 +57,17 @@ namespace MonoTests.System.Web.Util {
                        // changing last byte (padding)
                        byte be = encdata [encdata.Length - 1];
                        encdata [encdata.Length - 1] = ChangeByte (be);
-                       Assert.IsNull (MachineKeySectionUtils.Decrypt (section, encdata), "bad padding");
+                       byte[] result = MachineKeySectionUtils.Decrypt (section, encdata);
+                       // this will return null if a bad padding is detected - OTOH since we're using a random key and we
+                       // encrypt a random IV it's possible the decrypted stuff will randomly have a "valid" padding (there's
+                       // only so much possible values and the bots runs those tests pretty often and give false positive)
+                       // To avoid this we fallback to ensure the data is invalid (if should be empty)
+                       int total = 0;
+                       if (result != null) {
+                               for (int i=0; i < result.Length; i++)
+                                       total += result [i];
+                       }
+                       Assert.IsTrue (result == null || total != 0, "bad padding");
                }
 
                [Test]
index 40190ef13e38a1f22e486e92621d55f21c7ad87f..a7957a0019c0d67cd94082b0149f9e5e0c9ee4d7 100644 (file)
@@ -1 +1,3 @@
 #include net_4_0_System.Web.dll.sources
+
+System.Web/MimeMapping.cs
index fa24d6baacacc0dcfe3ad5337636c5459c05d263..5467f61b17b2f53a09dbf21c0667fb0d269785c0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B0EAE2CB-9823-4687-8119-43BA5386A28A}</ProjectGuid>\r
+    <ProjectGuid>{10DC3D0E-7781-4258-9344-B5808425D92E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms.DataVisualization-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 230bba6fd62079dafbef2967d35ab7370506c7ec..7087fbc0b6c76e5cf22017c0f4e3dea8878069f9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6CE40A14-711E-46EE-BAB4-AD83134C373E}</ProjectGuid>\r
+    <ProjectGuid>{47FD8F07-F207-478D-B9D7-4CE5DC4A52B6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms.DataVisualization-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 06d49033d76b4a8a70b199b7a9c11bc4b61a3a95..e2ff116d02ade1414e6f627f92adf54e7552f1ef 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4F29000A-D37F-4375-AF1D-9A81DB9D25AE}</ProjectGuid>\r
+    <ProjectGuid>{81C3AAD3-36A7-4615-B269-65200E84F433}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms.DataVisualization-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-net_4_0.csproj">\r
-      <Project>{B0EAE2CB-9823-4687-8119-43BA5386A28A}</Project>\r
+      <Project>{10DC3D0E-7781-4258-9344-B5808425D92E}</Project>\r
       <Name>System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 02295c14ed2d435e3c70b654c71056dd5c1c87b9..61cbb94c1c033bc71b4249e1a7260f790e292d12 100644 (file)
@@ -5,12 +5,13 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{05F331B4-99A2-4DCA-9283-EA1589BCDF39}</ProjectGuid>\r
+    <ProjectGuid>{B1643A3E-B53E-4264-8CA3-27533EF662CB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms.DataVisualization-tests-net_4_5</OutputPath>\r
     <NoStdLib>True</NoStdLib>\r
     <NoConfig>False</NoConfig>\r
+    \r
     <AppDesignerFolder>Properties</AppDesignerFolder>\r
     <RootNamespace>\r
     </RootNamespace>\r
@@ -48,7 +49,7 @@
     <Compile Include="Test\System.Windows.Forms.DataVisualization.Charting\ArrowAnnotationTest.cs" />\r
     <Compile Include="Test\System.Windows.Forms.DataVisualization.Charting\AxisScaleBreakStyleTest.cs" />\r
     <Compile Include="Test\System.Windows.Forms.DataVisualization.Charting\ChartElementTest.cs" />\r
-  </ItemGroup>\r
+    <Compile Include="Test\System.Windows.Forms.DataVisualization.Charting\ChartElementTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
@@ -58,6 +59,7 @@
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent>\r
+\r
     </PreBuildEvent>\r
     <PostBuildEvent>\r
       xcopy $(TargetName).* $(ProjectDir)..\lib\net_4_5\ /Y /R /D\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-net_4_5.csproj">\r
-      <Project>{6CE40A14-711E-46EE-BAB4-AD83134C373E}</Project>\r
+      <Project>{47FD8F07-F207-478D-B9D7-4CE5DC4A52B6}</Project>\r
       <Name>System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
-</Project>\r
+</Project>
diff --git a/mcs/class/System.Windows/AssemblyInfo.cs b/mcs/class/System.Windows/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..9c9952d
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Windows.dll")]
+[assembly: AssemblyDescription ("System.Windows.dll")]
+[assembly: AssemblyDefaultAlias ("System.Windows.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/System.Windows/Makefile b/mcs/class/System.Windows/Makefile
new file mode 100644 (file)
index 0000000..ebbccad
--- /dev/null
@@ -0,0 +1,12 @@
+thisdir = class/System.Windows
+SUBDIRS = 
+include ../../build/rules.make
+
+LIBRARY = System.Windows.dll
+LIB_MCS_FLAGS = /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../build/library.make
diff --git a/mcs/class/System.Windows/System.Windows.dll.sources b/mcs/class/System.Windows/System.Windows.dll.sources
new file mode 100644 (file)
index 0000000..d75b28a
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../build/common/Consts.cs
diff --git a/mcs/class/System.Windows/TypeForwarders.cs b/mcs/class/System.Windows/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..18ab654
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.INotifyCollectionChanged))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ObservableCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ReadOnlyObservableCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedAction))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedEventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Windows.Input.ICommand))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.INotifyDataErrorInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataErrorsChangedEventArgs))]
+
index 189e7729f270f5ab4a80e23fc65ee67ed68ce308..4a001a046fa8cd91f80fe2bde7534ad294ecae6a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A2433930-2BB3-4818-97D2-45A907CB7B3B}</ProjectGuid>\r
+    <ProjectGuid>{D513888C-71DC-4A65-B753-668FF8FB2CAA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-build</OutputPath>\r
@@ -458,11 +458,11 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-build.csproj">\r
-      <Project>{B8B2866D-592F-4888-A1CB-697AD0F3CADE}</Project>\r
+      <Project>{2BD930A2-88A9-4AD0-ADE7-1531552DF896}</Project>\r
       <Name>corlib\corlib-build</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-build.csproj">\r
-      <Project>{4C8FFAF4-4FE9-4377-821B-AFD255791495}</Project>\r
+      <Project>{DC4EE47D-CEB6-4592-994A-92C6B1D746FA}</Project>\r
       <Name>System\System-build</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2f225bfdff79415593c939577ec13e0a3672afb5..289b195693fe304f5394a233524bfab2dea8c6b5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{67A04408-CBEF-4B63-B975-29D827B0DBED}</ProjectGuid>\r
+    <ProjectGuid>{2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-net_2_0</OutputPath>\r
@@ -458,11 +458,11 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Configuration.dll">\r
index ddfcc385193f32abd0848885fc86309cc2c9a112..25f0e5358634131d5f413091099af8762d8b2231 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{18CD7C68-EF7C-4C7A-B8D6-FE9834145437}</ProjectGuid>\r
+    <ProjectGuid>{8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-net_4_0</OutputPath>\r
@@ -458,11 +458,11 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a03ab92a33c90986a852c85029b5368b9de0159f..64a019a21708e214541e2820d4a3544b0a65f3f4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</ProjectGuid>\r
+    <ProjectGuid>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-net_4_5-1</OutputPath>\r
@@ -458,11 +458,11 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6fd5d52bf725aee8995af1abe985b2eb0cff74e5..45d0d1cb016d8800f28dfac81b386df0bc936c93 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</ProjectGuid>\r
+    <ProjectGuid>{F96F7491-66DB-4291-8803-F2F165B33B55}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-net_4_5</OutputPath>\r
@@ -458,11 +458,11 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7c906066dcf59a22d98f6d00c0c95f15019d1c56..8950655893e47d67b8bd8256db4cf29761f28060 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2BE2BA3F-EBD9-4A13-B035-7AD4D348022B}</ProjectGuid>\r
+    <ProjectGuid>{CE970A1F-125E-4459-ABF6-7EF40D30E5AF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-tests-net_2_0</OutputPath>\r
@@ -184,19 +184,19 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Data.dll">\r
@@ -205,11 +205,11 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
       <Private>False</Private>\r
     </Reference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f8501ef065375270264280c9746be1c34df272fc..ab441d1bc1c3a4cca8b6d8c7d883edcb6f8aa357 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{511A45CE-918A-45B7-8D92-B64BDD8CE89E}</ProjectGuid>\r
+    <ProjectGuid>{4583C8A1-BC71-4A65-A936-238ADDC3E076}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-tests-net_4_0</OutputPath>\r
@@ -184,23 +184,23 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 230846342595c52bbd8b1a71752a34ba8d05408a..5417666e93fab2c3c4359748cbdde7ea1fc04860 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7FC476D7-BD8A-4AB5-969E-58A8D56D063C}</ProjectGuid>\r
+    <ProjectGuid>{A7538AE3-4C91-4482-B564-468B8753FD20}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-tests-net_4_5</OutputPath>\r
@@ -184,23 +184,23 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 779c8bd1e1ea3de3d279be722c5b3c4ba63d7c23..8ae833f9dcc623e4cf598cb7c7736764ecdc047e 100644 (file)
@@ -586,7 +586,7 @@ namespace MonoTests.System.Xml
                public void TestResolveUri ()
                {
                        XmlSchemaSet schemaSet = new XmlSchemaSet ();
-                       FileStream stream = new FileStream ("Test/XmlFiles/xsd/resolveUriSchema.xsd", FileMode.Open);
+                       FileStream stream = new FileStream ("Test/XmlFiles/xsd/resolveUriSchema.xsd", FileMode.Open, FileAccess.Read);
                        schemaSet.Add ("http://tempuri.org/resolveUriSchema.xsd", new XmlTextReader (stream));
 
                        XmlTestResolver resolver = new XmlTestResolver ();              
index 751242425ccbb4a706dc2bd24c6d8c464b7cf5ae..9e1c9f2b52e500ab541eec8e6a05a50406ea80a8 100644 (file)
@@ -1639,18 +1639,19 @@ namespace MonoTests.System.XmlSerialization
                [Test]
                public void Bug708178Type()
                {
+                       string file = Path.Combine (Path.GetTempPath (), "Bug708178Type.xml");
                        XmlSerializer xmlSerializer = new XmlSerializer (typeof(Bug708178Type));
                        Bug708178Type bugType = new Bug708178Type ();
                        bugType.Foo.Add ("test");
                        Assert.AreEqual (1, bugType.Foo.Count);
                 
                        //xml Serialize
-                       TextWriter WriteFileStream = new StreamWriter (@"Bug708178Type.xml", false);
+                       TextWriter WriteFileStream = new StreamWriter (file, false);
                        xmlSerializer.Serialize (WriteFileStream, bugType);
                        WriteFileStream.Close ();
                 
                        //xml Deserialize
-                       FileStream ReadFileStream = new FileStream (@"Bug708178Type.xml", FileMode.Open, FileAccess.Read, FileShare.Read);
+                       FileStream ReadFileStream = new FileStream (file, FileMode.Open, FileAccess.Read, FileShare.Read);
                        Bug708178Type bugTypeReload = (Bug708178Type)xmlSerializer.Deserialize (ReadFileStream);
                 
                        //should have deserialized the relationship
index 18cef9df4860bf0b7a921298714d6c6acc76b1bd..b276342806c1743a75280bfd13d3a79a0eedb38a 100644 (file)
@@ -36,10 +36,11 @@ namespace MonoTests.System.Xml.Xsl
                [Test]
                public void TestBasicTransform ()
                {
+                       string output = Path.Combine (Path.GetTempPath (), "result.xml");
                        doc.LoadXml ("<root/>");
                        xslt.Load ("Test/XmlFiles/xsl/empty.xsl");
-                       xslt.Transform ("Test/XmlFiles/xsl/empty.xsl", "Test/XmlFiles/xsl/result.xml");
-                       result.Load ("Test/XmlFiles/xsl/result.xml");
+                       xslt.Transform ("Test/XmlFiles/xsl/empty.xsl", output);
+                       result.Load (output);
                        Assert.AreEqual (2, result.ChildNodes.Count, "count");
                }
 
index 8f522a85e56a00cb2fed3a09dabf1d5ff5e14f0d..749e601abdaa53a98fce481c4c7cd278bb66a154 100644 (file)
@@ -1540,7 +1540,7 @@ namespace MonoTests.System.Xml
                // a bit revised version of bug #78706\r
                public void CreateFromUrlClose ()\r
                {\r
-                       string file = "Test/XmlFiles/78706.xml";\r
+                       string file = Path.Combine (Path.GetTempPath (), "78706.xml");\r
                        try {\r
                                if (!File.Exists (file))\r
                                        File.Create (file).Close ();\r
@@ -1560,7 +1560,7 @@ namespace MonoTests.System.Xml
                // a bit revised version of bug #385638\r
                public void CreateFromUrlClose2 ()\r
                {\r
-                       string file = "Test/XmlFiles/385638.xml";\r
+                       string file = Path.Combine (Path.GetTempPath (), "385638.xml");\r
                        try {\r
                                if (File.Exists (file))\r
                                        File.Delete (file);\r
index 552060abdffb8d28cc9ed5af3dc994dbf25a1926..1dc3d5584ce8b94f3f10e55c3c9961c4abe70f89 100644 (file)
@@ -820,18 +820,20 @@ namespace MonoTests.System.Xml
                // imported testcase from sys.security which had regression.\r
                public void ResolveEntityAndBaseURI ()\r
                {\r
+                       string world = Path.Combine (Path.GetTempPath (), "world.txt");\r
+                       string dtd = Path.Combine (Path.GetTempPath (), "doc.dtd");\r
                        try {\r
-                               using (TextWriter w = File.CreateText ("world.txt")) {\r
+                               using (TextWriter w = File.CreateText (world)) {\r
                                        w.WriteLine ("world");\r
                                }\r
-                               using (TextWriter w = File.CreateText ("doc.dtd")) {\r
+                               using (TextWriter w = File.CreateText (dtd)) {\r
                                        w.WriteLine ("<!-- dummy -->");\r
                                }\r
 \r
-                               string xml =  "<!DOCTYPE doc SYSTEM \"doc.dtd\" [\n" +\r
+                               string xml = String.Format ("<!DOCTYPE doc SYSTEM \"{1}\" [\n" +\r
                                        "<!ATTLIST doc attrExtEnt ENTITY #IMPLIED>\n" +\r
                                        "<!ENTITY ent1 \"Hello\">\n" +\r
-                                       "<!ENTITY ent2 SYSTEM \"world.txt\">\n" +\r
+                                       "<!ENTITY ent2 SYSTEM \"{0}\">\n" +\r
                                        "<!ENTITY entExt SYSTEM \"earth.gif\" NDATA gif>\n" +\r
                                        "<!NOTATION gif SYSTEM \"viewgif.exe\">\n" +\r
                                        "]>\n" +\r
@@ -839,7 +841,8 @@ namespace MonoTests.System.Xml
                                        "   &ent1;, &ent2;!\n" +\r
                                        "</doc>\n" +\r
                                        "\n" +\r
-                                       "<!-- Let world.txt contain \"world\" (excluding the quotes) -->\n";\r
+                                       "<!-- Let world.txt contain \"world\" (excluding the quotes) -->\n",\r
+                                       world, dtd);\r
 \r
                                XmlValidatingReader xvr =\r
                                        new XmlValidatingReader (\r
@@ -851,10 +854,10 @@ namespace MonoTests.System.Xml
                                doc.Load (xvr);\r
 \r
                        } finally {\r
-                               if (File.Exists ("world.txt"))\r
-                                       File.Delete ("world.txt");\r
-                               if (File.Exists ("doc.dtd"))\r
-                                       File.Delete ("doc.dtd");\r
+                               if (File.Exists (world))\r
+                                       File.Delete (world);\r
+                               if (File.Exists (dtd))\r
+                                       File.Delete (dtd);\r
                        }\r
                }\r
 \r
index 65865661c492f6a1d11e0bc35d868731a1d5da04..852bbda88c8f171bf3a351060a51dc17c4ff9436 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BBF0A00E-6A3D-4ECF-9272-C93076D628E7}</ProjectGuid>\r
+    <ProjectGuid>{98E9FB98-226C-4256-A22A-91819C4C33B6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Xaml-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b8d5354bc13d0348e7b96151acbf28a190de2b56..4cf5cbc6445ac0572cc64d7b64ba673495aad5ab 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{690E0C87-8516-4F5D-B105-1FEDC19AE99A}</ProjectGuid>\r
+    <ProjectGuid>{2E8547F9-AE9C-4179-BC88-C0695369170B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Xaml-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 514e01947623d3910a5c93db3e6069dc2477c829..39f482e4bd65b8b1a3b5e84e55b96e4a55b5d284 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F6C4BB5B-07D6-417E-9FF9-0EBD4D7A207A}</ProjectGuid>\r
+    <ProjectGuid>{52A4F0F5-20DA-4EC3-BF50-23D92DE2C5AB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Xaml-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xaml\System.Xaml-net_4_0.csproj">\r
-      <Project>{BBF0A00E-6A3D-4ECF-9272-C93076D628E7}</Project>\r
+      <Project>{98E9FB98-226C-4256-A22A-91819C4C33B6}</Project>\r
       <Name>System.Xaml\System.Xaml-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 52fce9ccce8282d08dc232ed61511480bb7a2822..366a74b61bb1d9721c9f4305f5aa8f8c1cabeb8c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2990557C-6AC5-4C9E-83B5-F47B0B9B48DD}</ProjectGuid>\r
+    <ProjectGuid>{10779E1B-BD7F-4FE1-81BB-E4EE8BAA0B83}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Xaml-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xaml\System.Xaml-net_4_5.csproj">\r
-      <Project>{690E0C87-8516-4F5D-B105-1FEDC19AE99A}</Project>\r
+      <Project>{2E8547F9-AE9C-4179-BC88-C0695369170B}</Project>\r
       <Name>System.Xaml\System.Xaml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f86d5b0f939d46e0e982ca379917c28e3a90fab3..644b3086116ee10ab721c4f5bd53a6dcaa1a789a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{32FB4911-5E84-4692-975C-23AB21BF215B}</ProjectGuid>\r
+    <ProjectGuid>{13E70866-6FF1-4D25-803F-BAE8CF945920}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml.Linq-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b89681a7eec9f8fe6421fdd4c958695a12b2050e..7c238321dc6f8f1f92c24707530146461117addf 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{802B1060-BD79-4648-A24E-D38F34AE29A0}</ProjectGuid>\r
+    <ProjectGuid>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml.Linq-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2eae663dc42b13fe690f994457b8556b7f3ecee4..7fb23f83ab4227e70d7d07c9932cb4e59d63004a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</ProjectGuid>\r
+    <ProjectGuid>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml.Linq-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ca9596d88dd988aedc105145946385d93eb799cf..3d3d6baae3b321f999374d3b4c978db98d162402 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0FA65F50-3FD8-4A29-B842-2847B429AF58}</ProjectGuid>\r
+    <ProjectGuid>{8D96EF98-273B-4549-96B1-02E608B841B8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml.Linq-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_2_0.csproj">\r
-      <Project>{32FB4911-5E84-4692-975C-23AB21BF215B}</Project>\r
+      <Project>{13E70866-6FF1-4D25-803F-BAE8CF945920}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b106e5d292f53458662481e7c87c912ac8a220bc..dd18bc4903e3dd148799b24c8065bffb3f54d010 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A1A49B89-9513-47C7-A26E-6E65BA38671F}</ProjectGuid>\r
+    <ProjectGuid>{7EFD1940-C3FA-4B91-85DB-9ABDAECE3AB2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml.Linq-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_0.csproj">\r
-      <Project>{802B1060-BD79-4648-A24E-D38F34AE29A0}</Project>\r
+      <Project>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a89e2150d4f793c2b7f823545a3949951f030077..0be3054c8f6d83da75a23e16f56e647b384a7d88 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{04C9F589-3AA1-4BCA-ABC1-ABBC7527783E}</ProjectGuid>\r
+    <ProjectGuid>{20A3B729-8CAB-4480-84BF-07E8CECE4CDB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml.Linq-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
diff --git a/mcs/class/System.Xml.Serialization/AssemblyInfo.cs b/mcs/class/System.Xml.Serialization/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..fb3bd00
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Xml.Serialization.dll")]
+[assembly: AssemblyDescription ("System.Xml.Serialization.dll")]
+[assembly: AssemblyDefaultAlias ("System.Xml.Serialization.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/System.Xml.Serialization/Makefile b/mcs/class/System.Xml.Serialization/Makefile
new file mode 100644 (file)
index 0000000..ff0d35d
--- /dev/null
@@ -0,0 +1,12 @@
+thisdir = class/System.Xml.Serialization
+SUBDIRS = 
+include ../../build/rules.make
+
+LIBRARY = System.Xml.Serialization.dll
+LIB_MCS_FLAGS = /r:System.Xml /r:System.ServiceModel
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../build/library.make
diff --git a/mcs/class/System.Xml.Serialization/System.Xml.Serialization.dll.sources b/mcs/class/System.Xml.Serialization/System.Xml.Serialization.dll.sources
new file mode 100644 (file)
index 0000000..d75b28a
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../build/common/Consts.cs
diff --git a/mcs/class/System.Xml.Serialization/TypeForwarders.cs b/mcs/class/System.Xml.Serialization/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..376e38d
--- /dev/null
@@ -0,0 +1,38 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlMapping))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlTypeMapping))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlMappingAccess))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.XmlSerializerFormatAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlArrayItemAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributeOverrides))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlElementAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyElementAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializerNamespaces))]
+
index 84425f018f70b02a04bc17ffd86cb8eac64b0da7..4a3bd989644fe5b88607775eebbb594d21ba00b6 100644 (file)
@@ -27,7 +27,7 @@ ifneq (1, $(FRAMEWORK_VERSION_MAJOR))
 LIB_MCS_FLAGS = -nowarn:618 -d:CONFIGURATION_2_0 -unsafe $(RESOURCE_FILES:%=-resource:%)
 TEST_MCS_FLAGS += -r:System.Configuration
 PROFILE_ANY_MOBILE := $(filter monotouch monodroid, $(PROFILE))
-NOT_SL := $(filter net_2_0 net_4_0 net_4_5 monotouch monotouch_runtime monodroid mobile, $(PROFILE))
+NOT_SL := $(filter net_2_0 net_4_0 net_4_5 monotouch_runtime monodroid mobile, $(PROFILE))
 endif
 ifeq (2.1, $(FRAMEWORK_VERSION))
 LIB_MCS_FLAGS += -d:INSIDE_SYSTEM
@@ -36,7 +36,7 @@ LIB_MCS_FLAGS += -d:SECURITY_DEP
 endif
 endif
 ifeq (monotouch, $(PROFILE))
-LIB_MCS_FLAGS += -d:FULL_AOT_RUNTIME
+LIB_MCS_FLAGS += -d:FULL_AOT_RUNTIME -d:SECURITY_DEP
 endif
 
 EXTRA_DISTFILES = \
index e5d9e5e7e669b6fa293eed9d2037467b419084eb..0f8322efc76c4d28f3d0d3573a5448059b630a1e 100644 (file)
@@ -1597,9 +1597,13 @@ namespace Mono.CSharp
 
                static void FillKeywordTable ()
                {
-                       keywordsTable = new Hashtable ();
-                       foreach (string keyword in keywords) {
-                               keywordsTable.Add (keyword, keyword);
+                       lock (keywords) {
+                               if (keywordsTable == null) {
+                                       keywordsTable = new Hashtable ();
+                                       foreach (string keyword in keywords) {
+                                               keywordsTable.Add (keyword, keyword);
+                                       }
+                               }
                        }
                }
 
index 784f1eef0b2e229d9fd701960d092bd069f9477a..0eb2c4aea2ef2c3b12fce8fe53ae6b6405474faf 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security.Protocol.Ntlm;
+#else
 extern alias MonoSecurity;
+using MonoSecurity::Mono.Security.Protocol.Ntlm;
+#endif
 
 using System;
 using System.Collections;
 using System.Net;
-using MonoSecurity::Mono.Security.Protocol.Ntlm;
 
 namespace Mono.Http
 {
index 76a123f5a12263ca91ba8c8d5e4cc96d425e13f8..9a09b1afa566121d2426bd7a35bbc2df0010fb87 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4C8FFAF4-4FE9-4377-821B-AFD255791495}</ProjectGuid>\r
+    <ProjectGuid>{DC4EE47D-CEB6-4592-994A-92C6B1D746FA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System-build</OutputPath>\r
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\corlib\Mono\DataConverter.cs" />\r
-    <Compile Include="..\corlib\System.Collections.Generic\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Collections\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\CyclicDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\IConcurrentDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\PopResult.cs" />\r
-    <Compile Include="..\corlib\System.Threading\AtomicBoolean.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeCompiler.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeGenerator.cs" />\r
     <Compile Include="System.Diagnostics\TraceSwitch.cs" />\r
     <Compile Include="System.Diagnostics\Win32EventLog.cs" />\r
     <Compile Include="System.Diagnostics\XmlWriterTraceListener.cs" />\r
+    <Compile Include="System.IO.Compression\CompressionLevel.cs" />\r
     <Compile Include="System.IO.Compression\CompressionMode.cs" />\r
     <Compile Include="System.IO.Compression\DeflateStream.cs" />\r
     <Compile Include="System.IO.Compression\GZipStream.cs" />\r
     <Compile Include="System.IO\InvalidDataException.cs" />\r
     <Compile Include="System.IO\IODescriptionAttribute.cs" />\r
     <Compile Include="System.IO\KeventWatcher.cs" />\r
-    <Compile Include="System.IO\MonoIO.cs" />\r
-    <Compile Include="System.IO\MonoIOError.cs" />\r
     <Compile Include="System.IO\MonoSyncFileStream.cs" />\r
     <Compile Include="System.IO\NotifyFilters.cs" />\r
     <Compile Include="System.IO\NullFileWatcher.cs" />\r
     <Compile Include="System.Net.Sockets\TransmitFileOptions.cs" />\r
     <Compile Include="System.Net.Sockets\UdpClient.cs" />\r
     <Compile Include="System.Net.Sockets\UdpReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocketOptions.cs" />\r
+    <Compile Include="System.Net.WebSockets\HttpListenerWebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketCloseStatus.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketError.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketException.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketMessageType.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketState.cs" />\r
     <Compile Include="System.Net\AuthenticationManager.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemes.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemeSelector.cs" />\r
     <Compile Include="System.Text.RegularExpressions\quicksearch.cs" />\r
     <Compile Include="System.Text.RegularExpressions\Regex.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexCompilationInfo.cs" />\r
+    <Compile Include="System.Text.RegularExpressions\RegexMatchTimeoutException.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexOptions.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunner.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunnerFactory.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-build.csproj">\r
-      <Project>{B8B2866D-592F-4888-A1CB-697AD0F3CADE}</Project>\r
+      <Project>{2BD930A2-88A9-4AD0-ADE7-1531552DF896}</Project>\r
       <Name>corlib\corlib-build</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-basic.csproj">\r
-      <Project>{E9DD3F8E-CFA0-4B07-885F-B37A3932A81D}</Project>\r
+      <Project>{347CC78E-794E-4BEF-BDAB-A0437E367442}</Project>\r
       <Name>System.XML\System.Xml-basic</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 8e1082a8b361176af64ca72fc525a7219666122e..acdb87cb6e4a116a8ca486f9752b5a882abd3825 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</ProjectGuid>\r
+    <ProjectGuid>{245C754C-D6DE-4434-BA78-37A93E196236}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\corlib\Mono\DataConverter.cs" />\r
-    <Compile Include="..\corlib\System.Collections.Generic\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Collections\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\CyclicDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\IConcurrentDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\PopResult.cs" />\r
-    <Compile Include="..\corlib\System.Threading\AtomicBoolean.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeCompiler.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeGenerator.cs" />\r
     <Compile Include="System.Diagnostics\TraceSwitch.cs" />\r
     <Compile Include="System.Diagnostics\Win32EventLog.cs" />\r
     <Compile Include="System.Diagnostics\XmlWriterTraceListener.cs" />\r
+    <Compile Include="System.IO.Compression\CompressionLevel.cs" />\r
     <Compile Include="System.IO.Compression\CompressionMode.cs" />\r
     <Compile Include="System.IO.Compression\DeflateStream.cs" />\r
     <Compile Include="System.IO.Compression\GZipStream.cs" />\r
     <Compile Include="System.IO\InvalidDataException.cs" />\r
     <Compile Include="System.IO\IODescriptionAttribute.cs" />\r
     <Compile Include="System.IO\KeventWatcher.cs" />\r
-    <Compile Include="System.IO\MonoIO.cs" />\r
-    <Compile Include="System.IO\MonoIOError.cs" />\r
     <Compile Include="System.IO\MonoSyncFileStream.cs" />\r
     <Compile Include="System.IO\NotifyFilters.cs" />\r
     <Compile Include="System.IO\NullFileWatcher.cs" />\r
     <Compile Include="System.Net.Sockets\TransmitFileOptions.cs" />\r
     <Compile Include="System.Net.Sockets\UdpClient.cs" />\r
     <Compile Include="System.Net.Sockets\UdpReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocketOptions.cs" />\r
+    <Compile Include="System.Net.WebSockets\HttpListenerWebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketCloseStatus.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketError.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketException.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketMessageType.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketState.cs" />\r
     <Compile Include="System.Net\AuthenticationManager.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemes.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemeSelector.cs" />\r
     <Compile Include="System.Text.RegularExpressions\quicksearch.cs" />\r
     <Compile Include="System.Text.RegularExpressions\Regex.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexCompilationInfo.cs" />\r
+    <Compile Include="System.Text.RegularExpressions\RegexMatchTimeoutException.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexOptions.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunner.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunnerFactory.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-build.csproj">\r
-      <Project>{A2433930-2BB3-4818-97D2-45A907CB7B3B}</Project>\r
+      <Project>{D513888C-71DC-4A65-B753-668FF8FB2CAA}</Project>\r
       <Name>System.XML\System.Xml-build</Name>\r
     </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Security\Mono.Security-build.csproj">\r
-      <Project>{4D1ABD9E-B23B-4C1F-9DF1-7E3407EC3914}</Project>\r
-      <Name>Mono.Security\Mono.Security-build</Name>\r
-    </ProjectReference>\r
     <Reference Include="System.Configuration.dll">\r
       <SpecificVersion>False</SpecificVersion>\r
       <HintPath>System.Configuration.dll</HintPath>\r
       <Private>False</Private>\r
     </Reference>\r
     <ProjectReference Include="..\System\System-build-1.csproj">\r
-      <Project>{C3638457-A40E-4E70-81B4-54ACB31DD76D}</Project>\r
+      <Project>{83D197B9-A796-4A0D-B8F9-930DD9415615}</Project>\r
       <Name>System\System-build-1</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\Mono.Security\Mono.Security-build.csproj">\r
+      <Project>{FC2EF2C1-8774-4DFE-AE47-9574374D3591}</Project>\r
+      <Name>Mono.Security\Mono.Security-build</Name>\r
+    </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
index cdabd5198dc9c310f5387feda83c733ce7abda6f..3dca305f9e4da0e66ea039420c953bfc6bfec317 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</ProjectGuid>\r
+    <ProjectGuid>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\corlib\Mono\DataConverter.cs" />\r
-    <Compile Include="..\corlib\System.Collections.Generic\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Collections\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\CyclicDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\IConcurrentDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\PopResult.cs" />\r
-    <Compile Include="..\corlib\System.Threading\AtomicBoolean.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeCompiler.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeGenerator.cs" />\r
     <Compile Include="System.Diagnostics\TraceSwitch.cs" />\r
     <Compile Include="System.Diagnostics\Win32EventLog.cs" />\r
     <Compile Include="System.Diagnostics\XmlWriterTraceListener.cs" />\r
+    <Compile Include="System.IO.Compression\CompressionLevel.cs" />\r
     <Compile Include="System.IO.Compression\CompressionMode.cs" />\r
     <Compile Include="System.IO.Compression\DeflateStream.cs" />\r
     <Compile Include="System.IO.Compression\GZipStream.cs" />\r
     <Compile Include="System.IO\InvalidDataException.cs" />\r
     <Compile Include="System.IO\IODescriptionAttribute.cs" />\r
     <Compile Include="System.IO\KeventWatcher.cs" />\r
-    <Compile Include="System.IO\MonoIO.cs" />\r
-    <Compile Include="System.IO\MonoIOError.cs" />\r
     <Compile Include="System.IO\MonoSyncFileStream.cs" />\r
     <Compile Include="System.IO\NotifyFilters.cs" />\r
     <Compile Include="System.IO\NullFileWatcher.cs" />\r
     <Compile Include="System.Net.Sockets\TransmitFileOptions.cs" />\r
     <Compile Include="System.Net.Sockets\UdpClient.cs" />\r
     <Compile Include="System.Net.Sockets\UdpReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocketOptions.cs" />\r
+    <Compile Include="System.Net.WebSockets\HttpListenerWebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketCloseStatus.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketError.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketException.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketMessageType.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketState.cs" />\r
     <Compile Include="System.Net\AuthenticationManager.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemes.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemeSelector.cs" />\r
     <Compile Include="System.Text.RegularExpressions\quicksearch.cs" />\r
     <Compile Include="System.Text.RegularExpressions\Regex.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexCompilationInfo.cs" />\r
+    <Compile Include="System.Text.RegularExpressions\RegexMatchTimeoutException.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexOptions.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunner.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunnerFactory.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
-    </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
+      <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
+    </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
index 202d7a4cbe9cc200f13075fe7b3bd1e48a58ed36..7d8e588fa41e06d08694c6ab9d562048feaea2b9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B53B8417-E392-4660-86F0-54E7B7FAD4BA}</ProjectGuid>\r
+    <ProjectGuid>{B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System-net_4_5-1</OutputPath>\r
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\corlib\Mono\DataConverter.cs" />\r
-    <Compile Include="..\corlib\System.Collections.Generic\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Collections\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\CyclicDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\IConcurrentDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\PopResult.cs" />\r
-    <Compile Include="..\corlib\System.Threading\AtomicBoolean.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeCompiler.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeGenerator.cs" />\r
     <Compile Include="System.Diagnostics\TraceSwitch.cs" />\r
     <Compile Include="System.Diagnostics\Win32EventLog.cs" />\r
     <Compile Include="System.Diagnostics\XmlWriterTraceListener.cs" />\r
+    <Compile Include="System.IO.Compression\CompressionLevel.cs" />\r
     <Compile Include="System.IO.Compression\CompressionMode.cs" />\r
     <Compile Include="System.IO.Compression\DeflateStream.cs" />\r
     <Compile Include="System.IO.Compression\GZipStream.cs" />\r
     <Compile Include="System.IO\InvalidDataException.cs" />\r
     <Compile Include="System.IO\IODescriptionAttribute.cs" />\r
     <Compile Include="System.IO\KeventWatcher.cs" />\r
-    <Compile Include="System.IO\MonoIO.cs" />\r
-    <Compile Include="System.IO\MonoIOError.cs" />\r
     <Compile Include="System.IO\MonoSyncFileStream.cs" />\r
     <Compile Include="System.IO\NotifyFilters.cs" />\r
     <Compile Include="System.IO\NullFileWatcher.cs" />\r
     <Compile Include="System.Net.Sockets\TransmitFileOptions.cs" />\r
     <Compile Include="System.Net.Sockets\UdpClient.cs" />\r
     <Compile Include="System.Net.Sockets\UdpReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocketOptions.cs" />\r
+    <Compile Include="System.Net.WebSockets\HttpListenerWebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketCloseStatus.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketError.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketException.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketMessageType.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketState.cs" />\r
     <Compile Include="System.Net\AuthenticationManager.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemes.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemeSelector.cs" />\r
     <Compile Include="System.Text.RegularExpressions\quicksearch.cs" />\r
     <Compile Include="System.Text.RegularExpressions\Regex.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexCompilationInfo.cs" />\r
+    <Compile Include="System.Text.RegularExpressions\RegexMatchTimeoutException.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexOptions.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunner.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunnerFactory.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</Project>\r
+      <Project>{F96F7491-66DB-4291-8803-F2F165B33B55}</Project>\r
       <Name>System.XML\System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
+      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
+    </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
index a5e0e82745a55c00842a8fc2abd28b63765bd45c..8a215931f33cfd6a20fa32514230eb374b5a7977 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{34966210-D64D-419C-94A4-9A6093CE5882}</ProjectGuid>\r
+    <ProjectGuid>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System-net_4_5-2</OutputPath>\r
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\corlib\Mono\DataConverter.cs" />\r
-    <Compile Include="..\corlib\System.Collections.Generic\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Collections\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\CyclicDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\IConcurrentDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\PopResult.cs" />\r
-    <Compile Include="..\corlib\System.Threading\AtomicBoolean.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeCompiler.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeGenerator.cs" />\r
     <Compile Include="System.Diagnostics\TraceSwitch.cs" />\r
     <Compile Include="System.Diagnostics\Win32EventLog.cs" />\r
     <Compile Include="System.Diagnostics\XmlWriterTraceListener.cs" />\r
+    <Compile Include="System.IO.Compression\CompressionLevel.cs" />\r
     <Compile Include="System.IO.Compression\CompressionMode.cs" />\r
     <Compile Include="System.IO.Compression\DeflateStream.cs" />\r
     <Compile Include="System.IO.Compression\GZipStream.cs" />\r
     <Compile Include="System.IO\InvalidDataException.cs" />\r
     <Compile Include="System.IO\IODescriptionAttribute.cs" />\r
     <Compile Include="System.IO\KeventWatcher.cs" />\r
-    <Compile Include="System.IO\MonoIO.cs" />\r
-    <Compile Include="System.IO\MonoIOError.cs" />\r
     <Compile Include="System.IO\MonoSyncFileStream.cs" />\r
     <Compile Include="System.IO\NotifyFilters.cs" />\r
     <Compile Include="System.IO\NullFileWatcher.cs" />\r
     <Compile Include="System.Net.Sockets\TransmitFileOptions.cs" />\r
     <Compile Include="System.Net.Sockets\UdpClient.cs" />\r
     <Compile Include="System.Net.Sockets\UdpReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocketOptions.cs" />\r
+    <Compile Include="System.Net.WebSockets\HttpListenerWebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketCloseStatus.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketError.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketException.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketMessageType.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketState.cs" />\r
     <Compile Include="System.Net\AuthenticationManager.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemes.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemeSelector.cs" />\r
     <Compile Include="System.Text.RegularExpressions\quicksearch.cs" />\r
     <Compile Include="System.Text.RegularExpressions\Regex.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexCompilationInfo.cs" />\r
+    <Compile Include="System.Text.RegularExpressions\RegexMatchTimeoutException.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexOptions.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunner.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunnerFactory.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</Project>\r
+      <Project>{F96F7491-66DB-4291-8803-F2F165B33B55}</Project>\r
       <Name>System.XML\System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-1.csproj">\r
-      <Project>{B53B8417-E392-4660-86F0-54E7B7FAD4BA}</Project>\r
+      <Project>{B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}</Project>\r
       <Name>System\System-net_4_5-1</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
+      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
+    </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
index 6e4a29c843ad2e18ccc18e66ca91d360ad65ad91..8287772af3db97744b6df74875a6fda3a49c27a4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{443B892C-060C-4829-839D-FE539CDEC5D9}</ProjectGuid>\r
+    <ProjectGuid>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\corlib\Mono\DataConverter.cs" />\r
-    <Compile Include="..\corlib\System.Collections.Generic\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Collections\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\CyclicDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\IConcurrentDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\PopResult.cs" />\r
-    <Compile Include="..\corlib\System.Threading\AtomicBoolean.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeCompiler.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeGenerator.cs" />\r
     <Compile Include="System.Diagnostics\TraceSwitch.cs" />\r
     <Compile Include="System.Diagnostics\Win32EventLog.cs" />\r
     <Compile Include="System.Diagnostics\XmlWriterTraceListener.cs" />\r
+    <Compile Include="System.IO.Compression\CompressionLevel.cs" />\r
     <Compile Include="System.IO.Compression\CompressionMode.cs" />\r
     <Compile Include="System.IO.Compression\DeflateStream.cs" />\r
     <Compile Include="System.IO.Compression\GZipStream.cs" />\r
     <Compile Include="System.IO\InvalidDataException.cs" />\r
     <Compile Include="System.IO\IODescriptionAttribute.cs" />\r
     <Compile Include="System.IO\KeventWatcher.cs" />\r
-    <Compile Include="System.IO\MonoIO.cs" />\r
-    <Compile Include="System.IO\MonoIOError.cs" />\r
     <Compile Include="System.IO\MonoSyncFileStream.cs" />\r
     <Compile Include="System.IO\NotifyFilters.cs" />\r
     <Compile Include="System.IO\NullFileWatcher.cs" />\r
     <Compile Include="System.Net.Sockets\TransmitFileOptions.cs" />\r
     <Compile Include="System.Net.Sockets\UdpClient.cs" />\r
     <Compile Include="System.Net.Sockets\UdpReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocketOptions.cs" />\r
+    <Compile Include="System.Net.WebSockets\HttpListenerWebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketCloseStatus.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketError.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketException.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketMessageType.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketState.cs" />\r
     <Compile Include="System.Net\AuthenticationManager.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemes.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemeSelector.cs" />\r
     <Compile Include="System.Text.RegularExpressions\quicksearch.cs" />\r
     <Compile Include="System.Text.RegularExpressions\Regex.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexCompilationInfo.cs" />\r
+    <Compile Include="System.Text.RegularExpressions\RegexMatchTimeoutException.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexOptions.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunner.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunnerFactory.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
-    </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
+      <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
+    </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
index 4a98df203f0390656a0d3916173ca5f72d58df8a..56aae8c79ae5ceb8eccb60c14d32dad7fb80d9e2 100644 (file)
@@ -5,9 +5,9 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{76A71BC0-3D69-40C6-BF09-46F7B0009F00}</ProjectGuid>\r
+    <ProjectGuid>{F311EB21-B217-44F5-B4CB-96A7A4692C2E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <OutputPath>bin\Debug\System-tests-net_2_0</OutputPath>\r
     <NoStdLib>True</NoStdLib>\r
     <NoConfig>False</NoConfig>\r
@@ -22,7 +22,7 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <Optimize>false</Optimize>\r
     <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
@@ -30,7 +30,7 @@
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
     <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <Optimize>true</Optimize>\r
     <DefineConstants>NET_1_1;NET_2_0</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
@@ -44,7 +44,6 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromCompileUnitTest.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromExpressionTest.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromNamespaceTest.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Drawing.dll">\r
       <Private>False</Private>\r
     </Reference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Data">\r
       <Private>False</Private>\r
     </Reference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0.csproj">\r
-      <Project>{67A04408-CBEF-4B63-B975-29D827B0DBED}</Project>\r
+      <Project>{2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}</Project>\r
       <Name>System.XML\System.Xml-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fc7dee239ad55299d4d8baf1d4829ea824763e64..ac27d614dc71e99a1d05e0d5f9621312bd8b22b5 100644 (file)
@@ -5,9 +5,9 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{29AFC20E-0D3A-46E8-B41F-034DD6AC9D31}</ProjectGuid>\r
+    <ProjectGuid>{3CF54815-AE4B-40C1-9FFA-8291CA826229}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <OutputPath>bin\Debug\System-tests-net_4_0</OutputPath>\r
     <NoStdLib>True</NoStdLib>\r
     <NoConfig>False</NoConfig>\r
@@ -22,7 +22,7 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <Optimize>false</Optimize>\r
     <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
@@ -30,7 +30,7 @@
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
     <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <Optimize>true</Optimize>\r
     <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
@@ -44,7 +44,6 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromCompileUnitTest.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromExpressionTest.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromNamespaceTest.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0.csproj">\r
-      <Project>{18CD7C68-EF7C-4C7A-B8D6-FE9834145437}</Project>\r
+      <Project>{8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}</Project>\r
       <Name>System.XML\System.Xml-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 30b1f602f764831bbf3bdfc8a59755cc8d601534..13882879817c1924435ef81507c324145a1402d8 100644 (file)
@@ -5,9 +5,9 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3B85CE19-864B-4F81-A0C3-A60C25CE8DB3}</ProjectGuid>\r
+    <ProjectGuid>{BC3F4974-B76D-41FF-B96C-091EA918A837}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <OutputPath>bin\Debug\System-tests-net_4_5</OutputPath>\r
     <NoStdLib>True</NoStdLib>\r
     <NoConfig>False</NoConfig>\r
@@ -22,7 +22,7 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <Optimize>false</Optimize>\r
     <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
@@ -30,7 +30,7 @@
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
     <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <Optimize>true</Optimize>\r
     <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
@@ -44,7 +44,6 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromCompileUnitTest.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromExpressionTest.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromNamespaceTest.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</Project>\r
+      <Project>{F96F7491-66DB-4291-8803-F2F165B33B55}</Project>\r
       <Name>System.XML\System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c1190b2ad26d67daeeecc6c79191814e56db3879..2eaec862bda11b699875eb110f37849fb71b1134 100644 (file)
@@ -629,7 +629,7 @@ namespace System.Collections.Generic
                        int right = len-1;
 
                        while (left <= right) {
-                               int guess = (left + right) >> 1;
+                               int guess = left + ((right - left) >> 1);
 
                                int cmp = Compare (table[guess].Key, key);
                                if (cmp == 0) return guess;
index 14540ba084dacd1ea600839c702c781ce5f3b5f2..216cde7fa24ed4a667d4090421e33527c12bd08f 100644 (file)
@@ -141,6 +141,7 @@ namespace System.Diagnostics
 
                private void GetConfigFileSetting ()
                {
+#if !MOBILE
                        IDictionary d = (IDictionary) DiagnosticsConfiguration.Settings ["switches"];
                        
                        // Load up the specified switch
@@ -154,6 +155,7 @@ namespace System.Diagnostics
                                        return;
                                }
                        }
+#endif  // !MOBILE
 
                        if (defaultSwitchValue != null) {
                                value = defaultSwitchValue;
index 83ed38408f62d70a71a45b8de0597bf58b207887..55a8362a5519e2a7ff067515377eccdee5a9b27a 100644 (file)
@@ -163,7 +163,6 @@ namespace System.Diagnostics {
                }
 
                static bool use_global_lock;
-#if !MOBILE
                static CorrelationManager correlation_manager = new CorrelationManager ();
 
                public static CorrelationManager CorrelationManager {
@@ -172,7 +171,6 @@ namespace System.Diagnostics {
                                return correlation_manager;
                        }
                }
-#endif
 
                [MonoLimitation ("the property exists but it does nothing.")]
                public static bool UseGlobalLock {
index a99e77a2e6fd3825e05e454478ac91684bee921b..e804235386a69b9cc065b77925c37c4ba94a8890 100644 (file)
@@ -1,12 +1,12 @@
 //
 // TraceSource.cs
 //
-// Author:
+// Authors:
 //     Atsushi Enomoto  <atsushi@ximian.com>
+//     Marek Safar (marek.safar@gmail.com)
 //
 // Copyright (C) 2007 Novell, Inc.
-//
-
+// Copyright 2013 Xamarin Inc
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -45,17 +45,21 @@ namespace System.Diagnostics
                {
                }
 
-               public TraceSource (string name, SourceLevels sourceLevels)
+               public TraceSource (string name, SourceLevels defaultLevel)
                {
                        if (name == null)
                                throw new ArgumentNullException ("name");
+                       if (name.Length == 0)
+                               throw new ArgumentException ("name");
+                       
                        Hashtable sources = DiagnosticsConfiguration.Settings ["sources"] as Hashtable;
                        TraceSourceInfo info = sources != null ? sources [name] as TraceSourceInfo : null;
                        source_switch = new SourceSwitch (name);
 
-                       if (info == null)
+                       if (info == null) {
                                listeners = new TraceListenerCollection ();
-                       else {
+                               source_switch.Level = defaultLevel;
+                       } else {
                                source_switch.Level = info.Levels;
                                listeners = info.Listeners;
                        }
index e3113f500f2d5d69df61018d08cd9dcfbaff3009..5b496e14ce55587de1c814557d30cfd9afce411c 100644 (file)
 //
 
 #if SECURITY_DEP
+
+#if MONOTOUCH
+using System.Security.Cryptography.X509Certificates;
+#else
 extern alias PrebuiltSystem;
+using X509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#endif
+
 #endif
 
 using System;
@@ -49,10 +56,6 @@ using System.Configuration;
 using System.Net.Security;
 using System.Security.Authentication;
 
-#if SECURITY_DEP
-using X509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
-#endif
-
 namespace System.Net.Mail {
        public class SmtpClient
 #if NET_4_0
index 90af94f55fe8056459fccc067df6ecb464b4ab95..c60954c949edbae9cba5756c031f8b9b79e4706a 100644 (file)
@@ -1,10 +1,12 @@
 //
 // System.Net.NetworkInformation.NetworkChange
 //
-// Author:
+// Authors:
 //     Gonzalo Paniagua Javier (gonzalo@novell.com)
+//  Aaron Bockover (abock@xamarin.com)
 //
 // Copyright (c) 2006,2011 Novell, Inc. (http://www.novell.com)
+// Copyright (c) 2013 Xamarin, Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,39 +33,161 @@ using System.Runtime.InteropServices;
 using System.Threading;
 
 namespace System.Net.NetworkInformation {
+       internal interface INetworkChange {
+               event NetworkAddressChangedEventHandler NetworkAddressChanged;
+               event NetworkAvailabilityChangedEventHandler NetworkAvailabilityChanged;
+       }
+
        public sealed class NetworkChange {
+               static INetworkChange networkChange;
+
+               static NetworkChange ()
+               {
+                       if (MacNetworkChange.IsEnabled) {
+                               networkChange = new MacNetworkChange ();
+                       } else {
+                               networkChange = new LinuxNetworkChange ();
+                       }
+               }
+
+               public static event NetworkAddressChangedEventHandler NetworkAddressChanged {
+                       add { networkChange.NetworkAddressChanged += value; }
+                       remove { networkChange.NetworkAddressChanged -= value; }
+               }
+
+               public static event NetworkAvailabilityChangedEventHandler NetworkAvailabilityChanged {
+                       add { networkChange.NetworkAvailabilityChanged += value; }
+                       remove { networkChange.NetworkAvailabilityChanged -= value; }
+               }
+       }
+
+       internal sealed class MacNetworkChange : INetworkChange {
+               public static bool IsEnabled {
+                       get { return mono_sc_reachability_enabled () != 0; }
+               }
+
+               event NetworkAddressChangedEventHandler networkAddressChanged;
+               event NetworkAvailabilityChangedEventHandler networkAvailabilityChanged;
+
+               public event NetworkAddressChangedEventHandler NetworkAddressChanged {
+                       add {
+                               if (value != null) {
+                                       MaybeInitialize ();
+                                       networkAddressChanged += value;
+                                       value (null, EventArgs.Empty);
+                               }
+                       }
+
+                       remove {
+                               networkAddressChanged -= value;
+                               MaybeDispose ();
+                       }
+               }
+
+               public event NetworkAvailabilityChangedEventHandler NetworkAvailabilityChanged {
+                       add {
+                               if (value != null) {
+                                       MaybeInitialize ();
+                                       networkAvailabilityChanged += value;
+                                       var available = handle != IntPtr.Zero && mono_sc_reachability_is_available (handle) != 0;
+                                       value (null, new NetworkAvailabilityEventArgs (available));
+                               }
+                       }
+
+                       remove {
+                               networkAvailabilityChanged -= value;
+                               MaybeDispose ();
+                       }
+               }
+
+               IntPtr handle;
+               MonoSCReachabilityCallback callback;
+
+               void Callback (int available)
+               {
+                       var addressChanged = networkAddressChanged;
+                       if (addressChanged != null) {
+                               addressChanged (null, EventArgs.Empty);
+                       }
+
+                       var availabilityChanged = networkAvailabilityChanged;
+                       if (availabilityChanged != null) {
+                               availabilityChanged (null, new NetworkAvailabilityEventArgs (available != 0));
+                       }
+               }
+
+               void MaybeInitialize ()
+               {
+                       lock (this) {
+                               if (handle == IntPtr.Zero) {
+                                       callback = new MonoSCReachabilityCallback (Callback);
+                                       handle = mono_sc_reachability_new (callback);
+                               }
+                       }
+               }
+
+               void MaybeDispose ()
+               {
+                       lock (this) {
+                               var addressChanged = networkAddressChanged;
+                               var availabilityChanged = networkAvailabilityChanged;
+                               if (handle != IntPtr.Zero && addressChanged == null && availabilityChanged == null) {
+                                       mono_sc_reachability_free (handle);
+                                       handle = IntPtr.Zero;
+                               }
+                       }
+               }
+
+#if MONOTOUCH || MONODROID
+               const string LIBNAME = "__Internal";
+#else
+               const string LIBNAME = "MonoPosixHelper";
+#endif
+
+               delegate void MonoSCReachabilityCallback (int available);
+
+               [DllImport (LIBNAME)]
+               static extern int mono_sc_reachability_enabled ();
+
+               [DllImport (LIBNAME)]
+               static extern IntPtr mono_sc_reachability_new (MonoSCReachabilityCallback callback);
+
+               [DllImport (LIBNAME)]
+               static extern void mono_sc_reachability_free (IntPtr handle);
+
+               [DllImport (LIBNAME)]
+               static extern int mono_sc_reachability_is_available (IntPtr handle);
+       }
+
+       internal sealed class LinuxNetworkChange : INetworkChange {
                [Flags]
                enum EventType {
                        Availability = 1 << 0,
                        Address = 1 << 1,
                }
 
-               static object _lock = new object ();
-               static Socket nl_sock;
-               static SocketAsyncEventArgs nl_args;
-               static EventType pending_events;
-               static Timer timer;
+               object _lock = new object ();
+               Socket nl_sock;
+               SocketAsyncEventArgs nl_args;
+               EventType pending_events;
+               Timer timer;
 
-               static NetworkAddressChangedEventHandler AddressChanged;
-               static NetworkAvailabilityChangedEventHandler AvailabilityChanged;
+               NetworkAddressChangedEventHandler AddressChanged;
+               NetworkAvailabilityChangedEventHandler AvailabilityChanged;
 
-               private NetworkChange ()
-               {
-               }
-
-               public static event NetworkAddressChangedEventHandler NetworkAddressChanged {
+               public event NetworkAddressChangedEventHandler NetworkAddressChanged {
                        add { Register (value); }
                        remove { Unregister (value); }
                }
 
-               public static event NetworkAvailabilityChangedEventHandler NetworkAvailabilityChanged {
+               public event NetworkAvailabilityChangedEventHandler NetworkAvailabilityChanged {
                        add { Register (value); }
                        remove { Unregister (value); }
                }
 
                //internal Socket (AddressFamily family, SocketType type, ProtocolType proto, IntPtr sock)
 
-               static bool EnsureSocket ()
+               bool EnsureSocket ()
                {
                        lock (_lock) {
                                if (nl_sock != null)
@@ -82,7 +206,7 @@ namespace System.Net.NetworkInformation {
                }
 
                // _lock is held by the caller
-               static void MaybeCloseSocket ()
+               void MaybeCloseSocket ()
                {
                        if (nl_sock == null || AvailabilityChanged != null || AddressChanged != null)
                                return;
@@ -93,7 +217,7 @@ namespace System.Net.NetworkInformation {
                        nl_args = null;
                }
 
-               static bool GetAvailability ()
+               bool GetAvailability ()
                {
                        NetworkInterface [] adapters = NetworkInterface.GetAllNetworkInterfaces ();
                        foreach (NetworkInterface n in adapters) {
@@ -106,19 +230,19 @@ namespace System.Net.NetworkInformation {
                        return false;
                }
 
-               static void OnAvailabilityChanged (object unused)
+               void OnAvailabilityChanged (object unused)
                {
                        NetworkAvailabilityChangedEventHandler d = AvailabilityChanged;
                        d (null, new NetworkAvailabilityEventArgs (GetAvailability ()));
                }
 
-               static void OnAddressChanged (object unused)
+               void OnAddressChanged (object unused)
                {
                        NetworkAddressChangedEventHandler d = AddressChanged;
                        d (null, EventArgs.Empty);
                }
 
-               static void OnEventDue (object unused)
+               void OnEventDue (object unused)
                {
                        EventType evts;
                        lock (_lock) {
@@ -132,7 +256,7 @@ namespace System.Net.NetworkInformation {
                                ThreadPool.QueueUserWorkItem (OnAddressChanged);
                }
 
-               static void QueueEvent (EventType type)
+               void QueueEvent (EventType type)
                {
                        lock (_lock) {
                                if (timer == null)
@@ -143,7 +267,7 @@ namespace System.Net.NetworkInformation {
                        }
                }
 
-               unsafe static void OnDataAvailable (object sender, SocketAsyncEventArgs args)
+               unsafe void OnDataAvailable (object sender, SocketAsyncEventArgs args)
                {
                        EventType type;
                        fixed (byte *ptr = args.Buffer) {       
@@ -154,19 +278,19 @@ namespace System.Net.NetworkInformation {
                                QueueEvent (type);
                }
 
-               static void Register (NetworkAddressChangedEventHandler d)
+               void Register (NetworkAddressChangedEventHandler d)
                {
                        EnsureSocket ();
                        AddressChanged += d;
                }
 
-               static void Register (NetworkAvailabilityChangedEventHandler d)
+               void Register (NetworkAvailabilityChangedEventHandler d)
                {
                        EnsureSocket ();
                        AvailabilityChanged += d;
                }
 
-               static void Unregister (NetworkAddressChangedEventHandler d)
+               void Unregister (NetworkAddressChangedEventHandler d)
                {
                        lock (_lock) {
                                AddressChanged -= d;
@@ -174,7 +298,7 @@ namespace System.Net.NetworkInformation {
                        }
                }
 
-               static void Unregister (NetworkAvailabilityChangedEventHandler d)
+               void Unregister (NetworkAvailabilityChangedEventHandler d)
                {
                        lock (_lock) {
                                AvailabilityChanged -= d;
index 0597a165f084b82c262eab6def22a252f5045831..880b909fad16b0a93e3bc827676254f38cdc2a33 100644 (file)
@@ -41,15 +41,21 @@ using System.Globalization;
 
 namespace System.Net.NetworkInformation {
        public abstract class NetworkInterface {
+#if MONOTOUCH
+               internal const bool runningOnUnix = true;
+#else
                static Version windowsVer51 = new Version (5, 1);
                static internal readonly bool runningOnUnix = (Environment.OSVersion.Platform == PlatformID.Unix);
-               
+#endif 
                protected NetworkInterface ()
                {
                }
 
                public static NetworkInterface [] GetAllNetworkInterfaces ()
                {
+#if MONOTOUCH
+                       return MacOsNetworkInterface.ImplGetAllNetworkInterfaces ();
+#else
                        if (runningOnUnix) {
                                try {
                                        if (Platform.IsMacOS)
@@ -66,6 +72,7 @@ namespace System.Net.NetworkInformation {
                                        return Win32NetworkInterface2.ImplGetAllNetworkInterfaces ();
                                return new NetworkInterface [0];
                        }
+#endif
                }
 
                [MonoTODO("Always returns true")]
index a10abf90489f7519d6a4630dc261c015dfe8517d..0cbf96fda2f404cfe61dfc0c125abc5dbe4077dd 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+#else
 extern alias PrebuiltSystem;
-
 using X509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#endif
 
 using System.Security.Cryptography.X509Certificates;
 
index 0ea27f465281db75b0d12f30ecf9e57a9955edfc..331d4cb8045f275f588859fd6cb08e9a1ad66516 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security.Protocol.Tls;
+
+using CipherAlgorithmType = System.Security.Authentication.CipherAlgorithmType;
+using HashAlgorithmType = System.Security.Authentication.HashAlgorithmType;
+using ExchangeAlgorithmType = System.Security.Authentication.ExchangeAlgorithmType;
+
+using MonoCipherAlgorithmType = Mono.Security.Protocol.Tls.CipherAlgorithmType;
+using MonoHashAlgorithmType = Mono.Security.Protocol.Tls.HashAlgorithmType;
+using MonoExchangeAlgorithmType = Mono.Security.Protocol.Tls.ExchangeAlgorithmType;
+using MonoSecurityProtocolType = Mono.Security.Protocol.Tls.SecurityProtocolType;
+#else
 extern alias PrebuiltSystem;
 extern alias MonoSecurity;
 
 using X509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
 
-using System;
-using System.IO;
-using System.Net;
-using System.Security.Authentication;
-using System.Security.Cryptography.X509Certificates;
-using System.Security.Principal;
-using System.Security.Cryptography;
-using MonoSecurity::Mono.Security.Protocol.Tls;
-
 using CipherAlgorithmType = System.Security.Authentication.CipherAlgorithmType;
 using HashAlgorithmType = System.Security.Authentication.HashAlgorithmType;
 using ExchangeAlgorithmType = System.Security.Authentication.ExchangeAlgorithmType;
@@ -57,6 +60,17 @@ using MonoHashAlgorithmType = MonoSecurity::Mono.Security.Protocol.Tls.HashAlgor
 using MonoExchangeAlgorithmType = MonoSecurity::Mono.Security.Protocol.Tls.ExchangeAlgorithmType;
 using MonoSecurityProtocolType = MonoSecurity::Mono.Security.Protocol.Tls.SecurityProtocolType;
 
+using MonoSecurity::Mono.Security.Protocol.Tls;
+#endif
+
+using System;
+using System.IO;
+using System.Net;
+using System.Security.Authentication;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.Security.Cryptography;
+
 #if NET_4_5
 using System.Threading.Tasks;
 #endif
@@ -353,7 +367,12 @@ namespace System.Net.Security
                                return null;
                        };
 
-                       if (validation_callback != null)
+                       if (validation_callback != null) {
+#if MONOTOUCH
+                               var helper = new ServicePointManager.ChainValidationHelper (this, targetHost);
+                               helper.ServerCertificateValidationCallback = validation_callback;
+                               s.ServerCertValidation2 += new CertificateValidationCallback2 (helper.ValidateChain);
+#else
                                s.ServerCertValidationDelegate = delegate (X509Certificate cert, int [] certErrors) {
                                        X509Chain chain = new X509Chain ();
                                        X509Certificate2 x2 = (cert as X509Certificate2);
@@ -393,6 +412,8 @@ namespace System.Net.Security
 
                                        return validation_callback (this, cert, chain, errors);
                                };
+#endif
+                       }
                        if (selection_callback != null)
                                s.ClientCertSelectionDelegate = OnCertificateSelection;
 
index cc9e0f618f686a96cfd8317461abbc4e3cb86ed8..a453d70e43fa9043f3e0ffd85690e57974f9b99e 100644 (file)
@@ -11,7 +11,6 @@
 //    http://www.myelin.co.nz
 // (c) 2004-2011 Novell, Inc. (http://www.novell.com)
 //
-
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -55,6 +54,8 @@ namespace System.Net.Sockets
                private bool useoverlappedIO;
                private const int SOCKET_CLOSED = 10004;
 
+               private static readonly string timeout_exc_msg = "A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond";
+
                static void AddSockets (List<Socket> sockets, IList list, string name)
                {
                        if (list != null) {
@@ -1494,20 +1495,7 @@ namespace System.Net.Sockets
 
                public int Receive (byte [] buffer)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
-
-                       SocketError error;
-
-                       int ret = Receive_nochecks (buffer, 0, buffer.Length, SocketFlags.None, out error);
-                       
-                       if (error != SocketError.Success)
-                               throw new SocketException ((int) error);
-
-                       return ret;
+                       return Receive (buffer, SocketFlags.None);
                }
 
                public int Receive (byte [] buffer, SocketFlags flags)
@@ -1524,7 +1512,7 @@ namespace System.Net.Sockets
                        
                        if (error != SocketError.Success) {
                                if (error == SocketError.WouldBlock && blocking) // This might happen when ReceiveTimeout is set
-                                       throw new SocketException ((int) error, "Operation timed out.");
+                                       throw new SocketException ((int) error, timeout_exc_msg);
                                throw new SocketException ((int) error);
                        }
 
@@ -1547,7 +1535,7 @@ namespace System.Net.Sockets
                        
                        if (error != SocketError.Success) {
                                if (error == SocketError.WouldBlock && blocking) // This might happen when ReceiveTimeout is set
-                                       throw new SocketException ((int) error, "Operation timed out.");
+                                       throw new SocketException ((int) error, timeout_exc_msg);
                                throw new SocketException ((int) error);
                        }
 
@@ -1570,7 +1558,7 @@ namespace System.Net.Sockets
                        
                        if (error != SocketError.Success) {
                                if (error == SocketError.WouldBlock && blocking) // This might happen when ReceiveTimeout is set
-                                       throw new SocketException ((int) error, "Operation timed out.");
+                                       throw new SocketException ((int) error, timeout_exc_msg);
                                throw new SocketException ((int) error);
                        }
 
@@ -1709,7 +1697,7 @@ namespace System.Net.Sockets
                                        connected = false;
                                else if (err == SocketError.WouldBlock && blocking) { // This might happen when ReceiveTimeout is set
                                        if (throwOnError)       
-                                               throw new SocketException ((int) SocketError.TimedOut, "Operation timed out");
+                                               throw new SocketException ((int) SocketError.TimedOut, timeout_exc_msg);
                                        error = (int) SocketError.TimedOut;
                                        return 0;
                                }
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f04cb3c054343cab67538bc1473ce826cc0ce76c 100644 (file)
@@ -0,0 +1,97 @@
+//
+// ClientWebSocket.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if NET_4_5
+
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace System.Net.WebSockets
+{
+       [MonoTODO]
+       public class ClientWebSocket : WebSocket
+       {
+               public ClientWebSocketOptions Options {
+                       get { throw new NotImplementedException (); }
+               }
+
+               public Task ConnectAsync (Uri uri, CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               #region implemented abstract members of WebSocket
+               public override void Abort ()
+               {
+                       throw new NotImplementedException ();
+               }
+               public override Task CloseAsync (WebSocketCloseStatus closeStatus, string statusDescription, CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+               public override Task CloseOutputAsync (WebSocketCloseStatus closeStatus, string statusDescription, CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+               public override Task<WebSocketReceiveResult> ReceiveAsync (ArraySegment<byte> buffer, CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+               public override Task SendAsync (ArraySegment<byte> buffer, WebSocketMessageType messageType, bool endOfMessage, CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+               public override void Dispose ()
+               {
+                       throw new NotImplementedException ();
+               }
+               public override WebSocketCloseStatus? CloseStatus {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               public override string CloseStatusDescription {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               public override WebSocketState State {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               public override string SubProtocol {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               #endregion
+       }
+}
+
+#endif
+
index 903d52755b942ad10c78d31fa8cb21b8471662c1..be618771eb9ee0ad5b37fdd9157da238b21f6fb1 100644 (file)
@@ -250,7 +250,7 @@ namespace System.Net
 
                        // build the hash object (only MD5 is defined in RFC2617)
                        if ((parser.Algorithm == null) || (parser.Algorithm.ToUpper ().StartsWith ("MD5")))
-                               hash = HashAlgorithm.Create ("MD5");
+                               hash = MD5.Create ();
 
                        return true;
                }
index d8d3f119ce26b82efb070641e9fe3723a92d5855..fb532cd22c2a8a19929b6cfe1b85a20f08d00f7d 100644 (file)
@@ -126,7 +126,7 @@ namespace System.Net {
                                throw ares.Exception;
                        IPHostEntry entry = ares.HostEntry;
                        if (entry == null || entry.AddressList == null || entry.AddressList.Length == 0)
-                               throw new SocketException(11001);
+                               Error_11001 (entry.HostName);
                        return entry;
                }
 #endif
@@ -293,7 +293,13 @@ namespace System.Net {
                private extern static bool GetHostName_internal(out string h_name);
 #endif 
 
-               private static IPHostEntry hostent_to_IPHostEntry(string h_name, string[] h_aliases, string[] h_addrlist) 
+               static void Error_11001 (string hostName)
+               {
+                       throw new SocketException(11001, string.Format ("Could not resolve host '{0}'", hostName));
+
+               }
+
+               private static IPHostEntry hostent_to_IPHostEntry(string originalHostName, string h_name, string[] h_aliases, string[] h_addrlist) 
                {
                        IPHostEntry he = new IPHostEntry();
                        ArrayList addrlist = new ArrayList();
@@ -317,7 +323,7 @@ namespace System.Net {
                        }
 
                        if(addrlist.Count == 0)
-                               throw new SocketException(11001);
+                               Error_11001 (originalHostName);
 
                        he.AddressList = addrlist.ToArray(typeof(IPAddress)) as IPAddress[];
                        return he;
@@ -377,9 +383,9 @@ namespace System.Net {
 #else
                        bool ret = GetHostByAddr_internal(address, out h_name, out h_aliases, out h_addrlist);
                        if (!ret)
-                               throw new SocketException(11001);
+                               Error_11001 (address);
 #endif
-                       return (hostent_to_IPHostEntry (h_name, h_aliases, h_addrlist));
+                       return (hostent_to_IPHostEntry (address, h_name, h_aliases, h_addrlist));
                        
                }
 
@@ -456,9 +462,9 @@ namespace System.Net {
 
                        bool ret = GetHostByName_internal(hostName, out h_name, out h_aliases, out h_addrlist);
                        if (ret == false)
-                               throw new SocketException(11001);
+                               Error_11001 (hostName);
 
-                       return(hostent_to_IPHostEntry(h_name, h_aliases, h_addrlist));
+                       return(hostent_to_IPHostEntry(hostName, h_name, h_aliases, h_addrlist));
 #endif
                }
 
@@ -472,7 +478,7 @@ namespace System.Net {
                        bool ret = GetHostName_internal(out hostName);
 
                        if (ret == false)
-                               throw new SocketException(11001);
+                               Error_11001 (hostName);
 
                        return hostName;
 #endif
index 09f3197a7a4e844d7302d9a418d4801124bd21f8..909101100999098d3e2f99bff94e6306de28fcf3 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security.Authenticode;
+#else
 extern alias MonoSecurity;
+using MonoSecurity::Mono.Security.Authenticode;
+#endif
 
 using System.IO;
 using System.Net.Sockets;
@@ -38,7 +43,6 @@ using System.Collections.Generic;
 using System.Security.Cryptography;
 using System.Security.Cryptography.X509Certificates;
 using System.Threading;
-using MonoSecurity::Mono.Security.Authenticode;
 
 namespace System.Net {
        sealed class EndPointListener
index a34f19024c80761d1d16660ed488d4b62bd8ee33..33080c2d77b9a1d463c3e3f61bbb4a0ff4eef9fd 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security.Protocol.Tls;
+#else
 extern alias MonoSecurity;
+using MonoSecurity::Mono.Security.Protocol.Tls;
+#endif
 
 using System.IO;
 using System.Net.Sockets;
@@ -38,7 +43,6 @@ using System.Text;
 using System.Threading;
 using System.Security.Cryptography;
 using System.Security.Cryptography.X509Certificates;
-using MonoSecurity::Mono.Security.Protocol.Tls;
 
 namespace System.Net {
        sealed class HttpConnection
index 6329e359a4fd27e72a31be770aec7f1341b531d6..c72d21d1d82f3c44e19c7f9d381d434336cc33aa 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security.Protocol.Tls;
+#else
 extern alias MonoSecurity;
+using MonoSecurity::Mono.Security.Protocol.Tls;
+#endif
 
 using System.Collections;
 using System.Collections.Specialized;
@@ -44,7 +49,6 @@ using System.Security.Authentication.ExtendedProtection;
 #if NET_4_5
 using System.Threading.Tasks;
 #endif
-using MonoSecurity::Mono.Security.Protocol.Tls;
 
 namespace System.Net {
        public sealed class HttpListenerRequest
index d5bb836f5743ed8aa24307bcefc520617a86a188..a39768c9a3a6df64eb8cd8834505b2e9ff724f46 100644 (file)
@@ -39,7 +39,7 @@ using System.Text;
 
 namespace System.Net {
 
-       internal sealed class HttpUtility
+       static class HttpUtility
        {
                sealed class HttpQSCollection : NameValueCollection
                {
@@ -58,291 +58,518 @@ namespace System.Net {
                                return sb.ToString ();
                        }
                }
-               #region Fields
-       
-               static Hashtable entities;
-               static object lock_ = new object ();
-       
-               #endregion // Fields
-       
-               static Hashtable Entities {
-                       get {
-                               lock (lock_) {
-                                       if (entities == null)
-                                               InitEntities ();
-
-                                       return entities;
-                               }
-                       }
-               }
-               
-               #region Constructors
 
-               static void InitEntities ()
-               {
-                       // Build the hash table of HTML entity references.  This list comes
-                       // from the HTML 4.01 W3C recommendation.
-                       entities = new Hashtable ();
-                       entities.Add ("nbsp", '\u00A0');
-                       entities.Add ("iexcl", '\u00A1');
-                       entities.Add ("cent", '\u00A2');
-                       entities.Add ("pound", '\u00A3');
-                       entities.Add ("curren", '\u00A4');
-                       entities.Add ("yen", '\u00A5');
-                       entities.Add ("brvbar", '\u00A6');
-                       entities.Add ("sect", '\u00A7');
-                       entities.Add ("uml", '\u00A8');
-                       entities.Add ("copy", '\u00A9');
-                       entities.Add ("ordf", '\u00AA');
-                       entities.Add ("laquo", '\u00AB');
-                       entities.Add ("not", '\u00AC');
-                       entities.Add ("shy", '\u00AD');
-                       entities.Add ("reg", '\u00AE');
-                       entities.Add ("macr", '\u00AF');
-                       entities.Add ("deg", '\u00B0');
-                       entities.Add ("plusmn", '\u00B1');
-                       entities.Add ("sup2", '\u00B2');
-                       entities.Add ("sup3", '\u00B3');
-                       entities.Add ("acute", '\u00B4');
-                       entities.Add ("micro", '\u00B5');
-                       entities.Add ("para", '\u00B6');
-                       entities.Add ("middot", '\u00B7');
-                       entities.Add ("cedil", '\u00B8');
-                       entities.Add ("sup1", '\u00B9');
-                       entities.Add ("ordm", '\u00BA');
-                       entities.Add ("raquo", '\u00BB');
-                       entities.Add ("frac14", '\u00BC');
-                       entities.Add ("frac12", '\u00BD');
-                       entities.Add ("frac34", '\u00BE');
-                       entities.Add ("iquest", '\u00BF');
-                       entities.Add ("Agrave", '\u00C0');
-                       entities.Add ("Aacute", '\u00C1');
-                       entities.Add ("Acirc", '\u00C2');
-                       entities.Add ("Atilde", '\u00C3');
-                       entities.Add ("Auml", '\u00C4');
-                       entities.Add ("Aring", '\u00C5');
-                       entities.Add ("AElig", '\u00C6');
-                       entities.Add ("Ccedil", '\u00C7');
-                       entities.Add ("Egrave", '\u00C8');
-                       entities.Add ("Eacute", '\u00C9');
-                       entities.Add ("Ecirc", '\u00CA');
-                       entities.Add ("Euml", '\u00CB');
-                       entities.Add ("Igrave", '\u00CC');
-                       entities.Add ("Iacute", '\u00CD');
-                       entities.Add ("Icirc", '\u00CE');
-                       entities.Add ("Iuml", '\u00CF');
-                       entities.Add ("ETH", '\u00D0');
-                       entities.Add ("Ntilde", '\u00D1');
-                       entities.Add ("Ograve", '\u00D2');
-                       entities.Add ("Oacute", '\u00D3');
-                       entities.Add ("Ocirc", '\u00D4');
-                       entities.Add ("Otilde", '\u00D5');
-                       entities.Add ("Ouml", '\u00D6');
-                       entities.Add ("times", '\u00D7');
-                       entities.Add ("Oslash", '\u00D8');
-                       entities.Add ("Ugrave", '\u00D9');
-                       entities.Add ("Uacute", '\u00DA');
-                       entities.Add ("Ucirc", '\u00DB');
-                       entities.Add ("Uuml", '\u00DC');
-                       entities.Add ("Yacute", '\u00DD');
-                       entities.Add ("THORN", '\u00DE');
-                       entities.Add ("szlig", '\u00DF');
-                       entities.Add ("agrave", '\u00E0');
-                       entities.Add ("aacute", '\u00E1');
-                       entities.Add ("acirc", '\u00E2');
-                       entities.Add ("atilde", '\u00E3');
-                       entities.Add ("auml", '\u00E4');
-                       entities.Add ("aring", '\u00E5');
-                       entities.Add ("aelig", '\u00E6');
-                       entities.Add ("ccedil", '\u00E7');
-                       entities.Add ("egrave", '\u00E8');
-                       entities.Add ("eacute", '\u00E9');
-                       entities.Add ("ecirc", '\u00EA');
-                       entities.Add ("euml", '\u00EB');
-                       entities.Add ("igrave", '\u00EC');
-                       entities.Add ("iacute", '\u00ED');
-                       entities.Add ("icirc", '\u00EE');
-                       entities.Add ("iuml", '\u00EF');
-                       entities.Add ("eth", '\u00F0');
-                       entities.Add ("ntilde", '\u00F1');
-                       entities.Add ("ograve", '\u00F2');
-                       entities.Add ("oacute", '\u00F3');
-                       entities.Add ("ocirc", '\u00F4');
-                       entities.Add ("otilde", '\u00F5');
-                       entities.Add ("ouml", '\u00F6');
-                       entities.Add ("divide", '\u00F7');
-                       entities.Add ("oslash", '\u00F8');
-                       entities.Add ("ugrave", '\u00F9');
-                       entities.Add ("uacute", '\u00FA');
-                       entities.Add ("ucirc", '\u00FB');
-                       entities.Add ("uuml", '\u00FC');
-                       entities.Add ("yacute", '\u00FD');
-                       entities.Add ("thorn", '\u00FE');
-                       entities.Add ("yuml", '\u00FF');
-                       entities.Add ("fnof", '\u0192');
-                       entities.Add ("Alpha", '\u0391');
-                       entities.Add ("Beta", '\u0392');
-                       entities.Add ("Gamma", '\u0393');
-                       entities.Add ("Delta", '\u0394');
-                       entities.Add ("Epsilon", '\u0395');
-                       entities.Add ("Zeta", '\u0396');
-                       entities.Add ("Eta", '\u0397');
-                       entities.Add ("Theta", '\u0398');
-                       entities.Add ("Iota", '\u0399');
-                       entities.Add ("Kappa", '\u039A');
-                       entities.Add ("Lambda", '\u039B');
-                       entities.Add ("Mu", '\u039C');
-                       entities.Add ("Nu", '\u039D');
-                       entities.Add ("Xi", '\u039E');
-                       entities.Add ("Omicron", '\u039F');
-                       entities.Add ("Pi", '\u03A0');
-                       entities.Add ("Rho", '\u03A1');
-                       entities.Add ("Sigma", '\u03A3');
-                       entities.Add ("Tau", '\u03A4');
-                       entities.Add ("Upsilon", '\u03A5');
-                       entities.Add ("Phi", '\u03A6');
-                       entities.Add ("Chi", '\u03A7');
-                       entities.Add ("Psi", '\u03A8');
-                       entities.Add ("Omega", '\u03A9');
-                       entities.Add ("alpha", '\u03B1');
-                       entities.Add ("beta", '\u03B2');
-                       entities.Add ("gamma", '\u03B3');
-                       entities.Add ("delta", '\u03B4');
-                       entities.Add ("epsilon", '\u03B5');
-                       entities.Add ("zeta", '\u03B6');
-                       entities.Add ("eta", '\u03B7');
-                       entities.Add ("theta", '\u03B8');
-                       entities.Add ("iota", '\u03B9');
-                       entities.Add ("kappa", '\u03BA');
-                       entities.Add ("lambda", '\u03BB');
-                       entities.Add ("mu", '\u03BC');
-                       entities.Add ("nu", '\u03BD');
-                       entities.Add ("xi", '\u03BE');
-                       entities.Add ("omicron", '\u03BF');
-                       entities.Add ("pi", '\u03C0');
-                       entities.Add ("rho", '\u03C1');
-                       entities.Add ("sigmaf", '\u03C2');
-                       entities.Add ("sigma", '\u03C3');
-                       entities.Add ("tau", '\u03C4');
-                       entities.Add ("upsilon", '\u03C5');
-                       entities.Add ("phi", '\u03C6');
-                       entities.Add ("chi", '\u03C7');
-                       entities.Add ("psi", '\u03C8');
-                       entities.Add ("omega", '\u03C9');
-                       entities.Add ("thetasym", '\u03D1');
-                       entities.Add ("upsih", '\u03D2');
-                       entities.Add ("piv", '\u03D6');
-                       entities.Add ("bull", '\u2022');
-                       entities.Add ("hellip", '\u2026');
-                       entities.Add ("prime", '\u2032');
-                       entities.Add ("Prime", '\u2033');
-                       entities.Add ("oline", '\u203E');
-                       entities.Add ("frasl", '\u2044');
-                       entities.Add ("weierp", '\u2118');
-                       entities.Add ("image", '\u2111');
-                       entities.Add ("real", '\u211C');
-                       entities.Add ("trade", '\u2122');
-                       entities.Add ("alefsym", '\u2135');
-                       entities.Add ("larr", '\u2190');
-                       entities.Add ("uarr", '\u2191');
-                       entities.Add ("rarr", '\u2192');
-                       entities.Add ("darr", '\u2193');
-                       entities.Add ("harr", '\u2194');
-                       entities.Add ("crarr", '\u21B5');
-                       entities.Add ("lArr", '\u21D0');
-                       entities.Add ("uArr", '\u21D1');
-                       entities.Add ("rArr", '\u21D2');
-                       entities.Add ("dArr", '\u21D3');
-                       entities.Add ("hArr", '\u21D4');
-                       entities.Add ("forall", '\u2200');
-                       entities.Add ("part", '\u2202');
-                       entities.Add ("exist", '\u2203');
-                       entities.Add ("empty", '\u2205');
-                       entities.Add ("nabla", '\u2207');
-                       entities.Add ("isin", '\u2208');
-                       entities.Add ("notin", '\u2209');
-                       entities.Add ("ni", '\u220B');
-                       entities.Add ("prod", '\u220F');
-                       entities.Add ("sum", '\u2211');
-                       entities.Add ("minus", '\u2212');
-                       entities.Add ("lowast", '\u2217');
-                       entities.Add ("radic", '\u221A');
-                       entities.Add ("prop", '\u221D');
-                       entities.Add ("infin", '\u221E');
-                       entities.Add ("ang", '\u2220');
-                       entities.Add ("and", '\u2227');
-                       entities.Add ("or", '\u2228');
-                       entities.Add ("cap", '\u2229');
-                       entities.Add ("cup", '\u222A');
-                       entities.Add ("int", '\u222B');
-                       entities.Add ("there4", '\u2234');
-                       entities.Add ("sim", '\u223C');
-                       entities.Add ("cong", '\u2245');
-                       entities.Add ("asymp", '\u2248');
-                       entities.Add ("ne", '\u2260');
-                       entities.Add ("equiv", '\u2261');
-                       entities.Add ("le", '\u2264');
-                       entities.Add ("ge", '\u2265');
-                       entities.Add ("sub", '\u2282');
-                       entities.Add ("sup", '\u2283');
-                       entities.Add ("nsub", '\u2284');
-                       entities.Add ("sube", '\u2286');
-                       entities.Add ("supe", '\u2287');
-                       entities.Add ("oplus", '\u2295');
-                       entities.Add ("otimes", '\u2297');
-                       entities.Add ("perp", '\u22A5');
-                       entities.Add ("sdot", '\u22C5');
-                       entities.Add ("lceil", '\u2308');
-                       entities.Add ("rceil", '\u2309');
-                       entities.Add ("lfloor", '\u230A');
-                       entities.Add ("rfloor", '\u230B');
-                       entities.Add ("lang", '\u2329');
-                       entities.Add ("rang", '\u232A');
-                       entities.Add ("loz", '\u25CA');
-                       entities.Add ("spades", '\u2660');
-                       entities.Add ("clubs", '\u2663');
-                       entities.Add ("hearts", '\u2665');
-                       entities.Add ("diams", '\u2666');
-                       entities.Add ("quot", '\u0022');
-                       entities.Add ("amp", '\u0026');
-                       entities.Add ("lt", '\u003C');
-                       entities.Add ("gt", '\u003E');
-                       entities.Add ("OElig", '\u0152');
-                       entities.Add ("oelig", '\u0153');
-                       entities.Add ("Scaron", '\u0160');
-                       entities.Add ("scaron", '\u0161');
-                       entities.Add ("Yuml", '\u0178');
-                       entities.Add ("circ", '\u02C6');
-                       entities.Add ("tilde", '\u02DC');
-                       entities.Add ("ensp", '\u2002');
-                       entities.Add ("emsp", '\u2003');
-                       entities.Add ("thinsp", '\u2009');
-                       entities.Add ("zwnj", '\u200C');
-                       entities.Add ("zwj", '\u200D');
-                       entities.Add ("lrm", '\u200E');
-                       entities.Add ("rlm", '\u200F');
-                       entities.Add ("ndash", '\u2013');
-                       entities.Add ("mdash", '\u2014');
-                       entities.Add ("lsquo", '\u2018');
-                       entities.Add ("rsquo", '\u2019');
-                       entities.Add ("sbquo", '\u201A');
-                       entities.Add ("ldquo", '\u201C');
-                       entities.Add ("rdquo", '\u201D');
-                       entities.Add ("bdquo", '\u201E');
-                       entities.Add ("dagger", '\u2020');
-                       entities.Add ("Dagger", '\u2021');
-                       entities.Add ("permil", '\u2030');
-                       entities.Add ("lsaquo", '\u2039');
-                       entities.Add ("rsaquo", '\u203A');
-                       entities.Add ("euro", '\u20AC');
-               }
+               // Must be sorted
+               static readonly long[] entities = new long[] {
+                       (long)'A' << 56 | (long)'E' << 48 | (long)'l' << 40 | (long)'i' << 32 | (long)'g' << 24, 
+                       (long)'A' << 56 | (long)'a' << 48 | (long)'c' << 40 | (long)'u' << 32 | (long)'t' << 24 | (long)'e' << 16, 
+                       (long)'A' << 56 | (long)'c' << 48 | (long)'i' << 40 | (long)'r' << 32 | (long)'c' << 24, 
+                       (long)'A' << 56 | (long)'g' << 48 | (long)'r' << 40 | (long)'a' << 32 | (long)'v' << 24 | (long)'e' << 16, 
+                       (long)'A' << 56 | (long)'l' << 48 | (long)'p' << 40 | (long)'h' << 32 | (long)'a' << 24, 
+                       (long)'A' << 56 | (long)'r' << 48 | (long)'i' << 40 | (long)'n' << 32 | (long)'g' << 24, 
+                       (long)'A' << 56 | (long)'t' << 48 | (long)'i' << 40 | (long)'l' << 32 | (long)'d' << 24 | (long)'e' << 16, 
+                       (long)'A' << 56 | (long)'u' << 48 | (long)'m' << 40 | (long)'l' << 32, 
+                       (long)'B' << 56 | (long)'e' << 48 | (long)'t' << 40 | (long)'a' << 32, 
+                       (long)'C' << 56 | (long)'c' << 48 | (long)'e' << 40 | (long)'d' << 32 | (long)'i' << 24 | (long)'l' << 16, 
+                       (long)'C' << 56 | (long)'h' << 48 | (long)'i' << 40, 
+                       (long)'D' << 56 | (long)'a' << 48 | (long)'g' << 40 | (long)'g' << 32 | (long)'e' << 24 | (long)'r' << 16, 
+                       (long)'D' << 56 | (long)'e' << 48 | (long)'l' << 40 | (long)'t' << 32 | (long)'a' << 24, 
+                       (long)'E' << 56 | (long)'T' << 48 | (long)'H' << 40, 
+                       (long)'E' << 56 | (long)'a' << 48 | (long)'c' << 40 | (long)'u' << 32 | (long)'t' << 24 | (long)'e' << 16, 
+                       (long)'E' << 56 | (long)'c' << 48 | (long)'i' << 40 | (long)'r' << 32 | (long)'c' << 24, 
+                       (long)'E' << 56 | (long)'g' << 48 | (long)'r' << 40 | (long)'a' << 32 | (long)'v' << 24 | (long)'e' << 16, 
+                       (long)'E' << 56 | (long)'p' << 48 | (long)'s' << 40 | (long)'i' << 32 | (long)'l' << 24 | (long)'o' << 16 | (long)'n' << 8, 
+                       (long)'E' << 56 | (long)'t' << 48 | (long)'a' << 40, 
+                       (long)'E' << 56 | (long)'u' << 48 | (long)'m' << 40 | (long)'l' << 32, 
+                       (long)'G' << 56 | (long)'a' << 48 | (long)'m' << 40 | (long)'m' << 32 | (long)'a' << 24, 
+                       (long)'I' << 56 | (long)'a' << 48 | (long)'c' << 40 | (long)'u' << 32 | (long)'t' << 24 | (long)'e' << 16, 
+                       (long)'I' << 56 | (long)'c' << 48 | (long)'i' << 40 | (long)'r' << 32 | (long)'c' << 24, 
+                       (long)'I' << 56 | (long)'g' << 48 | (long)'r' << 40 | (long)'a' << 32 | (long)'v' << 24 | (long)'e' << 16, 
+                       (long)'I' << 56 | (long)'o' << 48 | (long)'t' << 40 | (long)'a' << 32, 
+                       (long)'I' << 56 | (long)'u' << 48 | (long)'m' << 40 | (long)'l' << 32, 
+                       (long)'K' << 56 | (long)'a' << 48 | (long)'p' << 40 | (long)'p' << 32 | (long)'a' << 24, 
+                       (long)'L' << 56 | (long)'a' << 48 | (long)'m' << 40 | (long)'b' << 32 | (long)'d' << 24 | (long)'a' << 16, 
+                       (long)'M' << 56 | (long)'u' << 48, 
+                       (long)'N' << 56 | (long)'t' << 48 | (long)'i' << 40 | (long)'l' << 32 | (long)'d' << 24 | (long)'e' << 16, 
+                       (long)'N' << 56 | (long)'u' << 48, 
+                       (long)'O' << 56 | (long)'E' << 48 | (long)'l' << 40 | (long)'i' << 32 | (long)'g' << 24, 
+                       (long)'O' << 56 | (long)'a' << 48 | (long)'c' << 40 | (long)'u' << 32 | (long)'t' << 24 | (long)'e' << 16, 
+                       (long)'O' << 56 | (long)'c' << 48 | (long)'i' << 40 | (long)'r' << 32 | (long)'c' << 24, 
+                       (long)'O' << 56 | (long)'g' << 48 | (long)'r' << 40 | (long)'a' << 32 | (long)'v' << 24 | (long)'e' << 16, 
+                       (long)'O' << 56 | (long)'m' << 48 | (long)'e' << 40 | (long)'g' << 32 | (long)'a' << 24, 
+                       (long)'O' << 56 | (long)'m' << 48 | (long)'i' << 40 | (long)'c' << 32 | (long)'r' << 24 | (long)'o' << 16 | (long)'n' << 8, 
+                       (long)'O' << 56 | (long)'s' << 48 | (long)'l' << 40 | (long)'a' << 32 | (long)'s' << 24 | (long)'h' << 16, 
+                       (long)'O' << 56 | (long)'t' << 48 | (long)'i' << 40 | (long)'l' << 32 | (long)'d' << 24 | (long)'e' << 16, 
+                       (long)'O' << 56 | (long)'u' << 48 | (long)'m' << 40 | (long)'l' << 32, 
+                       (long)'P' << 56 | (long)'h' << 48 | (long)'i' << 40, 
+                       (long)'P' << 56 | (long)'i' << 48, 
+                       (long)'P' << 56 | (long)'r' << 48 | (long)'i' << 40 | (long)'m' << 32 | (long)'e' << 24, 
+                       (long)'P' << 56 | (long)'s' << 48 | (long)'i' << 40, 
+                       (long)'R' << 56 | (long)'h' << 48 | (long)'o' << 40, 
+                       (long)'S' << 56 | (long)'c' << 48 | (long)'a' << 40 | (long)'r' << 32 | (long)'o' << 24 | (long)'n' << 16, 
+                       (long)'S' << 56 | (long)'i' << 48 | (long)'g' << 40 | (long)'m' << 32 | (long)'a' << 24, 
+                       (long)'T' << 56 | (long)'H' << 48 | (long)'O' << 40 | (long)'R' << 32 | (long)'N' << 24, 
+                       (long)'T' << 56 | (long)'a' << 48 | (long)'u' << 40, 
+                       (long)'T' << 56 | (long)'h' << 48 | (long)'e' << 40 | (long)'t' << 32 | (long)'a' << 24, 
+                       (long)'U' << 56 | (long)'a' << 48 | (long)'c' << 40 | (long)'u' << 32 | (long)'t' << 24 | (long)'e' << 16, 
+                       (long)'U' << 56 | (long)'c' << 48 | (long)'i' << 40 | (long)'r' << 32 | (long)'c' << 24, 
+                       (long)'U' << 56 | (long)'g' << 48 | (long)'r' << 40 | (long)'a' << 32 | (long)'v' << 24 | (long)'e' << 16, 
+                       (long)'U' << 56 | (long)'p' << 48 | (long)'s' << 40 | (long)'i' << 32 | (long)'l' << 24 | (long)'o' << 16 | (long)'n' << 8, 
+                       (long)'U' << 56 | (long)'u' << 48 | (long)'m' << 40 | (long)'l' << 32, 
+                       (long)'X' << 56 | (long)'i' << 48, 
+                       (long)'Y' << 56 | (long)'a' << 48 | (long)'c' << 40 | (long)'u' << 32 | (long)'t' << 24 | (long)'e' << 16, 
+                       (long)'Y' << 56 | (long)'u' << 48 | (long)'m' << 40 | (long)'l' << 32, 
+                       (long)'Z' << 56 | (long)'e' << 48 | (long)'t' << 40 | (long)'a' << 32, 
+                       (long)'a' << 56 | (long)'a' << 48 | (long)'c' << 40 | (long)'u' << 32 | (long)'t' << 24 | (long)'e' << 16, 
+                       (long)'a' << 56 | (long)'c' << 48 | (long)'i' << 40 | (long)'r' << 32 | (long)'c' << 24, 
+                       (long)'a' << 56 | (long)'c' << 48 | (long)'u' << 40 | (long)'t' << 32 | (long)'e' << 24, 
+                       (long)'a' << 56 | (long)'e' << 48 | (long)'l' << 40 | (long)'i' << 32 | (long)'g' << 24, 
+                       (long)'a' << 56 | (long)'g' << 48 | (long)'r' << 40 | (long)'a' << 32 | (long)'v' << 24 | (long)'e' << 16, 
+                       (long)'a' << 56 | (long)'l' << 48 | (long)'e' << 40 | (long)'f' << 32 | (long)'s' << 24 | (long)'y' << 16 | (long)'m' << 8, 
+                       (long)'a' << 56 | (long)'l' << 48 | (long)'p' << 40 | (long)'h' << 32 | (long)'a' << 24, 
+                       (long)'a' << 56 | (long)'m' << 48 | (long)'p' << 40, 
+                       (long)'a' << 56 | (long)'n' << 48 | (long)'d' << 40, 
+                       (long)'a' << 56 | (long)'n' << 48 | (long)'g' << 40, 
+                       (long)'a' << 56 | (long)'r' << 48 | (long)'i' << 40 | (long)'n' << 32 | (long)'g' << 24, 
+                       (long)'a' << 56 | (long)'s' << 48 | (long)'y' << 40 | (long)'m' << 32 | (long)'p' << 24, 
+                       (long)'a' << 56 | (long)'t' << 48 | (long)'i' << 40 | (long)'l' << 32 | (long)'d' << 24 | (long)'e' << 16, 
+                       (long)'a' << 56 | (long)'u' << 48 | (long)'m' << 40 | (long)'l' << 32, 
+                       (long)'b' << 56 | (long)'d' << 48 | (long)'q' << 40 | (long)'u' << 32 | (long)'o' << 24, 
+                       (long)'b' << 56 | (long)'e' << 48 | (long)'t' << 40 | (long)'a' << 32, 
+                       (long)'b' << 56 | (long)'r' << 48 | (long)'v' << 40 | (long)'b' << 32 | (long)'a' << 24 | (long)'r' << 16, 
+                       (long)'b' << 56 | (long)'u' << 48 | (long)'l' << 40 | (long)'l' << 32, 
+                       (long)'c' << 56 | (long)'a' << 48 | (long)'p' << 40, 
+                       (long)'c' << 56 | (long)'c' << 48 | (long)'e' << 40 | (long)'d' << 32 | (long)'i' << 24 | (long)'l' << 16, 
+                       (long)'c' << 56 | (long)'e' << 48 | (long)'d' << 40 | (long)'i' << 32 | (long)'l' << 24, 
+                       (long)'c' << 56 | (long)'e' << 48 | (long)'n' << 40 | (long)'t' << 32, 
+                       (long)'c' << 56 | (long)'h' << 48 | (long)'i' << 40, 
+                       (long)'c' << 56 | (long)'i' << 48 | (long)'r' << 40 | (long)'c' << 32, 
+                       (long)'c' << 56 | (long)'l' << 48 | (long)'u' << 40 | (long)'b' << 32 | (long)'s' << 24, 
+                       (long)'c' << 56 | (long)'o' << 48 | (long)'n' << 40 | (long)'g' << 32, 
+                       (long)'c' << 56 | (long)'o' << 48 | (long)'p' << 40 | (long)'y' << 32, 
+                       (long)'c' << 56 | (long)'r' << 48 | (long)'a' << 40 | (long)'r' << 32 | (long)'r' << 24, 
+                       (long)'c' << 56 | (long)'u' << 48 | (long)'p' << 40, 
+                       (long)'c' << 56 | (long)'u' << 48 | (long)'r' << 40 | (long)'r' << 32 | (long)'e' << 24 | (long)'n' << 16, 
+                       (long)'d' << 56 | (long)'A' << 48 | (long)'r' << 40 | (long)'r' << 32, 
+                       (long)'d' << 56 | (long)'a' << 48 | (long)'g' << 40 | (long)'g' << 32 | (long)'e' << 24 | (long)'r' << 16, 
+                       (long)'d' << 56 | (long)'a' << 48 | (long)'r' << 40 | (long)'r' << 32, 
+                       (long)'d' << 56 | (long)'e' << 48 | (long)'g' << 40, 
+                       (long)'d' << 56 | (long)'e' << 48 | (long)'l' << 40 | (long)'t' << 32 | (long)'a' << 24, 
+                       (long)'d' << 56 | (long)'i' << 48 | (long)'a' << 40 | (long)'m' << 32 | (long)'s' << 24, 
+                       (long)'d' << 56 | (long)'i' << 48 | (long)'v' << 40 | (long)'i' << 32 | (long)'d' << 24 | (long)'e' << 16, 
+                       (long)'e' << 56 | (long)'a' << 48 | (long)'c' << 40 | (long)'u' << 32 | (long)'t' << 24 | (long)'e' << 16, 
+                       (long)'e' << 56 | (long)'c' << 48 | (long)'i' << 40 | (long)'r' << 32 | (long)'c' << 24, 
+                       (long)'e' << 56 | (long)'g' << 48 | (long)'r' << 40 | (long)'a' << 32 | (long)'v' << 24 | (long)'e' << 16, 
+                       (long)'e' << 56 | (long)'m' << 48 | (long)'p' << 40 | (long)'t' << 32 | (long)'y' << 24, 
+                       (long)'e' << 56 | (long)'m' << 48 | (long)'s' << 40 | (long)'p' << 32, 
+                       (long)'e' << 56 | (long)'n' << 48 | (long)'s' << 40 | (long)'p' << 32, 
+                       (long)'e' << 56 | (long)'p' << 48 | (long)'s' << 40 | (long)'i' << 32 | (long)'l' << 24 | (long)'o' << 16 | (long)'n' << 8, 
+                       (long)'e' << 56 | (long)'q' << 48 | (long)'u' << 40 | (long)'i' << 32 | (long)'v' << 24, 
+                       (long)'e' << 56 | (long)'t' << 48 | (long)'a' << 40, 
+                       (long)'e' << 56 | (long)'t' << 48 | (long)'h' << 40, 
+                       (long)'e' << 56 | (long)'u' << 48 | (long)'m' << 40 | (long)'l' << 32, 
+                       (long)'e' << 56 | (long)'u' << 48 | (long)'r' << 40 | (long)'o' << 32, 
+                       (long)'e' << 56 | (long)'x' << 48 | (long)'i' << 40 | (long)'s' << 32 | (long)'t' << 24, 
+                       (long)'f' << 56 | (long)'n' << 48 | (long)'o' << 40 | (long)'f' << 32, 
+                       (long)'f' << 56 | (long)'o' << 48 | (long)'r' << 40 | (long)'a' << 32 | (long)'l' << 24 | (long)'l' << 16, 
+                       (long)'f' << 56 | (long)'r' << 48 | (long)'a' << 40 | (long)'c' << 32 | (long)'1' << 24 | (long)'2' << 16, 
+                       (long)'f' << 56 | (long)'r' << 48 | (long)'a' << 40 | (long)'c' << 32 | (long)'1' << 24 | (long)'4' << 16, 
+                       (long)'f' << 56 | (long)'r' << 48 | (long)'a' << 40 | (long)'c' << 32 | (long)'3' << 24 | (long)'4' << 16, 
+                       (long)'f' << 56 | (long)'r' << 48 | (long)'a' << 40 | (long)'s' << 32 | (long)'l' << 24, 
+                       (long)'g' << 56 | (long)'a' << 48 | (long)'m' << 40 | (long)'m' << 32 | (long)'a' << 24, 
+                       (long)'g' << 56 | (long)'e' << 48, 
+                       (long)'g' << 56 | (long)'t' << 48, 
+                       (long)'h' << 56 | (long)'A' << 48 | (long)'r' << 40 | (long)'r' << 32, 
+                       (long)'h' << 56 | (long)'a' << 48 | (long)'r' << 40 | (long)'r' << 32, 
+                       (long)'h' << 56 | (long)'e' << 48 | (long)'a' << 40 | (long)'r' << 32 | (long)'t' << 24 | (long)'s' << 16, 
+                       (long)'h' << 56 | (long)'e' << 48 | (long)'l' << 40 | (long)'l' << 32 | (long)'i' << 24 | (long)'p' << 16, 
+                       (long)'i' << 56 | (long)'a' << 48 | (long)'c' << 40 | (long)'u' << 32 | (long)'t' << 24 | (long)'e' << 16, 
+                       (long)'i' << 56 | (long)'c' << 48 | (long)'i' << 40 | (long)'r' << 32 | (long)'c' << 24, 
+                       (long)'i' << 56 | (long)'e' << 48 | (long)'x' << 40 | (long)'c' << 32 | (long)'l' << 24, 
+                       (long)'i' << 56 | (long)'g' << 48 | (long)'r' << 40 | (long)'a' << 32 | (long)'v' << 24 | (long)'e' << 16, 
+                       (long)'i' << 56 | (long)'m' << 48 | (long)'a' << 40 | (long)'g' << 32 | (long)'e' << 24, 
+                       (long)'i' << 56 | (long)'n' << 48 | (long)'f' << 40 | (long)'i' << 32 | (long)'n' << 24, 
+                       (long)'i' << 56 | (long)'n' << 48 | (long)'t' << 40, 
+                       (long)'i' << 56 | (long)'o' << 48 | (long)'t' << 40 | (long)'a' << 32, 
+                       (long)'i' << 56 | (long)'q' << 48 | (long)'u' << 40 | (long)'e' << 32 | (long)'s' << 24 | (long)'t' << 16, 
+                       (long)'i' << 56 | (long)'s' << 48 | (long)'i' << 40 | (long)'n' << 32, 
+                       (long)'i' << 56 | (long)'u' << 48 | (long)'m' << 40 | (long)'l' << 32, 
+                       (long)'k' << 56 | (long)'a' << 48 | (long)'p' << 40 | (long)'p' << 32 | (long)'a' << 24, 
+                       (long)'l' << 56 | (long)'A' << 48 | (long)'r' << 40 | (long)'r' << 32, 
+                       (long)'l' << 56 | (long)'a' << 48 | (long)'m' << 40 | (long)'b' << 32 | (long)'d' << 24 | (long)'a' << 16, 
+                       (long)'l' << 56 | (long)'a' << 48 | (long)'n' << 40 | (long)'g' << 32, 
+                       (long)'l' << 56 | (long)'a' << 48 | (long)'q' << 40 | (long)'u' << 32 | (long)'o' << 24, 
+                       (long)'l' << 56 | (long)'a' << 48 | (long)'r' << 40 | (long)'r' << 32, 
+                       (long)'l' << 56 | (long)'c' << 48 | (long)'e' << 40 | (long)'i' << 32 | (long)'l' << 24, 
+                       (long)'l' << 56 | (long)'d' << 48 | (long)'q' << 40 | (long)'u' << 32 | (long)'o' << 24, 
+                       (long)'l' << 56 | (long)'e' << 48, 
+                       (long)'l' << 56 | (long)'f' << 48 | (long)'l' << 40 | (long)'o' << 32 | (long)'o' << 24 | (long)'r' << 16, 
+                       (long)'l' << 56 | (long)'o' << 48 | (long)'w' << 40 | (long)'a' << 32 | (long)'s' << 24 | (long)'t' << 16, 
+                       (long)'l' << 56 | (long)'o' << 48 | (long)'z' << 40, 
+                       (long)'l' << 56 | (long)'r' << 48 | (long)'m' << 40, 
+                       (long)'l' << 56 | (long)'s' << 48 | (long)'a' << 40 | (long)'q' << 32 | (long)'u' << 24 | (long)'o' << 16, 
+                       (long)'l' << 56 | (long)'s' << 48 | (long)'q' << 40 | (long)'u' << 32 | (long)'o' << 24, 
+                       (long)'l' << 56 | (long)'t' << 48, 
+                       (long)'m' << 56 | (long)'a' << 48 | (long)'c' << 40 | (long)'r' << 32, 
+                       (long)'m' << 56 | (long)'d' << 48 | (long)'a' << 40 | (long)'s' << 32 | (long)'h' << 24, 
+                       (long)'m' << 56 | (long)'i' << 48 | (long)'c' << 40 | (long)'r' << 32 | (long)'o' << 24, 
+                       (long)'m' << 56 | (long)'i' << 48 | (long)'d' << 40 | (long)'d' << 32 | (long)'o' << 24 | (long)'t' << 16, 
+                       (long)'m' << 56 | (long)'i' << 48 | (long)'n' << 40 | (long)'u' << 32 | (long)'s' << 24, 
+                       (long)'m' << 56 | (long)'u' << 48, 
+                       (long)'n' << 56 | (long)'a' << 48 | (long)'b' << 40 | (long)'l' << 32 | (long)'a' << 24, 
+                       (long)'n' << 56 | (long)'b' << 48 | (long)'s' << 40 | (long)'p' << 32, 
+                       (long)'n' << 56 | (long)'d' << 48 | (long)'a' << 40 | (long)'s' << 32 | (long)'h' << 24, 
+                       (long)'n' << 56 | (long)'e' << 48, 
+                       (long)'n' << 56 | (long)'i' << 48, 
+                       (long)'n' << 56 | (long)'o' << 48 | (long)'t' << 40, 
+                       (long)'n' << 56 | (long)'o' << 48 | (long)'t' << 40 | (long)'i' << 32 | (long)'n' << 24, 
+                       (long)'n' << 56 | (long)'s' << 48 | (long)'u' << 40 | (long)'b' << 32, 
+                       (long)'n' << 56 | (long)'t' << 48 | (long)'i' << 40 | (long)'l' << 32 | (long)'d' << 24 | (long)'e' << 16, 
+                       (long)'n' << 56 | (long)'u' << 48, 
+                       (long)'o' << 56 | (long)'a' << 48 | (long)'c' << 40 | (long)'u' << 32 | (long)'t' << 24 | (long)'e' << 16, 
+                       (long)'o' << 56 | (long)'c' << 48 | (long)'i' << 40 | (long)'r' << 32 | (long)'c' << 24, 
+                       (long)'o' << 56 | (long)'e' << 48 | (long)'l' << 40 | (long)'i' << 32 | (long)'g' << 24, 
+                       (long)'o' << 56 | (long)'g' << 48 | (long)'r' << 40 | (long)'a' << 32 | (long)'v' << 24 | (long)'e' << 16, 
+                       (long)'o' << 56 | (long)'l' << 48 | (long)'i' << 40 | (long)'n' << 32 | (long)'e' << 24, 
+                       (long)'o' << 56 | (long)'m' << 48 | (long)'e' << 40 | (long)'g' << 32 | (long)'a' << 24, 
+                       (long)'o' << 56 | (long)'m' << 48 | (long)'i' << 40 | (long)'c' << 32 | (long)'r' << 24 | (long)'o' << 16 | (long)'n' << 8, 
+                       (long)'o' << 56 | (long)'p' << 48 | (long)'l' << 40 | (long)'u' << 32 | (long)'s' << 24, 
+                       (long)'o' << 56 | (long)'r' << 48, 
+                       (long)'o' << 56 | (long)'r' << 48 | (long)'d' << 40 | (long)'f' << 32, 
+                       (long)'o' << 56 | (long)'r' << 48 | (long)'d' << 40 | (long)'m' << 32, 
+                       (long)'o' << 56 | (long)'s' << 48 | (long)'l' << 40 | (long)'a' << 32 | (long)'s' << 24 | (long)'h' << 16, 
+                       (long)'o' << 56 | (long)'t' << 48 | (long)'i' << 40 | (long)'l' << 32 | (long)'d' << 24 | (long)'e' << 16, 
+                       (long)'o' << 56 | (long)'t' << 48 | (long)'i' << 40 | (long)'m' << 32 | (long)'e' << 24 | (long)'s' << 16, 
+                       (long)'o' << 56 | (long)'u' << 48 | (long)'m' << 40 | (long)'l' << 32, 
+                       (long)'p' << 56 | (long)'a' << 48 | (long)'r' << 40 | (long)'a' << 32, 
+                       (long)'p' << 56 | (long)'a' << 48 | (long)'r' << 40 | (long)'t' << 32, 
+                       (long)'p' << 56 | (long)'e' << 48 | (long)'r' << 40 | (long)'m' << 32 | (long)'i' << 24 | (long)'l' << 16, 
+                       (long)'p' << 56 | (long)'e' << 48 | (long)'r' << 40 | (long)'p' << 32, 
+                       (long)'p' << 56 | (long)'h' << 48 | (long)'i' << 40, 
+                       (long)'p' << 56 | (long)'i' << 48, 
+                       (long)'p' << 56 | (long)'i' << 48 | (long)'v' << 40, 
+                       (long)'p' << 56 | (long)'l' << 48 | (long)'u' << 40 | (long)'s' << 32 | (long)'m' << 24 | (long)'n' << 16, 
+                       (long)'p' << 56 | (long)'o' << 48 | (long)'u' << 40 | (long)'n' << 32 | (long)'d' << 24, 
+                       (long)'p' << 56 | (long)'r' << 48 | (long)'i' << 40 | (long)'m' << 32 | (long)'e' << 24, 
+                       (long)'p' << 56 | (long)'r' << 48 | (long)'o' << 40 | (long)'d' << 32, 
+                       (long)'p' << 56 | (long)'r' << 48 | (long)'o' << 40 | (long)'p' << 32, 
+                       (long)'p' << 56 | (long)'s' << 48 | (long)'i' << 40, 
+                       (long)'q' << 56 | (long)'u' << 48 | (long)'o' << 40 | (long)'t' << 32, 
+                       (long)'r' << 56 | (long)'A' << 48 | (long)'r' << 40 | (long)'r' << 32, 
+                       (long)'r' << 56 | (long)'a' << 48 | (long)'d' << 40 | (long)'i' << 32 | (long)'c' << 24, 
+                       (long)'r' << 56 | (long)'a' << 48 | (long)'n' << 40 | (long)'g' << 32, 
+                       (long)'r' << 56 | (long)'a' << 48 | (long)'q' << 40 | (long)'u' << 32 | (long)'o' << 24, 
+                       (long)'r' << 56 | (long)'a' << 48 | (long)'r' << 40 | (long)'r' << 32, 
+                       (long)'r' << 56 | (long)'c' << 48 | (long)'e' << 40 | (long)'i' << 32 | (long)'l' << 24, 
+                       (long)'r' << 56 | (long)'d' << 48 | (long)'q' << 40 | (long)'u' << 32 | (long)'o' << 24, 
+                       (long)'r' << 56 | (long)'e' << 48 | (long)'a' << 40 | (long)'l' << 32, 
+                       (long)'r' << 56 | (long)'e' << 48 | (long)'g' << 40, 
+                       (long)'r' << 56 | (long)'f' << 48 | (long)'l' << 40 | (long)'o' << 32 | (long)'o' << 24 | (long)'r' << 16, 
+                       (long)'r' << 56 | (long)'h' << 48 | (long)'o' << 40, 
+                       (long)'r' << 56 | (long)'l' << 48 | (long)'m' << 40, 
+                       (long)'r' << 56 | (long)'s' << 48 | (long)'a' << 40 | (long)'q' << 32 | (long)'u' << 24 | (long)'o' << 16, 
+                       (long)'r' << 56 | (long)'s' << 48 | (long)'q' << 40 | (long)'u' << 32 | (long)'o' << 24, 
+                       (long)'s' << 56 | (long)'b' << 48 | (long)'q' << 40 | (long)'u' << 32 | (long)'o' << 24, 
+                       (long)'s' << 56 | (long)'c' << 48 | (long)'a' << 40 | (long)'r' << 32 | (long)'o' << 24 | (long)'n' << 16, 
+                       (long)'s' << 56 | (long)'d' << 48 | (long)'o' << 40 | (long)'t' << 32, 
+                       (long)'s' << 56 | (long)'e' << 48 | (long)'c' << 40 | (long)'t' << 32, 
+                       (long)'s' << 56 | (long)'h' << 48 | (long)'y' << 40, 
+                       (long)'s' << 56 | (long)'i' << 48 | (long)'g' << 40 | (long)'m' << 32 | (long)'a' << 24, 
+                       (long)'s' << 56 | (long)'i' << 48 | (long)'g' << 40 | (long)'m' << 32 | (long)'a' << 24 | (long)'f' << 16, 
+                       (long)'s' << 56 | (long)'i' << 48 | (long)'m' << 40, 
+                       (long)'s' << 56 | (long)'p' << 48 | (long)'a' << 40 | (long)'d' << 32 | (long)'e' << 24 | (long)'s' << 16, 
+                       (long)'s' << 56 | (long)'u' << 48 | (long)'b' << 40, 
+                       (long)'s' << 56 | (long)'u' << 48 | (long)'b' << 40 | (long)'e' << 32, 
+                       (long)'s' << 56 | (long)'u' << 48 | (long)'m' << 40, 
+                       (long)'s' << 56 | (long)'u' << 48 | (long)'p' << 40, 
+                       (long)'s' << 56 | (long)'u' << 48 | (long)'p' << 40 | (long)'1' << 32, 
+                       (long)'s' << 56 | (long)'u' << 48 | (long)'p' << 40 | (long)'2' << 32, 
+                       (long)'s' << 56 | (long)'u' << 48 | (long)'p' << 40 | (long)'3' << 32, 
+                       (long)'s' << 56 | (long)'u' << 48 | (long)'p' << 40 | (long)'e' << 32, 
+                       (long)'s' << 56 | (long)'z' << 48 | (long)'l' << 40 | (long)'i' << 32 | (long)'g' << 24, 
+                       (long)'t' << 56 | (long)'a' << 48 | (long)'u' << 40, 
+                       (long)'t' << 56 | (long)'h' << 48 | (long)'e' << 40 | (long)'r' << 32 | (long)'e' << 24 | (long)'4' << 16, 
+                       (long)'t' << 56 | (long)'h' << 48 | (long)'e' << 40 | (long)'t' << 32 | (long)'a' << 24, 
+                       (long)'t' << 56 | (long)'h' << 48 | (long)'e' << 40 | (long)'t' << 32 | (long)'a' << 24 | (long)'s' << 16 | (long)'y' << 8 | (long)'m' << 0, 
+                       (long)'t' << 56 | (long)'h' << 48 | (long)'i' << 40 | (long)'n' << 32 | (long)'s' << 24 | (long)'p' << 16, 
+                       (long)'t' << 56 | (long)'h' << 48 | (long)'o' << 40 | (long)'r' << 32 | (long)'n' << 24, 
+                       (long)'t' << 56 | (long)'i' << 48 | (long)'l' << 40 | (long)'d' << 32 | (long)'e' << 24, 
+                       (long)'t' << 56 | (long)'i' << 48 | (long)'m' << 40 | (long)'e' << 32 | (long)'s' << 24, 
+                       (long)'t' << 56 | (long)'r' << 48 | (long)'a' << 40 | (long)'d' << 32 | (long)'e' << 24, 
+                       (long)'u' << 56 | (long)'A' << 48 | (long)'r' << 40 | (long)'r' << 32, 
+                       (long)'u' << 56 | (long)'a' << 48 | (long)'c' << 40 | (long)'u' << 32 | (long)'t' << 24 | (long)'e' << 16, 
+                       (long)'u' << 56 | (long)'a' << 48 | (long)'r' << 40 | (long)'r' << 32, 
+                       (long)'u' << 56 | (long)'c' << 48 | (long)'i' << 40 | (long)'r' << 32 | (long)'c' << 24, 
+                       (long)'u' << 56 | (long)'g' << 48 | (long)'r' << 40 | (long)'a' << 32 | (long)'v' << 24 | (long)'e' << 16, 
+                       (long)'u' << 56 | (long)'m' << 48 | (long)'l' << 40, 
+                       (long)'u' << 56 | (long)'p' << 48 | (long)'s' << 40 | (long)'i' << 32 | (long)'h' << 24, 
+                       (long)'u' << 56 | (long)'p' << 48 | (long)'s' << 40 | (long)'i' << 32 | (long)'l' << 24 | (long)'o' << 16 | (long)'n' << 8, 
+                       (long)'u' << 56 | (long)'u' << 48 | (long)'m' << 40 | (long)'l' << 32, 
+                       (long)'w' << 56 | (long)'e' << 48 | (long)'i' << 40 | (long)'e' << 32 | (long)'r' << 24 | (long)'p' << 16, 
+                       (long)'x' << 56 | (long)'i' << 48, 
+                       (long)'y' << 56 | (long)'a' << 48 | (long)'c' << 40 | (long)'u' << 32 | (long)'t' << 24 | (long)'e' << 16, 
+                       (long)'y' << 56 | (long)'e' << 48 | (long)'n' << 40, 
+                       (long)'y' << 56 | (long)'u' << 48 | (long)'m' << 40 | (long)'l' << 32, 
+                       (long)'z' << 56 | (long)'e' << 48 | (long)'t' << 40 | (long)'a' << 32, 
+                       (long)'z' << 56 | (long)'w' << 48 | (long)'j' << 40, 
+                       (long)'z' << 56 | (long)'w' << 48 | (long)'n' << 40 | (long)'j' << 32
+               };
+
+               static readonly char[] entities_values = new char[] {
+                       '\u00C6',
+                       '\u00C1',
+                       '\u00C2',
+                       '\u00C0',
+                       '\u0391',
+                       '\u00C5',
+                       '\u00C3',
+                       '\u00C4',
+                       '\u0392',
+                       '\u00C7',
+                       '\u03A7',
+                       '\u2021',
+                       '\u0394',
+                       '\u00D0',
+                       '\u00C9',
+                       '\u00CA',
+                       '\u00C8',
+                       '\u0395',
+                       '\u0397',
+                       '\u00CB',
+                       '\u0393',
+                       '\u00CD',
+                       '\u00CE',
+                       '\u00CC',
+                       '\u0399',
+                       '\u00CF',
+                       '\u039A',
+                       '\u039B',
+                       '\u039C',
+                       '\u00D1',
+                       '\u039D',
+                       '\u0152',
+                       '\u00D3',
+                       '\u00D4',
+                       '\u00D2',
+                       '\u03A9',
+                       '\u039F',
+                       '\u00D8',
+                       '\u00D5',
+                       '\u00D6',
+                       '\u03A6',
+                       '\u03A0',
+                       '\u2033',
+                       '\u03A8',
+                       '\u03A1',
+                       '\u0160',
+                       '\u03A3',
+                       '\u00DE',
+                       '\u03A4',
+                       '\u0398',
+                       '\u00DA',
+                       '\u00DB',
+                       '\u00D9',
+                       '\u03A5',
+                       '\u00DC',
+                       '\u039E',
+                       '\u00DD',
+                       '\u0178',
+                       '\u0396',
+                       '\u00E1',
+                       '\u00E2',
+                       '\u00B4',
+                       '\u00E6',
+                       '\u00E0',
+                       '\u2135',
+                       '\u03B1',
+                       '\u0026',
+                       '\u2227',
+                       '\u2220',
+                       '\u00E5',
+                       '\u2248',
+                       '\u00E3',
+                       '\u00E4',
+                       '\u201E',
+                       '\u03B2',
+                       '\u00A6',
+                       '\u2022',
+                       '\u2229',
+                       '\u00E7',
+                       '\u00B8',
+                       '\u00A2',
+                       '\u03C7',
+                       '\u02C6',
+                       '\u2663',
+                       '\u2245',
+                       '\u00A9',
+                       '\u21B5',
+                       '\u222A',
+                       '\u00A4',
+                       '\u21D3',
+                       '\u2020',
+                       '\u2193',
+                       '\u00B0',
+                       '\u03B4',
+                       '\u2666',
+                       '\u00F7',
+                       '\u00E9',
+                       '\u00EA',
+                       '\u00E8',
+                       '\u2205',
+                       '\u2003',
+                       '\u2002',
+                       '\u03B5',
+                       '\u2261',
+                       '\u03B7',
+                       '\u00F0',
+                       '\u00EB',
+                       '\u20AC',
+                       '\u2203',
+                       '\u0192',
+                       '\u2200',
+                       '\u00BD',
+                       '\u00BC',
+                       '\u00BE',
+                       '\u2044',
+                       '\u03B3',
+                       '\u2265',
+                       '\u003E',
+                       '\u21D4',
+                       '\u2194',
+                       '\u2665',
+                       '\u2026',
+                       '\u00ED',
+                       '\u00EE',
+                       '\u00A1',
+                       '\u00EC',
+                       '\u2111',
+                       '\u221E',
+                       '\u222B',
+                       '\u03B9',
+                       '\u00BF',
+                       '\u2208',
+                       '\u00EF',
+                       '\u03BA',
+                       '\u21D0',
+                       '\u03BB',
+                       '\u2329',
+                       '\u00AB',
+                       '\u2190',
+                       '\u2308',
+                       '\u201C',
+                       '\u2264',
+                       '\u230A',
+                       '\u2217',
+                       '\u25CA',
+                       '\u200E',
+                       '\u2039',
+                       '\u2018',
+                       '\u003C',
+                       '\u00AF',
+                       '\u2014',
+                       '\u00B5',
+                       '\u00B7',
+                       '\u2212',
+                       '\u03BC',
+                       '\u2207',
+                       '\u00A0',
+                       '\u2013',
+                       '\u2260',
+                       '\u220B',
+                       '\u00AC',
+                       '\u2209',
+                       '\u2284',
+                       '\u00F1',
+                       '\u03BD',
+                       '\u00F3',
+                       '\u00F4',
+                       '\u0153',
+                       '\u00F2',
+                       '\u203E',
+                       '\u03C9',
+                       '\u03BF',
+                       '\u2295',
+                       '\u2228',
+                       '\u00AA',
+                       '\u00BA',
+                       '\u00F8',
+                       '\u00F5',
+                       '\u2297',
+                       '\u00F6',
+                       '\u00B6',
+                       '\u2202',
+                       '\u2030',
+                       '\u22A5',
+                       '\u03C6',
+                       '\u03C0',
+                       '\u03D6',
+                       '\u00B1',
+                       '\u00A3',
+                       '\u2032',
+                       '\u220F',
+                       '\u221D',
+                       '\u03C8',
+                       '\u0022',
+                       '\u21D2',
+                       '\u221A',
+                       '\u232A',
+                       '\u00BB',
+                       '\u2192',
+                       '\u2309',
+                       '\u201D',
+                       '\u211C',
+                       '\u00AE',
+                       '\u230B',
+                       '\u03C1',
+                       '\u200F',
+                       '\u203A',
+                       '\u2019',
+                       '\u201A',
+                       '\u0161',
+                       '\u22C5',
+                       '\u00A7',
+                       '\u00AD',
+                       '\u03C3',
+                       '\u03C2',
+                       '\u223C',
+                       '\u2660',
+                       '\u2282',
+                       '\u2286',
+                       '\u2211',
+                       '\u2283',
+                       '\u00B9',
+                       '\u00B2',
+                       '\u00B3',
+                       '\u2287',
+                       '\u00DF',
+                       '\u03C4',
+                       '\u2234',
+                       '\u03B8',
+                       '\u03D1',
+                       '\u2009',
+                       '\u00FE',
+                       '\u02DC',
+                       '\u00D7',
+                       '\u2122',
+                       '\u21D1',
+                       '\u00FA',
+                       '\u2191',
+                       '\u00FB',
+                       '\u00F9',
+                       '\u00A8',
+                       '\u03D2',
+                       '\u03C5',
+                       '\u00FC',
+                       '\u2118',
+                       '\u03BE',
+                       '\u00FD',
+                       '\u00A5',
+                       '\u00FF',
+                       '\u03B6',
+                       '\u200D',
+                       '\u200C'
+               };
 
-               public HttpUtility () 
-               {
-               }
-       
-               #endregion // Constructors
-       
                #region Methods
        
                public static void HtmlAttributeEncode (string s, TextWriter output) 
@@ -816,6 +1043,36 @@ namespace System.Net {
                        return result.ToArray ();
                }
 
+               static string ConvertKeyToEntity (string key)
+               {
+                       var token = CalculateKeyValue (key);
+                       if (token == 0)
+                               return key;
+
+                       var idx = Array.BinarySearch (entities, token);
+                       if (idx < 0)
+                               return key;
+
+                       return entities_values [idx].ToString ();
+               }
+
+               static long CalculateKeyValue (string s)
+               {
+                       if (s.Length > 8)
+                               return 0;
+
+                       long key = 0;
+                       for (int i = 0; i < s.Length; ++i) {
+                               long ch = s[i];
+                               if (ch > 'z' || ch < '0')
+                                       return 0;
+
+                               key |= ch << ((7 - i) * 8);
+                       }
+
+                       return key;
+               }
+
                /// <summary>
                /// Decodes an HTML-encoded string and returns the decoded string.
                /// </summary>
@@ -884,8 +1141,10 @@ namespace System.Net {
                                        entity.Append (c);
                                        if (c == ';') {
                                                string key = entity.ToString ();
-                                               if (key.Length > 1 && Entities.ContainsKey (key.Substring (1, key.Length - 2)))
-                                                       key = Entities [key.Substring (1, key.Length - 2)].ToString ();
+                                               if (key.Length > 1) {
+                                                       var skey = key.Substring (1, key.Length - 2);
+                                                       key = ConvertKeyToEntity (skey);
+                                               }
 
                                                output.Append (key);
                                                state = 0;
index 3b55624cfc881336fc3fd63689bf6ca8ed84a223..84d59f6802517fa65be1681fc9cf57f1d8940597 100644 (file)
@@ -421,6 +421,10 @@ namespace System.Net
                        if (idx >= 0)
                                return false;
 
+                       IPAddress ipaddr;
+                       if (IPAddress.TryParse (val, out ipaddr))
+                               return true;
+
                        string u = scheme + "://" + val + "/";
                        return Uri.IsWellFormedUriString (u, UriKind.Absolute);
                }
index b0615a651b44d8ed13184339f8b4f98e0a93f01c..a6d456293e63c54d739ab11e50275875d419bab1 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security.Protocol.Tls;
+using MSX = Mono.Security.X509;
+using Mono.Security.X509.Extensions;
+#else
 extern alias MonoSecurity;
-
-using System.Text.RegularExpressions;
 using MonoSecurity::Mono.Security.X509.Extensions;
 using MonoSecurity::Mono.Security.Protocol.Tls;
 using MSX = MonoSecurity::Mono.Security.X509;
 #endif
 
+using System.Text.RegularExpressions;
+#endif
+
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -72,10 +78,12 @@ namespace System.Net
        public class ServicePointManager {
                class SPKey {
                        Uri uri; // schema/host/port
+                       Uri proxy;
                        bool use_connect;
 
-                       public SPKey (Uri uri, bool use_connect) {
+                       public SPKey (Uri uri, Uri proxy, bool use_connect) {
                                this.uri = uri;
+                               this.proxy = proxy;
                                this.use_connect = use_connect;
                        }
 
@@ -87,8 +95,16 @@ namespace System.Net
                                get { return use_connect; }
                        }
 
+                       public bool UsesProxy {
+                               get { return proxy != null; }
+                       }
+
                        public override int GetHashCode () {
-                               return uri.GetHashCode () + ((use_connect) ? 1 : 0);
+                               int hash = 23;
+                               hash = hash * 31 + ((use_connect) ? 1 : 0);
+                               hash = hash * 31 + uri.GetHashCode ();
+                               hash = hash * 31 + (proxy != null ? proxy.GetHashCode () : 0);
+                               return hash;
                        }
 
                        public override bool Equals (object obj) {
@@ -97,7 +113,13 @@ namespace System.Net
                                        return false;
                                }
 
-                               return (uri.Equals (other.uri) && other.use_connect == use_connect);
+                               if (!uri.Equals (other.uri))
+                                       return false;
+                               if (use_connect != other.use_connect || UsesProxy != other.UsesProxy)
+                                       return false;
+                               if (UsesProxy && !proxy.Equals (other.proxy))
+                                       return false;
+                               return true;
                        }
                }
 
@@ -325,7 +347,7 @@ namespace System.Net
                        
                        ServicePoint sp = null;
                        lock (servicePoints) {
-                               SPKey key = new SPKey (origAddress, useConnect);
+                               SPKey key = new SPKey (origAddress, usesProxy ? address : null, useConnect);
                                sp = servicePoints [key] as ServicePoint;
                                if (sp != null)
                                        return sp;
@@ -392,6 +414,7 @@ namespace System.Net
                internal class ChainValidationHelper {
                        object sender;
                        string host;
+                       RemoteCertificateValidationCallback cb;
 
 #if !MONOTOUCH
                        static bool is_macosx = System.IO.File.Exists (OSX509Certificates.SecurityLibrary);
@@ -410,19 +433,19 @@ namespace System.Net
                        }
 #endif
 
-                       public ChainValidationHelper (object sender)
+                       public ChainValidationHelper (object sender, string hostName)
                        {
                                this.sender = sender;
+                               host = hostName;
                        }
 
-                       public string Host {
+                       public RemoteCertificateValidationCallback ServerCertificateValidationCallback {
                                get {
-                                       if (host == null && sender is HttpWebRequest)
-                                               host = ((HttpWebRequest) sender).Address.Host;
-                                       return host;
+                                       if (cb == null)
+                                               cb = ServicePointManager.ServerCertificateValidationCallback;
+                                       return cb;
                                }
-
-                               set { host = value; }
+                               set { cb = value; }
                        }
 
                        // Used when the obsolete ICertificatePolicy is set to DefaultCertificatePolicy
@@ -435,7 +458,6 @@ namespace System.Net
                                        return null;
 
                                ICertificatePolicy policy = ServicePointManager.CertificatePolicy;
-                               RemoteCertificateValidationCallback cb = ServicePointManager.ServerCertificateValidationCallback;
 
                                X509Certificate2 leaf = new X509Certificate2 (certs [0].RawData);
                                int status11 = 0; // Error code passed to the obsolete ICertificatePolicy callback
@@ -448,7 +470,7 @@ namespace System.Net
                                // the certificates that the server provided (which generally does not include the root) so, only  
                                // if there's a user callback, we'll create the X509Chain but won't build it
                                // ref: https://bugzilla.xamarin.com/show_bug.cgi?id=7245
-                               if (cb != null) {
+                               if (ServerCertificateValidationCallback != null) {
 #endif
                                chain = new X509Chain ();
                                chain.ChainPolicy = new X509ChainPolicy ();
@@ -478,7 +500,7 @@ namespace System.Net
                                                status11 = -2146762490; //CERT_E_PURPOSE 0x800B0106
                                        }
 
-                                       if (!CheckServerIdentity (certs [0], Host)) {
+                                       if (!CheckServerIdentity (certs [0], host)) {
                                                errors |= SslPolicyErrors.RemoteCertificateNameMismatch;
                                                status11 = -2146762481; // CERT_E_CN_NO_MATCH 0x800B010F
                                        }
@@ -488,7 +510,7 @@ namespace System.Net
                                        // Ideally we should return the SecTrustResult
                                        OSX509Certificates.SecTrustResult trustResult = OSX509Certificates.SecTrustResult.Deny;
                                        try {
-                                               trustResult = OSX509Certificates.TrustEvaluateSsl (certs, Host);
+                                               trustResult = OSX509Certificates.TrustEvaluateSsl (certs, host);
                                                // We could use the other values of trustResult to pass this extra information
                                                // to the .NET 2 callback for values like SecTrustResult.Confirm
                                                result = (trustResult == OSX509Certificates.SecTrustResult.Proceed ||
@@ -534,8 +556,8 @@ namespace System.Net
                                        user_denied = !result && !(policy is DefaultCertificatePolicy);
                                }
                                // If there's a 2.0 callback, it takes precedence
-                               if (cb != null) {
-                                       result = cb (sender, leaf, chain, errors);
+                               if (ServerCertificateValidationCallback != null) {
+                                       result = ServerCertificateValidationCallback (sender, leaf, chain, errors);
                                        user_denied = !result;
                                }
                                return new ValidationResult (result, user_denied, status11);
index 4e1993f7e585c46c19b3ef53edb7beb4b6da6622..66358a6a65a00e7658fc019970771db798385f1d 100644 (file)
@@ -326,15 +326,16 @@ namespace System.Net
                                        
                                        int nread = 0;
                                        long notify_total = 0;
-                                       while ((nread = st.Read (buffer, 0, length)) != 0){
-                                               if (async){
-                                                       notify_total += nread;
+                                       while ((nread = st.Read (buffer, 0, length)) != 0) {
+                                               notify_total += nread;
+                                               if (async)
                                                        OnDownloadProgressChanged (
                                                                new DownloadProgressChangedEventArgs (notify_total, response.ContentLength, userToken));
-                                                                                                     
-                                               }
                                                f.Write (buffer, 0, nread);
                                        }
+
+                                       if (cLength > 0 && notify_total < cLength)
+                                               throw new WebException ("Download aborted prematurely.", WebExceptionStatus.ReceiveFailure);
                                } catch (ThreadInterruptedException){
                                        if (request != null)
                                                request.Abort ();
index 9f80440ccdf26d912f95d199df4a12f469900aa1..7f09859cb5e6cbcd597e6993ce95a4ae712f0f01 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security.Protocol.Tls;
+#else
 extern alias MonoSecurity;
-
 using MonoSecurity::Mono.Security.Protocol.Tls;
 #endif
 
+#endif
+
 using System.IO;
 using System.Collections;
 using System.Net.Sockets;
@@ -93,19 +97,15 @@ namespace System.Net
                Exception connect_exception;
                static object classLock = new object ();
                static Type sslStream;
+#if !MONOTOUCH
                static PropertyInfo piClient;
                static PropertyInfo piServer;
                static PropertyInfo piTrustFailure;
+#endif
 
 #if MONOTOUCH
-                static MethodInfo start_wwan;
-
-                static WebConnection ()
-                {
-                        Type type = Type.GetType ("MonoTouch.ObjCRuntime.Runtime, monotouch");
-                       if (type != null)
-                               start_wwan = type.GetMethod ("StartWWAN", new Type [] { typeof (System.Uri) });
-                }
+               [System.Runtime.InteropServices.DllImport ("__Internal")]
+               static extern void monotouch_start_wwan (string uri);
 #endif
 
                public WebConnection (WebConnectionGroup group, ServicePoint sPoint)
@@ -165,10 +165,8 @@ namespace System.Net
 
                                if (hostEntry == null) {
 #if MONOTOUCH
-                                       if (start_wwan != null) {
-                                               start_wwan.Invoke (null, new object [1] { sPoint.Address });
-                                               hostEntry = sPoint.HostEntry;
-                                       }
+                                       monotouch_start_wwan (sPoint.Address.ToString ());
+                                       hostEntry = sPoint.HostEntry;
                                        if (hostEntry == null) {
 #endif
                                                status = sPoint.UsesProxy ? WebExceptionStatus.ProxyNameResolutionFailure :
@@ -253,9 +251,11 @@ namespace System.Net
                                        throw new NotSupportedException (msg);
                                }
 #endif
+#if !MONOTOUCH
                                piClient = sslStream.GetProperty ("SelectedClientCertificate");
                                piServer = sslStream.GetProperty ("ServerCertificate");
                                piTrustFailure = sslStream.GetProperty ("TrustFailure");
+#endif
                        }
                }
 
@@ -434,14 +434,17 @@ namespace System.Net
                                                        if (!ok)
                                                                return false;
                                                }
-
+#if SECURITY_DEP
+#if MONOTOUCH
+                                               nstream = new HttpsClientStream (serverStream, request.ClientCertificates, request, buffer);
+#else
                                                object[] args = new object [4] { serverStream,
-                                                                               request.ClientCertificates,
-                                                                               request, buffer};
+                                                       request.ClientCertificates,
+                                                       request, buffer};
                                                nstream = (Stream) Activator.CreateInstance (sslStream, args);
-#if SECURITY_DEP
+#endif
                                                SslClientStream scs = (SslClientStream) nstream;
-                                               var helper = new ServicePointManager.ChainValidationHelper (request);
+                                               var helper = new ServicePointManager.ChainValidationHelper (request, request.Address.Host);
                                                scs.ServerCertValidation2 += new CertificateValidationCallback2 (helper.ValidateChain);
 #endif
                                                certsAvailable = false;
@@ -562,7 +565,7 @@ namespace System.Net
 
                        cnc.position = 0;
 
-                       WebConnectionStream stream = new WebConnectionStream (cnc);
+                       WebConnectionStream stream = new WebConnectionStream (cnc, data);
                        bool expect_content = ExpectContent (data.StatusCode, data.request.Method);
                        string tencoding = null;
                        if (expect_content)
@@ -613,8 +616,14 @@ namespace System.Net
                internal void GetCertificates () 
                {
                        // here the SSL negotiation have been done
+#if SECURITY_DEP && MONOTOUCH
+                       HttpsClientStream s = (nstream as HttpsClientStream);
+                       X509Certificate client = s.SelectedClientCertificate;
+                       X509Certificate server = s.ServerCertificate;
+#else
                        X509Certificate client = (X509Certificate) piClient.GetValue (nstream, null);
                        X509Certificate server = (X509Certificate) piServer.GetValue (nstream, null);
+#endif
                        sPoint.SetCertificates (client, server);
                        certsAvailable = (server != null);
                }
@@ -936,20 +945,23 @@ namespace System.Net
                        }
 
                        int nbytes = 0;
+                       bool done = false;
                        WebAsyncResult wr = null;
                        IAsyncResult nsAsync = ((WebAsyncResult) result).InnerAsyncResult;
                        if (chunkedRead && (nsAsync is WebAsyncResult)) {
                                wr = (WebAsyncResult) nsAsync;
                                IAsyncResult inner = wr.InnerAsyncResult;
-                               if (inner != null && !(inner is WebAsyncResult))
+                               if (inner != null && !(inner is WebAsyncResult)) {
                                        nbytes = s.EndRead (inner);
+                                       done = nbytes == 0;
+                               }
                        } else if (!(nsAsync is WebAsyncResult)) {
                                nbytes = s.EndRead (nsAsync);
                                wr = (WebAsyncResult) result;
+                               done = nbytes == 0;
                        }
 
                        if (chunkedRead) {
-                               bool done = (nbytes == 0);
                                try {
                                        chunkStream.WriteAndReadBack (wr.Buffer, wr.Offset, wr.Size, ref nbytes);
                                        if (!done && nbytes == 0 && chunkStream.WantMore)
@@ -1150,9 +1162,16 @@ namespace System.Net
                                }
 
                                // if SSL is in use then check for TrustFailure
-                               if (ssl && (bool) piTrustFailure.GetValue (nstream, null)) {
-                                       wes = WebExceptionStatus.TrustFailure;
-                                       msg = "Trust failure";
+                               if (ssl) {
+#if SECURITY_DEP && MONOTOUCH
+                                       HttpsClientStream https = (nstream as HttpsClientStream);
+                                       if (https.TrustFailure) {
+#else
+                                       if ((bool) piTrustFailure.GetValue (nstream, null)) {
+#endif
+                                               wes = WebExceptionStatus.TrustFailure;
+                                               msg = "Trust failure";
+                                       }
                                }
 
                                HandleError (wes, e, msg);
index ff370e9e8ba78d1e6f6275a49b9f6cb34570def0..90507d8b5c7ca0e0de51a154ae595dd6793a04a2 100644 (file)
@@ -68,24 +68,24 @@ namespace System.Net
                AsyncCallback cb_wrapper; // Calls to ReadCallbackWrapper or WriteCallbacWrapper
                internal bool IgnoreIOErrors;
 
-               public WebConnectionStream (WebConnection cnc)
-               {
-                       if (cnc.Data == null)
-                               throw new InvalidOperationException ("cnc.Data was not initialized");
-                       if (cnc.Data.Headers == null)
-                               throw new InvalidOperationException ("cnc.Data.Headers was not initialized");
-                       if (cnc.Data.request == null)
-                               throw new InvalidOperationException ("cnc.Data.request was not initialized");
+               public WebConnectionStream (WebConnection cnc, WebConnectionData data)
+               {          
+                       if (data == null)
+                               throw new InvalidOperationException ("data was not initialized");
+                       if (data.Headers == null)
+                               throw new InvalidOperationException ("data.Headers was not initialized");
+                       if (data.request == null)
+                               throw new InvalidOperationException ("data.request was not initialized");
                        isRead = true;
                        cb_wrapper = new AsyncCallback (ReadCallbackWrapper);
                        pending = new ManualResetEvent (true);
-                       this.request = cnc.Data.request;
+                       this.request = data.request;
                        read_timeout = request.ReadWriteTimeout;
                        write_timeout = read_timeout;
                        this.cnc = cnc;
-                       string contentType = cnc.Data.Headers ["Transfer-Encoding"];
+                       string contentType = data.Headers ["Transfer-Encoding"];
                        bool chunkedRead = (contentType != null && contentType.IndexOf ("chunked", StringComparison.OrdinalIgnoreCase) != -1);
-                       string clength = cnc.Data.Headers ["Content-Length"];
+                       string clength = data.Headers ["Content-Length"];
                        if (!chunkedRead && clength != null && clength != "") {
                                try {
                                        contentLength = Int32.Parse (clength);
index d096af72eac559ed2f695054d59bc2f39babff9f..5b0cd421c1d2b9022a3ddef10d260a55790a87ce 100644 (file)
@@ -332,6 +332,9 @@ namespace System.Net
                [MonoTODO("Look in other places for proxy config info")]
                public static IWebProxy GetSystemWebProxy ()
                {
+#if MONOTOUCH
+                       return CFNetwork.GetDefaultProxy ();
+#else
 #if !NET_2_1
                        if (IsWindows ()) {
                                int iProxyEnable = (int)Microsoft.Win32.Registry.GetValue ("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", "ProxyEnable", 0);
@@ -422,6 +425,7 @@ namespace System.Net
 #endif
                        
                        return new WebProxy ();
+#endif // MONOTOUCH
                }
 
                void ISerializable.GetObjectData (SerializationInfo serializationInfo, StreamingContext streamingContext)
index 9aaf8a462ecde5fed9ae2a71a9fe1e2c24c79da5..33e27cf23720653e89388e8602fb563941a08821 100644 (file)
 //
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using MSX = Mono.Security.X509;
+#else
 extern alias MonoSecurity;
+using MSX = MonoSecurity::Mono.Security.X509;
+#endif
 
 using System;
 using System.Runtime.InteropServices;
-using MSX = MonoSecurity::Mono.Security.X509;
 
 namespace System.Security.Cryptography.X509Certificates {
 
index 45772c29b4f872a08716c83ac64209c04980ca88..3122a108d4aac9a2028cc2075cc37d384b4def12 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security;
+using Mono.Security.Cryptography;
+using MSX = Mono.Security.X509;
+#else
 extern alias MonoSecurity;
-
 using MonoSecurity::Mono.Security;
 using MonoSecurity::Mono.Security.Cryptography;
 using MSX = MonoSecurity::Mono.Security.X509;
+#endif
 
 namespace System.Security.Cryptography.X509Certificates {
 
index 54f5691ca3ee9c74ef8b9ccbc208af0b459968a1..db0377e12a871846e3c79d62c57f16590494a6ec 100644 (file)
 
 #if SECURITY_DEP
 
-using System.Collections;
-using System.Text;
-
+#if MONOTOUCH
 using Mono.Security;
 using MX = Mono.Security.X509;
+#else
+extern alias MonoSecurity;
+using MonoSecurity::Mono.Security;
+using MX = MonoSecurity::Mono.Security.X509;
+#endif
+
+using System.Collections;
+using System.Text;
 
 namespace System.Security.Cryptography.X509Certificates {
 
@@ -91,7 +97,7 @@ namespace System.Security.Cryptography.X509Certificates {
                                RawData = new byte [2] { 0x30, 0x00 };
                                DecodeRawData ();
                        } else {
-                               ASN1 dn = MX.X501.FromString (distinguishedName);
+                               var dn = MX.X501.FromString (distinguishedName);
                                if ((flag & X500DistinguishedNameFlags.Reversed) != 0) {
                                        ASN1 rdn = new ASN1 (0x30);
                                        for (int i = dn.Count - 1; i >= 0; i--) 
index 59eb0e209a4341cc42a1482a4d7d21e81cfa6612..f3ffaaa47f117cb81dd9b0bd4c4e72d37812a61d 100644 (file)
 
 #if SECURITY_DEP
 
-using System.Text;
-
+#if MONOTOUCH
 using Mono.Security;
+#else
+extern alias MonoSecurity;
+using MonoSecurity::Mono.Security;
+#endif
+
+using System.Text;
 
 namespace System.Security.Cryptography.X509Certificates {
 
index 18107591585cdfe6f7ae39be74aaea57eefe2719..300e1140e1d3a60f930f5591e19cdd2ebcd9fbdb 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security;
+using Mono.Security.Cryptography;
+using MX = Mono.Security.X509;
+#else
 extern alias MonoSecurity;
 
 using MonoSecurity::Mono.Security;
@@ -36,11 +41,16 @@ using MonoSecurity::Mono.Security.Cryptography;
 using MX = MonoSecurity::Mono.Security.X509;
 #endif
 
+#endif
+
 using System.IO;
 using System.Text;
 
 namespace System.Security.Cryptography.X509Certificates {
 
+#if NET_4_0
+       [Serializable]
+#endif
        public class X509Certificate2 : X509Certificate {
 #if !SECURITY_DEP
                // Used in Mono.Security HttpsClientStream
@@ -580,7 +590,7 @@ namespace System.Security.Cryptography.X509Certificates {
                        if (_cert == null)
                                throw new CryptographicException (empty_error);
 
-                       X509Chain chain = (X509Chain) CryptoConfig.CreateFromName ("X509Chain");
+                       X509Chain chain = X509Chain.Create ();
                        if (!chain.Build (this))
                                return false;
                        // TODO - check chain and other stuff ???
index 0cab0a8bdf8e0a5544b80e64472d3dd71de3beb1..7550c0608cb753a93971d423c516427e5e8588f7 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using MX = Mono.Security.X509;
+#else
 extern alias MonoSecurity;
+using MX = MonoSecurity::Mono.Security.X509;
+#endif
 
 using System.Collections;
 using System.Text;
 
-using MX = MonoSecurity::Mono.Security.X509;
-
 namespace System.Security.Cryptography.X509Certificates {
 
        public class X509Chain {
@@ -235,7 +238,11 @@ namespace System.Security.Cryptography.X509Certificates {
 
                public static X509Chain Create ()
                {
+#if FULL_AOT_RUNTIME
+                       return new X509Chain ();
+#else
                        return (X509Chain) CryptoConfig.CreateFromName ("X509Chain");
+#endif
                }
 
                // private stuff
@@ -878,8 +885,12 @@ namespace System.Security.Cryptography.X509Certificates {
                        return X509ChainStatusFlags.NoError;
                }
 
-               static MX.X509Crl CheckCrls (string subject, string ski, ArrayList crls)
+               static MX.X509Crl CheckCrls (string subject, string ski, MX.X509Store store)
                {
+                       if (store == null)
+                               return null;
+
+                       var crls = store.Crls;
                        foreach (MX.X509Crl crl in crls) {
                                if (crl.IssuerName == subject && (ski.Length == 0 || ski == GetAuthorityKeyIdentifier (crl)))
                                        return crl;
@@ -893,21 +904,21 @@ namespace System.Security.Cryptography.X509Certificates {
                        string ski = GetSubjectKeyIdentifier (caCertificate);
 
                        // consider that the LocalMachine directories could not exists... and cannot be created by the user
-                       MX.X509Crl result = (LMCAStore.Store == null) ? null : CheckCrls (subject, ski, LMCAStore.Store.Crls);
+                       MX.X509Crl result = CheckCrls (subject, ski, LMCAStore.Store);
                        if (result != null)
                                return result;
                        if (location == StoreLocation.CurrentUser) {
-                               result = CheckCrls (subject, ski, UserCAStore.Store.Crls);
+                               result = CheckCrls (subject, ski, UserCAStore.Store);
                                if (result != null)
                                        return result;
                        }
 
                        // consider that the LocalMachine directories could not exists... and cannot be created by the user
-                       result = (LMRootStore.Store == null) ? null : CheckCrls (subject, ski, LMRootStore.Store.Crls);
+                       result = CheckCrls (subject, ski, LMRootStore.Store);
                        if (result != null)
                                return result;
                        if (location == StoreLocation.CurrentUser) {
-                               result = CheckCrls (subject, ski, UserRootStore.Store.Crls);
+                               result = CheckCrls (subject, ski, UserRootStore.Store);
                                if (result != null)
                                        return result;
                        }
index efe2abed317b118ae01d3201c27b173a70e8138e..19ddcb8bd92286d3b12646286dce209af902ef22 100644 (file)
 
 #if SECURITY_DEP
 
-using System.Text;
-
+#if MONOTOUCH
 using Mono.Security;
+#else
+extern alias MonoSecurity;
+using MonoSecurity::Mono.Security;
+#endif
+
+using System.Text;
 
 namespace System.Security.Cryptography.X509Certificates {
 
index f08ae933b4516d759706d546bbecd95a30f4bed6..bceabd05723e60fa11021e7495c16a26f9751b6d 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security;
+using MX = Mono.Security.X509;
+#else
 extern alias MonoSecurity;
+using MonoSecurity::Mono.Security;
+using MX = MonoSecurity::Mono.Security.X509;
+#endif
 
 using System.Collections;
-using Mono.Security;
-using MX = Mono.Security.X509;
 
 namespace System.Security.Cryptography.X509Certificates {
 
@@ -51,13 +56,13 @@ namespace System.Security.Cryptography.X509Certificates {
                        _list = new ArrayList ();
                }
 
-               internal X509ExtensionCollection (MonoSecurity::Mono.Security.X509.X509Certificate cert)
+               internal X509ExtensionCollection (MX.X509Certificate cert)
                {
                        _list = new ArrayList (cert.Extensions.Count);
                        if (cert.Extensions.Count == 0)
                                return;
 
-                       foreach (MonoSecurity::Mono.Security.X509.X509Extension ext in cert.Extensions) {
+                       foreach (MX.X509Extension ext in cert.Extensions) {
                                bool critical = ext.Critical;
                                string oid = ext.Oid;
                                byte[] raw_data = null;
index ce5df95e0b6ce01c2d11ba895563da02ca54e3d1..69f56faece63dbe338571f442ab2d699588fd65c 100644 (file)
 
 #if SECURITY_DEP
 
-using System.Text;
-
+#if MONOTOUCH
 using Mono.Security;
+#else
+extern alias MonoSecurity;
+using MonoSecurity::Mono.Security;
+#endif
+
+using System.Text;
 
 namespace System.Security.Cryptography.X509Certificates {
 
index b527f34e39ffe26adf7e233baaab7fe1353ccd7e..58966329d043f789d62fe93a419bb519562e0896 100644 (file)
 
 #if SECURITY_DEP
 
-using System.Security.Permissions;
+#if MONOTOUCH
 using MX = Mono.Security.X509;
+#else
+extern alias MonoSecurity;
+using MX = MonoSecurity::Mono.Security.X509;
+#endif
+
+using System.Security.Permissions;
 
 namespace System.Security.Cryptography.X509Certificates {
 
index d24e4806bb994bcbd58c9f337cedea7d6a1301d3..fe2114afe1782ed9fd8fa799f5b89faa20580b99 100644 (file)
 
 #if SECURITY_DEP
 
-using System.Text;
-
+#if MONOTOUCH
 using Mono.Security;
 using Mono.Security.Cryptography;
+#else
+extern alias MonoSecurity;
+using MonoSecurity::Mono.Security;
+using MonoSecurity::Mono.Security.Cryptography;
+#endif
+
+using System.Text;
 
 namespace System.Security.Cryptography.X509Certificates {
 
index b4c17f84103574250eed74cd5011dc0aa9d62bd7..995f1b220c2d68b4ce5b1d04a970fe9be9c3e21f 100644 (file)
 
 #if SECURITY_DEP
 
-using System.Security.Cryptography.X509Certificates;
-using System.Text;
-
+#if MONOTOUCH
 using Mono.Security;
 using Mono.Security.Cryptography;
+#else
+extern alias MonoSecurity;
+using MonoSecurity::Mono.Security;
+using MonoSecurity::Mono.Security.Cryptography;
+#endif
+
+using System.Security.Cryptography.X509Certificates;
+using System.Text;
 
 namespace System.Security.Cryptography {
 
index 4748b403f54aa0e4dd2edb841c92237acd432e6c..f8c7de813486431073fe9ce74c34ba01ff70f178 100644 (file)
@@ -31,7 +31,9 @@ using System;
 using System.Text;
 using System.Collections;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 using System.Runtime.Serialization;
 
 using RegularExpression = System.Text.RegularExpressions.Syntax.RegularExpression;
index 823063b5624b2854e829d362c09c5f3b5b7b1701..8f6f496e906e8fd8cc9dcbbf549e1aebd3065e23 100644 (file)
@@ -1,7 +1,7 @@
 //
 // System.Platform
 //
-// Copyright (C) 2011 Xamarin, Inc. (www.xamarin.com)
+// Copyright (C) 2011-2013 Xamarin Inc. (www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,6 +28,11 @@ using System.Runtime.InteropServices;
 
 namespace System {
        internal static class Platform {
+#if MONOTOUCH
+               public static bool IsMacOS {
+                       get { return true; }
+               }
+#else
                [DllImport ("libc")]
                static extern int uname (IntPtr buf);
                
@@ -53,5 +58,6 @@ namespace System {
                                return isMacOS;
                        }
                }
+#endif
        }
 }
index 38708615c4c5cb76412c24596d8c0c1a088eca5a..9e8c8cd6eb58a8c956fd382df66bdac04ef181bb 100644 (file)
@@ -209,6 +209,9 @@ namespace System {
                                        success = false;
                                        break;
                                }
+
+                               if (success && isAbsoluteUri && (path.Length > 0))
+                                       path = EscapeString (path);
                        }
                }
 
index 654f826e636de1d7f527579ba15374f5393748f8..1262cc394724ae0e210221d1db835d67658ddb18 100644 (file)
@@ -97,7 +97,7 @@ namespace MonoTests.System.Collections.Concurrent
                                threads[i].Start ();
                        }
                        foreach (var t in threads)
-                               Assert.IsTrue (t.Join (200));
+                               Assert.IsTrue (t.Join (2000));
 
                        Assert.IsFalse (bag.IsEmpty);
                        Assert.AreEqual (threads.Length, bag.Count);
index 7fe4c29dbf31c7a481226a7250c810356e389cba..16d12af943c993e9ac2a8cfbb46a474b760b2d86 100644 (file)
@@ -188,6 +188,10 @@ namespace MonoTests.System.ComponentModel.Design.Serialization {
                [Test]
                public void Property_Arguments_Mismatch ()
                {
+#if MOBILE
+                       // ensure the property is not linked out of the application since it make the test fails
+                       Assert.NotNull (Thread.CurrentPrincipal, "pre-test");
+#endif
                        PropertyInfo pi = typeof (Thread).GetProperty ("CurrentPrincipal");
 
                        InstanceDescriptor id = new InstanceDescriptor (pi, new object [] { url });
@@ -207,6 +211,10 @@ namespace MonoTests.System.ComponentModel.Design.Serialization {
                [Test]
                public void Property_Arguments_Null ()
                {
+#if MOBILE
+                       // ensure the property is not linked out of the application since it make the test fails
+                       Assert.NotNull (Thread.CurrentPrincipal, "pre-test");
+#endif
                        PropertyInfo pi = typeof (Thread).GetProperty ("CurrentPrincipal");
 
                        InstanceDescriptor id = new InstanceDescriptor (pi, null);
index 74e300b32727b4abe6a2f91de62120149bd6d109..bfca106ba456b30e223713cb9704fa169035579c 100644 (file)
@@ -21,6 +21,7 @@ namespace MonoTests.System.ComponentModel
        public class ComponentConverterTests
        {
                [Test]
+               [NUnit.Framework.Category ("MobileNotWorking")] // IComponent doesn't have the TypeConverter attribute
                public void DataSetConversions ()
                {
                        TypeConverter converter = TypeDescriptor.GetConverter (typeof (DataSet));
index 2fdd8db64d109efc49cba925b3c0c19db84036b8..a09776a9c00b41810928d26ee0e118948744c9de 100644 (file)
@@ -1465,6 +1465,10 @@ namespace MonoTests.System.ComponentModel
                [Test]
                public void GetProperties_Order ()
                {
+#if MOBILE
+                       // Component.Container will be be linked out (when using Link SDK) if unused
+                       Assert.Null (new Component ().Container, "pre-test");
+#endif
                        MyComponent com = new MyComponent (new MyContainer ());
 
                        PropertyDescriptorCollection col = TypeDescriptor.GetProperties (com);
index 4474859ebe506601608ad62ac03c640f435396e5..2778832d555aec1ab79f018536ced1c02a4c749b 100644 (file)
@@ -728,6 +728,7 @@ namespace MonoTests.System.Diagnostics
 // Not technically a 2.0 only test, but I use lambdas, so I need gmcs
 
                [Test]
+               [NUnit.Framework.Category ("MobileNotWorking")]
                // This was for bug #459450
                public void TestEventRaising ()
                {
@@ -797,6 +798,7 @@ namespace MonoTests.System.Diagnostics
                }
                
                [Test]
+               [NUnit.Framework.Category ("MobileNotWorking")]
                public void ProcessName_AfterExit ()
                {
                        Process p = new Process ();
index a95f54b90afbd059153ef456e9a50979a5f55306..562c6e9dc6f531c27db6bdb7093b69387be02502 100644 (file)
@@ -50,6 +50,13 @@ namespace MonoTests.System.Diagnostics
                        new TraceSource (null);
                }
 
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void ConstructorEmpty ()
+               {
+                       new TraceSource ("");
+               }
+               
                [Test]
                public void DefaultValues ()
                {
@@ -70,6 +77,20 @@ namespace MonoTests.System.Diagnostics
                        TraceSource ts = new TraceSource ("foo");
                        ts.Switch = null;
                }
+               
+               [Test]
+               public void SwitchLevel ()
+               {
+                       TraceSource s = new TraceSource ("Source1");
+                       Assert.AreEqual (SourceLevels.Off, s.Switch.Level, "#1");
+
+                       s = new TraceSource("Source2", SourceLevels.All);
+                       Assert.AreEqual (SourceLevels.All, s.Switch.Level, "#2");
+
+                       s = new TraceSource("Source3");
+                       s.Switch.Level = SourceLevels.All;
+                       Assert.AreEqual (SourceLevels.All, s.Switch.Level, "#3");
+               }
        }
 }
 
index 2062cf84f62b9ab07d4f4783d02404c07b314480..6fa403c60758dd086031128faf0c0b7037700541 100644 (file)
@@ -1032,7 +1032,7 @@ namespace MonoTests.System.Net.Sockets {
                        
                        client.BeginReceive (BRCallback, client);
 
-                       IPEndPoint ep = new IPEndPoint (Dns.GetHostEntry (string.Empty).AddressList[0], 1237);
+                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 1237);
                        byte[] send_bytes = new byte[] {10, 11, 12, 13};
                        client.Send (send_bytes, send_bytes.Length, ep);
 
@@ -1052,7 +1052,7 @@ namespace MonoTests.System.Net.Sockets {
                public void Available ()
                {
                        UdpClient client = new UdpClient (1238);
-                       IPEndPoint ep = new IPEndPoint (Dns.GetHostEntry (string.Empty).AddressList[0], 1238);
+                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 1238);
                        byte[] bytes = new byte[] {10, 11, 12, 13};
                        
                        client.Send (bytes, bytes.Length, ep);
index 3fe51f4999966e8a839447f324d291bdfb1eafc1..f0826d1c9902938fe975f2a12554f06926ef5876 100644 (file)
@@ -5,9 +5,11 @@
 //   Lawrence Pit (loz@cable.a2000.nl)
 //   Martin Willemoes Hansen (mwh@sysrq.dk)
 //   Gonzalo Paniagua Javier (gonzalo@ximian.com)
+//   Andres G. Aragoneses (andres@7digital.com)
 //
 // (C) 2003 Martin Willemoes Hansen
 // Copyright (c) 2005 Novell, Inc. (http://www.novell.com
+// Copyright (c) 2013 7digital Media Ltd (http://www.7digital.com)
 //
 
 using NUnit.Framework;
@@ -1433,6 +1435,123 @@ namespace MonoTests.System.Net
                        }
                }
 
+
+               #region Timeout_Bug // https://bugzilla.novell.com/show_bug.cgi?id=317553
+
+               class TimeoutTestHelper {
+
+                       string url_to_test;
+                       internal DateTime? Start { get; private set; }
+                       internal DateTime? End { get; private set; }
+                       internal Exception Exception { get; private set; }
+                       internal string Body { get; private set; }
+                       internal int TimeOutInMilliSeconds { get; private set; }
+
+                       internal TimeoutTestHelper (string url, int timeoutInMilliseconds)
+                       {
+                               url_to_test = url;
+                               TimeOutInMilliSeconds = timeoutInMilliseconds;
+                       }
+
+                       internal void LaunchWebRequest ()
+                       {
+                               var req = (HttpWebRequest) WebRequest.Create (url_to_test);
+                               req.Timeout = TimeOutInMilliSeconds;
+
+                               Start = DateTime.Now;
+                               try {
+                                       using (var resp = (HttpWebResponse) req.GetResponse ())
+                                       {
+                                               var sr = new StreamReader (resp.GetResponseStream (), Encoding.UTF8);
+                                               Body = sr.ReadToEnd ();
+                                       }
+                               } catch (Exception e) {
+                                       End = DateTime.Now;
+                                       Exception = e;
+                               }
+                       }
+               }
+
+               void TestTimeOut (string url)
+               {
+                       var timeoutWorker = new TimeoutTestHelper (url, three_seconds_in_milliseconds);
+                       var threadStart = new ThreadStart (timeoutWorker.LaunchWebRequest);
+                       var thread = new Thread (threadStart);
+                       thread.Start ();
+                       Thread.Sleep (three_seconds_in_milliseconds * 3);
+
+                       if (timeoutWorker.End == null) {
+                               thread.Abort ();
+                               Assert.Fail ("Thread finished after triple the timeout specified has passed");
+                       }
+
+                       if (!String.IsNullOrEmpty (timeoutWorker.Body)) {
+                               if (timeoutWorker.Body == response_of_timeout_handler) {
+                                       Assert.Fail ("Should not be reached, timeout exception was not thrown and webrequest managed to retrieve proper body");
+                               }
+                               Assert.Fail ("Should not be reached, timeout exception was not thrown and webrequest managed to retrieve an incorrect body: " + timeoutWorker.Body);
+                       }
+
+                       Assert.IsNotNull (timeoutWorker.Exception,
+                                         "Timeout exception was not thrown");
+
+                       var webEx = timeoutWorker.Exception as WebException;
+                       Assert.IsNotNull (webEx, "Exception thrown should be WebException, but was: " +
+                                         timeoutWorker.Exception.GetType ().FullName);
+
+                       Assert.AreEqual (webEx.Status, WebExceptionStatus.Timeout,
+                                        "WebException was thrown, but with a wrong status (should be timeout): " + webEx.Status);
+
+                       Assert.IsFalse (timeoutWorker.End > (timeoutWorker.Start + TimeSpan.FromMilliseconds (three_seconds_in_milliseconds + 500)),
+                                       "Timeout exception should have been thrown shortly after timeout is reached, however it was at least half-second late");
+               }
+
+               [Test] // 1st possible case of https://bugzilla.novell.com/show_bug.cgi?id=MONO74177
+               public void TestTimeoutPropertyWithServerThatExistsAndRespondsButTooLate ()
+               {
+                       var ep = new IPEndPoint (IPAddress.Loopback, 8123);
+                       string url = "http://" + ep + "/foobar/";
+
+                       using (var responder = new SocketResponder (ep, TimeOutHandler))
+                       {
+                               responder.Start ();
+
+                               TestTimeOut (url);
+
+                               responder.Stop ();
+                       }
+               }
+
+               [Test] // 2nd possible case of https://bugzilla.novell.com/show_bug.cgi?id=MONO74177
+               public void TestTimeoutPropertyWithServerThatDoesntExist ()
+               {
+                       string url = "http://10.128.200.100:8271/"; // some endpoint that is unlikely to exist
+
+                       TestTimeOut (url);
+               }
+
+               const string response_of_timeout_handler = "RESPONSE_OF_TIMEOUT_HANDLER";
+               const int three_seconds_in_milliseconds = 3000;
+
+               private static byte[] TimeOutHandler (Socket socket)
+               {
+                       socket.Receive (new byte[4096]);
+
+                       Thread.Sleep (three_seconds_in_milliseconds * 2);
+
+                       var sw = new StringWriter ();
+                       sw.WriteLine ("HTTP/1.1 200 OK");
+                       sw.WriteLine ("Content-Type: text/plain");
+                       sw.WriteLine ("Content-Length: " + response_of_timeout_handler.Length);
+                       sw.WriteLine ();
+                       sw.Write (response_of_timeout_handler);
+                       sw.Flush ();
+
+                       return Encoding.UTF8.GetBytes (sw.ToString ());
+               }
+
+               #endregion
+
                internal static byte [] EchoRequestHandler (Socket socket)
                {
                        MemoryStream ms = new MemoryStream ();
@@ -2361,7 +2480,40 @@ namespace MonoTests.System.Net
 
                        Assert.AreEqual (null, req.Headers.Get ("Date"));
                }
+               
+               [Test]
+               // Bug #12393
+               public void TestIPv6Host ()
+               {
+                       var address = "2001:0000:0000:0001:0001:0001:0157:0000";
+                       var address2 = '[' + address + ']';
+                       var uri = new Uri (string.Format ("http://{0}/test.css", address2));
+                       var hwr = (HttpWebRequest)WebRequest.Create (uri);
+
+                       hwr.Host = address2;
+                       Assert.AreEqual (address2, hwr.Host, "#1");
+               }
+
+               [Test]
+               // Bug #12393
+               [Category ("NotWorking")]
+               public void TestIPv6Host2 ()
+               {
+                       var address = "2001:0000:0000:0001:0001:0001:0157:0000";
+                       var address2 = '[' + address + ']';
+                       var uri = new Uri (string.Format ("http://{0}/test.css", address2));
+                       var hwr = (HttpWebRequest)WebRequest.Create (uri);
+
+                       try {
+                               hwr.Host = address;
+                               Assert.Fail ("#1");
+                       } catch (ArgumentException) {
+                               ;
+                       }
+               }
 #endif
+
+
                class ListenerScope : IDisposable {
                        EventWaitHandle completed;
                        public HttpListener listener;
index 9917fa9a441b49b185509681aedbd0445f2c5898..3505926f41074e31c559b69c2187940f9fd475ef 100644 (file)
@@ -193,10 +193,10 @@ namespace MonoTests.System.Net
                [Test] // DownloadFile (string, string)
                public void DownloadFile1_Address_SchemeNotSupported ()
                {
+                       string file = Path.Combine (Path.GetTempPath (), "tmp.out");
                        WebClient wc = new WebClient ();
                        try {
-                               wc.DownloadFile ("tp://scheme.notsupported",
-                                       "tmp.out");
+                               wc.DownloadFile ("tp://scheme.notsupported", file);
                                Assert.Fail ("#1");
                        } catch (WebException ex) {
                                // An error occurred performing a WebClient request
@@ -212,6 +212,10 @@ namespace MonoTests.System.Net
                                Assert.IsNull (inner.InnerException, "#8");
                                Assert.IsNotNull (inner.Message, "#9");
                        }
+                       finally {
+                               if (File.Exists (file))
+                                       File.Delete (file);
+                       }
                }
 
                [Test] // DownloadFile (string, string)
@@ -270,10 +274,10 @@ namespace MonoTests.System.Net
                [Test] // DownloadFile (Uri, string)
                public void DownloadFile2_Address_SchemeNotSupported ()
                {
+                       string file = Path.Combine (Path.GetTempPath (), "tmp.out");
                        WebClient wc = new WebClient ();
                        try {
-                               wc.DownloadFile (new Uri ("tp://scheme.notsupported"),
-                                       "tmp.out");
+                               wc.DownloadFile (new Uri ("tp://scheme.notsupported"), file);
                                Assert.Fail ("#1");
                        } catch (WebException ex) {
                                // An error occurred performing a WebClient request
@@ -289,6 +293,10 @@ namespace MonoTests.System.Net
                                Assert.IsNull (inner.InnerException, "#8");
                                Assert.IsNotNull (inner.Message, "#9");
                        }
+                       finally {
+                               if (File.Exists (file))
+                                       File.Delete (file);
+                       }
                }
 
                [Test] // DownloadFile (Uri, string)
index 3b940e5fa9cd6d2de41eaa52bc2a66ee6743993f..77c4b75c0980af7bd888d2650d67089f768aeb25 100644 (file)
@@ -36,6 +36,9 @@ using System.Text.RegularExpressions;
 namespace MonoTests.System.Net {
 
        [TestFixture]
+#if MOBILE
+       [Ignore ("CAS is not supported and parts will be linked away")]
+#endif
        public class WebPermissionAttributeTest {
 
                [Test]
index f2adab019132024d7e041f0d7acb761aafdecefc..39d7045ca0dd6bf57dc9e9c6cc21666f9692d950 100644 (file)
@@ -37,6 +37,9 @@ namespace MonoTests.System.Net {
        
        [TestFixture]
        [Category ("CAS")]
+#if MOBILE
+       [Ignore ("CAS is not supported and parts will be linked away")]
+#endif
        public class WebPermissionTest {
 
                [Test]
index 8a4414fb774442d89415ec9da15f045592858027..92c1a54300ba13b5cdb3488875de883f32c32d15 100644 (file)
@@ -180,6 +180,16 @@ namespace MonoTests.System.Net {
                                        " + \"&mid=\" + ModuleID + \"&pageindex=\" + Request.Params.Get(\"pageindex\") %>";
                        Assert.AreEqual (str, WebUtility.HtmlDecode (str));
                }
+
+               [Test]
+               public void EntityEncoding ()
+               {
+                       var expected = "\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\u0192\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03D1\u03D2\u03D6\u2022\u2026\u2032\u2033\u203E\u2044\u2118\u2111\u211C\u2122\u2135\u2190\u2191\u2192\u2193\u2194\u21B5\u21D0\u21D1\u21D2\u21D3\u21D4\u2200\u2202\u2203\u2205\u2207\u2208\u2209\u220B\u220F\u2211\u2212\u2217\u221A\u221D\u221E\u2220\u2227\u2228\u2229\u222A\u222B\u2234\u223C\u2245\u2248\u2260\u2261\u2264\u2265\u2282\u2283\u2284\u2286\u2287\u2295\u2297\u22A5\u22C5\u2308\u2309\u230A\u230B\u2329\u232A\u25CA\u2660\u2663\u2665\u2666\u0022\u0026\u003C\u003E\u0152\u0153\u0160\u0161\u0178\u02C6\u02DC\u2002\u2003\u2009\u200C\u200D\u200E\u200F\u2013\u2014\u2018\u2019\u201A\u201C\u201D\u201E\u2020\u2021\u2030\u2039\u203A\u20AC";
+
+                       var htmlDecoded = WebUtility.HtmlDecode ("&nbsp;&iexcl;&cent;&pound;&curren;&yen;&brvbar;&sect;&uml;&copy;&ordf;&laquo;&not;&shy;&reg;&macr;&deg;&plusmn;&sup2;&sup3;&acute;&micro;&para;&middot;&cedil;&sup1;&ordm;&raquo;&frac14;&frac12;&frac34;&iquest;&Agrave;&Aacute;&Acirc;&Atilde;&Auml;&Aring;&AElig;&Ccedil;&Egrave;&Eacute;&Ecirc;&Euml;&Igrave;&Iacute;&Icirc;&Iuml;&ETH;&Ntilde;&Ograve;&Oacute;&Ocirc;&Otilde;&Ouml;&times;&Oslash;&Ugrave;&Uacute;&Ucirc;&Uuml;&Yacute;&THORN;&szlig;&agrave;&aacute;&acirc;&atilde;&auml;&aring;&aelig;&ccedil;&egrave;&eacute;&ecirc;&euml;&igrave;&iacute;&icirc;&iuml;&eth;&ntilde;&ograve;&oacute;&ocirc;&otilde;&ouml;&divide;&oslash;&ugrave;&uacute;&ucirc;&uuml;&yacute;&thorn;&yuml;&fnof;&Alpha;&Beta;&Gamma;&Delta;&Epsilon;&Zeta;&Eta;&Theta;&Iota;&Kappa;&Lambda;&Mu;&Nu;&Xi;&Omicron;&Pi;&Rho;&Sigma;&Tau;&Upsilon;&Phi;&Chi;&Psi;&Omega;&alpha;&beta;&gamma;&delta;&epsilon;&zeta;&eta;&theta;&iota;&kappa;&lambda;&mu;&nu;&xi;&omicron;&pi;&rho;&sigmaf;&sigma;&tau;&upsilon;&phi;&chi;&psi;&omega;&thetasym;&upsih;&piv;&bull;&hellip;&prime;&Prime;&oline;&frasl;&weierp;&image;&real;&trade;&alefsym;&larr;&uarr;&rarr;&darr;&harr;&crarr;&lArr;&uArr;&rArr;&dArr;&hArr;&forall;&part;&exist;&empty;&nabla;&isin;&notin;&ni;&prod;&sum;&minus;&lowast;&radic;&prop;&infin;&ang;&and;&or;&cap;&cup;&int;&there4;&sim;&cong;&asymp;&ne;&equiv;&le;&ge;&sub;&sup;&nsub;&sube;&supe;&oplus;&otimes;&perp;&sdot;&lceil;&rceil;&lfloor;&rfloor;&lang;&rang;&loz;&spades;&clubs;&hearts;&diams;&quot;&amp;&lt;&gt;&OElig;&oelig;&Scaron;&scaron;&Yuml;&circ;&tilde;&ensp;&emsp;&thinsp;&zwnj;&zwj;&lrm;&rlm;&ndash;&mdash;&lsquo;&rsquo;&sbquo;&ldquo;&rdquo;&bdquo;&dagger;&Dagger;&permil;&lsaquo;&rsaquo;&euro;");
+                       
+                       Assert.AreEqual (expected, htmlDecoded);
+               }
        }
 }
 #endif
index 0a860c137ed04d3e169a1a7648aecfc8e63ae7f8..9439f666cc81426a827153c47709eefe32fae101 100644 (file)
@@ -284,14 +284,9 @@ namespace MonoTests.System.Security.Cryptography.X509Certificates {
                public void StaticCreation () 
                {
                        X509Chain c = X509Chain.Create ();
-#if MOBILE
-                       Assert.IsNull (c);
-#else
                        CheckDefaultChain (c);
-#endif
                }
 
-#if !MOBILE
                [Test]
                public void CreateViaCryptoConfig ()
                {
@@ -299,7 +294,6 @@ namespace MonoTests.System.Security.Cryptography.X509Certificates {
                        Assert.AreEqual (typeof (X509Chain), CryptoConfig.CreateFromName ("X509Chain").GetType (), "X509Chain");
                        Assert.IsNull (CryptoConfig.CreateFromName ("System.Security.Cryptography.X509Certificates.X509Chain"), "System.Security.Cryptography.X509Certificates.X509Chain");
                }
-#endif
        }
 }
 
index 9e5db531fd064c1226ef14ca81d27dd86736d030..51d0b522ec93142615d50a3208251dd37770448c 100644 (file)
@@ -182,6 +182,7 @@ namespace MonoTests.System.Threading {
                }
 
                [Test]
+               [Category ("MobileNotWorking")]
                public void Constructor_IntIntStringBoolSecurity ()
                {
                        bool created = false;
@@ -191,6 +192,7 @@ namespace MonoTests.System.Threading {
                }
 
                [Test]
+               [Category ("MobileNotWorking")]
                [ExpectedException (typeof (ArgumentNullException))]
                public void OpenExisting_NullName ()
                {
@@ -198,6 +200,7 @@ namespace MonoTests.System.Threading {
                }
 
                [Test]
+               [Category ("MobileNotWorking")]
                [ExpectedException (typeof (ArgumentException))]
                public void OpenExisting_EmptyName ()
                {
@@ -205,6 +208,7 @@ namespace MonoTests.System.Threading {
                }
 
                [Test]
+               [Category ("MobileNotWorking")]
                [ExpectedException (typeof (ArgumentException))]
                public void OpenExisting_TooLongName ()
                {
@@ -212,6 +216,7 @@ namespace MonoTests.System.Threading {
                }
 
                [Test]
+               [Category ("MobileNotWorking")]
                [ExpectedException (typeof (WaitHandleCannotBeOpenedException))]
                public void OpenExisting_Unexisting ()
                {
index 3c0c66dd5d7eefc306bc942a7a184b3e9e75c53f..508e1307993018782d889aeea5da971a371de287 100644 (file)
@@ -1876,5 +1876,17 @@ namespace MonoTests.System
                        string escaped = uri.GetComponents (UriComponents.Fragment, UriFormat.UriEscaped);
                        Assert.AreEqual ("id=1%262&sort=asc", escaped, "UriEscaped");
                }
+
+               [Test]
+               // Bug #12631
+               public void LocalPathWithBaseUrl ()
+               {
+                       var mainUri = new Uri ("http://www.imdb.com");
+                       var uriPath = "/title/tt0106521";
+
+                       Uri result;
+                       Assert.IsTrue (Uri.TryCreate (mainUri, uriPath, out result), "#1");
+                       Assert.AreEqual ("http://www.imdb.com/title/tt0106521", result.ToString (), "#2");
+               }
        }
 }
index da4e7c4d5503344a62c467c9947dafc8f5882368..8fe73931954eb6023ebd7176a3a88b0fb135c95c 100644 (file)
@@ -181,6 +181,9 @@ namespace MonoTests.System
                        uri = new Uri ("http://dummy.com");
                        Assert.IsTrue (Uri.TryCreate (relative, UriKind.Relative, out uri), "relative-Relative");
                        Assert.AreEqual (relative, uri.OriginalString, "relative-RelativeOrAbsolute-OriginalString");
+
+                       Assert.IsTrue (Uri.TryCreate ("http://mono-project.com/☕", UriKind.Absolute, out uri), "highunicode-Absolute");
+                       Assert.AreEqual("http://mono-project.com/%E2%98%95", uri.AbsoluteUri, "highunicode-Absolute-AbsoluteUri");
                }
 
                [Test] // TryCreate (String, UriKind, Uri)
index 0ed7e1088ec48432929e424fd7e40c3e1b61d9b0..8b5c746266977ce59eb19e3323925218f655d790 100644 (file)
@@ -196,6 +196,8 @@ System.ComponentModel/UInt64Converter.cs
 System.ComponentModel/WeakObjectWrapper.cs
 System.ComponentModel/WeakObjectWrapperComparer.cs
 System.ComponentModel/Win32Exception.cs
+System.Diagnostics/BooleanSwitch.cs
+System.Diagnostics/CorrelationManager.cs
 System.Diagnostics/DataReceivedEventArgs.cs
 System.Diagnostics/DataReceivedEventHandler.cs
 System.Diagnostics/Debug.cs
@@ -210,14 +212,23 @@ System.Diagnostics/ProcessStartInfo.cs
 System.Diagnostics/ProcessThread.cs
 System.Diagnostics/ProcessThreadCollection.cs
 System.Diagnostics/ProcessWindowStyle.cs
+System.Diagnostics/SourceLevels.cs
+System.Diagnostics/SourceSwitch.cs
 System.Diagnostics/Stopwatch.cs
+System.Diagnostics/Switch.cs
+System.Diagnostics/SwitchAttribute.cs
+System.Diagnostics/SwitchLevelAttribute.cs
+System.Diagnostics/ThreadPriorityLevel.cs
+System.Diagnostics/ThreadState.cs
+System.Diagnostics/ThreadWaitReason.cs
+System.Diagnostics/Trace.cs
+System.Diagnostics/TraceEventType.cs
 System.Diagnostics/TraceImpl.cs
+System.Diagnostics/TraceLevel.cs
 System.Diagnostics/TraceListener.cs
 System.Diagnostics/TraceListenerCollection.cs
 System.Diagnostics/TraceOptions.cs
-System.Diagnostics/ThreadPriorityLevel.cs
-System.Diagnostics/ThreadState.cs
-System.Diagnostics/ThreadWaitReason.cs
+System.Diagnostics/TraceSwitch.cs
 System.IO.Compression/CompressionLevel.cs
 System.IO.Compression/CompressionMode.cs
 System.IO.Compression/DeflateStream.cs
index 8dce31d234c5b119f6502c1b4dbf3c9b3baf94c0..7bb9316feb58c8635592e618ee4b6865d842aa51 100644 (file)
@@ -1,2 +1,76 @@
 #include mobile_System.dll.sources
 MonoTouch/MonoPInvokeCallbackAttribute.cs
+../Mono.Security/Mono.Security.Authenticode/PrivateKey.cs
+../Mono.Security/Mono.Security.Cryptography/MD5SHA1.cs
+../Mono.Security/Mono.Security.Cryptography/TlsHMAC.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/MessageBase.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmFlags.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/Type1Message.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/Type2Message.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/Type3Message.cs
+../Mono.Security/Mono.Security.Protocol.Tls/Alert.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherAlgorithmType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherSuite.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteCollection.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteFactory.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ClientContext.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ClientRecordProtocol.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ClientSessionCache.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ContentType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/Context.cs
+../Mono.Security/Mono.Security.Protocol.Tls/DebugHelper.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/HandshakeState.cs
+../Mono.Security/Mono.Security.Protocol.Tls/HashAlgorithmType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls/RecordProtocol.cs
+../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureDeformatter.cs
+../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureFormatter.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SecurityCompressionType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SecurityParameters.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SecurityProtocolType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ServerContext.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ServerRecordProtocol.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslCipherSuite.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslHandshakeHash.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsCipherSuite.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsClientSettings.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsException.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsServerSettings.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake/ClientCertificateType.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeMessage.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeType.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientKeyExchange.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificateRequest.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHelloDone.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificateVerify.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientKeyExchange.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificateRequest.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHelloDone.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerKeyExchange.cs
+../Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/GeneralNames.cs
+../Mono.Security/Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/SubjectAltNameExtension.cs
index d2df217d39b3544b0cea6a0b62b9849a99df6a50..0c31fd647f949bc8cb505121942259d30050cc04 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FA446F0C-75D2-439A-9C1D-81CB6EDB8953}</ProjectGuid>\r
+    <ProjectGuid>{C13E6BD8-A2FC-41C2-B21B-9BF414BB4DA0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\SystemWebTestShim-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2c50daa4eba538dbbc846a17b7a6cd597c2fdba3..e80e8f212906a2bef6b0f3d0025e62b9cca75d63 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2CA35670-6F91-4423-A36A-12560A182E0D}</ProjectGuid>\r
+    <ProjectGuid>{08486D58-12AA-4B53-82F7-1B2C62EAE9D5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\SystemWebTestShim-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f636b6a116e94ca28c4daa65119707696f733d56..235e9afaa644d40980952a3bed54554650cc09c1 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}</ProjectGuid>\r
+    <ProjectGuid>{3D24376B-ECC8-4E7B-9433-C77CC67880AA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\SystemWebTestShim-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 516b21cb39763c9dcbe62312ed38d34032739ac3..e91eb4bfda787a4c2c8017ee0acb1ce09f57eaaa 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{320524F1-AA91-4BC3-B88C-8E0AECEE1CCC}</ProjectGuid>\r
+    <ProjectGuid>{5AEB6A6A-C5EF-433B-B668-2066172D2D80}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WebMatrix.Data-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 584efc15f6d11ee48fde505d7b8c91bd87b6710e..8997f52b912e10a48a49d941c95d71c21390e177 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{37C82B59-9992-4A8F-AC90-C2D77D3BDF8F}</ProjectGuid>\r
+    <ProjectGuid>{A7DB00D7-81EF-4197-9F87-D6EBDFDBD88E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WebMatrix.Data-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9f921447bc59377a521f8f37c3dc7763aa7d7855..c93daf9a3c663d8cfe3d68065f9754ee4d3dd6e5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{92D24812-C6DC-411F-9AD8-B2E9EFBD9138}</ProjectGuid>\r
+    <ProjectGuid>{AD5F22B4-1F90-4549-9284-331B941F6F4A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WebMatrix.Data-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WebMatrix.Data\WebMatrix.Data-net_4_0.csproj">\r
-      <Project>{320524F1-AA91-4BC3-B88C-8E0AECEE1CCC}</Project>\r
+      <Project>{5AEB6A6A-C5EF-433B-B668-2066172D2D80}</Project>\r
       <Name>WebMatrix.Data\WebMatrix.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0.csproj">\r
-      <Project>{BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}</Project>\r
+      <Project>{F26434C1-BA3D-41FB-B560-C009CB72B1B6}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.CSharp\Microsoft.CSharp-net_4_0.csproj">\r
-      <Project>{56A7FA9E-7F2B-4BCB-8523-FD4EEE876BE0}</Project>\r
+      <Project>{342E1BD0-A935-4D49-B71E-ECDF0B42F90F}</Project>\r
       <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 08204cefef7358954ddf9a4867dd8b45a7f5c9d7..d4109788d708b0ec1b639ea57009374196a3a59b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{57596539-1B39-4CF2-9586-383EF5AB45DB}</ProjectGuid>\r
+    <ProjectGuid>{4D33E714-F07E-44AC-9998-705170E29818}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WebMatrix.Data-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WebMatrix.Data\WebMatrix.Data-net_4_5.csproj">\r
-      <Project>{37C82B59-9992-4A8F-AC90-C2D77D3BDF8F}</Project>\r
+      <Project>{A7DB00D7-81EF-4197-9F87-D6EBDFDBD88E}</Project>\r
       <Name>WebMatrix.Data\WebMatrix.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}</Project>\r
+      <Project>{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.CSharp\Microsoft.CSharp-net_4_5.csproj">\r
-      <Project>{94E8FEFF-9695-4F77-A8AB-85370336FE0D}</Project>\r
+      <Project>{AC2AB4A1-8005-4458-8B2B-614DA9BBC644}</Project>\r
       <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 943e2407da7dcb23b7656abe1e08f0d6338cdf43..d9de2772a17c54966073d64dc35a1933137b08df 100644 (file)
@@ -83,7 +83,7 @@ namespace System.Windows {
                
                public object GetValue(DependencyProperty dp)
                {
-                       object val = properties[dp];
+                       object val = properties.ContainsKey (dp) ? properties [dp] : null;
                        return val == null ? dp.DefaultMetadata.DefaultValue : val;
                }
                
@@ -102,7 +102,7 @@ namespace System.Windows {
                
                public object ReadLocalValue(DependencyProperty dp)
                {
-                       object val = properties[dp];
+                       object val = properties.ContainsKey (dp) ? properties [dp] : null;
                        return val == null ? DependencyProperty.UnsetValue : val;
                }
                
index 31bdad96fcc0e149a51f9e4efa055f4d1a204969..2700953a8b275e9acbb43c8ec197c9df9fcad8e9 100644 (file)
@@ -59,6 +59,10 @@ namespace MonoTests.System.Windows {
        class Y : DependencyObject {
        }
 
+       class DefaultValueTest : DependencyObject {
+               public static readonly DependencyProperty AProperty = DependencyProperty.Register("A", typeof(string), typeof(DefaultValueTest), new PropertyMetadata("defaultValueTest"));
+       }
+
        [TestFixture]
        public class DependencyObjectTest {
                [Test]
@@ -105,5 +109,12 @@ namespace MonoTests.System.Windows {
                        Assert.AreEqual(2, count);
                }
 
+               [Test]
+               public void TestDefaultValue()
+               {
+                       DefaultValueTest obj = new DefaultValueTest ();
+                       Assert.AreEqual (obj.GetValue(DefaultValueTest.AProperty), "defaultValueTest");
+               }
+
        }
 }
index ae4bc6e50d227acde1bb8afafe2a8bdf58a6187a..4e785b34529dc1f32fea84cb58f271bb25495a22 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FA9820E4-3756-46DD-A2A0-8508F4F043EA}</ProjectGuid>\r
+    <ProjectGuid>{6FC343B3-4186-4DB7-B678-3BDFEF0065CD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WindowsBase-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2fb92bb3c91ae651559b9d2c861432018fe49b8e..1f2dad75c0d918be2c3b39c6d1d31173ff568dc7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7063C843-FB21-477B-ACC4-DA51C8C374E9}</ProjectGuid>\r
+    <ProjectGuid>{E016C66E-35A6-4A95-BD35-AF13FBCD3DA0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WindowsBase-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xaml\System.Xaml-net_4_0.csproj">\r
-      <Project>{BBF0A00E-6A3D-4ECF-9272-C93076D628E7}</Project>\r
+      <Project>{98E9FB98-226C-4256-A22A-91819C4C33B6}</Project>\r
       <Name>System.Xaml\System.Xaml-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ae11377b991c788ea5696d178a4b8f15702fafe6..3bc913fa5b8a032ee033fe3a086500ee5e173c02 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6D23A57D-01AF-4266-8E58-C16E732FCF81}</ProjectGuid>\r
+    <ProjectGuid>{0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WindowsBase-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xaml\System.Xaml-net_4_5.csproj">\r
-      <Project>{690E0C87-8516-4F5D-B105-1FEDC19AE99A}</Project>\r
+      <Project>{2E8547F9-AE9C-4179-BC88-C0695369170B}</Project>\r
       <Name>System.Xaml\System.Xaml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ab31ef2d771578628a063422eed7ad5510f53502..0ed7508a9e7e82a7fbab7f7eac05d8ac08b68184 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{924FFCB7-F0CC-4F03-9792-87B0208128EC}</ProjectGuid>\r
+    <ProjectGuid>{BDCD7137-667B-4488-9B53-7D6CF37E45B6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WindowsBase-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_2_0.csproj">\r
-      <Project>{FA9820E4-3756-46DD-A2A0-8508F4F043EA}</Project>\r
+      <Project>{6FC343B3-4186-4DB7-B678-3BDFEF0065CD}</Project>\r
       <Name>WindowsBase\WindowsBase-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_2_0.csproj">\r
-      <Project>{FA9820E4-3756-46DD-A2A0-8508F4F043EA}</Project>\r
+      <Project>{6FC343B3-4186-4DB7-B678-3BDFEF0065CD}</Project>\r
       <Name>WindowsBase\WindowsBase-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9b7f7f2d202d44b5f429150d39216931c71cba54..1bc72234ac809c3fabb28de213f4c585f8881f14 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4272351D-956F-4B59-9C7F-46A857D37A71}</ProjectGuid>\r
+    <ProjectGuid>{99E17164-FD6F-4058-AD77-00ECEB685C9B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WindowsBase-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_0.csproj">\r
-      <Project>{7063C843-FB21-477B-ACC4-DA51C8C374E9}</Project>\r
+      <Project>{E016C66E-35A6-4A95-BD35-AF13FBCD3DA0}</Project>\r
       <Name>WindowsBase\WindowsBase-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_0.csproj">\r
-      <Project>{7063C843-FB21-477B-ACC4-DA51C8C374E9}</Project>\r
+      <Project>{E016C66E-35A6-4A95-BD35-AF13FBCD3DA0}</Project>\r
       <Name>WindowsBase\WindowsBase-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xaml\System.Xaml-net_4_0.csproj">\r
-      <Project>{BBF0A00E-6A3D-4ECF-9272-C93076D628E7}</Project>\r
+      <Project>{98E9FB98-226C-4256-A22A-91819C4C33B6}</Project>\r
       <Name>System.Xaml\System.Xaml-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5506f371bedf0c644b777cdbb2426a1333f6a5db..589bc53ce45f26c006f6cfeffc57673d3c344ab6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AB097D8E-4AD6-4120-B75C-306E274727D4}</ProjectGuid>\r
+    <ProjectGuid>{E0DEF2F1-BC80-48E8-8387-13CC5B03BE5B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WindowsBase-tests-net_4_5</OutputPath>\r
@@ -87,8 +87,7 @@
     <Compile Include="Test\System.Windows\SizeConverterTest.cs" />\r
     <Compile Include="Test\System.Windows\SizeTest.cs" />\r
     <Compile Include="Test\System.Windows\VectorConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows\VectorTest.cs" />\r
-  </ItemGroup>\r
+    <Compile Include="Test\System.Windows\VectorTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
@@ -98,6 +97,7 @@
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent>\r
+\r
     </PreBuildEvent>\r
     <PostBuildEvent>\r
       xcopy $(TargetName).* $(ProjectDir)..\lib\net_4_5\ /Y /R /D\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_5.csproj">\r
-      <Project>{6D23A57D-01AF-4266-8E58-C16E732FCF81}</Project>\r
+      <Project>{0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}</Project>\r
+      <Name>WindowsBase\WindowsBase-net_4_5</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_5.csproj">\r
+      <Project>{0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}</Project>\r
       <Name>WindowsBase\WindowsBase-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xaml\System.Xaml-net_4_5.csproj">\r
-      <Project>{690E0C87-8516-4F5D-B105-1FEDC19AE99A}</Project>\r
+      <Project>{2E8547F9-AE9C-4179-BC88-C0695369170B}</Project>\r
       <Name>System.Xaml\System.Xaml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
-</Project>\r
+</Project>
index 999738f5ffecea4bc6f00b58924b4b558eaa9f0a..6c68aa2025a917401a1ff658c554838f6ad49155 100644 (file)
@@ -91,10 +91,6 @@ foreach (var ass in asses) {
        var projectRefsXml = "";
        var resourcesXml = "";
 
-       var signing_xml_template = "<SignAssembly>True</SignAssembly>\n    <DelaySign>True</DelaySign>\n    <AssemblyOriginatorKeyFile>../../../reactive.pub</AssemblyOriginatorKeyFile>\n";
-       var signingXml = ass.StartsWith ("System") ? signing_xml_template : "";
-       
-
        var doc = XDocument.Load (csproj);
        var rootNS = doc.XPathSelectElement ("//*[local-name()='RootNamespace']").Value;
        var guid = doc.XPathSelectElement ("//*[local-name()='ProjectGuid']").Value;
@@ -110,9 +106,10 @@ foreach (var ass in asses) {
                        .Select (el => el.Attribute ("Include").Value)
                        .Select (s => s.Replace ("\\", "/"))) {
                        if (!blacklist.Any (b => path.Contains (b))) {
-                               var p = Path.Combine ("..", basePath, ass, path);
-                               tw.WriteLine (Path.Combine (pathPrefix, p));
-                               sourcesXml += "    <Compile Include='..\\..\\..\\..\\..\\..\\" + p.Replace ('/', '\\') + "'>\n      <Link>" + path + "</Link>\n    </Compile>\n";
+                               var p = Path.Combine (ass, path);
+                               var p2 = Path.Combine ("..", basePath, ass, path);
+                               tw.WriteLine (Path.Combine (pathPrefix, p2));
+                               sourcesXml += "    <Compile Include=\"..\\..\\..\\..\\" + p.Replace ('/', '\\') + "\">\n      <Link>" + path.Replace ('/', '\\') + "</Link>\n    </Compile>\n";
                        }
                }
        }
@@ -146,13 +143,13 @@ foreach (var ass in asses) {
                string template, prj_prefix, nunitProjRef, nunitRef;
                var androidNUnit = "<ProjectReference Include=\"..\\..\\Andr.Unit\\Android.NUnitLite\\Android.NUnitLite.csproj\"><Project>{6A005891-A3D6-4398-A729-F645397D573A}</Project><Name>Android.NUnitLite</Name></ProjectReference>";
                if (f == android_proj) {
-                       prj_guid = guids_android [guid_idx];
+                       prj_guid = guids_android [guid_idx].ToUpper ();
                        template = template_android;
                        prj_prefix ="android_";
                        nunitProjRef = ass.Contains ("Test") ? androidNUnit : "";
                        nunitRef = "";
                } else {
-                       prj_guid = guids_ios [guid_idx];
+                       prj_guid = guids_ios [guid_idx].ToUpper ();
                        template = template_ios;
                        prj_prefix ="ios_";
                        nunitProjRef = "";
@@ -166,13 +163,13 @@ foreach (var ass in asses) {
                                .Replace ("OPTIONAL_MONOTOUCH_NUNITLITE", nunitRef)
                                .Replace ("PROJECT_REFERENCES_GO_HERE",
                                        projectRefsXml
+                                               .Replace (" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"", "")
                                                .Replace ("Microsoft.Reactive.Testing", "Mono.Reactive.Testing")
                                                .Replace ("System", prj_prefix + "System")
                                                .Replace ("Mono", prj_prefix + "Mono")
                                                .Replace ("Include=\"..\\" + prj_prefix, "Include=\"..\\"))
-                               .Replace ("RESOURCES_GO_HERE", sourcesXml.Replace ('\\', f == ios_proj ? '/' : '\\')) // whoa, BACKSLASH doesn't work only on android on MD/mac...!
-                               .Replace ("SOURCES_GO_HERE", resourcesXml.Replace ('\\', f == ios_proj ? '/' : '\\')) // whoa, BACKSLASH doesn't work only on android on MD/mac...!
-                               .Replace ("SIGNING_SPEC_GOES_HERE", signingXml));
+                               .Replace ("RESOURCES_GO_HERE", resourcesXml.Replace ('\\', f == ios_proj ? '/' : '\\')) // whoa, BACKSLASH doesn't work only on android on MD/mac...!
+                               .Replace ("SOURCES_GO_HERE", sourcesXml.Replace ('\\', f == ios_proj ? '/' : '\\'))); // whoa, BACKSLASH doesn't work only on android on MD/mac...!
                }
        }
        guid_idx++;
index dd231d584799095a03a99e00321c9ef6e340e00b..0cf61b786f3b642c727451ce5baa00ddd8afdeee 100644 (file)
@@ -106,13 +106,18 @@ $(TEST_RESX_RESOURCES) $(TEST_RESX_RESOURCES_SATELITE): %.resources: %.resx
 
 TEST_RESOURCES = $(TEST_RESX_RESOURCES) $(TEST_RESX_RESOURCES_SATELITE)
 
-$(test_lib): $(TEST_RESOURCES) satellite-assemblies
+satellite_assembly1 = es-ES/$(patsubst %.dll,%.Resources.dll,$(test_lib))
+satellite_assembly2 = nn-NO/$(patsubst %.dll,%.Resources.dll,$(test_lib))
 
-satellite-assemblies:
+$(test_lib): $(TEST_RESOURCES) $(satellite_assembly1) $(satellite_assembly2) 
+
+$(satellite_assembly1): Test/resources/culture-es-ES.cs Test/resources/Resources.es-ES.resources
        @mkdir -p es-ES
-       $(CSCOMPILE) -target:library -r:$(corlib) Test/resources/culture-es-ES.cs -resource:Test/resources/Resources.es-ES.resources -out:es-ES/$(patsubst %.dll,%.Resources.dll,$(test_lib))
+       $(CSCOMPILE) -target:library -r:$(corlib) Test/resources/culture-es-ES.cs -resource:Test/resources/Resources.es-ES.resources -out:$@
+
+$(satellite_assembly2): Test/resources/culture-nn-NO.cs Test/resources/Resources.nn-NO.resources
        @mkdir -p nn-NO
-       $(CSCOMPILE) -target:library -r:$(corlib) Test/resources/culture-nn-NO.cs -resource:Test/resources/Resources.nn-NO.resources -out:nn-NO/$(patsubst %.dll,%.Resources.dll,$(test_lib))
+       $(CSCOMPILE) -target:library -r:$(corlib) Test/resources/culture-nn-NO.cs -resource:Test/resources/Resources.nn-NO.resources -out:$@
 
 vtsdir = Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization
 vtslibs = \
diff --git a/mcs/class/corlib/Mono.Math.Prime.Generator/ChangeLog b/mcs/class/corlib/Mono.Math.Prime.Generator/ChangeLog
deleted file mode 100644 (file)
index 885c6e7..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-2007-09-12  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * NextPrimeFinder.cs, PrimeGeneratorBase.cs:  Updated to match 
-       Mono.Security sources.
-
-2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * SequentialSearchPrimeGeneratorBase.cs: Fixed warning (l4) for unused
-       variables.
-
-2004-05-07  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * SequentialSearchPrimeGeneratorBase.cs: In sync with 
-       Mono.Security.dll version.
-
-2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * NextPrimeFinder.cs: In sync with Mono.Security.dll version.
-       * PrimeGeneratorBase.cs: In sync with Mono.Security.dll version.
-       * SequentialSearchPrimeGeneratorBase.cs: In sync with 
-       Mono.Security.dll version.
-
-2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PrimeGeneratorBase.cs: Changed primality test to Rabin Miller to
-       fix issues #51229 (bug), #54262 (very long in same cases).
-
-2003-04-22  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * NextPrimeFinder.cs: New. Prime Generator.
-       Support class for BigInteger (commited for Ben Maurer).
-       * PrimeGeneratorBase.cs: New. Abstract Prime Generator.
-       Support class for BigInteger (commited for Ben Maurer).
-       * SequentialSearchPrimeGeneratorBase.cs: New. Prime Generator.
-       Support class for BigInteger (commited for Ben Maurer).
diff --git a/mcs/class/corlib/Mono.Math.Prime.Generator/NextPrimeFinder.cs b/mcs/class/corlib/Mono.Math.Prime.Generator/NextPrimeFinder.cs
deleted file mode 100644 (file)
index 5c31bac..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// Mono.Math.Prime.Generator.NextPrimeFinder.cs - Prime Generator
-//
-// Authors:
-//     Ben Maurer
-//
-// Copyright (c) 2003 Ben Maurer. All rights reserved
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Math.Prime.Generator {
-
-       /// <summary>
-       /// Finds the next prime after a given number.
-       /// </summary>
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       class NextPrimeFinder : SequentialSearchPrimeGeneratorBase {
-               
-               protected override BigInteger GenerateSearchBase (int bits, object Context) 
-               {
-                       if (Context == null) 
-                               throw new ArgumentNullException ("Context");
-
-                       BigInteger ret = new BigInteger ((BigInteger)Context);
-                       ret.SetBit (0);
-                       return ret;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Math.Prime.Generator/PrimeGeneratorBase.cs b/mcs/class/corlib/Mono.Math.Prime.Generator/PrimeGeneratorBase.cs
deleted file mode 100644 (file)
index 51f7a12..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// Mono.Math.Prime.Generator.PrimeGeneratorBase.cs - Abstract Prime Generator
-//
-// Authors:
-//     Ben Maurer
-//
-// Copyright (c) 2003 Ben Maurer. All rights reserved
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Math.Prime.Generator {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       abstract class PrimeGeneratorBase {
-
-               public virtual ConfidenceFactor Confidence {
-                       get {
-#if DEBUG
-                               return ConfidenceFactor.ExtraLow;
-#else
-                               return ConfidenceFactor.Medium;
-#endif
-                       }
-               }
-
-               public virtual Prime.PrimalityTest PrimalityTest {
-                       get {
-                               return new Prime.PrimalityTest (PrimalityTests.RabinMillerTest);
-                       }
-               }
-
-               public virtual int TrialDivisionBounds {
-                       get { return 4000; }
-               }
-
-               /// <summary>
-               /// Performs primality tests on bi, assumes trial division has been done.
-               /// </summary>
-               /// <param name="bi">A BigInteger that has been subjected to and passed trial division</param>
-               /// <returns>False if bi is composite, true if it may be prime.</returns>
-               /// <remarks>The speed of this method is dependent on Confidence</remarks>
-               protected bool PostTrialDivisionTests (BigInteger bi)
-               {
-                       return PrimalityTest (bi, this.Confidence);
-               }
-
-               public abstract BigInteger GenerateNewPrime (int bits);
-       }
-}
diff --git a/mcs/class/corlib/Mono.Math.Prime.Generator/SequentialSearchPrimeGeneratorBase.cs b/mcs/class/corlib/Mono.Math.Prime.Generator/SequentialSearchPrimeGeneratorBase.cs
deleted file mode 100644 (file)
index 87388d0..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-//
-// Mono.Math.Prime.Generator.SequentialSearchPrimeGeneratorBase.cs - Prime Generator
-//
-// Authors:
-//     Ben Maurer
-//
-// Copyright (c) 2003 Ben Maurer. All rights reserved
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Math.Prime.Generator {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       class SequentialSearchPrimeGeneratorBase : PrimeGeneratorBase {
-
-               protected virtual BigInteger GenerateSearchBase (int bits, object context)
-               {
-                       BigInteger ret = BigInteger.GenerateRandom (bits);
-                       ret.SetBit (0);
-                       return ret;
-               }
-
-
-               public override BigInteger GenerateNewPrime (int bits)
-               {
-                       return GenerateNewPrime (bits, null);
-               }
-
-
-               public virtual BigInteger GenerateNewPrime (int bits, object context)
-               {
-                       //
-                       // STEP 1. Find a place to do a sequential search
-                       //
-                       BigInteger curVal = GenerateSearchBase (bits, context);
-
-                       const uint primeProd1 = 3u* 5u * 7u * 11u * 13u * 17u * 19u * 23u * 29u;
-
-                       uint pMod1 = curVal % primeProd1;
-
-                       int DivisionBound = TrialDivisionBounds;
-                       uint[] SmallPrimes = BigInteger.smallPrimes;
-                       //
-                       // STEP 2. Search for primes
-                       //
-                       while (true) {
-
-                               //
-                               // STEP 2.1 Sieve out numbers divisible by the first 9 primes
-                               //
-                               if (pMod1 %  3 == 0) goto biNotPrime;
-                               if (pMod1 %  5 == 0) goto biNotPrime;
-                               if (pMod1 %  7 == 0) goto biNotPrime;
-                               if (pMod1 % 11 == 0) goto biNotPrime;
-                               if (pMod1 % 13 == 0) goto biNotPrime;
-                               if (pMod1 % 17 == 0) goto biNotPrime;
-                               if (pMod1 % 19 == 0) goto biNotPrime;
-                               if (pMod1 % 23 == 0) goto biNotPrime;
-                               if (pMod1 % 29 == 0) goto biNotPrime;
-
-                               //
-                               // STEP 2.2 Sieve out all numbers divisible by the primes <= DivisionBound
-                               //
-                               for (int p = 10; p < SmallPrimes.Length && SmallPrimes [p] <= DivisionBound; p++) {
-                                       if (curVal % SmallPrimes [p] == 0)
-                                               goto biNotPrime;
-                               }
-
-                               //
-                               // STEP 2.3 Is the potential prime acceptable?
-                               //
-                               if (!IsPrimeAcceptable (curVal, context))
-                                       goto biNotPrime;
-
-                               //
-                               // STEP 2.4 Filter out all primes that pass this step with a primality test
-                               //
-                               if (PrimalityTest (curVal, Confidence))
-                                       return curVal;
-
-                               //
-                               // STEP 2.4
-                               //
-                       biNotPrime:
-                               pMod1 += 2;
-                               if (pMod1 >= primeProd1)
-                                       pMod1 -= primeProd1;
-                               curVal.Incr2 ();
-                       }
-               }
-
-               protected virtual bool IsPrimeAcceptable (BigInteger bi, object context)
-               {
-                       return true;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Math.Prime/ChangeLog b/mcs/class/corlib/Mono.Math.Prime/ChangeLog
deleted file mode 100644 (file)
index dce3384..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-2007-09-12  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ConfidenceFactor.cs, PrimalityTests.cs: Updated to match 
-       Mono.Security sources.
-
-2004-05-07  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PrimalityTests.cs: In sync with Mono.Security.dll version.
-
-2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PrimalityTests.cs: In sync with Mono.Security.dll version.
-
-2003-04-23  Alp Toker  <alp@atoker.com>
-
-       * PrimalityTests.cs: Mark PrimalityTest as non-CLS-compliant (build fix)
-
-2003-04-22  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * ConfidenceFactor.cs: New. Enum for prime quality.
-       Support for BigInteger (commited for Ben Maurer).
-       * PrimalityTests.cs: New. Tests for primality.
-       Support for BigInteger (commited for Ben Maurer).
-
diff --git a/mcs/class/corlib/Mono.Math.Prime/ConfidenceFactor.cs b/mcs/class/corlib/Mono.Math.Prime/ConfidenceFactor.cs
deleted file mode 100644 (file)
index 00cbac5..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// Mono.Math.Prime.ConfidenceFactor.cs - Confidence factor for prime generation
-//
-// Authors:
-//     Ben Maurer
-//
-// Copyright (c) 2003 Ben Maurer. All rights reserved
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Math.Prime {
-       /// <summary>
-       /// A factor of confidence.
-       /// </summary>
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       enum ConfidenceFactor {
-               /// <summary>
-               /// Only suitable for development use, probability of failure may be greater than 1/2^20.
-               /// </summary>
-               ExtraLow,
-               /// <summary>
-               /// Suitable only for transactions which do not require forward secrecy.  Probability of failure about 1/2^40
-               /// </summary>
-               Low,
-               /// <summary>
-               /// Designed for production use. Probability of failure about 1/2^80.
-               /// </summary>
-               Medium,
-               /// <summary>
-               /// Suitable for sensitive data. Probability of failure about 1/2^160.
-               /// </summary>
-               High,
-               /// <summary>
-               /// Use only if you have lots of time! Probability of failure about 1/2^320.
-               /// </summary>
-               ExtraHigh,
-               /// <summary>
-               /// Only use methods which generate provable primes. Not yet implemented.
-               /// </summary>
-               Provable
-       }
-}
diff --git a/mcs/class/corlib/Mono.Math.Prime/PrimalityTests.cs b/mcs/class/corlib/Mono.Math.Prime/PrimalityTests.cs
deleted file mode 100644 (file)
index cd3953e..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-//
-// Mono.Math.Prime.PrimalityTests.cs - Test for primality
-//
-// Authors:
-//     Ben Maurer
-//
-// Copyright (c) 2003 Ben Maurer. All rights reserved
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Math.Prime {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       delegate bool PrimalityTest (BigInteger bi, ConfidenceFactor confidence);
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       sealed class PrimalityTests {
-
-               private PrimalityTests ()
-               {
-               }
-
-               #region SPP Test
-               
-               private static int GetSPPRounds (BigInteger bi, ConfidenceFactor confidence)
-               {
-                       int bc = bi.BitCount();
-
-                       int Rounds;
-
-                       // Data from HAC, 4.49
-                       if      (bc <= 100 ) Rounds = 27;
-                       else if (bc <= 150 ) Rounds = 18;
-                       else if (bc <= 200 ) Rounds = 15;
-                       else if (bc <= 250 ) Rounds = 12;
-                       else if (bc <= 300 ) Rounds =  9;
-                       else if (bc <= 350 ) Rounds =  8;
-                       else if (bc <= 400 ) Rounds =  7;
-                       else if (bc <= 500 ) Rounds =  6;
-                       else if (bc <= 600 ) Rounds =  5;
-                       else if (bc <= 800 ) Rounds =  4;
-                       else if (bc <= 1250) Rounds =  3;
-                       else                 Rounds =  2;
-
-                       switch (confidence) {
-                               case ConfidenceFactor.ExtraLow:
-                                       Rounds >>= 2;
-                                       return Rounds != 0 ? Rounds : 1;
-                               case ConfidenceFactor.Low:
-                                       Rounds >>= 1;
-                                       return Rounds != 0 ? Rounds : 1;
-                               case ConfidenceFactor.Medium:
-                                       return Rounds;
-                               case ConfidenceFactor.High:
-                                       return Rounds << 1;
-                               case ConfidenceFactor.ExtraHigh:
-                                       return Rounds << 2;
-                               case ConfidenceFactor.Provable:
-                                       throw new Exception ("The Rabin-Miller test can not be executed in a way such that its results are provable");
-                               default:
-                                       throw new ArgumentOutOfRangeException ("confidence");
-                       }
-               }
-
-               public static bool Test (BigInteger n, ConfidenceFactor confidence)
-               {
-                       // Rabin-Miller fails with smaller primes (at least with our BigInteger code)
-                       if (n.BitCount () < 33)
-                               return SmallPrimeSppTest (n, confidence);
-                       else
-                               return RabinMillerTest (n, confidence);
-               }
-
-               /// <summary>
-               ///     Probabilistic prime test based on Rabin-Miller's test
-               /// </summary>
-               /// <param name="n" type="BigInteger.BigInteger">
-               ///     <para>
-               ///         The number to test.
-               ///     </para>
-               /// </param>
-               /// <param name="confidence" type="int">
-               ///     <para>
-               ///     The number of chosen bases. The test has at least a
-               ///     1/4^confidence chance of falsely returning True.
-               ///     </para>
-               /// </param>
-               /// <returns>
-               ///     <para>
-               ///             True if "this" is a strong pseudoprime to randomly chosen bases.
-               ///     </para>
-               ///     <para>
-               ///             False if "this" is definitely NOT prime.
-               ///     </para>
-               /// </returns>
-               public static bool RabinMillerTest (BigInteger n, ConfidenceFactor confidence)
-               {
-                       int bits = n.BitCount ();
-                       int t = GetSPPRounds (bits, confidence);
-
-                       // n - 1 == 2^s * r, r is odd
-                       BigInteger n_minus_1 = n - 1;
-                       int s = n_minus_1.LowestSetBit ();
-                       BigInteger r = n_minus_1 >> s;
-
-                       BigInteger.ModulusRing mr = new BigInteger.ModulusRing (n);
-                       
-                       // Applying optimization from HAC section 4.50 (base == 2)
-                       // not a really random base but an interesting (and speedy) one
-                       BigInteger y = null;
-                       // FIXME - optimization disable for small primes due to bug #81857
-                       if (n.BitCount () > 100)
-                               y = mr.Pow (2, r);
-
-                       // still here ? start at round 1 (round 0 was a == 2)
-                       for (int round = 0; round < t; round++) {
-
-                               if ((round > 0) || (y == null)) {
-                                       BigInteger a = null;
-
-                                       // check for 2 <= a <= n - 2
-                                       // ...but we already did a == 2 previously as an optimization
-                                       do {
-                                               a = BigInteger.GenerateRandom (bits);
-                                       } while ((a <= 2) && (a >= n_minus_1));
-
-                                       y = mr.Pow (a, r);
-                               }
-
-                               if (y == 1)
-                                       continue;
-
-                               for (int j = 0; ((j < s) && (y != n_minus_1)); j++) {
-
-                                       y = mr.Pow (y, 2);
-                                       if (y == 1)
-                                               return false;
-                               }
-
-                               if (y != n_minus_1)
-                                       return false;
-                       }
-                       return true;
-               }
-
-               public static bool SmallPrimeSppTest (BigInteger bi, ConfidenceFactor confidence)
-               {
-                       int Rounds = GetSPPRounds (bi, confidence);
-
-                       // calculate values of s and t
-                       BigInteger p_sub1 = bi - 1;
-                       int s = p_sub1.LowestSetBit ();
-
-                       BigInteger t = p_sub1 >> s;
-
-
-                       BigInteger.ModulusRing mr = new BigInteger.ModulusRing (bi);
-
-                       for (int round = 0; round < Rounds; round++) {
-
-                               BigInteger b = mr.Pow (BigInteger.smallPrimes [round], t);
-
-                               if (b == 1) continue;              // a^t mod p = 1
-
-                               bool result = false;
-                               for (int j = 0; j < s; j++) {
-
-                                       if (b == p_sub1) {         // a^((2^j)*t) mod p = p-1 for some 0 <= j <= s-1
-                                               result = true;
-                                               break;
-                                       }
-
-                                       b = (b * b) % bi;
-                               }
-
-                               if (result == false)
-                                       return false;
-                       }
-                       return true;
-               }
-
-               #endregion
-
-               // TODO: Implement the Lucus test
-               // TODO: Implement other new primality tests
-               // TODO: Implement primality proving
-       }
-}
diff --git a/mcs/class/corlib/Mono.Math/BigInteger.cs b/mcs/class/corlib/Mono.Math/BigInteger.cs
deleted file mode 100644 (file)
index 0356d0a..0000000
+++ /dev/null
@@ -1,2372 +0,0 @@
-//
-// BigInteger.cs - Big Integer implementation
-//
-// Authors:
-//     Ben Maurer
-//     Chew Keong TAN
-//     Sebastien Pouliot <sebastien@ximian.com>
-//     Pieter Philippaerts <Pieter@mentalis.org>
-//
-// Copyright (c) 2003 Ben Maurer
-// All rights reserved
-//
-// Copyright (c) 2002 Chew Keong TAN
-// All rights reserved.
-//
-// Copyright (C) 2004, 2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Security.Cryptography;
-using Mono.Math.Prime.Generator;
-using Mono.Math.Prime;
-
-namespace Mono.Math {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       class BigInteger {
-
-               #region Data Storage
-
-               /// <summary>
-               /// The Length of this BigInteger
-               /// </summary>
-               uint length = 1;
-
-               /// <summary>
-               /// The data for this BigInteger
-               /// </summary>
-               uint [] data;
-
-               #endregion
-
-               #region Constants
-
-               /// <summary>
-               /// Default length of a BigInteger in bytes
-               /// </summary>
-               const uint DEFAULT_LEN = 20;
-
-               /// <summary>
-               ///             Table of primes below 2000.
-               /// </summary>
-               /// <remarks>
-               ///             <para>
-               ///             This table was generated using Mathematica 4.1 using the following function:
-               ///             </para>
-               ///             <para>
-               ///                     <code>
-               ///                     PrimeTable [x_] := Prime [Range [1, PrimePi [x]]]
-               ///                     PrimeTable [6000]
-               ///                     </code>
-               ///             </para>
-               /// </remarks>
-               internal static readonly uint [] smallPrimes = {
-                       2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
-                       73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
-                       157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
-                       239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
-                       331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
-                       421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
-                       509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
-                       613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
-                       709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
-                       821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
-                       919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997,
-
-                       1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087,
-                       1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181,
-                       1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279,
-                       1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373,
-                       1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471,
-                       1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559,
-                       1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637,
-                       1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747,
-                       1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867,
-                       1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973,
-                       1979, 1987, 1993, 1997, 1999, 
-               
-                       2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089,
-                       2099, 2111, 2113, 2129, 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207,
-                       2213, 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, 2293, 2297,
-                       2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, 2377, 2381, 2383, 2389,
-                       2393, 2399, 2411, 2417, 2423, 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503,
-                       2521, 2531, 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, 2621,
-                       2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, 2693, 2699, 2707,
-                       2711, 2713, 2719, 2729, 2731, 2741, 2749, 2753, 2767, 2777, 2789, 2791, 2797,
-                       2801, 2803, 2819, 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903,
-                       2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999,
-                       
-                       3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, 3083, 3089, 3109,
-                       3119, 3121, 3137, 3163, 3167, 3169, 3181, 3187, 3191, 3203, 3209, 3217, 3221,
-                       3229, 3251, 3253, 3257, 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329,
-                       3331, 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, 3433, 3449,
-                       3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, 3517, 3527, 3529, 3533, 3539,
-                       3541, 3547, 3557, 3559, 3571, 3581, 3583, 3593, 3607, 3613, 3617, 3623, 3631,
-                       3637, 3643, 3659, 3671, 3673, 3677, 3691, 3697, 3701, 3709, 3719, 3727, 3733,
-                       3739, 3761, 3767, 3769, 3779, 3793, 3797, 3803, 3821, 3823, 3833, 3847, 3851,
-                       3853, 3863, 3877, 3881, 3889, 3907, 3911, 3917, 3919, 3923, 3929, 3931, 3943,
-                       3947, 3967, 3989,
-                       
-                       4001, 4003, 4007, 4013, 4019, 4021, 4027, 4049, 4051, 4057, 4073, 4079, 4091,
-                       4093, 4099, 4111, 4127, 4129, 4133, 4139, 4153, 4157, 4159, 4177, 4201, 4211,
-                       4217, 4219, 4229, 4231, 4241, 4243, 4253, 4259, 4261, 4271, 4273, 4283, 4289,
-                       4297, 4327, 4337, 4339, 4349, 4357, 4363, 4373, 4391, 4397, 4409, 4421, 4423,
-                       4441, 4447, 4451, 4457, 4463, 4481, 4483, 4493, 4507, 4513, 4517, 4519, 4523,
-                       4547, 4549, 4561, 4567, 4583, 4591, 4597, 4603, 4621, 4637, 4639, 4643, 4649,
-                       4651, 4657, 4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, 4759,
-                       4783, 4787, 4789, 4793, 4799, 4801, 4813, 4817, 4831, 4861, 4871, 4877, 4889,
-                       4903, 4909, 4919, 4931, 4933, 4937, 4943, 4951, 4957, 4967, 4969, 4973, 4987,
-                       4993, 4999,
-                       
-                       5003, 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 5099, 5101,
-                       5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, 5189, 5197, 5209, 5227, 5231, 
-                       5233, 5237, 5261, 5273, 5279, 5281, 5297, 5303, 5309, 5323, 5333, 5347, 5351,
-                       5381, 5387, 5393, 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, 5449,
-                       5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, 5527, 5531, 5557, 5563,
-                       5569, 5573, 5581, 5591, 5623, 5639, 5641, 5647, 5651, 5653, 5657, 5659, 5669,
-                       5683, 5689, 5693, 5701, 5711, 5717, 5737, 5741, 5743, 5749, 5779, 5783, 5791,
-                       5801, 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, 5861, 5867, 5869,
-                       5879, 5881, 5897, 5903, 5923, 5927, 5939, 5953, 5981, 5987
-               };
-
-               public enum Sign : int {
-                       Negative = -1,
-                       Zero = 0,
-                       Positive = 1
-               };
-
-               #region Exception Messages
-               const string WouldReturnNegVal = "Operation would return a negative value";
-               #endregion
-
-               #endregion
-
-               #region Constructors
-
-               public BigInteger ()
-               {
-                       data = new uint [DEFAULT_LEN];
-                       this.length = DEFAULT_LEN;
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif          
-               public BigInteger (Sign sign, uint len) 
-               {
-                       this.data = new uint [len];
-                       this.length = len;
-               }
-
-               public BigInteger (BigInteger bi)
-               {
-                       this.data = (uint [])bi.data.Clone ();
-                       this.length = bi.length;
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif       
-               public BigInteger (BigInteger bi, uint len)
-               {
-
-                       this.data = new uint [len];
-
-                       for (uint i = 0; i < bi.length; i++)
-                               this.data [i] = bi.data [i];
-
-                       this.length = bi.length;
-               }
-
-               #endregion
-
-               #region Conversions
-               
-               public BigInteger (byte [] inData)
-               {
-                       if (inData.Length == 0)
-                               inData = new byte [1];
-                       length = (uint)inData.Length >> 2;
-                       int leftOver = inData.Length & 0x3;
-
-                       // length not multiples of 4
-                       if (leftOver != 0) length++;
-
-                       data = new uint [length];
-
-                       for (int i = inData.Length - 1, j = 0; i >= 3; i -= 4, j++) {
-                               data [j] = (uint)(
-                                       (inData [i-3] << (3*8)) |
-                                       (inData [i-2] << (2*8)) |
-                                       (inData [i-1] << (1*8)) |
-                                       (inData [i])
-                                       );
-                       }
-
-                       switch (leftOver) {
-                       case 1: data [length-1] = (uint)inData [0]; break;
-                       case 2: data [length-1] = (uint)((inData [0] << 8) | inData [1]); break;
-                       case 3: data [length-1] = (uint)((inData [0] << 16) | (inData [1] << 8) | inData [2]); break;
-                       }
-
-                       this.Normalize ();
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public BigInteger (uint [] inData)
-               {
-                       if (inData.Length == 0)
-                               inData = new uint [1];
-                       length = (uint)inData.Length;
-
-                       data = new uint [length];
-
-                       for (int i = (int)length - 1, j = 0; i >= 0; i--, j++)
-                               data [j] = inData [i];
-
-                       this.Normalize ();
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public BigInteger (uint ui)
-               {
-                       data = new uint [] {ui};
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public BigInteger (ulong ul)
-               {
-                       data = new uint [2] { (uint)ul, (uint)(ul >> 32)};
-                       length = 2;
-
-                       this.Normalize ();
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public static implicit operator BigInteger (uint value)
-               {
-                       return (new BigInteger (value));
-               }
-
-               public static implicit operator BigInteger (int value)
-               {
-                       if (value < 0) throw new ArgumentOutOfRangeException ("value");
-                       return (new BigInteger ((uint)value));
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public static implicit operator BigInteger (ulong value)
-               {
-                       return (new BigInteger (value));
-               }
-
-               /* This is the BigInteger.Parse method I use. This method works
-               because BigInteger.ToString returns the input I gave to Parse. */
-               public static BigInteger Parse (string number) 
-               {
-                       if (number == null)
-                               throw new ArgumentNullException ("number");
-
-                       int i = 0, len = number.Length;
-                       char c;
-                       bool digits_seen = false;
-                       BigInteger val = new BigInteger (0);
-                       if (number [i] == '+') {
-                               i++;
-                       } 
-                       else if (number [i] == '-') {
-                               throw new FormatException (WouldReturnNegVal);
-                       }
-
-                       for (; i < len; i++) {
-                               c = number [i];
-                               if (c == '\0') {
-                                       i = len;
-                                       continue;
-                               }
-                               if (c >= '0' && c <= '9') {
-                                       val = val * 10 + (c - '0');
-                                       digits_seen = true;
-                               } 
-                               else {
-                                       if (Char.IsWhiteSpace (c)) {
-                                               for (i++; i < len; i++) {
-                                                       if (!Char.IsWhiteSpace (number [i]))
-                                                               throw new FormatException ();
-                                               }
-                                               break;
-                                       } 
-                                       else
-                                               throw new FormatException ();
-                               }
-                       }
-                       if (!digits_seen)
-                               throw new FormatException ();
-                       return val;
-               }
-
-               #endregion
-
-               #region Operators
-
-               public static BigInteger operator + (BigInteger bi1, BigInteger bi2)
-               {
-                       if (bi1 == 0)
-                               return new BigInteger (bi2);
-                       else if (bi2 == 0)
-                               return new BigInteger (bi1);
-                       else
-                               return Kernel.AddSameSign (bi1, bi2);
-               }
-
-               public static BigInteger operator - (BigInteger bi1, BigInteger bi2)
-               {
-                       if (bi2 == 0)
-                               return new BigInteger (bi1);
-
-                       if (bi1 == 0)
-                               throw new ArithmeticException (WouldReturnNegVal);
-
-                       switch (Kernel.Compare (bi1, bi2)) {
-
-                               case Sign.Zero:
-                                       return 0;
-
-                               case Sign.Positive:
-                                       return Kernel.Subtract (bi1, bi2);
-
-                               case Sign.Negative:
-                                       throw new ArithmeticException (WouldReturnNegVal);
-                               default:
-                                       throw new Exception ();
-                       }
-               }
-
-               public static int operator % (BigInteger bi, int i)
-               {
-                       if (i > 0)
-                               return (int)Kernel.DwordMod (bi, (uint)i);
-                       else
-                               return -(int)Kernel.DwordMod (bi, (uint)-i);
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public static uint operator % (BigInteger bi, uint ui)
-               {
-                       return Kernel.DwordMod (bi, (uint)ui);
-               }
-
-               public static BigInteger operator % (BigInteger bi1, BigInteger bi2)
-               {
-                       return Kernel.multiByteDivide (bi1, bi2)[1];
-               }
-
-               public static BigInteger operator / (BigInteger bi, int i)
-               {
-                       if (i > 0)
-                               return Kernel.DwordDiv (bi, (uint)i);
-
-                       throw new ArithmeticException (WouldReturnNegVal);
-               }
-
-               public static BigInteger operator / (BigInteger bi1, BigInteger bi2)
-               {
-                       return Kernel.multiByteDivide (bi1, bi2)[0];
-               }
-
-               public static BigInteger operator * (BigInteger bi1, BigInteger bi2)
-               {
-                       if (bi1 == 0 || bi2 == 0) return 0;
-
-                       //
-                       // Validate pointers
-                       //
-                       if (bi1.data.Length < bi1.length) throw new IndexOutOfRangeException ("bi1 out of range");
-                       if (bi2.data.Length < bi2.length) throw new IndexOutOfRangeException ("bi2 out of range");
-
-                       BigInteger ret = new BigInteger (Sign.Positive, bi1.length + bi2.length);
-
-                       Kernel.Multiply (bi1.data, 0, bi1.length, bi2.data, 0, bi2.length, ret.data, 0);
-
-                       ret.Normalize ();
-                       return ret;
-               }
-
-               public static BigInteger operator * (BigInteger bi, int i)
-               {
-                       if (i < 0) throw new ArithmeticException (WouldReturnNegVal);
-                       if (i == 0) return 0;
-                       if (i == 1) return new BigInteger (bi);
-
-                       return Kernel.MultiplyByDword (bi, (uint)i);
-               }
-
-               public static BigInteger operator << (BigInteger bi1, int shiftVal)
-               {
-                       return Kernel.LeftShift (bi1, shiftVal);
-               }
-
-               public static BigInteger operator >> (BigInteger bi1, int shiftVal)
-               {
-                       return Kernel.RightShift (bi1, shiftVal);
-               }
-
-               #endregion
-
-               #region Friendly names for operators
-
-               // with names suggested by FxCop 1.30
-
-               public static BigInteger Add (BigInteger bi1, BigInteger bi2) 
-               {
-                       return (bi1 + bi2);
-               }
-
-               public static BigInteger Subtract (BigInteger bi1, BigInteger bi2) 
-               {
-                       return (bi1 - bi2);
-               }
-
-               public static int Modulus (BigInteger bi, int i) 
-               {
-                       return (bi % i);
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public static uint Modulus (BigInteger bi, uint ui) 
-               {
-                       return (bi % ui);
-               }
-
-               public static BigInteger Modulus (BigInteger bi1, BigInteger bi2) 
-               {
-                       return (bi1 % bi2);
-               }
-
-               public static BigInteger Divid (BigInteger bi, int i) 
-               {
-                       return (bi / i);
-               }
-
-               public static BigInteger Divid (BigInteger bi1, BigInteger bi2) 
-               {
-                       return (bi1 / bi2);
-               }
-
-               public static BigInteger Multiply (BigInteger bi1, BigInteger bi2) 
-               {
-                       return (bi1 * bi2);
-               }
-
-               public static BigInteger Multiply (BigInteger bi, int i) 
-               {
-                       return (bi * i);
-               }
-
-               #endregion
-
-               #region Random
-               private static RandomNumberGenerator rng;
-               private static RandomNumberGenerator Rng {
-                       get {
-                               if (rng == null)
-                                       rng = RandomNumberGenerator.Create ();
-                               return rng;
-                       }
-               }
-
-               /// <summary>
-               /// Generates a new, random BigInteger of the specified length.
-               /// </summary>
-               /// <param name="bits">The number of bits for the new number.</param>
-               /// <param name="rng">A random number generator to use to obtain the bits.</param>
-               /// <returns>A random number of the specified length.</returns>
-               public static BigInteger GenerateRandom (int bits, RandomNumberGenerator rng)
-               {
-                       int dwords = bits >> 5;
-                       int remBits = bits & 0x1F;
-
-                       if (remBits != 0)
-                               dwords++;
-
-                       BigInteger ret = new BigInteger (Sign.Positive, (uint)dwords + 1);
-                       byte [] random = new byte [dwords << 2];
-
-                       rng.GetBytes (random);
-                       Buffer.BlockCopy (random, 0, ret.data, 0, (int)dwords << 2);
-
-                       if (remBits != 0) {
-                               uint mask = (uint)(0x01 << (remBits-1));
-                               ret.data [dwords-1] |= mask;
-
-                               mask = (uint)(0xFFFFFFFF >> (32 - remBits));
-                               ret.data [dwords-1] &= mask;
-                       }
-                       else
-                               ret.data [dwords-1] |= 0x80000000;
-
-                       ret.Normalize ();
-                       return ret;
-               }
-
-               /// <summary>
-               /// Generates a new, random BigInteger of the specified length using the default RNG crypto service provider.
-               /// </summary>
-               /// <param name="bits">The number of bits for the new number.</param>
-               /// <returns>A random number of the specified length.</returns>
-               public static BigInteger GenerateRandom (int bits)
-               {
-                       return GenerateRandom (bits, Rng);
-               }
-
-               /// <summary>
-               /// Randomizes the bits in "this" from the specified RNG.
-               /// </summary>
-               /// <param name="rng">A RNG.</param>
-               public void Randomize (RandomNumberGenerator rng)
-               {
-                       if (this == 0)
-                               return;
-
-                       int bits = this.BitCount ();
-                       int dwords = bits >> 5;
-                       int remBits = bits & 0x1F;
-
-                       if (remBits != 0)
-                               dwords++;
-
-                       byte [] random = new byte [dwords << 2];
-
-                       rng.GetBytes (random);
-                       Buffer.BlockCopy (random, 0, data, 0, (int)dwords << 2);
-
-                       if (remBits != 0) {
-                               uint mask = (uint)(0x01 << (remBits-1));
-                               data [dwords-1] |= mask;
-
-                               mask = (uint)(0xFFFFFFFF >> (32 - remBits));
-                               data [dwords-1] &= mask;
-                       }
-
-                       else
-                               data [dwords-1] |= 0x80000000;
-
-                       Normalize ();
-               }
-
-               /// <summary>
-               /// Randomizes the bits in "this" from the default RNG.
-               /// </summary>
-               public void Randomize ()
-               {
-                       Randomize (Rng);
-               }
-
-               #endregion
-
-               #region Bitwise
-
-               public int BitCount ()
-               {
-                       this.Normalize ();
-
-                       uint value = data [length - 1];
-                       uint mask = 0x80000000;
-                       uint bits = 32;
-
-                       while (bits > 0 && (value & mask) == 0) {
-                               bits--;
-                               mask >>= 1;
-                       }
-                       bits += ((length - 1) << 5);
-
-                       return (int)bits;
-               }
-
-               /// <summary>
-               /// Tests if the specified bit is 1.
-               /// </summary>
-               /// <param name="bitNum">The bit to test. The least significant bit is 0.</param>
-               /// <returns>True if bitNum is set to 1, else false.</returns>
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public bool TestBit (uint bitNum)
-               {
-                       uint bytePos = bitNum >> 5;             // divide by 32
-                       byte bitPos = (byte)(bitNum & 0x1F);    // get the lowest 5 bits
-
-                       uint mask = (uint)1 << bitPos;
-                       return ((this.data [bytePos] & mask) != 0);
-               }
-
-               public bool TestBit (int bitNum)
-               {
-                       if (bitNum < 0) throw new IndexOutOfRangeException ("bitNum out of range");
-
-                       uint bytePos = (uint)bitNum >> 5;             // divide by 32
-                       byte bitPos = (byte)(bitNum & 0x1F);    // get the lowest 5 bits
-
-                       uint mask = (uint)1 << bitPos;
-                       return ((this.data [bytePos] | mask) == this.data [bytePos]);
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public void SetBit (uint bitNum)
-               {
-                       SetBit (bitNum, true);
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public void ClearBit (uint bitNum)
-               {
-                       SetBit (bitNum, false);
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public void SetBit (uint bitNum, bool value)
-               {
-                       uint bytePos = bitNum >> 5;             // divide by 32
-
-                       if (bytePos < this.length) {
-                               uint mask = (uint)1 << (int)(bitNum & 0x1F);
-                               if (value)
-                                       this.data [bytePos] |= mask;
-                               else
-                                       this.data [bytePos] &= ~mask;
-                       }
-               }
-
-               public int LowestSetBit ()
-               {
-                       if (this == 0) return -1;
-                       int i = 0;
-                       while (!TestBit (i)) i++;
-                       return i;
-               }
-
-               public byte[] GetBytes ()
-               {
-                       if (this == 0) return new byte [1];
-
-                       int numBits = BitCount ();
-                       int numBytes = numBits >> 3;
-                       if ((numBits & 0x7) != 0)
-                               numBytes++;
-
-                       byte [] result = new byte [numBytes];
-
-                       int numBytesInWord = numBytes & 0x3;
-                       if (numBytesInWord == 0) numBytesInWord = 4;
-
-                       int pos = 0;
-                       for (int i = (int)length - 1; i >= 0; i--) {
-                               uint val = data [i];
-                               for (int j = numBytesInWord - 1; j >= 0; j--) {
-                                       result [pos+j] = (byte)(val & 0xFF);
-                                       val >>= 8;
-                               }
-                               pos += numBytesInWord;
-                               numBytesInWord = 4;
-                       }
-                       return result;
-               }
-
-               #endregion
-
-               #region Compare
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public static bool operator == (BigInteger bi1, uint ui)
-               {
-                       if (bi1.length != 1) bi1.Normalize ();
-                       return bi1.length == 1 && bi1.data [0] == ui;
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public static bool operator != (BigInteger bi1, uint ui)
-               {
-                       if (bi1.length != 1) bi1.Normalize ();
-                       return !(bi1.length == 1 && bi1.data [0] == ui);
-               }
-
-               public static bool operator == (BigInteger bi1, BigInteger bi2)
-               {
-                       // we need to compare with null
-                       if ((bi1 as object) == (bi2 as object))
-                               return true;
-                       if (null == bi1 || null == bi2)
-                               return false;
-                       return Kernel.Compare (bi1, bi2) == 0;
-               }
-
-               public static bool operator != (BigInteger bi1, BigInteger bi2)
-               {
-                       // we need to compare with null
-                       if ((bi1 as object) == (bi2 as object))
-                               return false;
-                       if (null == bi1 || null == bi2)
-                               return true;
-                       return Kernel.Compare (bi1, bi2) != 0;
-               }
-
-               public static bool operator > (BigInteger bi1, BigInteger bi2)
-               {
-                       return Kernel.Compare (bi1, bi2) > 0;
-               }
-
-               public static bool operator < (BigInteger bi1, BigInteger bi2)
-               {
-                       return Kernel.Compare (bi1, bi2) < 0;
-               }
-
-               public static bool operator >= (BigInteger bi1, BigInteger bi2)
-               {
-                       return Kernel.Compare (bi1, bi2) >= 0;
-               }
-
-               public static bool operator <= (BigInteger bi1, BigInteger bi2)
-               {
-                       return Kernel.Compare (bi1, bi2) <= 0;
-               }
-
-               public Sign Compare (BigInteger bi)
-               {
-                       return Kernel.Compare (this, bi);
-               }
-
-               #endregion
-
-               #region Formatting
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public string ToString (uint radix)
-               {
-                       return ToString (radix, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public string ToString (uint radix, string characterSet)
-               {
-                       if (characterSet.Length < radix)
-                               throw new ArgumentException ("charSet length less than radix", "characterSet");
-                       if (radix == 1)
-                               throw new ArgumentException ("There is no such thing as radix one notation", "radix");
-
-                       if (this == 0) return "0";
-                       if (this == 1) return "1";
-
-                       string result = "";
-
-                       BigInteger a = new BigInteger (this);
-
-                       while (a != 0) {
-                               uint rem = Kernel.SingleByteDivideInPlace (a, radix);
-                               result = characterSet [(int) rem] + result;
-                       }
-
-                       return result;
-               }
-
-               #endregion
-
-               #region Misc
-
-               /// <summary>
-               ///     Normalizes this by setting the length to the actual number of
-               ///     uints used in data and by setting the sign to Sign.Zero if the
-               ///     value of this is 0.
-               /// </summary>
-               private void Normalize ()
-               {
-                       // Normalize length
-                       while (length > 0 && data [length-1] == 0) length--;
-
-                       // Check for zero
-                       if (length == 0)
-                               length++;
-               }
-
-               public void Clear () 
-               {
-                       for (int i=0; i < length; i++)
-                               data [i] = 0x00;
-               }
-
-               #endregion
-
-               #region Object Impl
-
-               public override int GetHashCode ()
-               {
-                       uint val = 0;
-
-                       for (uint i = 0; i < this.length; i++)
-                               val ^= this.data [i];
-
-                       return (int)val;
-               }
-
-               public override string ToString ()
-               {
-                       return ToString (10);
-               }
-
-               public override bool Equals (object o)
-               {
-                       if (o == null)
-                               return false;
-                       if (o is int)
-                               return (int)o >= 0 && this == (uint)o;
-
-                       BigInteger bi = o as BigInteger;
-                       if (bi == null)
-                               return false;
-                       
-                       return Kernel.Compare (this, bi) == 0;
-               }
-
-               #endregion
-
-               #region Number Theory
-
-               public BigInteger GCD (BigInteger bi)
-               {
-                       return Kernel.gcd (this, bi);
-               }
-
-               public BigInteger ModInverse (BigInteger modulus)
-               {
-                       return Kernel.modInverse (this, modulus);
-               }
-
-               public BigInteger ModPow (BigInteger exp, BigInteger n)
-               {
-                       ModulusRing mr = new ModulusRing (n);
-                       return mr.Pow (this, exp);
-               }
-               
-               #endregion
-
-               #region Prime Testing
-
-               public bool IsProbablePrime ()
-               {
-                       // can we use our small-prime table ?
-                       if (this <= smallPrimes[smallPrimes.Length - 1]) {
-                               for (int p = 0; p < smallPrimes.Length; p++) {
-                                       if (this == smallPrimes[p])
-                                               return true;
-                               }
-                               // the list is complete, so it's not a prime
-                               return false;
-                       }
-
-                       // otherwise check if we can divide by one of the small primes
-                       for (int p = 0; p < smallPrimes.Length; p++) {
-                               if (this % smallPrimes[p] == 0)
-                                       return false;
-                       }
-                       // the last step is to confirm the "large" prime with the SPP or Miller-Rabin test
-                       return PrimalityTests.Test (this, Prime.ConfidenceFactor.Medium);
-               }
-
-               #endregion
-
-               #region Prime Number Generation
-
-               /// <summary>
-               /// Generates the smallest prime >= bi
-               /// </summary>
-               /// <param name="bi">A BigInteger</param>
-               /// <returns>The smallest prime >= bi. More mathematically, if bi is prime: bi, else Prime [PrimePi [bi] + 1].</returns>
-               public static BigInteger NextHighestPrime (BigInteger bi)
-               {
-                       NextPrimeFinder npf = new NextPrimeFinder ();
-                       return npf.GenerateNewPrime (0, bi);
-               }
-
-               public static BigInteger GeneratePseudoPrime (int bits)
-               {
-                       SequentialSearchPrimeGeneratorBase sspg = new SequentialSearchPrimeGeneratorBase ();
-                       return sspg.GenerateNewPrime (bits);
-               }
-
-               /// <summary>
-               /// Increments this by two
-               /// </summary>
-               public void Incr2 ()
-               {
-                       int i = 0;
-
-                       data [0] += 2;
-
-                       // If there was no carry, nothing to do
-                       if (data [0] < 2) {
-
-                               // Account for the first carry
-                               data [++i]++;
-
-                               // Keep adding until no carry
-                               while (data [i++] == 0x0)
-                                       data [i]++;
-
-                               // See if we increased the data length
-                               if (length == (uint)i)
-                                       length++;
-                       }
-               }
-
-               #endregion
-
-#if INSIDE_CORLIB
-               internal
-#else
-               public
-#endif
-               sealed class ModulusRing {
-
-                       BigInteger mod, constant;
-
-                       public ModulusRing (BigInteger modulus)
-                       {
-                               this.mod = modulus;
-
-                               // calculate constant = b^ (2k) / m
-                               uint i = mod.length << 1;
-
-                               constant = new BigInteger (Sign.Positive, i + 1);
-                               constant.data [i] = 0x00000001;
-
-                               constant = constant / mod;
-                       }
-
-                       public void BarrettReduction (BigInteger x)
-                       {
-                               BigInteger n = mod;
-                               uint k = n.length,
-                                       kPlusOne = k+1,
-                                       kMinusOne = k-1;
-
-                               // x < mod, so nothing to do.
-                               if (x.length < k) return;
-
-                               BigInteger q3;
-
-                               //
-                               // Validate pointers
-                               //
-                               if (x.data.Length < x.length) throw new IndexOutOfRangeException ("x out of range");
-
-                               // q1 = x / b^ (k-1)
-                               // q2 = q1 * constant
-                               // q3 = q2 / b^ (k+1), Needs to be accessed with an offset of kPlusOne
-
-                               // TODO: We should the method in HAC p 604 to do this (14.45)
-                               q3 = new BigInteger (Sign.Positive, x.length - kMinusOne + constant.length);
-                               Kernel.Multiply (x.data, kMinusOne, x.length - kMinusOne, constant.data, 0, constant.length, q3.data, 0);
-
-                               // r1 = x mod b^ (k+1)
-                               // i.e. keep the lowest (k+1) words
-
-                               uint lengthToCopy = (x.length > kPlusOne) ? kPlusOne : x.length;
-
-                               x.length = lengthToCopy;
-                               x.Normalize ();
-
-                               // r2 = (q3 * n) mod b^ (k+1)
-                               // partial multiplication of q3 and n
-
-                               BigInteger r2 = new BigInteger (Sign.Positive, kPlusOne);
-                               Kernel.MultiplyMod2p32pmod (q3.data, (int)kPlusOne, (int)q3.length - (int)kPlusOne, n.data, 0, (int)n.length, r2.data, 0, (int)kPlusOne);
-
-                               r2.Normalize ();
-
-                               if (r2 <= x) {
-                                       Kernel.MinusEq (x, r2);
-                               } else {
-                                       BigInteger val = new BigInteger (Sign.Positive, kPlusOne + 1);
-                                       val.data [kPlusOne] = 0x00000001;
-
-                                       Kernel.MinusEq (val, r2);
-                                       Kernel.PlusEq (x, val);
-                               }
-
-                               while (x >= n)
-                                       Kernel.MinusEq (x, n);
-                       }
-
-                       public BigInteger Multiply (BigInteger a, BigInteger b)
-                       {
-                               if (a == 0 || b == 0) return 0;
-
-                               if (a > mod)
-                                       a %= mod;
-
-                               if (b > mod)
-                                       b %= mod;
-
-                               BigInteger ret = a * b;
-                               BarrettReduction (ret);
-
-                               return ret;
-                       }
-
-                       public BigInteger Difference (BigInteger a, BigInteger b)
-                       {
-                               Sign cmp = Kernel.Compare (a, b);
-                               BigInteger diff;
-
-                               switch (cmp) {
-                                       case Sign.Zero:
-                                               return 0;
-                                       case Sign.Positive:
-                                               diff = a - b; break;
-                                       case Sign.Negative:
-                                               diff = b - a; break;
-                                       default:
-                                               throw new Exception ();
-                               }
-
-                               if (diff >= mod) {
-                                       if (diff.length >= mod.length << 1)
-                                               diff %= mod;
-                                       else
-                                               BarrettReduction (diff);
-                               }
-                               if (cmp == Sign.Negative)
-                                       diff = mod - diff;
-                               return diff;
-                       }
-#if true
-                       public BigInteger Pow (BigInteger a, BigInteger k)
-                       {
-                               BigInteger b = new BigInteger (1);
-                               if (k == 0)
-                                       return b;
-
-                               BigInteger A = a;
-                               if (k.TestBit (0))
-                                       b = a;
-
-                               for (int i = 1; i < k.BitCount (); i++) {
-                                       A = Multiply (A, A);
-                                       if (k.TestBit (i))
-                                               b = Multiply (A, b);
-                               }
-                               return b;
-                       }
-#else
-                       public BigInteger Pow (BigInteger b, BigInteger exp)
-                       {
-                               if ((mod.data [0] & 1) == 1) return OddPow (b, exp);
-                               else return EvenPow (b, exp);
-                       }
-                       
-                       public BigInteger EvenPow (BigInteger b, BigInteger exp)
-                       {
-                               BigInteger resultNum = new BigInteger ((BigInteger)1, mod.length << 1);
-                               BigInteger tempNum = new BigInteger (b % mod, mod.length << 1);  // ensures (tempNum * tempNum) < b^ (2k)
-
-                               uint totalBits = (uint)exp.BitCount ();
-
-                               uint [] wkspace = new uint [mod.length << 1];
-
-                               // perform squaring and multiply exponentiation
-                               for (uint pos = 0; pos < totalBits; pos++) {
-                                       if (exp.TestBit (pos)) {
-
-                                               Array.Clear (wkspace, 0, wkspace.Length);
-                                               Kernel.Multiply (resultNum.data, 0, resultNum.length, tempNum.data, 0, tempNum.length, wkspace, 0);
-                                               resultNum.length += tempNum.length;
-                                               uint [] t = wkspace;
-                                               wkspace = resultNum.data;
-                                               resultNum.data = t;
-
-                                               BarrettReduction (resultNum);
-                                       }
-
-                                       Kernel.SquarePositive (tempNum, ref wkspace);
-                                       BarrettReduction (tempNum);
-
-                                       if (tempNum == 1) {
-                                               return resultNum;
-                                       }
-                               }
-
-                               return resultNum;
-                       }
-
-                       private BigInteger OddPow (BigInteger b, BigInteger exp)
-                       {
-                               BigInteger resultNum = new BigInteger (Montgomery.ToMont (1, mod), mod.length << 1);
-                               BigInteger tempNum = new BigInteger (Montgomery.ToMont (b, mod), mod.length << 1);  // ensures (tempNum * tempNum) < b^ (2k)
-                               uint mPrime = Montgomery.Inverse (mod.data [0]);
-                               uint totalBits = (uint)exp.BitCount ();
-
-                               uint [] wkspace = new uint [mod.length << 1];
-
-                               // perform squaring and multiply exponentiation
-                               for (uint pos = 0; pos < totalBits; pos++) {
-                                       if (exp.TestBit (pos)) {
-
-                                               Array.Clear (wkspace, 0, wkspace.Length);
-                                               Kernel.Multiply (resultNum.data, 0, resultNum.length, tempNum.data, 0, tempNum.length, wkspace, 0);
-                                               resultNum.length += tempNum.length;
-                                               uint [] t = wkspace;
-                                               wkspace = resultNum.data;
-                                               resultNum.data = t;
-
-                                               Montgomery.Reduce (resultNum, mod, mPrime);
-                                       }
-
-                                       // the value of tempNum is required in the last loop
-                                       if (pos < totalBits - 1) {
-                                               Kernel.SquarePositive (tempNum, ref wkspace);
-                                               Montgomery.Reduce (tempNum, mod, mPrime);
-                                       }
-                               }
-
-                               Montgomery.Reduce (resultNum, mod, mPrime);
-                               return resultNum;
-                       }
-#endif
-                       #region Pow Small Base
-
-                       // TODO: Make tests for this, not really needed b/c prime stuff
-                       // checks it, but still would be nice
-#if !INSIDE_CORLIB
-                        [CLSCompliant (false)]
-#endif 
-#if true
-                       public BigInteger Pow (uint b, BigInteger exp)
-                       {
-                               return Pow (new BigInteger (b), exp);
-                       }
-#else
-                       public BigInteger Pow (uint b, BigInteger exp)
-                       {
-//                             if (b != 2) {
-                                       if ((mod.data [0] & 1) == 1)
-                                               return OddPow (b, exp);
-                                       else
-                                               return EvenPow (b, exp);
-/* buggy in some cases (like the well tested primes) 
-                               } else {
-                                       if ((mod.data [0] & 1) == 1)
-                                               return OddModTwoPow (exp);
-                                       else 
-                                               return EvenModTwoPow (exp);
-                               }*/
-                       }
-
-                       private unsafe BigInteger OddPow (uint b, BigInteger exp)
-                       {
-                               exp.Normalize ();
-                               uint [] wkspace = new uint [mod.length << 1 + 1];
-
-                               BigInteger resultNum = Montgomery.ToMont ((BigInteger)b, this.mod);
-                               resultNum = new BigInteger (resultNum, mod.length << 1 +1);
-
-                               uint mPrime = Montgomery.Inverse (mod.data [0]);
-
-                               int bc = exp.BitCount () - 2;
-                               uint pos = (bc > 1 ? (uint) bc : 1);
-
-                               //
-                               // We know that the first itr will make the val b
-                               //
-
-                               do {
-                                       //
-                                       // r = r ^ 2 % m
-                                       //
-                                       Kernel.SquarePositive (resultNum, ref wkspace);
-                                       resultNum = Montgomery.Reduce (resultNum, mod, mPrime);
-
-                                       if (exp.TestBit (pos)) {
-
-                                               //
-                                               // r = r * b % m
-                                               //
-
-                                               // TODO: Is Unsafe really speeding things up?
-                                               fixed (uint* u = resultNum.data) {
-
-                                                       uint i = 0;
-                                                       ulong mc = 0;
-
-                                                       do {
-                                                               mc += (ulong)u [i] * (ulong)b;
-                                                               u [i] = (uint)mc;
-                                                               mc >>= 32;
-                                                       } while (++i < resultNum.length);
-
-                                                       if (resultNum.length < mod.length) {
-                                                               if (mc != 0) {
-                                                                       u [i] = (uint)mc;
-                                                                       resultNum.length++;
-                                                                       while (resultNum >= mod)
-                                                                               Kernel.MinusEq (resultNum, mod);
-                                                               }
-                                                       } else if (mc != 0) {
-
-                                                               //
-                                                               // First, we estimate the quotient by dividing
-                                                               // the first part of each of the numbers. Then
-                                                               // we correct this, if necessary, with a subtraction.
-                                                               //
-
-                                                               uint cc = (uint)mc;
-
-                                                               // We would rather have this estimate overshoot,
-                                                               // so we add one to the divisor
-                                                               uint divEstimate;
-                                                               if (mod.data [mod.length - 1] < UInt32.MaxValue) {
-                                                                       divEstimate = (uint) ((((ulong)cc << 32) | (ulong) u [i -1]) /
-                                                                               (mod.data [mod.length-1] + 1));
-                                                               }
-                                                               else {
-                                                                       // guess but don't divide by 0
-                                                                       divEstimate = (uint) ((((ulong)cc << 32) | (ulong) u [i -1]) /
-                                                                               (mod.data [mod.length-1]));
-                                                               }
-
-                                                               uint t;
-
-                                                               i = 0;
-                                                               mc = 0;
-                                                               do {
-                                                                       mc += (ulong)mod.data [i] * (ulong)divEstimate;
-                                                                       t = u [i];
-                                                                       u [i] -= (uint)mc;
-                                                                       mc >>= 32;
-                                                                       if (u [i] > t) mc++;
-                                                                       i++;
-                                                               } while (i < resultNum.length);
-                                                               cc -= (uint)mc;
-
-                                                               if (cc != 0) {
-
-                                                                       uint sc = 0, j = 0;
-                                                                       uint [] s = mod.data;
-                                                                       do {
-                                                                               uint a = s [j];
-                                                                               if (((a += sc) < sc) | ((u [j] -= a) > ~a)) sc = 1;
-                                                                               else sc = 0;
-                                                                               j++;
-                                                                       } while (j < resultNum.length);
-                                                                       cc -= sc;
-                                                               }
-                                                               while (resultNum >= mod)
-                                                                       Kernel.MinusEq (resultNum, mod);
-                                                       } else {
-                                                               while (resultNum >= mod)
-                                                                       Kernel.MinusEq (resultNum, mod);
-                                                       }
-                                               }
-                                       }
-                               } while (pos-- > 0);
-
-                               resultNum = Montgomery.Reduce (resultNum, mod, mPrime);
-                               return resultNum;
-
-                       }
-                       
-                       private unsafe BigInteger EvenPow (uint b, BigInteger exp)
-                       {
-                               exp.Normalize ();
-                               uint [] wkspace = new uint [mod.length << 1 + 1];
-                               BigInteger resultNum = new BigInteger ((BigInteger)b, mod.length << 1 + 1);
-
-                               uint pos = (uint)exp.BitCount () - 2;
-
-                               //
-                               // We know that the first itr will make the val b
-                               //
-
-                               do {
-                                       //
-                                       // r = r ^ 2 % m
-                                       //
-                                       Kernel.SquarePositive (resultNum, ref wkspace);
-                                       if (!(resultNum.length < mod.length))
-                                               BarrettReduction (resultNum);
-
-                                       if (exp.TestBit (pos)) {
-
-                                               //
-                                               // r = r * b % m
-                                               //
-
-                                               // TODO: Is Unsafe really speeding things up?
-                                               fixed (uint* u = resultNum.data) {
-
-                                                       uint i = 0;
-                                                       ulong mc = 0;
-
-                                                       do {
-                                                               mc += (ulong)u [i] * (ulong)b;
-                                                               u [i] = (uint)mc;
-                                                               mc >>= 32;
-                                                       } while (++i < resultNum.length);
-
-                                                       if (resultNum.length < mod.length) {
-                                                               if (mc != 0) {
-                                                                       u [i] = (uint)mc;
-                                                                       resultNum.length++;
-                                                                       while (resultNum >= mod)
-                                                                               Kernel.MinusEq (resultNum, mod);
-                                                               }
-                                                       } else if (mc != 0) {
-
-                                                               //
-                                                               // First, we estimate the quotient by dividing
-                                                               // the first part of each of the numbers. Then
-                                                               // we correct this, if necessary, with a subtraction.
-                                                               //
-
-                                                               uint cc = (uint)mc;
-
-                                                               // We would rather have this estimate overshoot,
-                                                               // so we add one to the divisor
-                                                               uint divEstimate = (uint) ((((ulong)cc << 32) | (ulong) u [i -1]) /
-                                                                       (mod.data [mod.length-1] + 1));
-
-                                                               uint t;
-
-                                                               i = 0;
-                                                               mc = 0;
-                                                               do {
-                                                                       mc += (ulong)mod.data [i] * (ulong)divEstimate;
-                                                                       t = u [i];
-                                                                       u [i] -= (uint)mc;
-                                                                       mc >>= 32;
-                                                                       if (u [i] > t) mc++;
-                                                                       i++;
-                                                               } while (i < resultNum.length);
-                                                               cc -= (uint)mc;
-
-                                                               if (cc != 0) {
-
-                                                                       uint sc = 0, j = 0;
-                                                                       uint [] s = mod.data;
-                                                                       do {
-                                                                               uint a = s [j];
-                                                                               if (((a += sc) < sc) | ((u [j] -= a) > ~a)) sc = 1;
-                                                                               else sc = 0;
-                                                                               j++;
-                                                                       } while (j < resultNum.length);
-                                                                       cc -= sc;
-                                                               }
-                                                               while (resultNum >= mod)
-                                                                       Kernel.MinusEq (resultNum, mod);
-                                                       } else {
-                                                               while (resultNum >= mod)
-                                                                       Kernel.MinusEq (resultNum, mod);
-                                                       }
-                                               }
-                                       }
-                               } while (pos-- > 0);
-
-                               return resultNum;
-                       }
-#endif
-/* known to be buggy in some cases */
-#if false
-                       private unsafe BigInteger EvenModTwoPow (BigInteger exp)
-                       {
-                               exp.Normalize ();
-                               uint [] wkspace = new uint [mod.length << 1 + 1];
-
-                               BigInteger resultNum = new BigInteger (2, mod.length << 1 +1);
-
-                               uint value = exp.data [exp.length - 1];
-                               uint mask = 0x80000000;
-
-                               // Find the first bit of the exponent
-                               while ((value & mask) == 0)
-                                       mask >>= 1;
-
-                               //
-                               // We know that the first itr will make the val 2,
-                               // so eat one bit of the exponent
-                               //
-                               mask >>= 1;
-
-                               uint wPos = exp.length - 1;
-
-                               do {
-                                       value = exp.data [wPos];
-                                       do {
-                                               Kernel.SquarePositive (resultNum, ref wkspace);
-                                               if (resultNum.length >= mod.length)
-                                                       BarrettReduction (resultNum);
-
-                                               if ((value & mask) != 0) {
-                                                       //
-                                                       // resultNum = (resultNum * 2) % mod
-                                                       //
-
-                                                       fixed (uint* u = resultNum.data) {
-                                                               //
-                                                               // Double
-                                                               //
-                                                               uint* uu = u;
-                                                               uint* uuE = u + resultNum.length;
-                                                               uint x, carry = 0;
-                                                               while (uu < uuE) {
-                                                                       x = *uu;
-                                                                       *uu = (x << 1) | carry;
-                                                                       carry = x >> (32 - 1);
-                                                                       uu++;
-                                                               }
-
-                                                               // subtraction inlined because we know it is square
-                                                               if (carry != 0 || resultNum >= mod) {
-                                                                       uu = u;
-                                                                       uint c = 0;
-                                                                       uint [] s = mod.data;
-                                                                       uint i = 0;
-                                                                       do {
-                                                                               uint a = s [i];
-                                                                               if (((a += c) < c) | ((* (uu++) -= a) > ~a))
-                                                                                       c = 1;
-                                                                               else
-                                                                                       c = 0;
-                                                                               i++;
-                                                                       } while (uu < uuE);
-                                                               }
-                                                       }
-                                               }
-                                       } while ((mask >>= 1) > 0);
-                                       mask = 0x80000000;
-                               } while (wPos-- > 0);
-
-                               return resultNum;
-                       }
-
-                       private unsafe BigInteger OddModTwoPow (BigInteger exp)
-                       {
-
-                               uint [] wkspace = new uint [mod.length << 1 + 1];
-
-                               BigInteger resultNum = Montgomery.ToMont ((BigInteger)2, this.mod);
-                               resultNum = new BigInteger (resultNum, mod.length << 1 +1);
-
-                               uint mPrime = Montgomery.Inverse (mod.data [0]);
-
-                               //
-                               // TODO: eat small bits, the ones we can do with no modular reduction
-                               //
-                               uint pos = (uint)exp.BitCount () - 2;
-
-                               do {
-                                       Kernel.SquarePositive (resultNum, ref wkspace);
-                                       resultNum = Montgomery.Reduce (resultNum, mod, mPrime);
-
-                                       if (exp.TestBit (pos)) {
-                                               //
-                                               // resultNum = (resultNum * 2) % mod
-                                               //
-
-                                               fixed (uint* u = resultNum.data) {
-                                                       //
-                                                       // Double
-                                                       //
-                                                       uint* uu = u;
-                                                       uint* uuE = u + resultNum.length;
-                                                       uint x, carry = 0;
-                                                       while (uu < uuE) {
-                                                               x = *uu;
-                                                               *uu = (x << 1) | carry;
-                                                               carry = x >> (32 - 1);
-                                                               uu++;
-                                                       }
-
-                                                       // subtraction inlined because we know it is square
-                                                       if (carry != 0 || resultNum >= mod) {
-                                                               fixed (uint* s = mod.data) {
-                                                                       uu = u;
-                                                                       uint c = 0;
-                                                                       uint* ss = s;
-                                                                       do {
-                                                                               uint a = *ss++;
-                                                                               if (((a += c) < c) | ((* (uu++) -= a) > ~a))
-                                                                                       c = 1;
-                                                                               else
-                                                                                       c = 0;
-                                                                       } while (uu < uuE);
-                                                               }
-                                                       }
-                                               }
-                                       }
-                               } while (pos-- > 0);
-
-                               resultNum = Montgomery.Reduce (resultNum, mod, mPrime);
-                               return resultNum;
-                       }
-#endif
-                       #endregion
-               }
-
-               /// <summary>
-               /// Low level functions for the BigInteger
-               /// </summary>
-               private sealed class Kernel {
-
-                       #region Addition/Subtraction
-
-                       /// <summary>
-                       /// Adds two numbers with the same sign.
-                       /// </summary>
-                       /// <param name="bi1">A BigInteger</param>
-                       /// <param name="bi2">A BigInteger</param>
-                       /// <returns>bi1 + bi2</returns>
-                       public static BigInteger AddSameSign (BigInteger bi1, BigInteger bi2)
-                       {
-                               uint [] x, y;
-                               uint yMax, xMax, i = 0;
-
-                               // x should be bigger
-                               if (bi1.length < bi2.length) {
-                                       x = bi2.data;
-                                       xMax = bi2.length;
-                                       y = bi1.data;
-                                       yMax = bi1.length;
-                               } else {
-                                       x = bi1.data;
-                                       xMax = bi1.length;
-                                       y = bi2.data;
-                                       yMax = bi2.length;
-                               }
-                               
-                               BigInteger result = new BigInteger (Sign.Positive, xMax + 1);
-
-                               uint [] r = result.data;
-
-                               ulong sum = 0;
-
-                               // Add common parts of both numbers
-                               do {
-                                       sum = ((ulong)x [i]) + ((ulong)y [i]) + sum;
-                                       r [i] = (uint)sum;
-                                       sum >>= 32;
-                               } while (++i < yMax);
-
-                               // Copy remainder of longer number while carry propagation is required
-                               bool carry = (sum != 0);
-
-                               if (carry) {
-
-                                       if (i < xMax) {
-                                               do
-                                                       carry = ((r [i] = x [i] + 1) == 0);
-                                               while (++i < xMax && carry);
-                                       }
-
-                                       if (carry) {
-                                               r [i] = 1;
-                                               result.length = ++i;
-                                               return result;
-                                       }
-                               }
-
-                               // Copy the rest
-                               if (i < xMax) {
-                                       do
-                                               r [i] = x [i];
-                                       while (++i < xMax);
-                               }
-
-                               result.Normalize ();
-                               return result;
-                       }
-
-                       public static BigInteger Subtract (BigInteger big, BigInteger small)
-                       {
-                               BigInteger result = new BigInteger (Sign.Positive, big.length);
-
-                               uint [] r = result.data, b = big.data, s = small.data;
-                               uint i = 0, c = 0;
-
-                               do {
-
-                                       uint x = s [i];
-                                       if (((x += c) < c) | ((r [i] = b [i] - x) > ~x))
-                                               c = 1;
-                                       else
-                                               c = 0;
-
-                               } while (++i < small.length);
-
-                               if (i == big.length) goto fixup;
-
-                               if (c == 1) {
-                                       do
-                                               r [i] = b [i] - 1;
-                                       while (b [i++] == 0 && i < big.length);
-
-                                       if (i == big.length) goto fixup;
-                               }
-
-                               do
-                                       r [i] = b [i];
-                               while (++i < big.length);
-
-                               fixup:
-
-                                       result.Normalize ();
-                               return result;
-                       }
-
-                       public static void MinusEq (BigInteger big, BigInteger small)
-                       {
-                               uint [] b = big.data, s = small.data;
-                               uint i = 0, c = 0;
-
-                               do {
-                                       uint x = s [i];
-                                       if (((x += c) < c) | ((b [i] -= x) > ~x))
-                                               c = 1;
-                                       else
-                                               c = 0;
-                               } while (++i < small.length);
-
-                               if (i == big.length) goto fixup;
-
-                               if (c == 1) {
-                                       do
-                                               b [i]--;
-                                       while (b [i++] == 0 && i < big.length);
-                               }
-
-                               fixup:
-
-                                       // Normalize length
-                                       while (big.length > 0 && big.data [big.length-1] == 0) big.length--;
-
-                               // Check for zero
-                               if (big.length == 0)
-                                       big.length++;
-
-                       }
-
-                       public static void PlusEq (BigInteger bi1, BigInteger bi2)
-                       {
-                               uint [] x, y;
-                               uint yMax, xMax, i = 0;
-                               bool flag = false;
-
-                               // x should be bigger
-                               if (bi1.length < bi2.length){
-                                       flag = true;
-                                       x = bi2.data;
-                                       xMax = bi2.length;
-                                       y = bi1.data;
-                                       yMax = bi1.length;
-                               } else {
-                                       x = bi1.data;
-                                       xMax = bi1.length;
-                                       y = bi2.data;
-                                       yMax = bi2.length;
-                               }
-
-                               uint [] r = bi1.data;
-
-                               ulong sum = 0;
-
-                               // Add common parts of both numbers
-                               do {
-                                       sum += ((ulong)x [i]) + ((ulong)y [i]);
-                                       r [i] = (uint)sum;
-                                       sum >>= 32;
-                               } while (++i < yMax);
-
-                               // Copy remainder of longer number while carry propagation is required
-                               bool carry = (sum != 0);
-
-                               if (carry){
-
-                                       if (i < xMax) {
-                                               do
-                                                       carry = ((r [i] = x [i] + 1) == 0);
-                                               while (++i < xMax && carry);
-                                       }
-
-                                       if (carry) {
-                                               r [i] = 1;
-                                               bi1.length = ++i;
-                                               return;
-                                       }
-                               }
-
-                               // Copy the rest
-                               if (flag && i < xMax - 1) {
-                                       do
-                                               r [i] = x [i];
-                                       while (++i < xMax);
-                               }
-
-                               bi1.length = xMax + 1;
-                               bi1.Normalize ();
-                       }
-
-                       #endregion
-
-                       #region Compare
-
-                       /// <summary>
-                       /// Compares two BigInteger
-                       /// </summary>
-                       /// <param name="bi1">A BigInteger</param>
-                       /// <param name="bi2">A BigInteger</param>
-                       /// <returns>The sign of bi1 - bi2</returns>
-                       public static Sign Compare (BigInteger bi1, BigInteger bi2)
-                       {
-                               //
-                               // Step 1. Compare the lengths
-                               //
-                               uint l1 = bi1.length, l2 = bi2.length;
-
-                               while (l1 > 0 && bi1.data [l1-1] == 0) l1--;
-                               while (l2 > 0 && bi2.data [l2-1] == 0) l2--;
-
-                               if (l1 == 0 && l2 == 0) return Sign.Zero;
-
-                               // bi1 len < bi2 len
-                               if (l1 < l2) return Sign.Negative;
-                               // bi1 len > bi2 len
-                               else if (l1 > l2) return Sign.Positive;
-
-                               //
-                               // Step 2. Compare the bits
-                               //
-
-                               uint pos = l1 - 1;
-
-                               while (pos != 0 && bi1.data [pos] == bi2.data [pos]) pos--;
-                               
-                               if (bi1.data [pos] < bi2.data [pos])
-                                       return Sign.Negative;
-                               else if (bi1.data [pos] > bi2.data [pos])
-                                       return Sign.Positive;
-                               else
-                                       return Sign.Zero;
-                       }
-
-                       #endregion
-
-                       #region Division
-
-                       #region Dword
-
-                       /// <summary>
-                       /// Performs n / d and n % d in one operation.
-                       /// </summary>
-                       /// <param name="n">A BigInteger, upon exit this will hold n / d</param>
-                       /// <param name="d">The divisor</param>
-                       /// <returns>n % d</returns>
-                       public static uint SingleByteDivideInPlace (BigInteger n, uint d)
-                       {
-                               ulong r = 0;
-                               uint i = n.length;
-
-                               while (i-- > 0) {
-                                       r <<= 32;
-                                       r |= n.data [i];
-                                       n.data [i] = (uint)(r / d);
-                                       r %= d;
-                               }
-                               n.Normalize ();
-
-                               return (uint)r;
-                       }
-
-                       public static uint DwordMod (BigInteger n, uint d)
-                       {
-                               ulong r = 0;
-                               uint i = n.length;
-
-                               while (i-- > 0) {
-                                       r <<= 32;
-                                       r |= n.data [i];
-                                       r %= d;
-                               }
-
-                               return (uint)r;
-                       }
-
-                       public static BigInteger DwordDiv (BigInteger n, uint d)
-                       {
-                               BigInteger ret = new BigInteger (Sign.Positive, n.length);
-
-                               ulong r = 0;
-                               uint i = n.length;
-
-                               while (i-- > 0) {
-                                       r <<= 32;
-                                       r |= n.data [i];
-                                       ret.data [i] = (uint)(r / d);
-                                       r %= d;
-                               }
-                               ret.Normalize ();
-
-                               return ret;
-                       }
-
-                       public static BigInteger [] DwordDivMod (BigInteger n, uint d)
-                       {
-                               BigInteger ret = new BigInteger (Sign.Positive , n.length);
-
-                               ulong r = 0;
-                               uint i = n.length;
-
-                               while (i-- > 0) {
-                                       r <<= 32;
-                                       r |= n.data [i];
-                                       ret.data [i] = (uint)(r / d);
-                                       r %= d;
-                               }
-                               ret.Normalize ();
-
-                               BigInteger rem = (uint)r;
-
-                               return new BigInteger [] {ret, rem};
-                       }
-
-                               #endregion
-
-                       #region BigNum
-
-                       public static BigInteger [] multiByteDivide (BigInteger bi1, BigInteger bi2)
-                       {
-                               if (Kernel.Compare (bi1, bi2) == Sign.Negative)
-                                       return new BigInteger [2] { 0, new BigInteger (bi1) };
-
-                               bi1.Normalize (); bi2.Normalize ();
-
-                               if (bi2.length == 1)
-                                       return DwordDivMod (bi1, bi2.data [0]);
-
-                               uint remainderLen = bi1.length + 1;
-                               int divisorLen = (int)bi2.length + 1;
-
-                               uint mask = 0x80000000;
-                               uint val = bi2.data [bi2.length - 1];
-                               int shift = 0;
-                               int resultPos = (int)bi1.length - (int)bi2.length;
-
-                               while (mask != 0 && (val & mask) == 0) {
-                                       shift++; mask >>= 1;
-                               }
-
-                               BigInteger quot = new BigInteger (Sign.Positive, bi1.length - bi2.length + 1);
-                               BigInteger rem = (bi1 << shift);
-
-                               uint [] remainder = rem.data;
-
-                               bi2 = bi2 << shift;
-
-                               int j = (int)(remainderLen - bi2.length);
-                               int pos = (int)remainderLen - 1;
-
-                               uint firstDivisorByte = bi2.data [bi2.length-1];
-                               ulong secondDivisorByte = bi2.data [bi2.length-2];
-
-                               while (j > 0) {
-                                       ulong dividend = ((ulong)remainder [pos] << 32) + (ulong)remainder [pos-1];
-
-                                       ulong q_hat = dividend / (ulong)firstDivisorByte;
-                                       ulong r_hat = dividend % (ulong)firstDivisorByte;
-
-                                       do {
-
-                                               if (q_hat == 0x100000000 ||
-                                                       (q_hat * secondDivisorByte) > ((r_hat << 32) + remainder [pos-2])) {
-                                                       q_hat--;
-                                                       r_hat += (ulong)firstDivisorByte;
-
-                                                       if (r_hat < 0x100000000)
-                                                               continue;
-                                               }
-                                               break;
-                                       } while (true);
-
-                                       //
-                                       // At this point, q_hat is either exact, or one too large
-                                       // (more likely to be exact) so, we attempt to multiply the
-                                       // divisor by q_hat, if we get a borrow, we just subtract
-                                       // one from q_hat and add the divisor back.
-                                       //
-
-                                       uint t;
-                                       uint dPos = 0;
-                                       int nPos = pos - divisorLen + 1;
-                                       ulong mc = 0;
-                                       uint uint_q_hat = (uint)q_hat;
-                                       do {
-                                               mc += (ulong)bi2.data [dPos] * (ulong)uint_q_hat;
-                                               t = remainder [nPos];
-                                               remainder [nPos] -= (uint)mc;
-                                               mc >>= 32;
-                                               if (remainder [nPos] > t) mc++;
-                                               dPos++; nPos++;
-                                       } while (dPos < divisorLen);
-
-                                       nPos = pos - divisorLen + 1;
-                                       dPos = 0;
-
-                                       // Overestimate
-                                       if (mc != 0) {
-                                               uint_q_hat--;
-                                               ulong sum = 0;
-
-                                               do {
-                                                       sum = ((ulong)remainder [nPos]) + ((ulong)bi2.data [dPos]) + sum;
-                                                       remainder [nPos] = (uint)sum;
-                                                       sum >>= 32;
-                                                       dPos++; nPos++;
-                                               } while (dPos < divisorLen);
-
-                                       }
-
-                                       quot.data [resultPos--] = (uint)uint_q_hat;
-
-                                       pos--;
-                                       j--;
-                               }
-
-                               quot.Normalize ();
-                               rem.Normalize ();
-                               BigInteger [] ret = new BigInteger [2] { quot, rem };
-
-                               if (shift != 0)
-                                       ret [1] >>= shift;
-
-                               return ret;
-                       }
-
-                       #endregion
-
-                       #endregion
-
-                       #region Shift
-                       public static BigInteger LeftShift (BigInteger bi, int n)
-                       {
-                               if (n == 0) return new BigInteger (bi, bi.length + 1);
-
-                               int w = n >> 5;
-                               n &= ((1 << 5) - 1);
-
-                               BigInteger ret = new BigInteger (Sign.Positive, bi.length + 1 + (uint)w);
-
-                               uint i = 0, l = bi.length;
-                               if (n != 0) {
-                                       uint x, carry = 0;
-                                       while (i < l) {
-                                               x = bi.data [i];
-                                               ret.data [i + w] = (x << n) | carry;
-                                               carry = x >> (32 - n);
-                                               i++;
-                                       }
-                                       ret.data [i + w] = carry;
-                               } else {
-                                       while (i < l) {
-                                               ret.data [i + w] = bi.data [i];
-                                               i++;
-                                       }
-                               }
-
-                               ret.Normalize ();
-                               return ret;
-                       }
-
-                       public static BigInteger RightShift (BigInteger bi, int n)
-                       {
-                               if (n == 0) return new BigInteger (bi);
-
-                               int w = n >> 5;
-                               int s = n & ((1 << 5) - 1);
-
-                               BigInteger ret = new BigInteger (Sign.Positive, bi.length - (uint)w + 1);
-                               uint l = (uint)ret.data.Length - 1;
-
-                               if (s != 0) {
-
-                                       uint x, carry = 0;
-
-                                       while (l-- > 0) {
-                                               x = bi.data [l + w];
-                                               ret.data [l] = (x >> n) | carry;
-                                               carry = x << (32 - n);
-                                       }
-                               } else {
-                                       while (l-- > 0)
-                                               ret.data [l] = bi.data [l + w];
-
-                               }
-                               ret.Normalize ();
-                               return ret;
-                       }
-
-                       #endregion
-
-                       #region Multiply
-
-                       public static BigInteger MultiplyByDword (BigInteger n, uint f)
-                       {
-                               BigInteger ret = new BigInteger (Sign.Positive, n.length + 1);
-
-                               uint i = 0;
-                               ulong c = 0;
-
-                               do {
-                                       c += (ulong)n.data [i] * (ulong)f;
-                                       ret.data [i] = (uint)c;
-                                       c >>= 32;
-                               } while (++i < n.length);
-                               ret.data [i] = (uint)c;
-                               ret.Normalize ();
-                               return ret;
-
-                       }
-
-                       /// <summary>
-                       /// Multiplies the data in x [xOffset:xOffset+xLen] by
-                       /// y [yOffset:yOffset+yLen] and puts it into
-                       /// d [dOffset:dOffset+xLen+yLen].
-                       /// </summary>
-                       /// <remarks>
-                       /// This code is unsafe! It is the caller's responsibility to make
-                       /// sure that it is safe to access x [xOffset:xOffset+xLen],
-                       /// y [yOffset:yOffset+yLen], and d [dOffset:dOffset+xLen+yLen].
-                       /// </remarks>
-                       public static unsafe void Multiply (uint [] x, uint xOffset, uint xLen, uint [] y, uint yOffset, uint yLen, uint [] d, uint dOffset)
-                       {
-                               fixed (uint* xx = x, yy = y, dd = d) {
-                                       uint* xP = xx + xOffset,
-                                               xE = xP + xLen,
-                                               yB = yy + yOffset,
-                                               yE = yB + yLen,
-                                               dB = dd + dOffset;
-
-                                       for (; xP < xE; xP++, dB++) {
-
-                                               if (*xP == 0) continue;
-
-                                               ulong mcarry = 0;
-
-                                               uint* dP = dB;
-                                               for (uint* yP = yB; yP < yE; yP++, dP++) {
-                                                       mcarry += ((ulong)*xP * (ulong)*yP) + (ulong)*dP;
-
-                                                       *dP = (uint)mcarry;
-                                                       mcarry >>= 32;
-                                               }
-
-                                               if (mcarry != 0)
-                                                       *dP = (uint)mcarry;
-                                       }
-                               }
-                       }
-
-                       /// <summary>
-                       /// Multiplies the data in x [xOffset:xOffset+xLen] by
-                       /// y [yOffset:yOffset+yLen] and puts the low mod words into
-                       /// d [dOffset:dOffset+mod].
-                       /// </summary>
-                       /// <remarks>
-                       /// This code is unsafe! It is the caller's responsibility to make
-                       /// sure that it is safe to access x [xOffset:xOffset+xLen],
-                       /// y [yOffset:yOffset+yLen], and d [dOffset:dOffset+mod].
-                       /// </remarks>
-                       public static unsafe void MultiplyMod2p32pmod (uint [] x, int xOffset, int xLen, uint [] y, int yOffest, int yLen, uint [] d, int dOffset, int mod)
-                       {
-                               fixed (uint* xx = x, yy = y, dd = d) {
-                                       uint* xP = xx + xOffset,
-                                               xE = xP + xLen,
-                                               yB = yy + yOffest,
-                                               yE = yB + yLen,
-                                               dB = dd + dOffset,
-                                               dE = dB + mod;
-
-                                       for (; xP < xE; xP++, dB++) {
-
-                                               if (*xP == 0) continue;
-
-                                               ulong mcarry = 0;
-                                               uint* dP = dB;
-                                               for (uint* yP = yB; yP < yE && dP < dE; yP++, dP++) {
-                                                       mcarry += ((ulong)*xP * (ulong)*yP) + (ulong)*dP;
-
-                                                       *dP = (uint)mcarry;
-                                                       mcarry >>= 32;
-                                               }
-
-                                               if (mcarry != 0 && dP < dE)
-                                                       *dP = (uint)mcarry;
-                                       }
-                               }
-                       }
-
-                       public static unsafe void SquarePositive (BigInteger bi, ref uint [] wkSpace)
-                       {
-                               uint [] t = wkSpace;
-                               wkSpace = bi.data;
-                               uint [] d = bi.data;
-                               uint dl = bi.length;
-                               bi.data = t;
-
-                               fixed (uint* dd = d, tt = t) {
-
-                                       uint* ttE = tt + t.Length;
-                                       // Clear the dest
-                                       for (uint* ttt = tt; ttt < ttE; ttt++)
-                                               *ttt = 0;
-
-                                       uint* dP = dd, tP = tt;
-
-                                       for (uint i = 0; i < dl; i++, dP++) {
-                                               if (*dP == 0)
-                                                       continue;
-
-                                               ulong mcarry = 0;
-                                               uint bi1val = *dP;
-
-                                               uint* dP2 = dP + 1, tP2 = tP + 2*i + 1;
-
-                                               for (uint j = i + 1; j < dl; j++, tP2++, dP2++) {
-                                                       // k = i + j
-                                                       mcarry += ((ulong)bi1val * (ulong)*dP2) + *tP2;
-
-                                                       *tP2 = (uint)mcarry;
-                                                       mcarry >>= 32;
-                                               }
-
-                                               if (mcarry != 0)
-                                                       *tP2 = (uint)mcarry;
-                                       }
-
-                                       // Double t. Inlined for speed.
-
-                                       tP = tt;
-
-                                       uint x, carry = 0;
-                                       while (tP < ttE) {
-                                               x = *tP;
-                                               *tP = (x << 1) | carry;
-                                               carry = x >> (32 - 1);
-                                               tP++;
-                                       }
-                                       if (carry != 0) *tP = carry;
-
-                                       // Add in the diagnals
-
-                                       dP = dd;
-                                       tP = tt;
-                                       for (uint* dE = dP + dl; (dP < dE); dP++, tP++) {
-                                               ulong val = (ulong)*dP * (ulong)*dP + *tP;
-                                               *tP = (uint)val;
-                                               val >>= 32;
-                                               *(++tP) += (uint)val;
-                                               if (*tP < (uint)val) {
-                                                       uint* tP3 = tP;
-                                                       // Account for the first carry
-                                                       (*++tP3)++;
-
-                                                       // Keep adding until no carry
-                                                       while ((*tP3++) == 0)
-                                                               (*tP3)++;
-                                               }
-
-                                       }
-
-                                       bi.length <<= 1;
-
-                                       // Normalize length
-                                       while (tt [bi.length-1] == 0 && bi.length > 1) bi.length--;
-
-                               }
-                       }
-
-/* 
- * Never called in BigInteger (and part of a private class)
- *                     public static bool Double (uint [] u, int l)
-                       {
-                               uint x, carry = 0;
-                               uint i = 0;
-                               while (i < l) {
-                                       x = u [i];
-                                       u [i] = (x << 1) | carry;
-                                       carry = x >> (32 - 1);
-                                       i++;
-                               }
-                               if (carry != 0) u [l] = carry;
-                               return carry != 0;
-                       }*/
-
-                       #endregion
-
-                       #region Number Theory
-
-                       public static BigInteger gcd (BigInteger a, BigInteger b)
-                       {
-                               BigInteger x = a;
-                               BigInteger y = b;
-
-                               BigInteger g = y;
-
-                               while (x.length > 1) {
-                                       g = x;
-                                       x = y % x;
-                                       y = g;
-
-                               }
-                               if (x == 0) return g;
-
-                               // TODO: should we have something here if we can convert to long?
-
-                               //
-                               // Now we can just do it with single precision. I am using the binary gcd method,
-                               // as it should be faster.
-                               //
-
-                               uint yy = x.data [0];
-                               uint xx = y % yy;
-
-                               int t = 0;
-
-                               while (((xx | yy) & 1) == 0) {
-                                       xx >>= 1; yy >>= 1; t++;
-                               }
-                               while (xx != 0) {
-                                       while ((xx & 1) == 0) xx >>= 1;
-                                       while ((yy & 1) == 0) yy >>= 1;
-                                       if (xx >= yy)
-                                               xx = (xx - yy) >> 1;
-                                       else
-                                               yy = (yy - xx) >> 1;
-                               }
-
-                               return yy << t;
-                       }
-
-                       public static uint modInverse (BigInteger bi, uint modulus)
-                       {
-                               uint a = modulus, b = bi % modulus;
-                               uint p0 = 0, p1 = 1;
-
-                               while (b != 0) {
-                                       if (b == 1)
-                                               return p1;
-                                       p0 += (a / b) * p1;
-                                       a %= b;
-
-                                       if (a == 0)
-                                               break;
-                                       if (a == 1)
-                                               return modulus-p0;
-
-                                       p1 += (b / a) * p0;
-                                       b %= a;
-
-                               }
-                               return 0;
-                       }
-                       
-                       public static BigInteger modInverse (BigInteger bi, BigInteger modulus)
-                       {
-                               if (modulus.length == 1) return modInverse (bi, modulus.data [0]);
-
-                               BigInteger [] p = { 0, 1 };
-                               BigInteger [] q = new BigInteger [2];    // quotients
-                               BigInteger [] r = { 0, 0 };             // remainders
-
-                               int step = 0;
-
-                               BigInteger a = modulus;
-                               BigInteger b = bi;
-
-                               ModulusRing mr = new ModulusRing (modulus);
-
-                               while (b != 0) {
-
-                                       if (step > 1) {
-
-                                               BigInteger pval = mr.Difference (p [0], p [1] * q [0]);
-                                               p [0] = p [1]; p [1] = pval;
-                                       }
-
-                                       BigInteger [] divret = multiByteDivide (a, b);
-
-                                       q [0] = q [1]; q [1] = divret [0];
-                                       r [0] = r [1]; r [1] = divret [1];
-                                       a = b;
-                                       b = divret [1];
-
-                                       step++;
-                               }
-
-                               if (r [0] != 1)
-                                       throw (new ArithmeticException ("No inverse!"));
-
-                               return mr.Difference (p [0], p [1] * q [0]);
-
-                       }
-                       #endregion
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Math/ChangeLog b/mcs/class/corlib/Mono.Math/ChangeLog
deleted file mode 100644 (file)
index f91df6a..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-2007-05-31  Alan McGovern  <alan.mcgovern@gmail.com>
-
-       * BigInteger.cs: Don't instantiate a new BigInteger after
-       multiplying - it's not needed.  
-
-2007-09-12  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: Updated to match Mono.Security sources.
-
-2007-07-28  Miguel de Icaza  <miguel@novell.com>
-
-       * BigInteger.cs: Do not cast inside Equals,instead use the as
-       operator, as reported by Jesse Jones.
-
-2004-12-03  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: Fix issue #70169 in ModPow when modulus is a power of
-       two.
-
-2004-10-19  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: Fix issue #68452 when Randomize was being called on a
-       0 BigInteger (i.e. BitCount == 0).
-
-2004-05-14  Marek Safar  <marek.safar@seznam.cz>
-
-       * BigInteger.cs: Removed useless [CLSCompliant (false)]
-
-2004-05-07  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: In sync with Mono.Security.dll version.
-
-2004-04-30 Ben Maurer  <bmaurer@users.sourceforge.net>
-
-       * BigInteger.cs: use readonly for prime array.
-
-2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: In sync with Mono.Security.dll version.
-
-2004-02-23  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: Corrected isProbablePrime by removing the redundant 
-       loop. Fix #54750.
-
-2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: Fixed isProbablePrime() and added Parse method from
-       patch provided by Pieter (#51229). Changed SmallPrimeSppTest to 
-       RabinMillerTest (#51229, #54262). Removed obsoleted method
-       isProbablePrime(int).
-
-2004-02-09  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: Added INSIDE_CORLIB to define ModulusRing as 
-       internal. Without this the unit tests for Mono.Math (now in
-       Mono.Security assembly) wont compile (see bugzilla #44845).
-
-2003-11-20 Ben Maurer  <bmaurer@users.sourceforge.net>
-
-       * BigInteger.cs: Fix prob. prime test for small numbers (Pieter Philippaerts)
-
-2003-06-11  Sebastien Pouliot <spouliot@motus.com>
-
-       * BigInteger.cs: Added Clear to zeroize big integers and code to allow
-       compares with null (because operators == and != are re-defined). Note:
-       The class may still leak some private info in temp arrays (thanks Ben).
-
-2003-04-22  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * BigInteger.cs: New, much faster, version by Ben Maurer. 
-       Warning: this version requires "unsafe" compilation switch
-       (which isn't a problem in corlib but may be elsewhere)
-
-2003-02-08  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * BigInteger.cs: Renamed namespace to match new location.
-
diff --git a/mcs/class/corlib/Mono.Security.Authenticode/AuthenticodeBase.cs b/mcs/class/corlib/Mono.Security.Authenticode/AuthenticodeBase.cs
deleted file mode 100644 (file)
index bee47e7..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-//
-// AuthenticodeBase.cs: Authenticode signature base class
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004, 2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.IO;
-using System.Security.Cryptography;
-
-namespace Mono.Security.Authenticode {
-
-       // References:
-       // a.   http://www.cs.auckland.ac.nz/~pgut001/pubs/authenticode.txt
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       enum Authority {
-               Individual,
-               Commercial,
-               Maximum
-       }
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       class AuthenticodeBase {
-
-               public const string spcIndirectDataContext = "1.3.6.1.4.1.311.2.1.4";
-
-               private byte[] fileblock;
-               private FileStream fs;
-               private int blockNo;
-               private int blockLength;
-               private int peOffset;
-               private int dirSecurityOffset;
-               private int dirSecuritySize;
-               private int coffSymbolTableOffset;
-
-               public AuthenticodeBase ()
-               {
-                       fileblock = new byte [4096];
-               }
-
-               internal int PEOffset {
-                       get {
-                               if (blockNo < 1)
-                                       ReadFirstBlock ();
-                               return peOffset;
-                       }
-               }
-
-               internal int CoffSymbolTableOffset {
-                       get {
-                               if (blockNo < 1)
-                                       ReadFirstBlock ();
-                               return coffSymbolTableOffset;
-                       }
-               }
-
-               internal int SecurityOffset {
-                       get {
-                               if (blockNo < 1)
-                                       ReadFirstBlock ();
-                               return dirSecurityOffset;
-                       }
-               }
-
-               internal void Open (string filename)
-               {
-                       if (fs != null)
-                               Close ();
-                       fs = new FileStream (filename, FileMode.Open, FileAccess.Read, FileShare.Read);
-               }
-
-               internal void Close ()
-               {
-                       if (fs != null) {
-                               fs.Close ();
-                               fs = null;
-                               blockNo = 0;
-                       }
-               }
-
-               internal bool ReadFirstBlock ()
-               {
-                       if (fs == null)
-                               return false;
-
-                       fs.Position = 0;
-                       // read first block - it will include (100% sure) 
-                       // the MZ header and (99.9% sure) the PE header
-                       blockLength = fs.Read (fileblock, 0, fileblock.Length);
-                       blockNo = 1;
-                       if (blockLength < 64)
-                               return false;   // invalid PE file
-
-                       // 1. Validate the MZ header informations
-                       // 1.1. Check for magic MZ at start of header
-                       if (BitConverterLE.ToUInt16 (fileblock, 0) != 0x5A4D)
-                               return false;
-
-                       // 1.2. Find the offset of the PE header
-                       peOffset = BitConverterLE.ToInt32 (fileblock, 60);
-                       if (peOffset > fileblock.Length) {
-                               // just in case (0.1%) this can actually happen
-                               string msg = String.Format (Locale.GetText (
-                                       "Header size too big (> {0} bytes)."),
-                                       fileblock.Length);
-                               throw new NotSupportedException (msg);
-                       }
-                       if (peOffset > fs.Length)
-                               return false;
-
-                       // 2. Read between DOS header and first part of PE header
-                       // 2.1. Check for magic PE at start of header
-                       //      PE - NT header ('P' 'E' 0x00 0x00)
-                       if (BitConverterLE.ToUInt32 (fileblock, peOffset) != 0x4550)
-                               return false;
-
-                       // 2.2. Locate IMAGE_DIRECTORY_ENTRY_SECURITY (offset and size)
-                       dirSecurityOffset = BitConverterLE.ToInt32 (fileblock, peOffset + 152);
-                       dirSecuritySize = BitConverterLE.ToInt32 (fileblock, peOffset + 156);
-
-                       // COFF symbol tables are deprecated - we'll strip them if we see them!
-                       // (otherwise the signature won't work on MS and we don't want to support COFF for that)
-                       coffSymbolTableOffset = BitConverterLE.ToInt32 (fileblock, peOffset + 12);
-
-                       return true;
-               }
-
-               internal byte[] GetSecurityEntry () 
-               {
-                       if (blockNo < 1)
-                               ReadFirstBlock ();
-
-                       if (dirSecuritySize > 8) {
-                               // remove header from size (not ASN.1 based)
-                               byte[] secEntry = new byte [dirSecuritySize - 8];
-                               // position after header and read entry
-                               fs.Position = dirSecurityOffset + 8;
-                               fs.Read (secEntry, 0, secEntry.Length);
-                               return secEntry;
-                       }
-                       return null;
-               }
-
-               internal byte[] GetHash (HashAlgorithm hash)
-               {
-                       if (blockNo < 1)
-                               ReadFirstBlock ();
-                       fs.Position = blockLength;
-
-                       // hash the rest of the file
-                       long n;
-                       int addsize = 0;
-                       // minus any authenticode signature (with 8 bytes header)
-                       if (dirSecurityOffset > 0) {
-                               // it is also possible that the signature block 
-                               // starts within the block in memory (small EXE)
-                               if (dirSecurityOffset < blockLength) {
-                                       blockLength = dirSecurityOffset;
-                                       n = 0;
-                               } else {
-                                       n = dirSecurityOffset - blockLength;
-                               }
-                       } else if (coffSymbolTableOffset > 0) {
-                               fileblock[PEOffset + 12] = 0;
-                               fileblock[PEOffset + 13] = 0;
-                               fileblock[PEOffset + 14] = 0;
-                               fileblock[PEOffset + 15] = 0;
-                               fileblock[PEOffset + 16] = 0;
-                               fileblock[PEOffset + 17] = 0;
-                               fileblock[PEOffset + 18] = 0;
-                               fileblock[PEOffset + 19] = 0;
-                               // it is also possible that the signature block 
-                               // starts within the block in memory (small EXE)
-                               if (coffSymbolTableOffset < blockLength) {
-                                       blockLength = coffSymbolTableOffset;
-                                       n = 0;
-                               } else {
-                                       n = coffSymbolTableOffset - blockLength;
-                               }
-                       } else {
-                               addsize = (int) (fs.Length & 7);
-                               if (addsize > 0)
-                                       addsize = 8 - addsize;
-                               
-                               n = fs.Length - blockLength;
-                       }
-
-                       // Authenticode(r) gymnastics
-                       // Hash from (generally) 0 to 215 (216 bytes)
-                       int pe = peOffset + 88;
-                       hash.TransformBlock (fileblock, 0, pe, fileblock, 0);
-                       // then skip 4 for checksum
-                       pe += 4;
-                       // Continue hashing from (generally) 220 to 279 (60 bytes)
-                       hash.TransformBlock (fileblock, pe, 60, fileblock, pe);
-                       // then skip 8 bytes for IMAGE_DIRECTORY_ENTRY_SECURITY
-                       pe += 68;
-
-                       // everything is present so start the hashing
-                       if (n == 0) {
-                               // hash the (only) block
-                               hash.TransformFinalBlock (fileblock, pe, blockLength - pe);
-                       }
-                       else {
-                               // hash the last part of the first (already in memory) block
-                               hash.TransformBlock (fileblock, pe, blockLength - pe, fileblock, pe);
-
-                               // hash by blocks of 4096 bytes
-                               long blocks = (n >> 12);
-                               int remainder = (int)(n - (blocks << 12));
-                               if (remainder == 0) {
-                                       blocks--;
-                                       remainder = 4096;
-                               }
-                               // blocks
-                               while (blocks-- > 0) {
-                                       fs.Read (fileblock, 0, fileblock.Length);
-                                       hash.TransformBlock (fileblock, 0, fileblock.Length, fileblock, 0);
-                               }
-                               // remainder
-                               if (fs.Read (fileblock, 0, remainder) != remainder)
-                                       return null;
-
-                               if (addsize > 0) {
-                                       hash.TransformBlock (fileblock, 0, remainder, fileblock, 0);
-                                       hash.TransformFinalBlock (new byte [addsize], 0, addsize);
-                               } else {
-                                       hash.TransformFinalBlock (fileblock, 0, remainder);
-                               }
-                       }
-                       return hash.Hash;
-               }
-
-               // for compatibility only
-               protected byte[] HashFile (string fileName, string hashName) 
-               {
-                       try {
-                               Open (fileName);
-                               HashAlgorithm hash = HashAlgorithm.Create (hashName);
-                               byte[] result = GetHash (hash);
-                               Close ();
-                               return result;
-                       }
-                       catch {
-                               return null;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Authenticode/AuthenticodeDeformatter.cs b/mcs/class/corlib/Mono.Security.Authenticode/AuthenticodeDeformatter.cs
deleted file mode 100644 (file)
index a92affc..0000000
+++ /dev/null
@@ -1,456 +0,0 @@
-//
-// AuthenticodeDeformatter.cs: Authenticode signature validator
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.IO;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Security.Cryptography;
-
-using Mono.Security.Cryptography;
-using Mono.Security.X509;
-
-namespace Mono.Security.Authenticode {
-
-       // References:
-       // a.   http://www.cs.auckland.ac.nz/~pgut001/pubs/authenticode.txt
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class AuthenticodeDeformatter : AuthenticodeBase {
-
-               private string filename;
-               private byte[] hash;
-               private X509CertificateCollection coll;
-               private ASN1 signedHash;
-               private DateTime timestamp;
-               private X509Certificate signingCertificate;
-               private int reason;
-               private bool trustedRoot;
-               private bool trustedTimestampRoot;
-               private byte[] entry;
-
-               private X509Chain signerChain;
-               private X509Chain timestampChain;
-
-               public AuthenticodeDeformatter () : base ()
-               {
-                       reason = -1;
-                       signerChain = new X509Chain ();
-                       timestampChain = new X509Chain ();
-               }
-
-               public AuthenticodeDeformatter (string fileName) : this () 
-               {
-                       FileName = fileName;
-               }
-
-               public string FileName {
-                       get { return filename; }
-                       set { 
-                               Reset ();
-                               try {
-                                       CheckSignature (value); 
-                               }
-                               catch (SecurityException) {
-                                       throw;
-                               }
-                               catch (Exception) {
-                                       reason = 1;
-                               }
-                       }
-               }
-
-               public byte[] Hash {
-                       get { 
-                               if (signedHash == null)
-                                       return null;
-                               return (byte[]) signedHash.Value.Clone ();
-                       }
-               }
-
-               public int Reason {
-                       get { 
-                               if (reason == -1)
-                                       IsTrusted ();
-                               return reason; 
-                       }
-               }
-
-               public bool IsTrusted ()
-               {
-                       if (entry == null) {
-                               reason = 1;
-                               return false;
-                       }
-
-                       if (signingCertificate == null) {
-                               reason = 7;
-                               return false;
-                       }
-
-                       if ((signerChain.Root == null) || !trustedRoot) {
-                               reason = 6;
-                               return false;
-                       }
-
-                       if (timestamp != DateTime.MinValue) {
-                               if ((timestampChain.Root == null) || !trustedTimestampRoot) {
-                                       reason = 6;
-                                       return false;
-                               }
-
-                               // check that file was timestamped when certificates were valid
-                               if (!signingCertificate.WasCurrent (Timestamp)) {
-                                       reason = 4;
-                                       return false;
-                               }
-                       }
-                       else if (!signingCertificate.IsCurrent) {
-                               // signature only valid if the certificate is valid
-                               reason = 8;
-                               return false;
-                       }
-
-                       if (reason == -1)
-                               reason = 0;
-                       return true;
-               }
-
-               public byte[] Signature {
-                       get {
-                               if (entry == null)
-                                       return null;
-                               return (byte[]) entry.Clone (); 
-                       }
-               }
-
-               public DateTime Timestamp {
-                       get { return timestamp; }
-               }
-
-               public X509CertificateCollection Certificates {
-                       get { return coll; }
-               }
-
-               public X509Certificate SigningCertificate {
-                       get { return signingCertificate; }
-               }
-
-               private bool CheckSignature (string fileName) 
-               {
-                       filename = fileName;
-                       Open (filename);
-                       entry = GetSecurityEntry ();
-                       if (entry == null) {
-                               // no signature is present
-                               reason = 1;
-                               Close ();
-                               return false;
-                       }
-
-                       PKCS7.ContentInfo ci = new PKCS7.ContentInfo (entry);
-                       if (ci.ContentType != PKCS7.Oid.signedData) {
-                               Close ();
-                               return false;
-                       }
-
-                       PKCS7.SignedData sd = new PKCS7.SignedData (ci.Content);
-                       if (sd.ContentInfo.ContentType != spcIndirectDataContext) {
-                               Close ();
-                               return false;
-                       }
-
-                       coll = sd.Certificates;
-
-                       ASN1 spc = sd.ContentInfo.Content;
-                       signedHash = spc [0][1][1];
-
-                       HashAlgorithm ha = null; 
-                       switch (signedHash.Length) {
-                               case 16:
-                                       ha = HashAlgorithm.Create ("MD5"); 
-                                       hash = GetHash (ha);
-                                       break;
-                               case 20:
-                                       ha = HashAlgorithm.Create ("SHA1");
-                                       hash = GetHash (ha);
-                                       break;
-                               default:
-                                       reason = 5;
-                                       Close ();
-                                       return false;
-                       }
-                       Close ();
-
-                       if (!signedHash.CompareValue (hash)) {
-                               reason = 2;
-                       }
-
-                       // messageDigest is a hash of spcIndirectDataContext (which includes the file hash)
-                       byte[] spcIDC = spc [0].Value;
-                       ha.Initialize (); // re-using hash instance
-                       byte[] messageDigest = ha.ComputeHash (spcIDC);
-
-                       bool sign = VerifySignature (sd, messageDigest, ha);
-                       return (sign && (reason == 0));
-               }
-
-               private bool CompareIssuerSerial (string issuer, byte[] serial, X509Certificate x509) 
-               {
-                       if (issuer != x509.IssuerName)
-                               return false;
-                       if (serial.Length != x509.SerialNumber.Length)
-                               return false;
-                       // MS shows the serial number inversed (so is Mono.Security.X509.X509Certificate)
-                       int n = serial.Length;
-                       for (int i=0; i < serial.Length; i++) {
-                               if (serial [i] != x509.SerialNumber [--n])
-                                       return false;
-                       }
-                       // must be true
-                       return true;
-               }
-
-               //private bool VerifySignature (ASN1 cs, byte[] calculatedMessageDigest, string hashName) 
-               private bool VerifySignature (PKCS7.SignedData sd, byte[] calculatedMessageDigest, HashAlgorithm ha) 
-               {
-                       string contentType = null;
-                       ASN1 messageDigest = null;
-//                     string spcStatementType = null;
-//                     string spcSpOpusInfo = null;
-
-                       for (int i=0; i < sd.SignerInfo.AuthenticatedAttributes.Count; i++) {
-                               ASN1 attr = (ASN1) sd.SignerInfo.AuthenticatedAttributes [i];
-                               string oid = ASN1Convert.ToOid (attr[0]);
-                               switch (oid) {
-                                       case "1.2.840.113549.1.9.3":
-                                               // contentType
-                                               contentType = ASN1Convert.ToOid (attr[1][0]);
-                                               break;
-                                       case "1.2.840.113549.1.9.4":
-                                               // messageDigest
-                                               messageDigest = attr[1][0];
-                                               break;
-                                       case "1.3.6.1.4.1.311.2.1.11":
-                                               // spcStatementType (Microsoft code signing)
-                                               // possible values
-                                               // - individualCodeSigning (1 3 6 1 4 1 311 2 1 21)
-                                               // - commercialCodeSigning (1 3 6 1 4 1 311 2 1 22)
-//                                             spcStatementType = ASN1Convert.ToOid (attr[1][0][0]);
-                                               break;
-                                       case "1.3.6.1.4.1.311.2.1.12":
-                                               // spcSpOpusInfo (Microsoft code signing)
-/*                                             try {
-                                                       spcSpOpusInfo = System.Text.Encoding.UTF8.GetString (attr[1][0][0][0].Value);
-                                               }
-                                               catch (NullReferenceException) {
-                                                       spcSpOpusInfo = null;
-                                               }*/
-                                               break;
-                                       default:
-                                               break;
-                               }
-                       }
-                       if (contentType != spcIndirectDataContext)
-                               return false;
-
-                       // verify message digest
-                       if (messageDigest == null)
-                               return false;
-                       if (!messageDigest.CompareValue (calculatedMessageDigest))
-                               return false;
-
-                       // verify signature
-                       string hashOID = CryptoConfig.MapNameToOID (ha.ToString ());
-                       
-                       // change to SET OF (not [0]) as per PKCS #7 1.5
-                       ASN1 aa = new ASN1 (0x31);
-                       foreach (ASN1 a in sd.SignerInfo.AuthenticatedAttributes)
-                               aa.Add (a);
-                       ha.Initialize ();
-                       byte[] p7hash = ha.ComputeHash (aa.GetBytes ());
-
-                       byte[] signature = sd.SignerInfo.Signature;
-                       // we need to find the specified certificate
-                       string issuer = sd.SignerInfo.IssuerName;
-                       byte[] serial = sd.SignerInfo.SerialNumber;
-                       foreach (X509Certificate x509 in coll) {
-                               if (CompareIssuerSerial (issuer, serial, x509)) {
-                                       // don't verify is key size don't match
-                                       if (x509.PublicKey.Length > (signature.Length >> 3)) {
-                                               // return the signing certificate even if the signature isn't correct
-                                               // (required behaviour for 2.0 support)
-                                               signingCertificate = x509;
-                                               RSACryptoServiceProvider rsa = (RSACryptoServiceProvider) x509.RSA;
-                                               if (rsa.VerifyHash (p7hash, hashOID, signature)) {
-                                                       signerChain.LoadCertificates (coll);
-                                                       trustedRoot = signerChain.Build (x509);
-                                                       break; 
-                                               }
-                                       }
-                               }
-                       }
-
-                       // timestamp signature is optional
-                       if (sd.SignerInfo.UnauthenticatedAttributes.Count == 0) {
-                               trustedTimestampRoot = true;
-                       }  else {
-                               for (int i = 0; i < sd.SignerInfo.UnauthenticatedAttributes.Count; i++) {
-                                       ASN1 attr = (ASN1) sd.SignerInfo.UnauthenticatedAttributes[i];
-                                       string oid = ASN1Convert.ToOid (attr[0]);
-                                       switch (oid) {
-                                       case PKCS7.Oid.countersignature:
-                                               // SEQUENCE {
-                                               //   OBJECT IDENTIFIER
-                                               //     countersignature (1 2 840 113549 1 9 6)
-                                               //   SET {
-                                               PKCS7.SignerInfo cs = new PKCS7.SignerInfo (attr[1]);
-                                               trustedTimestampRoot = VerifyCounterSignature (cs, signature);
-                                               break;
-                                       default:
-                                               // we don't support other unauthenticated attributes
-                                               break;
-                                       }
-                               }
-                       }
-
-                       return (trustedRoot && trustedTimestampRoot);
-               }
-
-               private bool VerifyCounterSignature (PKCS7.SignerInfo cs, byte[] signature) 
-               {
-                       // SEQUENCE {
-                       //   INTEGER 1
-                       if (cs.Version != 1)
-                               return false;
-                       //   SEQUENCE {
-                       //      SEQUENCE {
-
-                       string contentType = null;
-                       ASN1 messageDigest = null;
-                       for (int i=0; i < cs.AuthenticatedAttributes.Count; i++) {
-                               // SEQUENCE {
-                               //   OBJECT IDENTIFIER
-                               ASN1 attr = (ASN1) cs.AuthenticatedAttributes [i];
-                               string oid = ASN1Convert.ToOid (attr[0]);
-                               switch (oid) {
-                                       case "1.2.840.113549.1.9.3":
-                                               // contentType
-                                               contentType = ASN1Convert.ToOid (attr[1][0]);
-                                               break;
-                                       case "1.2.840.113549.1.9.4":
-                                               // messageDigest
-                                               messageDigest = attr[1][0];
-                                               break;
-                                       case "1.2.840.113549.1.9.5":
-                                               // SEQUENCE {
-                                               //   OBJECT IDENTIFIER
-                                               //     signingTime (1 2 840 113549 1 9 5)
-                                               //   SET {
-                                               //     UTCTime '030124013651Z'
-                                               //   }
-                                               // }
-                                               timestamp = ASN1Convert.ToDateTime (attr[1][0]);
-                                               break;
-                                       default:
-                                               break;
-                               }
-                       }
-
-                       if (contentType != PKCS7.Oid.data) 
-                               return false;
-
-                       // verify message digest
-                       if (messageDigest == null)
-                               return false;
-                       // TODO: must be read from the ASN.1 structure
-                       string hashName = null;
-                       switch (messageDigest.Length) {
-                               case 16:
-                                       hashName = "MD5";
-                                       break;
-                               case 20:
-                                       hashName = "SHA1";
-                                       break;
-                       }
-                       HashAlgorithm ha = HashAlgorithm.Create (hashName);
-                       if (!messageDigest.CompareValue (ha.ComputeHash (signature)))
-                               return false;
-
-                       // verify signature
-                       byte[] counterSignature = cs.Signature;
-
-                       // change to SET OF (not [0]) as per PKCS #7 1.5
-                       ASN1 aa = new ASN1 (0x31);
-                       foreach (ASN1 a in cs.AuthenticatedAttributes)
-                               aa.Add (a);
-                       byte[] p7hash = ha.ComputeHash (aa.GetBytes ());
-
-                       // we need to try all certificates
-                       string issuer = cs.IssuerName;
-                       byte[] serial = cs.SerialNumber;
-                       foreach (X509Certificate x509 in coll) {
-                               if (CompareIssuerSerial (issuer, serial, x509)) {
-                                       if (x509.PublicKey.Length > counterSignature.Length) {
-                                               RSACryptoServiceProvider rsa = (RSACryptoServiceProvider) x509.RSA;
-                                               // we need to HACK around bad (PKCS#1 1.5) signatures made by Verisign Timestamp Service
-                                               // and this means copying stuff into our own RSAManaged to get the required flexibility
-                                               RSAManaged rsam = new RSAManaged ();
-                                               rsam.ImportParameters (rsa.ExportParameters (false));
-                                               if (PKCS1.Verify_v15 (rsam, ha, p7hash, counterSignature, true)) {
-                                                       timestampChain.LoadCertificates (coll);
-                                                       return (timestampChain.Build (x509));
-                                               }
-                                       }
-                               }
-                       }
-                       // no certificate can verify this signature!
-                       return false;
-               }
-
-               private void Reset ()
-               {
-                       filename = null;
-                       entry = null;
-                       hash = null;
-                       signedHash = null;
-                       signingCertificate = null;
-                       reason = -1;
-                       trustedRoot = false;
-                       trustedTimestampRoot = false;
-                       signerChain.Reset ();
-                       timestampChain.Reset ();
-                       timestamp = DateTime.MinValue;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Authenticode/ChangeLog b/mcs/class/corlib/Mono.Security.Authenticode/ChangeLog
deleted file mode 100644 (file)
index 07ce4c9..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-2010-03-16  Jb Evain  <jbevain@novell.com>
-
-       * AuthenticodeBase.cs, AuthenticodeDeformatter.cs: use MOONLIGHT
-       symbol to disambiguate MonoTouch and Moonlight code.
-
-2009-04-30  Sebastien Pouliot  <sebastien@ximian.com> 
-
-       * AuthenticodeBase.cs, AuthenticodeDeformatter.cs: Remove from NET_2_1
-
-2008-01-10  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeDeformatter.cs: Use RSAManaged and the new overloaded
-       PKCS1.Verify_v15 with tryNonStandardEncoding == true when verifying
-       timestamping certificate signatures. Fix for #350958
-
-2007-04-26  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeBase.cs: Synch with latest Mono.Security version
-       * AuthenticodeDeformatter.cs: Synch with latest Mono.Security version
-
-2006-11-08  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeDeformatter.cs: Return (find) the SigningCertificate 
-       even if the signature isn't verifiable. This is the behaviour required
-       for 2.0.
-
-2006-06-14  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeBase.cs: Fix destination offset. Note that this works 
-       under MS but not under Mono.
-       * AuthenticodeDeformatter.cs: Report a more useful error if the file
-       hash doesn't match the signed hash.
-
-2005-03-24  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeDeformatter.cs: Don't hide the SecurityException (e.g. 
-       file access).
-
-2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeDeformatter.cs: Fixed warning (l4) for unused variables.
-
-2004-09-07  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeBase.cs: Merge from Mono.Security.dll. This version is 
-       less memory consuming (it works by 4kb blocks instead of loading the
-       entire assembly).
-       * AuthenticodeDeformatter.cs: Merge from Mono.Security.dll. Hash will
-       only be created if the assembly is signed. Benefits from Authenticode
-       Base changes.
-
-2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeBase.cs: In sync with Mono.Security.dll version.
-       * AuthenticodeDeformatter.cs: In sync with Mono.Security.dll version.
-
-2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
-
-       * AuthenticodeBase.cs: Use BitConverterLE
-
-2003-12-15  Sebastien Pouliot  <spouliot@videotron.ca> 
-
-       * AuthenticodeDeformatter.cs: Now throw a COMException for invalid 
-       signature. Added a SigningCertificate property (to be independant of
-       the certificate collection ordering).
-
-2003-10-12  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * AuthenticodeBase.cs: Added from Mono.Security assembly for 
-       Authenticode support in X509Certificate.CreateFromSignedFile
-       * AuthenticodeDeformatter.cs: Added from Mono.Security assembly for 
-       Authenticode support in X509Certificate.CreateFromSignedFile
diff --git a/mcs/class/corlib/Mono.Security.Cryptography/CryptoConvert.cs b/mcs/class/corlib/Mono.Security.Cryptography/CryptoConvert.cs
deleted file mode 100644 (file)
index a56e94d..0000000
+++ /dev/null
@@ -1,754 +0,0 @@
-//
-// CryptoConvert.cs - Crypto Convertion Routines
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell Inc. (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Security.Cryptography;
-using System.Text;
-
-namespace Mono.Security.Cryptography {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       sealed class CryptoConvert {
-
-               private CryptoConvert () 
-               {
-               }
-
-               static private int ToInt32LE (byte [] bytes, int offset)
-               {
-                       return (bytes [offset+3] << 24) | (bytes [offset+2] << 16) | (bytes [offset+1] << 8) | bytes [offset];
-               }
-
-               static private uint ToUInt32LE (byte [] bytes, int offset)
-               {
-                       return (uint)((bytes [offset+3] << 24) | (bytes [offset+2] << 16) | (bytes [offset+1] << 8) | bytes [offset]);
-               }
-
-               static private byte [] GetBytesLE (int val)
-               {
-                       return new byte [] { 
-                               (byte) (val & 0xff), 
-                               (byte) ((val >> 8) & 0xff), 
-                               (byte) ((val >> 16) & 0xff), 
-                               (byte) ((val >> 24) & 0xff)
-                       };
-                }
-
-               static private byte[] Trim (byte[] array) 
-               {
-                       for (int i=0; i < array.Length; i++) {
-                               if (array [i] != 0x00) {
-                                       byte[] result = new byte [array.Length - i];
-                                       Buffer.BlockCopy (array, i, result, 0, result.Length);
-                                       return result;
-                               }
-                       }
-                       return null;
-               }
-
-               // convert the key from PRIVATEKEYBLOB to RSA
-               // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/security/Security/private_key_blobs.asp
-               // e.g. SNK files, PVK files
-               static public RSA FromCapiPrivateKeyBlob (byte[] blob) 
-               {
-                       return FromCapiPrivateKeyBlob (blob, 0);
-               }
-
-               static public RSA FromCapiPrivateKeyBlob (byte[] blob, int offset) 
-               {
-                       if (blob == null)
-                               throw new ArgumentNullException ("blob");
-                       if (offset >= blob.Length)
-                               throw new ArgumentException ("blob is too small.");
-
-                       RSAParameters rsap = new RSAParameters ();
-                       try {
-                               if ((blob [offset]   != 0x07) ||                                // PRIVATEKEYBLOB (0x07)
-                                   (blob [offset+1] != 0x02) ||                                // Version (0x02)
-                                   (blob [offset+2] != 0x00) ||                                // Reserved (word)
-                                   (blob [offset+3] != 0x00) ||
-                                   (ToUInt32LE (blob, offset+8) != 0x32415352))        // DWORD magic = RSA2
-                                       throw new CryptographicException ("Invalid blob header");
-                               
-                               // ALGID (CALG_RSA_SIGN, CALG_RSA_KEYX, ...)
-                               // int algId = ToInt32LE (blob, offset+4);
-
-                               // DWORD bitlen
-                               int bitLen = ToInt32LE (blob, offset+12);
-
-                               // DWORD public exponent
-                               byte[] exp = new byte [4];
-                               Buffer.BlockCopy (blob, offset+16, exp, 0, 4);
-                               Array.Reverse (exp);
-                               rsap.Exponent = Trim (exp);
-                       
-                               int pos = offset+20;
-                               // BYTE modulus[rsapubkey.bitlen/8];
-                               int byteLen = (bitLen >> 3);
-                               rsap.Modulus = new byte [byteLen];
-                               Buffer.BlockCopy (blob, pos, rsap.Modulus, 0, byteLen);
-                               Array.Reverse (rsap.Modulus);
-                               pos += byteLen;
-
-                               // BYTE prime1[rsapubkey.bitlen/16];
-                               int byteHalfLen = (byteLen >> 1);
-                               rsap.P = new byte [byteHalfLen];
-                               Buffer.BlockCopy (blob, pos, rsap.P, 0, byteHalfLen);
-                               Array.Reverse (rsap.P);
-                               pos += byteHalfLen;
-
-                               // BYTE prime2[rsapubkey.bitlen/16];
-                               rsap.Q = new byte [byteHalfLen];
-                               Buffer.BlockCopy (blob, pos, rsap.Q, 0, byteHalfLen);
-                               Array.Reverse (rsap.Q);
-                               pos += byteHalfLen;
-
-                               // BYTE exponent1[rsapubkey.bitlen/16];
-                               rsap.DP = new byte [byteHalfLen];
-                               Buffer.BlockCopy (blob, pos, rsap.DP, 0, byteHalfLen);
-                               Array.Reverse (rsap.DP);
-                               pos += byteHalfLen;
-
-                               // BYTE exponent2[rsapubkey.bitlen/16];
-                               rsap.DQ = new byte [byteHalfLen];
-                               Buffer.BlockCopy (blob, pos, rsap.DQ, 0, byteHalfLen);
-                               Array.Reverse (rsap.DQ);
-                               pos += byteHalfLen;
-
-                               // BYTE coefficient[rsapubkey.bitlen/16];
-                               rsap.InverseQ = new byte [byteHalfLen];
-                               Buffer.BlockCopy (blob, pos, rsap.InverseQ, 0, byteHalfLen);
-                               Array.Reverse (rsap.InverseQ);
-                               pos += byteHalfLen;
-
-                               // ok, this is hackish but CryptoAPI support it so...
-                               // note: only works because CRT is used by default
-                               // http://bugzilla.ximian.com/show_bug.cgi?id=57941
-                               rsap.D = new byte [byteLen]; // must be allocated
-                               if (pos + byteLen + offset <= blob.Length) {
-                                       // BYTE privateExponent[rsapubkey.bitlen/8];
-                                       Buffer.BlockCopy (blob, pos, rsap.D, 0, byteLen);
-                                       Array.Reverse (rsap.D);
-                               }
-                       }
-                       catch (Exception e) {
-                               throw new CryptographicException ("Invalid blob.", e);
-                       }
-
-#if NET_2_1
-                       RSA rsa = RSA.Create ();
-                       rsa.ImportParameters (rsap);
-#else
-                       RSA rsa = null;
-                       try {
-                               rsa = RSA.Create ();
-                               rsa.ImportParameters (rsap);
-                       }
-                       catch (CryptographicException ce) {
-                               // this may cause problem when this code is run under
-                               // the SYSTEM identity on Windows (e.g. ASP.NET). See
-                               // http://bugzilla.ximian.com/show_bug.cgi?id=77559
-                               try {
-                                       CspParameters csp = new CspParameters ();
-                                       csp.Flags = CspProviderFlags.UseMachineKeyStore;
-                                       rsa = new RSACryptoServiceProvider (csp);
-                                       rsa.ImportParameters (rsap);
-                               }
-                               catch {
-                                       // rethrow original, not the later, exception if this fails
-                                       throw ce;
-                               }
-                       }
-#endif
-                       return rsa;
-               }
-
-               static public DSA FromCapiPrivateKeyBlobDSA (byte[] blob)
-               {
-                       return FromCapiPrivateKeyBlobDSA (blob, 0);
-               }
-
-               static public DSA FromCapiPrivateKeyBlobDSA (byte[] blob, int offset)
-               {
-                       if (blob == null)
-                               throw new ArgumentNullException ("blob");
-                       if (offset >= blob.Length)
-                               throw new ArgumentException ("blob is too small.");
-
-                       DSAParameters dsap = new DSAParameters ();
-                       try {
-                               if ((blob [offset] != 0x07) ||                          // PRIVATEKEYBLOB (0x07)
-                                   (blob [offset + 1] != 0x02) ||                      // Version (0x02)
-                                   (blob [offset + 2] != 0x00) ||                      // Reserved (word)
-                                   (blob [offset + 3] != 0x00) ||
-                                   (ToUInt32LE (blob, offset + 8) != 0x32535344))      // DWORD magic
-                                       throw new CryptographicException ("Invalid blob header");
-
-                               int bitlen = ToInt32LE (blob, offset + 12);
-                               int bytelen = bitlen >> 3;
-                               int pos = offset + 16;
-
-                               dsap.P = new byte [bytelen];
-                               Buffer.BlockCopy (blob, pos, dsap.P, 0, bytelen);
-                               Array.Reverse (dsap.P);
-                               pos += bytelen;
-
-                               dsap.Q = new byte [20];
-                               Buffer.BlockCopy (blob, pos, dsap.Q, 0, 20);
-                               Array.Reverse (dsap.Q);
-                               pos += 20;
-
-                               dsap.G = new byte [bytelen];
-                               Buffer.BlockCopy (blob, pos, dsap.G, 0, bytelen);
-                               Array.Reverse (dsap.G);
-                               pos += bytelen;
-
-                               dsap.X = new byte [20];
-                               Buffer.BlockCopy (blob, pos, dsap.X, 0, 20);
-                               Array.Reverse (dsap.X);
-                               pos += 20;
-
-                               dsap.Counter = ToInt32LE (blob, pos);
-                               pos += 4;
-
-                               dsap.Seed = new byte [20];
-                               Buffer.BlockCopy (blob, pos, dsap.Seed, 0, 20);
-                               Array.Reverse (dsap.Seed);
-                               pos += 20;
-                       }
-                       catch (Exception e) {
-                               throw new CryptographicException ("Invalid blob.", e);
-                       }
-
-#if NET_2_1
-                       DSA dsa = (DSA)DSA.Create ();
-                       dsa.ImportParameters (dsap);
-#else
-                       DSA dsa = null;
-                       try {
-                               dsa = (DSA)DSA.Create ();
-                               dsa.ImportParameters (dsap);
-                       }
-                       catch (CryptographicException ce) {
-                               // this may cause problem when this code is run under
-                               // the SYSTEM identity on Windows (e.g. ASP.NET). See
-                               // http://bugzilla.ximian.com/show_bug.cgi?id=77559
-                               try {
-                                       CspParameters csp = new CspParameters ();
-                                       csp.Flags = CspProviderFlags.UseMachineKeyStore;
-                                       dsa = new DSACryptoServiceProvider (csp);
-                                       dsa.ImportParameters (dsap);
-                               }
-                               catch {
-                                       // rethrow original, not the later, exception if this fails
-                                       throw ce;
-                               }
-                       }
-#endif
-                       return dsa;
-               }
-
-               static public byte[] ToCapiPrivateKeyBlob (RSA rsa) 
-               {
-                       RSAParameters p = rsa.ExportParameters (true);
-                       int keyLength = p.Modulus.Length; // in bytes
-                       byte[] blob = new byte [20 + (keyLength << 2) + (keyLength >> 1)];
-
-                       blob [0] = 0x07;        // Type - PRIVATEKEYBLOB (0x07)
-                       blob [1] = 0x02;        // Version - Always CUR_BLOB_VERSION (0x02)
-                       // [2], [3]             // RESERVED - Always 0
-                       blob [5] = 0x24;        // ALGID - Always 00 24 00 00 (for CALG_RSA_SIGN)
-                       blob [8] = 0x52;        // Magic - RSA2 (ASCII in hex)
-                       blob [9] = 0x53;
-                       blob [10] = 0x41;
-                       blob [11] = 0x32;
-
-                       byte[] bitlen = GetBytesLE (keyLength << 3);
-                       blob [12] = bitlen [0]; // bitlen
-                       blob [13] = bitlen [1]; 
-                       blob [14] = bitlen [2]; 
-                       blob [15] = bitlen [3];
-
-                       // public exponent (DWORD)
-                       int pos = 16;
-                       int n = p.Exponent.Length;
-                       while (n > 0)
-                               blob [pos++] = p.Exponent [--n];
-                       // modulus
-                       pos = 20;
-                       byte[] part = p.Modulus;
-                       int len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-                       pos += len;
-                       // private key
-                       part = p.P;
-                       len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-                       pos += len;
-
-                       part = p.Q;
-                       len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-                       pos += len;
-
-                       part = p.DP;
-                       len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-                       pos += len;
-
-                       part = p.DQ;
-                       len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-                       pos += len;
-
-                       part = p.InverseQ;
-                       len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-                       pos += len;
-
-                       part = p.D;
-                       len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-
-                       return blob;
-               }
-
-               static public byte[] ToCapiPrivateKeyBlob (DSA dsa)
-               {
-                       DSAParameters p = dsa.ExportParameters (true);
-                       int keyLength = p.P.Length; // in bytes
-
-                       // header + P + Q + G + X + count + seed
-                       byte[] blob = new byte [16 + keyLength + 20 + keyLength + 20 + 4 + 20];
-
-                       blob [0] = 0x07;        // Type - PRIVATEKEYBLOB (0x07)
-                       blob [1] = 0x02;        // Version - Always CUR_BLOB_VERSION (0x02)
-                       // [2], [3]             // RESERVED - Always 0
-                       blob [5] = 0x22;        // ALGID
-                       blob [8] = 0x44;        // Magic
-                       blob [9] = 0x53;
-                       blob [10] = 0x53;
-                       blob [11] = 0x32;
-
-                       byte[] bitlen = GetBytesLE (keyLength << 3);
-                       blob [12] = bitlen [0];
-                       blob [13] = bitlen [1];
-                       blob [14] = bitlen [2];
-                       blob [15] = bitlen [3];
-
-                       int pos = 16;
-                       byte[] part = p.P;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, keyLength);
-                       pos += keyLength;
-
-                       part = p.Q;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, 20);
-                       pos += 20;
-
-                       part = p.G;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, keyLength);
-                       pos += keyLength;
-
-                       part = p.X;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, 20);
-                       pos += 20;
-
-                       Buffer.BlockCopy (GetBytesLE (p.Counter), 0, blob, pos, 4);
-                       pos += 4;
-
-                       part = p.Seed;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, 20);
-
-                       return blob;
-               }
-
-               static public RSA FromCapiPublicKeyBlob (byte[] blob) 
-               {
-                       return FromCapiPublicKeyBlob (blob, 0);
-               }
-
-               static public RSA FromCapiPublicKeyBlob (byte[] blob, int offset) 
-               {
-                       if (blob == null)
-                               throw new ArgumentNullException ("blob");
-                       if (offset >= blob.Length)
-                               throw new ArgumentException ("blob is too small.");
-
-                       try {
-                               if ((blob [offset]   != 0x06) ||                                // PUBLICKEYBLOB (0x06)
-                                   (blob [offset+1] != 0x02) ||                                // Version (0x02)
-                                   (blob [offset+2] != 0x00) ||                                // Reserved (word)
-                                   (blob [offset+3] != 0x00) || 
-                                   (ToUInt32LE (blob, offset+8) != 0x31415352))        // DWORD magic = RSA1
-                                       throw new CryptographicException ("Invalid blob header");
-
-                               // ALGID (CALG_RSA_SIGN, CALG_RSA_KEYX, ...)
-                               // int algId = ToInt32LE (blob, offset+4);
-
-                               // DWORD bitlen
-                               int bitLen = ToInt32LE (blob, offset+12);
-
-                               // DWORD public exponent
-                               RSAParameters rsap = new RSAParameters ();
-                               rsap.Exponent = new byte [3];
-                               rsap.Exponent [0] = blob [offset+18];
-                               rsap.Exponent [1] = blob [offset+17];
-                               rsap.Exponent [2] = blob [offset+16];
-                       
-                               int pos = offset+20;
-                               // BYTE modulus[rsapubkey.bitlen/8];
-                               int byteLen = (bitLen >> 3);
-                               rsap.Modulus = new byte [byteLen];
-                               Buffer.BlockCopy (blob, pos, rsap.Modulus, 0, byteLen);
-                               Array.Reverse (rsap.Modulus);
-#if NET_2_1
-                               RSA rsa = RSA.Create ();
-                               rsa.ImportParameters (rsap);
-#else
-                               RSA rsa = null;
-                               try {
-                                       rsa = RSA.Create ();
-                                       rsa.ImportParameters (rsap);
-                               }
-                               catch (CryptographicException) {
-                                       // this may cause problem when this code is run under
-                                       // the SYSTEM identity on Windows (e.g. ASP.NET). See
-                                       // http://bugzilla.ximian.com/show_bug.cgi?id=77559
-                                       CspParameters csp = new CspParameters ();
-                                       csp.Flags = CspProviderFlags.UseMachineKeyStore;
-                                       rsa = new RSACryptoServiceProvider (csp);
-                                       rsa.ImportParameters (rsap);
-                               }
-#endif
-                               return rsa;
-                       }
-                       catch (Exception e) {
-                               throw new CryptographicException ("Invalid blob.", e);
-                       }
-               }
-
-               static public DSA FromCapiPublicKeyBlobDSA (byte[] blob)
-               {
-                       return FromCapiPublicKeyBlobDSA (blob, 0);
-               }
-
-               static public DSA FromCapiPublicKeyBlobDSA (byte[] blob, int offset)
-               {
-                       if (blob == null)
-                               throw new ArgumentNullException ("blob");
-                       if (offset >= blob.Length)
-                               throw new ArgumentException ("blob is too small.");
-
-                       try {
-                               if ((blob [offset] != 0x06) ||                          // PUBLICKEYBLOB (0x06)
-                                   (blob [offset + 1] != 0x02) ||                      // Version (0x02)
-                                   (blob [offset + 2] != 0x00) ||                      // Reserved (word)
-                                   (blob [offset + 3] != 0x00) ||
-                                   (ToUInt32LE (blob, offset + 8) != 0x31535344))      // DWORD magic
-                                       throw new CryptographicException ("Invalid blob header");
-
-                               int bitlen = ToInt32LE (blob, offset + 12);
-                               DSAParameters dsap = new DSAParameters ();
-                               int bytelen = bitlen >> 3;
-                               int pos = offset + 16;
-
-                               dsap.P = new byte [bytelen];
-                               Buffer.BlockCopy (blob, pos, dsap.P, 0, bytelen);
-                               Array.Reverse (dsap.P);
-                               pos += bytelen;
-
-                               dsap.Q = new byte [20];
-                               Buffer.BlockCopy (blob, pos, dsap.Q, 0, 20);
-                               Array.Reverse (dsap.Q);
-                               pos += 20;
-
-                               dsap.G = new byte [bytelen];
-                               Buffer.BlockCopy (blob, pos, dsap.G, 0, bytelen);
-                               Array.Reverse (dsap.G);
-                               pos += bytelen;
-
-                               dsap.Y = new byte [bytelen];
-                               Buffer.BlockCopy (blob, pos, dsap.Y, 0, bytelen);
-                               Array.Reverse (dsap.Y);
-                               pos += bytelen;
-
-                               dsap.Counter = ToInt32LE (blob, pos);
-                               pos += 4;
-
-                               dsap.Seed = new byte [20];
-                               Buffer.BlockCopy (blob, pos, dsap.Seed, 0, 20);
-                               Array.Reverse (dsap.Seed);
-                               pos += 20;
-
-                               DSA dsa = (DSA)DSA.Create ();
-                               dsa.ImportParameters (dsap);
-                               return dsa;
-                       }
-                       catch (Exception e) {
-                               throw new CryptographicException ("Invalid blob.", e);
-                       }
-               }
-
-               static public byte[] ToCapiPublicKeyBlob (RSA rsa) 
-               {
-                       RSAParameters p = rsa.ExportParameters (false);
-                       int keyLength = p.Modulus.Length; // in bytes
-                       byte[] blob = new byte [20 + keyLength];
-
-                       blob [0] = 0x06;        // Type - PUBLICKEYBLOB (0x06)
-                       blob [1] = 0x02;        // Version - Always CUR_BLOB_VERSION (0x02)
-                       // [2], [3]             // RESERVED - Always 0
-                       blob [5] = 0x24;        // ALGID - Always 00 24 00 00 (for CALG_RSA_SIGN)
-                       blob [8] = 0x52;        // Magic - RSA1 (ASCII in hex)
-                       blob [9] = 0x53;
-                       blob [10] = 0x41;
-                       blob [11] = 0x31;
-
-                       byte[] bitlen = GetBytesLE (keyLength << 3);
-                       blob [12] = bitlen [0]; // bitlen
-                       blob [13] = bitlen [1]; 
-                       blob [14] = bitlen [2]; 
-                       blob [15] = bitlen [3];
-
-                       // public exponent (DWORD)
-                       int pos = 16;
-                       int n = p.Exponent.Length;
-                       while (n > 0)
-                               blob [pos++] = p.Exponent [--n];
-                       // modulus
-                       pos = 20;
-                       byte[] part = p.Modulus;
-                       int len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-                       pos += len;
-                       return blob;
-               }
-
-               static public byte[] ToCapiPublicKeyBlob (DSA dsa)
-               {
-                       DSAParameters p = dsa.ExportParameters (false);
-                       int keyLength = p.P.Length; // in bytes
-
-                       // header + P + Q + G + Y + count + seed
-                       byte[] blob = new byte [16 + keyLength + 20 + keyLength + keyLength + 4 + 20];
-
-                       blob [0] = 0x06;        // Type - PUBLICKEYBLOB (0x06)
-                       blob [1] = 0x02;        // Version - Always CUR_BLOB_VERSION (0x02)
-                       // [2], [3]             // RESERVED - Always 0
-                       blob [5] = 0x22;        // ALGID
-                       blob [8] = 0x44;        // Magic
-                       blob [9] = 0x53;
-                       blob [10] = 0x53;
-                       blob [11] = 0x31;
-
-                       byte[] bitlen = GetBytesLE (keyLength << 3);
-                       blob [12] = bitlen [0];
-                       blob [13] = bitlen [1];
-                       blob [14] = bitlen [2];
-                       blob [15] = bitlen [3];
-
-                       int pos = 16;
-                       byte[] part;
-
-                       part = p.P;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, keyLength);
-                       pos += keyLength;
-
-                       part = p.Q;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, 20);
-                       pos += 20;
-
-                       part = p.G;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, keyLength);
-                       pos += keyLength;
-
-                       part = p.Y;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, keyLength);
-                       pos += keyLength;
-
-                       Buffer.BlockCopy (GetBytesLE (p.Counter), 0, blob, pos, 4);
-                       pos += 4;
-
-                       part = p.Seed;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, 20);
-
-                       return blob;
-               }
-
-               // PRIVATEKEYBLOB
-               // PUBLICKEYBLOB
-               static public RSA FromCapiKeyBlob (byte[] blob) 
-               {
-                       return FromCapiKeyBlob (blob, 0);
-               }
-
-               static public RSA FromCapiKeyBlob (byte[] blob, int offset) 
-               {
-                       if (blob == null)
-                               throw new ArgumentNullException ("blob");
-                       if (offset >= blob.Length)
-                               throw new ArgumentException ("blob is too small.");
-
-                       switch (blob [offset]) {
-                               case 0x00:
-                                       // this could be a public key inside an header
-                                       // like "sn -e" would produce
-                                       if (blob [offset + 12] == 0x06) {
-                                               return FromCapiPublicKeyBlob (blob, offset + 12);
-                                       }
-                                       break;
-                               case 0x06:
-                                       return FromCapiPublicKeyBlob (blob, offset);
-                               case 0x07:
-                                       return FromCapiPrivateKeyBlob (blob, offset);
-                       }
-                       throw new CryptographicException ("Unknown blob format.");
-               }
-
-               static public DSA FromCapiKeyBlobDSA (byte[] blob)
-               {
-                       return FromCapiKeyBlobDSA (blob, 0);
-               }
-
-               static public DSA FromCapiKeyBlobDSA (byte[] blob, int offset)
-               {
-                       if (blob == null)
-                               throw new ArgumentNullException ("blob");
-                       if (offset >= blob.Length)
-                               throw new ArgumentException ("blob is too small.");
-
-                       switch (blob [offset]) {
-                               case 0x06:
-                                       return FromCapiPublicKeyBlobDSA (blob, offset);
-                               case 0x07:
-                                       return FromCapiPrivateKeyBlobDSA (blob, offset);
-                       }
-                       throw new CryptographicException ("Unknown blob format.");
-               }
-
-               static public byte[] ToCapiKeyBlob (AsymmetricAlgorithm keypair, bool includePrivateKey) 
-               {
-                       if (keypair == null)
-                               throw new ArgumentNullException ("keypair");
-
-                       // check between RSA and DSA (and potentially others like DH)
-                       if (keypair is RSA)
-                               return ToCapiKeyBlob ((RSA)keypair, includePrivateKey);
-                       else if (keypair is DSA)
-                               return ToCapiKeyBlob ((DSA)keypair, includePrivateKey);
-                       else
-                               return null;    // TODO
-               }
-
-               static public byte[] ToCapiKeyBlob (RSA rsa, bool includePrivateKey) 
-               {
-                       if (rsa == null)
-                               throw new ArgumentNullException ("rsa");
-
-                       if (includePrivateKey)
-                               return ToCapiPrivateKeyBlob (rsa);
-                       else
-                               return ToCapiPublicKeyBlob (rsa);
-               }
-
-               static public byte[] ToCapiKeyBlob (DSA dsa, bool includePrivateKey)
-               {
-                       if (dsa == null)
-                               throw new ArgumentNullException ("dsa");
-
-                       if (includePrivateKey)
-                               return ToCapiPrivateKeyBlob (dsa);
-                       else
-                               return ToCapiPublicKeyBlob (dsa);
-               }
-
-               static public string ToHex (byte[] input) 
-               {
-                       if (input == null)
-                               return null;
-
-                       StringBuilder sb = new StringBuilder (input.Length * 2);
-                       foreach (byte b in input) {
-                               sb.Append (b.ToString ("X2", CultureInfo.InvariantCulture));
-                       }
-                       return sb.ToString ();
-               }
-
-               static private byte FromHexChar (char c) 
-               {
-                       if ((c >= 'a') && (c <= 'f'))
-                               return (byte) (c - 'a' + 10);
-                       if ((c >= 'A') && (c <= 'F'))
-                               return (byte) (c - 'A' + 10);
-                       if ((c >= '0') && (c <= '9'))
-                               return (byte) (c - '0');
-                       throw new ArgumentException ("invalid hex char");
-               }
-
-               static public byte[] FromHex (string hex) 
-               {
-                       if (hex == null)
-                               return null;
-                       if ((hex.Length & 0x1) == 0x1)
-                               throw new ArgumentException ("Length must be a multiple of 2");
-
-                       byte[] result = new byte [hex.Length >> 1];
-                       int n = 0;
-                       int i = 0;
-                       while (n < result.Length) {
-                               result [n] = (byte) (FromHexChar (hex [i++]) << 4);
-                               result [n++] += FromHexChar (hex [i++]);
-                       }
-                       return result;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Cryptography/CryptoTools.cs b/mcs/class/corlib/Mono.Security.Cryptography/CryptoTools.cs
deleted file mode 100644 (file)
index a528714..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-//
-// Mono.Security.Cryptography.CryptoTools
-//     Shared class for common cryptographic functionalities
-//
-// Authors:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004, 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Security.Cryptography;
-
-namespace Mono.Security.Cryptography {
-
-#if INSIDE_CORLIB || INSIDE_SYSCORE
-       internal
-#else
-       public
-#endif
-       sealed class KeyBuilder {
-       
-               static private RandomNumberGenerator rng;
-
-               private KeyBuilder ()
-               {
-               }
-
-               static RandomNumberGenerator Rng {
-                       get {
-                               if (rng == null)
-                                       rng = RandomNumberGenerator.Create ();
-                               return rng;
-                       }
-               }
-       
-               static public byte[] Key (int size) 
-               {
-                       byte[] key = new byte [size];
-                       Rng.GetBytes (key);
-                       return key;
-               }
-       
-               static public byte[] IV (int size) 
-               {
-                       byte[] iv = new byte [size];
-                       Rng.GetBytes (iv);
-                       return iv;
-               }
-       }
-       
-       // Process an array as a sequence of blocks
-#if INSIDE_CORLIB || INSIDE_SYSCORE
-       internal
-#else
-       public
-#endif
-       class BlockProcessor {
-               private ICryptoTransform transform;
-               private byte[] block;
-               private int blockSize;  // in bytes (not in bits)
-               private int blockCount;
-       
-               public BlockProcessor (ICryptoTransform transform) 
-                       : this (transform, transform.InputBlockSize) {} 
-       
-               // some Transforms (like HashAlgorithm descendant) return 1 for
-               // block size (which isn't their real internal block size)
-               public BlockProcessor (ICryptoTransform transform, int blockSize)
-               {
-                       this.transform = transform;
-                       this.blockSize = blockSize;
-                       block = new byte [blockSize];
-               }
-       
-               ~BlockProcessor () 
-               {
-                       // zeroize our block (so we don't retain any information)
-                       Array.Clear (block, 0, blockSize);
-               }
-       
-               public void Initialize ()
-               {
-                       Array.Clear (block, 0, blockSize);
-                       blockCount = 0;
-               }
-       
-               public void Core (byte[] rgb) 
-               {
-                       Core (rgb, 0, rgb.Length);
-               }
-       
-               public void Core (byte[] rgb, int ib, int cb) 
-               {
-                       // 1. fill the rest of the "block"
-                       int n = System.Math.Min (blockSize - blockCount, cb);
-                       Buffer.BlockCopy (rgb, ib, block, blockCount, n); 
-                       blockCount += n;
-       
-                       // 2. if block is full then transform it
-                       if (blockCount == blockSize) {
-                               transform.TransformBlock (block, 0, blockSize, block, 0);
-       
-                               // 3. transform any other full block in specified buffer
-                               int b = (int) ((cb - n) / blockSize);
-                               for (int i=0; i < b; i++) {
-                                       transform.TransformBlock (rgb, n + ib, blockSize, block, 0);
-                                       n += blockSize;
-                               }
-       
-                               // 4. if data is still present fill the "block" with the remainder
-                               blockCount = cb - n;
-                               if (blockCount > 0)
-                                       Buffer.BlockCopy (rgb, n + ib, block, 0, blockCount);
-                       }
-               }
-       
-               public byte[] Final () 
-               {
-                       return transform.TransformFinalBlock (block, 0, blockCount);
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Cryptography/KeyPairPersistence.cs b/mcs/class/corlib/Mono.Security.Cryptography/KeyPairPersistence.cs
deleted file mode 100644 (file)
index 0615770..0000000
+++ /dev/null
@@ -1,454 +0,0 @@
-//
-// KeyPairPersistence.cs: Keypair persistence
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.IO;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Security.Cryptography;
-using System.Security.Permissions;
-using System.Text;
-
-using Mono.Xml;
-
-namespace Mono.Security.Cryptography {
-
-       /* File name
-        * [type][unique name][key number].xml
-        * 
-        * where
-        *      type            CspParameters.ProviderType
-        *      unique name     A unique name for the keypair, which is
-        *                      a. default (for a provider default keypair)
-        *                      b. a GUID derived from
-        *                              i. random if no container name was
-        *                              specified at generation time
-        *                              ii. the MD5 hash of the container
-        *                              name (CspParameters.KeyContainerName)
-        *      key number      CspParameters.KeyNumber
-        * 
-        * File format
-        * <KeyPair>
-        *      <Properties>
-        *              <Provider Name="" Type=""/>
-        *              <Container Name=""/>
-        *      </Properties>
-        *      <KeyValue Id="">
-        *              RSAKeyValue, DSAKeyValue ...
-        *      </KeyValue>
-        * </KeyPair>
-        */
-
-       /* NOTES
-        * 
-        * - There's NO confidentiality / integrity built in this
-        * persistance mechanism. The container directories (both user and
-        * machine) are created with restrited ACL. The ACL is also checked
-        * when a key is accessed (so totally public keys won't be used).
-        * see /mono/mono/metadata/security.c for implementation
-        * 
-        * - As we do not use CSP we limit ourselves to provider types (not 
-        * names). This means that for a same type and container type, but 
-        * two different provider names) will return the same keypair. This
-        * should work as CspParameters always requires a csp type in its
-        * constructors.
-        * 
-        * - Assert (CAS) are used so only the OS permission will limit access
-        * to the keypair files. I.e. this will work even in high-security 
-        * scenarios where users do not have access to file system (e.g. web 
-        * application). We can allow this because the filename used is 
-        * TOTALLY under our control (no direct user input is used).
-        * 
-        * - You CAN'T changes properties of the keypair once it's been
-        * created (saved). You must remove the container than save it 
-        * back. This is the same behaviour as CSP under Windows.
-        */
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class KeyPairPersistence {
-       
-               private static bool _userPathExists; // check at 1st use
-               private static string _userPath;
-               
-               private static bool _machinePathExists; // check at 1st use
-               private static string _machinePath;
-
-               private CspParameters _params;
-               private string _keyvalue;
-               private string _filename;
-               private string _container;
-
-               // constructors
-
-               public KeyPairPersistence (CspParameters parameters) 
-                       : this (parameters, null)
-               {
-               }
-
-               public KeyPairPersistence (CspParameters parameters, string keyPair) 
-               {
-                       if (parameters == null)
-                               throw new ArgumentNullException ("parameters");
-
-                       _params = Copy (parameters);
-                       _keyvalue = keyPair;
-               }
-
-               // properties
-
-               public string Filename {
-                       get { 
-                               if (_filename == null) {
-                                       _filename = String.Format (CultureInfo.InvariantCulture,
-                                               "[{0}][{1}][{2}].xml", 
-                                               _params.ProviderType, 
-                                               this.ContainerName, 
-                                               _params.KeyNumber);
-                                       if (UseMachineKeyStore)
-                                               _filename = Path.Combine (MachinePath, _filename);
-                                       else
-                                               _filename = Path.Combine (UserPath, _filename);
-                               }
-                               return _filename; 
-                       }
-               }
-
-               public string KeyValue {
-                       get { return _keyvalue; }
-                       set { 
-                               if (this.CanChange)
-                                       _keyvalue = value; 
-                       }
-               }
-
-               // return a (read-only) copy
-               public CspParameters Parameters {
-                       get { return Copy (_params); }
-               }
-
-               // methods
-
-               public bool Load () 
-               {
-                       // see NOTES
-// FIXME               new FileIOPermission (FileIOPermissionAccess.Read, this.Filename).Assert ();
-
-                       bool result = File.Exists (this.Filename);
-                       if (result) {
-                               using (StreamReader sr = File.OpenText (this.Filename)) {
-                                       FromXml (sr.ReadToEnd ());
-                               }
-                       }
-                       return result;
-               }
-
-               public void Save () 
-               {
-                       // see NOTES
-// FIXME               new FileIOPermission (FileIOPermissionAccess.Write, this.Filename).Assert ();
-
-                       using (FileStream fs = File.Open (this.Filename, FileMode.Create)) {
-                               StreamWriter sw = new StreamWriter (fs, Encoding.UTF8);
-                               sw.Write (this.ToXml ());
-                               sw.Close ();
-                       }
-                       // apply protection to newly created files
-                       if (UseMachineKeyStore)
-                               ProtectMachine (Filename);
-                       else
-                               ProtectUser (Filename);
-               }
-
-               public void Remove () 
-               {
-                       // see NOTES
-// FIXME               new FileIOPermission (FileIOPermissionAccess.Write, this.Filename).Assert ();
-
-                       File.Delete (this.Filename);
-                       // it's now possible to change the keypair un the container
-               }
-
-               // private static stuff
-
-               static object lockobj = new object ();
-               
-               private static string UserPath {
-                       get {
-                               lock (lockobj) {
-                                       if ((_userPath == null) || (!_userPathExists)) {
-                                               _userPath = Path.Combine (
-                                                       Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData),
-                                                       ".mono");
-                                               _userPath = Path.Combine (_userPath, "keypairs");
-
-                                               _userPathExists = Directory.Exists (_userPath);
-                                               if (!_userPathExists) {
-                                                       try {
-                                                               Directory.CreateDirectory (_userPath);
-                                                               ProtectUser (_userPath);
-                                                               _userPathExists = true;
-                                                       }
-                                                       catch (Exception e) {
-                                                               string msg = Locale.GetText ("Could not create user key store '{0}'.");
-                                                               throw new CryptographicException (String.Format (msg, _userPath), e);
-                                                       }
-                                               }
-                                       }
-                               }
-                               // is it properly protected ?
-                               if (!IsUserProtected (_userPath)) {
-                                       string msg = Locale.GetText ("Improperly protected user's key pairs in '{0}'.");
-                                       throw new CryptographicException (String.Format (msg, _userPath));
-                               }
-                               return _userPath;
-                       }
-               }
-
-               private static string MachinePath {
-                       get {
-                               lock (lockobj) {
-                                       if ((_machinePath == null) || (!_machinePathExists)) {
-                                               _machinePath = Path.Combine (
-                                                       Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData),
-                                                       ".mono");
-                                               _machinePath = Path.Combine (_machinePath, "keypairs");
-
-                                               _machinePathExists = Directory.Exists (_machinePath);
-                                               if (!_machinePathExists) {
-                                                       try {
-                                                               Directory.CreateDirectory (_machinePath);
-                                                               ProtectMachine (_machinePath);
-                                                               _machinePathExists = true;
-                                                       }
-                                                       catch (Exception e) {
-                                                               string msg = Locale.GetText ("Could not create machine key store '{0}'.");
-                                                               throw new CryptographicException (String.Format (msg, _machinePath), e);
-                                                       }
-                                               }
-                                       }
-                               }
-                               // is it properly protected ?
-                               if (!IsMachineProtected (_machinePath)) {
-                                       string msg = Locale.GetText ("Improperly protected machine's key pairs in '{0}'.");
-                                       throw new CryptographicException (String.Format (msg, _machinePath));
-                               }
-                               return _machinePath;
-                       }
-               }
-
-#if INSIDE_CORLIB
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               internal static extern bool _CanSecure (string root);
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               internal static extern bool _ProtectUser (string path);
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               internal static extern bool _ProtectMachine (string path);
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               internal static extern bool _IsUserProtected (string path);
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               internal static extern bool _IsMachineProtected (string path);
-#else
-               // Mono.Security.dll assembly can't use the internal 
-               // call (and still run with other runtimes)
-
-               // Note: Class is only available in Mono.Security.dll as
-               // a management helper (e.g. build a GUI app)
-
-               internal static bool _CanSecure (string root) 
-               {
-                       return true;
-               }
-
-               internal static bool _ProtectUser (string path)
-               {
-                       return true;
-               }
-
-               internal static bool _ProtectMachine (string path)
-               {
-                       return true;
-               }
-
-               internal static bool _IsUserProtected (string path)
-               {
-                       return true;
-               }
-
-               internal static bool _IsMachineProtected (string path)
-               {
-                       return true;
-               }
-#endif
-               // private stuff
-
-               private static bool CanSecure (string path) 
-               {
-                       // we assume POSIX filesystems can always be secured
-
-                       // check for Unix platforms - see FAQ for more details
-                       // http://www.mono-project.com/FAQ:_Technical#How_to_detect_the_execution_platform_.3F
-                       int platform = (int) Environment.OSVersion.Platform;
-                       if ((platform == 4) || (platform == 128) || (platform == 6))
-                               return true;
-
-                       // while we ask the runtime for Windows OS
-                       return _CanSecure (Path.GetPathRoot (path));
-               }
-
-               private static bool ProtectUser (string path)
-               {
-                       // we cannot protect on some filsystem (like FAT)
-                       if (CanSecure (path)) {
-                               return _ProtectUser (path);
-                       }
-                       // but Mono still needs to run on them :(
-                       return true;
-               }
-
-               private static bool ProtectMachine (string path)
-               {
-                       // we cannot protect on some filsystem (like FAT)
-                       if (CanSecure (path)) {
-                               return _ProtectMachine (path);
-                       }
-                       // but Mono still needs to run on them :(
-                       return true;
-               }
-
-               private static bool IsUserProtected (string path)
-               {
-                       // we cannot protect on some filsystem (like FAT)
-                       if (CanSecure (path)) {
-                               return _IsUserProtected (path);
-                       }
-                       // but Mono still needs to run on them :(
-                       return true;
-               }
-
-               private static bool IsMachineProtected (string path)
-               {
-                       // we cannot protect on some filsystem (like FAT)
-                       if (CanSecure (path)) {
-                               return _IsMachineProtected (path);
-                       }
-                       // but Mono still needs to run on them :(
-                       return true;
-               }
-               
-               private bool CanChange {
-                       get { return (_keyvalue == null); }
-               }
-
-               private bool UseDefaultKeyContainer {
-                       get { return ((_params.Flags & CspProviderFlags.UseDefaultKeyContainer) == CspProviderFlags.UseDefaultKeyContainer); }
-               }
-
-               private bool UseMachineKeyStore {
-                       get { return ((_params.Flags & CspProviderFlags.UseMachineKeyStore) == CspProviderFlags.UseMachineKeyStore); }
-               }
-
-               private string ContainerName {
-                       get {
-                               if (_container == null) {
-                                       if (UseDefaultKeyContainer) {
-                                               // easy to spot
-                                               _container = "default";
-                                       }
-                                       else if ((_params.KeyContainerName == null) || (_params.KeyContainerName.Length == 0)) {
-                                               _container = Guid.NewGuid ().ToString ();
-                                       }
-                                       else {
-                                               // we don't want to trust the key container name as we don't control it
-                                               // anyway some characters may not be compatible with the file system
-                                               byte[] data = Encoding.UTF8.GetBytes (_params.KeyContainerName);
-                                               // Note: We use MD5 as it is faster than SHA1 and has the same length 
-                                               // as a GUID. Recent problems found in MD5 (like collisions) aren't a
-                                               // problem in this case.
-                                               MD5 hash = MD5.Create ();
-                                               byte[] result = hash.ComputeHash (data);
-                                               _container = new Guid (result).ToString ();
-                                       }
-                               }
-                               return _container;
-                       }
-               }
-
-               // we do not want any changes after receiving the csp informations
-               private CspParameters Copy (CspParameters p) 
-               {
-                       CspParameters copy = new CspParameters (p.ProviderType, p.ProviderName, p.KeyContainerName);
-                       copy.KeyNumber = p.KeyNumber;
-                       copy.Flags = p.Flags;
-                       return copy;
-               }
-
-               private void FromXml (string xml) 
-               {
-                       SecurityParser sp = new SecurityParser ();
-                       sp.LoadXml (xml);
-
-                       SecurityElement root = sp.ToXml ();
-                       if (root.Tag == "KeyPair") {
-                               //SecurityElement prop = root.SearchForChildByTag ("Properties");
-                               SecurityElement keyv = root.SearchForChildByTag ("KeyValue");
-                               if (keyv.Children.Count > 0)
-                                       _keyvalue = keyv.Children [0].ToString ();
-                               // Note: we do not read other stuff because 
-                               // it can't be changed after key creation
-                       }
-               }
-
-               private string ToXml () 
-               {
-                       // note: we do not use SecurityElement here because the
-                       // keypair is a XML string (requiring parsing)
-                       StringBuilder xml = new StringBuilder ();
-                       xml.AppendFormat ("<KeyPair>{0}\t<Properties>{0}\t\t<Provider ", Environment.NewLine);
-                       if ((_params.ProviderName != null) && (_params.ProviderName.Length != 0)) {
-                               xml.AppendFormat ("Name=\"{0}\" ", _params.ProviderName);
-                       }
-                       xml.AppendFormat ("Type=\"{0}\" />{1}\t\t<Container ", _params.ProviderType, Environment.NewLine);
-                       xml.AppendFormat ("Name=\"{0}\" />{1}\t</Properties>{1}\t<KeyValue", this.ContainerName, Environment.NewLine);
-                       if (_params.KeyNumber != -1) {
-                               xml.AppendFormat (" Id=\"{0}\" ", _params.KeyNumber);
-                       }
-                       xml.AppendFormat (">{1}\t\t{0}{1}\t</KeyValue>{1}</KeyPair>{1}", this.KeyValue, Environment.NewLine);
-                       return xml.ToString ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Cryptography/PKCS1.cs b/mcs/class/corlib/Mono.Security.Cryptography/PKCS1.cs
deleted file mode 100644 (file)
index 3b3252d..0000000
+++ /dev/null
@@ -1,416 +0,0 @@
-//
-// PKCS1.cs - Implements PKCS#1 primitives.
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Security.Cryptography;
-
-namespace Mono.Security.Cryptography { 
-
-       // References:
-       // a.   PKCS#1: RSA Cryptography Standard 
-       //      http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1/index.html
-       
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       sealed class PKCS1 {
-
-               private PKCS1 () 
-               {
-               }
-
-               private static bool Compare (byte[] array1, byte[] array2) 
-               {
-                       bool result = (array1.Length == array2.Length);
-                       if (result) {
-                               for (int i=0; i < array1.Length; i++)
-                                       if (array1[i] != array2[i])
-                                               return false;
-                       }
-                       return result;
-               }
-       
-               private static byte[] xor (byte[] array1, byte[] array2) 
-               {
-                       byte[] result = new byte [array1.Length];
-                       for (int i=0; i < result.Length; i++)
-                               result[i] = (byte) (array1[i] ^ array2[i]);
-                       return result;
-               }
-       
-               private static byte[] emptySHA1   = { 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09 };
-               private static byte[] emptySHA256 = { 0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55 };
-               private static byte[] emptySHA384 = { 0x38, 0xb0, 0x60, 0xa7, 0x51, 0xac, 0x96, 0x38, 0x4c, 0xd9, 0x32, 0x7e, 0xb1, 0xb1, 0xe3, 0x6a, 0x21, 0xfd, 0xb7, 0x11, 0x14, 0xbe, 0x07, 0x43, 0x4c, 0x0c, 0xc7, 0xbf, 0x63, 0xf6, 0xe1, 0xda, 0x27, 0x4e, 0xde, 0xbf, 0xe7, 0x6f, 0x65, 0xfb, 0xd5, 0x1a, 0xd2, 0xf1, 0x48, 0x98, 0xb9, 0x5b };
-               private static byte[] emptySHA512 = { 0xcf, 0x83, 0xe1, 0x35, 0x7e, 0xef, 0xb8, 0xbd, 0xf1, 0x54, 0x28, 0x50, 0xd6, 0x6d, 0x80, 0x07, 0xd6, 0x20, 0xe4, 0x05, 0x0b, 0x57, 0x15, 0xdc, 0x83, 0xf4, 0xa9, 0x21, 0xd3, 0x6c, 0xe9, 0xce, 0x47, 0xd0, 0xd1, 0x3c, 0x5d, 0x85, 0xf2, 0xb0, 0xff, 0x83, 0x18, 0xd2, 0x87, 0x7e, 0xec, 0x2f, 0x63, 0xb9, 0x31, 0xbd, 0x47, 0x41, 0x7a, 0x81, 0xa5, 0x38, 0x32, 0x7a, 0xf9, 0x27, 0xda, 0x3e };
-       
-               private static byte[] GetEmptyHash (HashAlgorithm hash) 
-               {
-                       if (hash is SHA1)
-                               return emptySHA1;
-                       else if (hash is SHA256)
-                               return emptySHA256;
-                       else if (hash is SHA384)
-                               return emptySHA384;
-                       else if (hash is SHA512)
-                               return emptySHA512;
-                       else
-                               return hash.ComputeHash ((byte[])null);
-               }
-       
-               // PKCS #1 v.2.1, Section 4.1
-               // I2OSP converts a non-negative integer to an octet string of a specified length.
-               public static byte[] I2OSP (int x, int size) 
-               {
-                       byte[] array = BitConverterLE.GetBytes (x);
-                       Array.Reverse (array, 0, array.Length);
-                       return I2OSP (array, size);
-               }
-       
-               public static byte[] I2OSP (byte[] x, int size) 
-               {
-                       byte[] result = new byte [size];
-                       Buffer.BlockCopy (x, 0, result, (result.Length - x.Length), x.Length);
-                       return result;
-               }
-       
-               // PKCS #1 v.2.1, Section 4.2
-               // OS2IP converts an octet string to a nonnegative integer.
-               public static byte[] OS2IP (byte[] x) 
-               {
-                       int i = 0;
-                       while ((x [i++] == 0x00) && (i < x.Length)) {
-                               // confuse compiler into reporting a warning with {}
-                       }
-                       i--;
-                       if (i > 0) {
-                               byte[] result = new byte [x.Length - i];
-                               Buffer.BlockCopy (x, i, result, 0, result.Length);
-                               return result;
-                       }
-                       else
-                               return x;
-               }
-       
-               // PKCS #1 v.2.1, Section 5.1.1
-               public static byte[] RSAEP (RSA rsa, byte[] m) 
-               {
-                       // c = m^e mod n
-                       return rsa.EncryptValue (m);
-               }
-       
-               // PKCS #1 v.2.1, Section 5.1.2
-               public static byte[] RSADP (RSA rsa, byte[] c) 
-               {
-                       // m = c^d mod n
-                       // Decrypt value may apply CRT optimizations
-                       return rsa.DecryptValue (c);
-               }
-       
-               // PKCS #1 v.2.1, Section 5.2.1
-               public static byte[] RSASP1 (RSA rsa, byte[] m) 
-               {
-                       // first form: s = m^d mod n
-                       // Decrypt value may apply CRT optimizations
-                       return rsa.DecryptValue (m);
-               }
-       
-               // PKCS #1 v.2.1, Section 5.2.2
-               public static byte[] RSAVP1 (RSA rsa, byte[] s) 
-               {
-                       // m = s^e mod n
-                       return rsa.EncryptValue (s);
-               }
-       
-               // PKCS #1 v.2.1, Section 7.1.1
-               // RSAES-OAEP-ENCRYPT ((n, e), M, L)
-               public static byte[] Encrypt_OAEP (RSA rsa, HashAlgorithm hash, RandomNumberGenerator rng, byte[] M) 
-               {
-                       int size = rsa.KeySize / 8;
-                       int hLen = hash.HashSize / 8;
-                       if (M.Length > size - 2 * hLen - 2)
-                               throw new CryptographicException ("message too long");
-                       // empty label L SHA1 hash
-                       byte[] lHash = GetEmptyHash (hash);
-                       int PSLength = (size - M.Length - 2 * hLen - 2);
-                       // DB = lHash || PS || 0x01 || M
-                       byte[] DB = new byte [lHash.Length + PSLength + 1 + M.Length];
-                       Buffer.BlockCopy (lHash, 0, DB, 0, lHash.Length);
-                       DB [(lHash.Length + PSLength)] = 0x01;
-                       Buffer.BlockCopy (M, 0, DB, (DB.Length - M.Length), M.Length);
-       
-                       byte[] seed = new byte [hLen];
-                       rng.GetBytes (seed);
-       
-                       byte[] dbMask = MGF1 (hash, seed, size - hLen - 1);
-                       byte[] maskedDB = xor (DB, dbMask);
-                       byte[] seedMask = MGF1 (hash, maskedDB, hLen);
-                       byte[] maskedSeed = xor (seed, seedMask);
-                       // EM = 0x00 || maskedSeed || maskedDB
-                       byte[] EM = new byte [maskedSeed.Length + maskedDB.Length + 1];
-                       Buffer.BlockCopy (maskedSeed, 0, EM, 1, maskedSeed.Length);
-                       Buffer.BlockCopy (maskedDB, 0, EM, maskedSeed.Length + 1, maskedDB.Length);
-       
-                       byte[] m = OS2IP (EM);
-                       byte[] c = RSAEP (rsa, m);
-                       return I2OSP (c, size);
-               }
-       
-               // PKCS #1 v.2.1, Section 7.1.2
-               // RSAES-OAEP-DECRYPT (K, C, L)
-               public static byte[] Decrypt_OAEP (RSA rsa, HashAlgorithm hash, byte[] C) 
-               {
-                       int size = rsa.KeySize / 8;
-                       int hLen = hash.HashSize / 8;
-                       if ((size < (2 * hLen + 2)) || (C.Length != size))
-                               throw new CryptographicException ("decryption error");
-       
-                       byte[] c = OS2IP (C);
-                       byte[] m = RSADP (rsa, c);
-                       byte[] EM = I2OSP (m, size);
-       
-                       // split EM = Y || maskedSeed || maskedDB
-                       byte[] maskedSeed = new byte [hLen];
-                       Buffer.BlockCopy (EM, 1, maskedSeed, 0, maskedSeed.Length);
-                       byte[] maskedDB = new byte [size - hLen - 1];
-                       Buffer.BlockCopy (EM, (EM.Length - maskedDB.Length), maskedDB, 0, maskedDB.Length);
-       
-                       byte[] seedMask = MGF1 (hash, maskedDB, hLen);
-                       byte[] seed = xor (maskedSeed, seedMask);
-                       byte[] dbMask = MGF1 (hash, seed, size - hLen - 1);
-                       byte[] DB = xor (maskedDB, dbMask);
-       
-                       byte[] lHash = GetEmptyHash (hash);
-                       // split DB = lHash' || PS || 0x01 || M
-                       byte[] dbHash = new byte [lHash.Length];
-                       Buffer.BlockCopy (DB, 0, dbHash, 0, dbHash.Length);
-                       bool h = Compare (lHash, dbHash);
-       
-                       // find separator 0x01
-                       int nPos = lHash.Length;
-                       while (DB[nPos] == 0)
-                               nPos++;
-       
-                       int Msize = DB.Length - nPos - 1;
-                       byte[] M = new byte [Msize];
-                       Buffer.BlockCopy (DB, (nPos + 1), M, 0, Msize);
-       
-                       // we could have returned EM[0] sooner but would be helping a timing attack
-                       if ((EM[0] != 0) || (!h) || (DB[nPos] != 0x01))
-                               return null;
-                       return M;
-               }
-       
-               // PKCS #1 v.2.1, Section 7.2.1
-               // RSAES-PKCS1-V1_5-ENCRYPT ((n, e), M)
-               public static byte[] Encrypt_v15 (RSA rsa, RandomNumberGenerator rng, byte[] M) 
-               {
-                       int size = rsa.KeySize / 8;
-                       if (M.Length > size - 11)
-                               throw new CryptographicException ("message too long");
-                       int PSLength = System.Math.Max (8, (size - M.Length - 3));
-                       byte[] PS = new byte [PSLength];
-                       rng.GetNonZeroBytes (PS);
-                       byte[] EM = new byte [size];
-                       EM [1] = 0x02;
-                       Buffer.BlockCopy (PS, 0, EM, 2, PSLength);
-                       Buffer.BlockCopy (M, 0, EM, (size - M.Length), M.Length);
-       
-                       byte[] m = OS2IP (EM);
-                       byte[] c = RSAEP (rsa, m);
-                       byte[] C = I2OSP (c, size);
-                       return C;
-               }
-       
-               // PKCS #1 v.2.1, Section 7.2.2
-               // RSAES-PKCS1-V1_5-DECRYPT (K, C)
-               public static byte[] Decrypt_v15 (RSA rsa, byte[] C) 
-               {
-                       int size = rsa.KeySize >> 3; // div by 8
-                       if ((size < 11) || (C.Length > size))
-                               throw new CryptographicException ("decryption error");
-                       byte[] c = OS2IP (C);
-                       byte[] m = RSADP (rsa, c);
-                       byte[] EM = I2OSP (m, size);
-       
-                       if ((EM [0] != 0x00) || (EM [1] != 0x02))
-                               return null;
-       
-                       int mPos = 10;
-                       // PS is a minimum of 8 bytes + 2 bytes for header
-                       while ((EM [mPos] != 0x00) && (mPos < EM.Length))
-                               mPos++;
-                       if (EM [mPos] != 0x00)
-                               return null;
-                       mPos++;
-                       byte[] M = new byte [EM.Length - mPos];
-                       Buffer.BlockCopy (EM, mPos, M, 0, M.Length);
-                       return M;
-               }
-       
-               // PKCS #1 v.2.1, Section 8.2.1
-               // RSASSA-PKCS1-V1_5-SIGN (K, M)
-               public static byte[] Sign_v15 (RSA rsa, HashAlgorithm hash, byte[] hashValue) 
-               {
-                       int size = (rsa.KeySize >> 3); // div 8
-                       byte[] EM = Encode_v15 (hash, hashValue, size);
-                       byte[] m = OS2IP (EM);
-                       byte[] s = RSASP1 (rsa, m);
-                       byte[] S = I2OSP (s, size);
-                       return S;
-               }
-       
-               // PKCS #1 v.2.1, Section 8.2.2
-               // RSASSA-PKCS1-V1_5-VERIFY ((n, e), M, S)
-               public static bool Verify_v15 (RSA rsa, HashAlgorithm hash, byte[] hashValue, byte[] signature) 
-               {
-                       return Verify_v15 (rsa, hash, hashValue, signature, false);
-               }
-
-               // DO NOT USE WITHOUT A VERY GOOD REASON
-               public static bool Verify_v15 (RSA rsa, HashAlgorithm hash, byte [] hashValue, byte [] signature, bool tryNonStandardEncoding)
-               {
-                       int size = (rsa.KeySize >> 3); // div 8
-                       byte[] s = OS2IP (signature);
-                       byte[] m = RSAVP1 (rsa, s);
-                       byte[] EM2 = I2OSP (m, size);
-                       byte[] EM = Encode_v15 (hash, hashValue, size);
-                       bool result = Compare (EM, EM2);
-                       if (result || !tryNonStandardEncoding)
-                               return result;
-
-                       // NOTE: some signatures don't include the hash OID (pretty lame but real)
-                       // and compatible with MS implementation. E.g. Verisign Authenticode Timestamps
-
-                       // we're making this "as safe as possible"
-                       if ((EM2 [0] != 0x00) || (EM2 [1] != 0x01))
-                               return false;
-                       int i;
-                       for (i = 2; i < EM2.Length - hashValue.Length - 1; i++) {
-                               if (EM2 [i] != 0xFF)
-                                       return false;
-                       }
-                       if (EM2 [i++] != 0x00)
-                               return false;
-
-                       byte [] decryptedHash = new byte [hashValue.Length];
-                       Buffer.BlockCopy (EM2, i, decryptedHash, 0, decryptedHash.Length);
-                       return Compare (decryptedHash, hashValue);
-               }
-       
-               // PKCS #1 v.2.1, Section 9.2
-               // EMSA-PKCS1-v1_5-Encode
-               public static byte[] Encode_v15 (HashAlgorithm hash, byte[] hashValue, int emLength) 
-               {
-                       if (hashValue.Length != (hash.HashSize >> 3))
-                               throw new CryptographicException ("bad hash length for " + hash.ToString ());
-
-                       // DigestInfo ::= SEQUENCE {
-                       //      digestAlgorithm AlgorithmIdentifier,
-                       //      digest OCTET STRING
-                       // }
-               
-                       byte[] t = null;
-
-                       string oid = CryptoConfig.MapNameToOID (hash.ToString ());
-                       if (oid != null)
-                       {
-                               ASN1 digestAlgorithm = new ASN1 (0x30);
-                               digestAlgorithm.Add (new ASN1 (CryptoConfig.EncodeOID (oid)));
-                               digestAlgorithm.Add (new ASN1 (0x05));          // NULL
-                               ASN1 digest = new ASN1 (0x04, hashValue);
-                               ASN1 digestInfo = new ASN1 (0x30);
-                               digestInfo.Add (digestAlgorithm);
-                               digestInfo.Add (digest);
-
-                               t = digestInfo.GetBytes ();
-                       }
-                       else
-                       {
-                               // There are no valid OID, in this case t = hashValue
-                               // This is the case of the MD5SHA hash algorithm
-                               t = hashValue;
-                       }
-
-                       Buffer.BlockCopy (hashValue, 0, t, t.Length - hashValue.Length, hashValue.Length);
-       
-                       int PSLength = System.Math.Max (8, emLength - t.Length - 3);
-                       // PS = PSLength of 0xff
-       
-                       // EM = 0x00 | 0x01 | PS | 0x00 | T
-                       byte[] EM = new byte [PSLength + t.Length + 3];
-                       EM [1] = 0x01;
-                       for (int i=2; i < PSLength + 2; i++)
-                               EM[i] = 0xff;
-                       Buffer.BlockCopy (t, 0, EM, PSLength + 3, t.Length);
-       
-                       return EM;
-               }
-       
-               // PKCS #1 v.2.1, Section B.2.1
-               public static byte[] MGF1 (HashAlgorithm hash, byte[] mgfSeed, int maskLen) 
-               {
-                       // 1. If maskLen > 2^32 hLen, output "mask too long" and stop.
-                       // easy - this is impossible by using a int (31bits) as parameter ;-)
-                       // BUT with a signed int we do have to check for negative values!
-                       if (maskLen < 0)
-                               throw new OverflowException();
-       
-                       int mgfSeedLength = mgfSeed.Length;
-                       int hLen = (hash.HashSize >> 3); // from bits to bytes
-                       int iterations = (maskLen / hLen);
-                       if (maskLen % hLen != 0)
-                               iterations++;
-                       // 2. Let T be the empty octet string.
-                       byte[] T = new byte [iterations * hLen];
-       
-                       byte[] toBeHashed = new byte [mgfSeedLength + 4];
-                       int pos = 0;
-                       // 3. For counter from 0 to \ceil (maskLen / hLen) - 1, do the following:
-                       for (int counter = 0; counter < iterations; counter++) {
-                               // a.   Convert counter to an octet string C of length 4 octets
-                               byte[] C = I2OSP (counter, 4); 
-       
-                               // b.   Concatenate the hash of the seed mgfSeed and C to the octet string T:
-                               //      T = T || Hash (mgfSeed || C)
-                               Buffer.BlockCopy (mgfSeed, 0, toBeHashed, 0, mgfSeedLength);
-                               Buffer.BlockCopy (C, 0, toBeHashed, mgfSeedLength, 4);
-                               byte[] output = hash.ComputeHash (toBeHashed);
-                               Buffer.BlockCopy (output, 0, T, pos, hLen);
-                               pos += hLen;
-                       }
-                       
-                       // 4. Output the leading maskLen octets of T as the octet string mask.
-                       byte[] mask = new byte [maskLen];
-                       Buffer.BlockCopy (T, 0, mask, 0, maskLen);
-                       return mask;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Cryptography/PKCS8.cs b/mcs/class/corlib/Mono.Security.Cryptography/PKCS8.cs
deleted file mode 100644 (file)
index d26b85c..0000000
+++ /dev/null
@@ -1,500 +0,0 @@
-//
-// PKCS8.cs: PKCS #8 - Private-Key Information Syntax Standard
-//     ftp://ftp.rsasecurity.com/pub/pkcs/doc/pkcs-8.doc
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell Inc. (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Security.Cryptography;
-using System.Text;
-
-using Mono.Security.X509;
-
-namespace Mono.Security.Cryptography {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       sealed class PKCS8 {
-
-               public enum KeyInfo {
-                       PrivateKey,
-                       EncryptedPrivateKey,
-                       Unknown
-               }
-
-               private PKCS8 () 
-               {
-               }
-
-               static public KeyInfo GetType (byte[] data) 
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-
-                       KeyInfo ki = KeyInfo.Unknown;
-                       try {
-                               ASN1 top = new ASN1 (data);
-                               if ((top.Tag == 0x30) && (top.Count > 0)) {
-                                       ASN1 firstLevel = top [0];
-                                       switch (firstLevel.Tag) {
-                                               case 0x02:
-                                                       ki = KeyInfo.PrivateKey;
-                                                       break;
-                                               case 0x30:
-                                                       ki = KeyInfo.EncryptedPrivateKey;
-                                                       break;
-                                       }
-                               }
-                       }
-                       catch {
-                               throw new CryptographicException ("invalid ASN.1 data");
-                       }
-                       return ki;
-               }
-
-               /*
-                * PrivateKeyInfo ::= SEQUENCE {
-                *      version Version,
-                *      privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,
-                *      privateKey PrivateKey,
-                *      attributes [0] IMPLICIT Attributes OPTIONAL 
-                * }
-                * 
-                * Version ::= INTEGER
-                * 
-                * PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier
-                * 
-                * PrivateKey ::= OCTET STRING
-                * 
-                * Attributes ::= SET OF Attribute
-                */
-               public class PrivateKeyInfo {
-
-                       private int _version;
-                       private string _algorithm;
-                       private byte[] _key;
-                       private ArrayList _list;
-
-                       public PrivateKeyInfo () 
-                       {
-                               _version = 0;
-                               _list = new ArrayList ();
-                       }
-
-                       public PrivateKeyInfo (byte[] data) : this () 
-                       {
-                               Decode (data);
-                       }
-
-                       // properties
-
-                       public string Algorithm {
-                               get { return _algorithm; }
-                               set { _algorithm = value; }
-                       }
-
-                       public ArrayList Attributes {
-                               get { return _list; }
-                       }
-
-                       public byte[] PrivateKey {
-                               get {
-                                       if (_key == null)
-                                               return null;
-                                       return (byte[]) _key.Clone (); 
-                               }
-                               set { 
-                                       if (value == null)
-                                               throw new ArgumentNullException ("PrivateKey");
-                                       _key = (byte[]) value.Clone (); 
-                               }
-                       }
-
-                       public int Version {
-                               get { return _version; }
-                               set { 
-                                       if (value < 0)
-                                               throw new ArgumentOutOfRangeException ("negative version");
-                                       _version = value; 
-                               }
-                       }
-
-                       // methods
-
-                       private void Decode (byte[] data) 
-                       {
-                               ASN1 privateKeyInfo = new ASN1 (data);
-                               if (privateKeyInfo.Tag != 0x30)
-                                       throw new CryptographicException ("invalid PrivateKeyInfo");
-
-                               ASN1 version = privateKeyInfo [0];
-                               if (version.Tag != 0x02)
-                                       throw new CryptographicException ("invalid version");
-                               _version = version.Value [0];
-
-                               ASN1 privateKeyAlgorithm = privateKeyInfo [1];
-                               if (privateKeyAlgorithm.Tag != 0x30)
-                                       throw new CryptographicException ("invalid algorithm");
-                               
-                               ASN1 algorithm = privateKeyAlgorithm [0];
-                               if (algorithm.Tag != 0x06)
-                                       throw new CryptographicException ("missing algorithm OID");
-                               _algorithm = ASN1Convert.ToOid (algorithm);
-
-                               ASN1 privateKey = privateKeyInfo [2];
-                               _key = privateKey.Value;
-
-                               // attributes [0] IMPLICIT Attributes OPTIONAL
-                               if (privateKeyInfo.Count > 3) {
-                                       ASN1 attributes = privateKeyInfo [3];
-                                       for (int i=0; i < attributes.Count; i++) {
-                                               _list.Add (attributes [i]);
-                                       }
-                               }
-                       }
-
-                       public byte[] GetBytes () 
-                       {
-                               ASN1 privateKeyAlgorithm = new ASN1 (0x30);
-                               privateKeyAlgorithm.Add (ASN1Convert.FromOid (_algorithm));
-                               privateKeyAlgorithm.Add (new ASN1 (0x05)); // ASN.1 NULL
-
-                               ASN1 pki = new ASN1 (0x30);
-                               pki.Add (new ASN1 (0x02, new byte [1] { (byte) _version }));
-                               pki.Add (privateKeyAlgorithm);
-                               pki.Add (new ASN1 (0x04, _key));
-
-                               if (_list.Count > 0) {
-                                       ASN1 attributes = new ASN1 (0xA0);
-                                       foreach (ASN1 attribute in _list) {
-                                               attributes.Add (attribute);
-                                       }
-                                       pki.Add (attributes);
-                               }
-
-                               return pki.GetBytes ();
-                       }
-
-                       // static methods
-
-                       static private byte[] RemoveLeadingZero (byte[] bigInt) 
-                       {
-                               int start = 0;
-                               int length = bigInt.Length;
-                               if (bigInt [0] == 0x00) {
-                                       start = 1;
-                                       length--;
-                               }
-                               byte[] bi = new byte [length];
-                               Buffer.BlockCopy (bigInt, start, bi, 0, length);
-                               return bi;
-                       }
-
-                       static private byte[] Normalize (byte[] bigInt, int length) 
-                       {
-                               if (bigInt.Length == length)
-                                       return bigInt;
-                               else if (bigInt.Length > length)
-                                       return RemoveLeadingZero (bigInt);
-                               else {
-                                       // pad with 0
-                                       byte[] bi = new byte [length];
-                                       Buffer.BlockCopy (bigInt, 0, bi, (length - bigInt.Length), bigInt.Length);
-                                       return bi;
-                               }
-                       }
-                       
-                       /*
-                        * RSAPrivateKey ::= SEQUENCE {
-                        *      version           Version, 
-                        *      modulus           INTEGER,  -- n
-                        *      publicExponent    INTEGER,  -- e
-                        *      privateExponent   INTEGER,  -- d
-                        *      prime1            INTEGER,  -- p
-                        *      prime2            INTEGER,  -- q
-                        *      exponent1         INTEGER,  -- d mod (p-1)
-                        *      exponent2         INTEGER,  -- d mod (q-1) 
-                        *      coefficient       INTEGER,  -- (inverse of q) mod p
-                        *      otherPrimeInfos   OtherPrimeInfos OPTIONAL 
-                        * }
-                        */
-                       static public RSA DecodeRSA (byte[] keypair) 
-                       {
-                               ASN1 privateKey = new ASN1 (keypair);
-                               if (privateKey.Tag != 0x30)
-                                       throw new CryptographicException ("invalid private key format");
-
-                               ASN1 version = privateKey [0];
-                               if (version.Tag != 0x02)
-                                       throw new CryptographicException ("missing version");
-
-                               if (privateKey.Count < 9)
-                                       throw new CryptographicException ("not enough key parameters");
-
-                               RSAParameters param = new RSAParameters ();
-                               // note: MUST remove leading 0 - else MS wont import the key
-                               param.Modulus = RemoveLeadingZero (privateKey [1].Value);
-                               int keysize = param.Modulus.Length;
-                               int keysize2 = (keysize >> 1); // half-size
-                               // size must be normalized - else MS wont import the key
-                               param.D = Normalize (privateKey [3].Value, keysize);
-                               param.DP = Normalize (privateKey [6].Value, keysize2);
-                               param.DQ = Normalize (privateKey [7].Value, keysize2);
-                               param.Exponent = RemoveLeadingZero (privateKey [2].Value);
-                               param.InverseQ = Normalize (privateKey [8].Value, keysize2);
-                               param.P = Normalize (privateKey [4].Value, keysize2);
-                               param.Q = Normalize (privateKey [5].Value, keysize2);
-                               RSA rsa = null;
-                               try {
-                                       rsa = RSA.Create ();
-                                       rsa.ImportParameters (param);
-                               }
-                               catch (CryptographicException) {
-                                       // this may cause problem when this code is run under
-                                       // the SYSTEM identity on Windows (e.g. ASP.NET). See
-                                       // http://bugzilla.ximian.com/show_bug.cgi?id=77559
-                                       CspParameters csp = new CspParameters ();
-                                       csp.Flags = CspProviderFlags.UseMachineKeyStore;
-                                       rsa = new RSACryptoServiceProvider (csp);
-                                       rsa.ImportParameters (param);
-                               }
-                               return rsa;
-                       }
-
-                       /*
-                        * RSAPrivateKey ::= SEQUENCE {
-                        *      version           Version, 
-                        *      modulus           INTEGER,  -- n
-                        *      publicExponent    INTEGER,  -- e
-                        *      privateExponent   INTEGER,  -- d
-                        *      prime1            INTEGER,  -- p
-                        *      prime2            INTEGER,  -- q
-                        *      exponent1         INTEGER,  -- d mod (p-1)
-                        *      exponent2         INTEGER,  -- d mod (q-1) 
-                        *      coefficient       INTEGER,  -- (inverse of q) mod p
-                        *      otherPrimeInfos   OtherPrimeInfos OPTIONAL 
-                        * }
-                        */
-                       static public byte[] Encode (RSA rsa) 
-                       {
-                               RSAParameters param = rsa.ExportParameters (true);
-
-                               ASN1 rsaPrivateKey = new ASN1 (0x30);
-                               rsaPrivateKey.Add (new ASN1 (0x02, new byte [1] { 0x00 }));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.Modulus));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.Exponent));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.D));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.P));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.Q));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.DP));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.DQ));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.InverseQ));
-
-                               return rsaPrivateKey.GetBytes ();
-                       }
-
-                       // DSA only encode it's X private key inside an ASN.1 INTEGER (Hint: Tag == 0x02)
-                       // which isn't enough for rebuilding the keypair. The other parameters
-                       // can be found (98% of the time) in the X.509 certificate associated
-                       // with the private key or (2% of the time) the parameters are in it's
-                       // issuer X.509 certificate (not supported in the .NET framework).
-                       static public DSA DecodeDSA (byte[] privateKey, DSAParameters dsaParameters) 
-                       {
-                               ASN1 pvk = new ASN1 (privateKey);
-                               if (pvk.Tag != 0x02)
-                                       throw new CryptographicException ("invalid private key format");
-
-                               // X is ALWAYS 20 bytes (no matter if the key length is 512 or 1024 bits)
-                               dsaParameters.X = Normalize (pvk.Value, 20);
-                               DSA dsa = DSA.Create ();
-                               dsa.ImportParameters (dsaParameters);
-                               return dsa;
-                       }
-
-                       static public byte[] Encode (DSA dsa) 
-                       {
-                               DSAParameters param = dsa.ExportParameters (true);
-                               return ASN1Convert.FromUnsignedBigInteger (param.X).GetBytes ();
-                       }
-
-                       static public byte[] Encode (AsymmetricAlgorithm aa) 
-                       {
-                               if (aa is RSA)
-                                       return Encode ((RSA)aa);
-                               else if (aa is DSA)
-                                       return Encode ((DSA)aa);
-                               else
-                                       throw new CryptographicException ("Unknown asymmetric algorithm {0}", aa.ToString ());
-                       }
-               }
-
-               /*
-                * EncryptedPrivateKeyInfo ::= SEQUENCE {
-                *      encryptionAlgorithm EncryptionAlgorithmIdentifier,
-                *      encryptedData EncryptedData 
-                * }
-                * 
-                * EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
-                * 
-                * EncryptedData ::= OCTET STRING
-                * 
-                * --
-                *  AlgorithmIdentifier  ::= SEQUENCE {
-                *      algorithm  OBJECT IDENTIFIER,
-                *      parameters ANY DEFINED BY algorithm OPTIONAL
-                * }
-                * 
-                * -- from PKCS#5
-                * PBEParameter ::= SEQUENCE {
-                *      salt OCTET STRING SIZE(8),
-                *      iterationCount INTEGER 
-                * }
-                */
-               public class EncryptedPrivateKeyInfo {
-
-                       private string _algorithm;
-                       private byte[] _salt;
-                       private int _iterations;
-                       private byte[] _data;
-
-                       public EncryptedPrivateKeyInfo () {}
-
-                       public EncryptedPrivateKeyInfo (byte[] data) : this () 
-                       {
-                               Decode (data);
-                       }
-
-                       // properties
-
-                       public string Algorithm {
-                               get { return _algorithm; }
-                               set { _algorithm = value; }
-                       }
-
-                       public byte[] EncryptedData {
-                               get { return (_data == null) ? null : (byte[]) _data.Clone (); }
-                               set { _data = (value == null) ? null : (byte[]) value.Clone (); }
-                       }
-
-                       public byte[] Salt {
-                               get { 
-                                       if (_salt == null) {
-                                               RandomNumberGenerator rng = RandomNumberGenerator.Create ();
-                                               _salt = new byte [8];
-                                               rng.GetBytes (_salt);
-                                       }
-                                       return (byte[]) _salt.Clone (); 
-                               }
-                               set { _salt = (byte[]) value.Clone (); }
-                       }
-
-                       public int IterationCount {
-                               get { return _iterations; }
-                               set { 
-                                       if (value < 0)
-                                               throw new ArgumentOutOfRangeException ("IterationCount", "Negative");
-                                       _iterations = value; 
-                               }
-                       }
-
-                       // methods
-
-                       private void Decode (byte[] data) 
-                       {
-                               ASN1 encryptedPrivateKeyInfo = new ASN1 (data);
-                               if (encryptedPrivateKeyInfo.Tag != 0x30)
-                                       throw new CryptographicException ("invalid EncryptedPrivateKeyInfo");
-
-                               ASN1 encryptionAlgorithm = encryptedPrivateKeyInfo [0];
-                               if (encryptionAlgorithm.Tag != 0x30)
-                                       throw new CryptographicException ("invalid encryptionAlgorithm");
-                               ASN1 algorithm = encryptionAlgorithm [0];
-                               if (algorithm.Tag != 0x06)
-                                       throw new CryptographicException ("invalid algorithm");
-                               _algorithm = ASN1Convert.ToOid (algorithm);
-                               // parameters ANY DEFINED BY algorithm OPTIONAL
-                               if (encryptionAlgorithm.Count > 1) {
-                                       ASN1 parameters = encryptionAlgorithm [1];
-                                       if (parameters.Tag != 0x30)
-                                               throw new CryptographicException ("invalid parameters");
-
-                                       ASN1 salt = parameters [0];
-                                       if (salt.Tag != 0x04)
-                                               throw new CryptographicException ("invalid salt");
-                                       _salt = salt.Value;
-
-                                       ASN1 iterationCount = parameters [1];
-                                       if (iterationCount.Tag != 0x02)
-                                               throw new CryptographicException ("invalid iterationCount");
-                                       _iterations = ASN1Convert.ToInt32 (iterationCount);
-                               }
-
-                               ASN1 encryptedData = encryptedPrivateKeyInfo [1];
-                               if (encryptedData.Tag != 0x04)
-                                       throw new CryptographicException ("invalid EncryptedData");
-                               _data = encryptedData.Value;
-                       }
-
-                       // Note: PKCS#8 doesn't define how to generate the key required for encryption
-                       // so you're on your own. Just don't try to copy the big guys too much ;)
-                       // Netscape:    http://www.cs.auckland.ac.nz/~pgut001/pubs/netscape.txt
-                       // Microsoft:   http://www.cs.auckland.ac.nz/~pgut001/pubs/breakms.txt
-                       public byte[] GetBytes ()
-                       {
-                               if (_algorithm == null)
-                                       throw new CryptographicException ("No algorithm OID specified");
-
-                               ASN1 encryptionAlgorithm = new ASN1 (0x30);
-                               encryptionAlgorithm.Add (ASN1Convert.FromOid (_algorithm));
-
-                               // parameters ANY DEFINED BY algorithm OPTIONAL
-                               if ((_iterations > 0) || (_salt != null)) {
-                                       ASN1 salt = new ASN1 (0x04, _salt);
-                                       ASN1 iterations = ASN1Convert.FromInt32 (_iterations);
-
-                                       ASN1 parameters = new ASN1 (0x30);
-                                       parameters.Add (salt);
-                                       parameters.Add (iterations);
-                                       encryptionAlgorithm.Add (parameters);
-                               }
-
-                               // encapsulates EncryptedData into an OCTET STRING
-                               ASN1 encryptedData = new ASN1 (0x04, _data);
-
-                               ASN1 encryptedPrivateKeyInfo = new ASN1 (0x30);
-                               encryptedPrivateKeyInfo.Add (encryptionAlgorithm);
-                               encryptedPrivateKeyInfo.Add (encryptedData);
-
-                               return encryptedPrivateKeyInfo.GetBytes ();
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Cryptography/RSAManaged.cs b/mcs/class/corlib/Mono.Security.Cryptography/RSAManaged.cs
deleted file mode 100644 (file)
index 9c406a2..0000000
+++ /dev/null
@@ -1,506 +0,0 @@
-//
-// RSAManaged.cs - Implements the RSA algorithm.
-//
-// Authors:
-//     Sebastien Pouliot (sebastien@ximian.com)
-//     Ben Maurer (bmaurer@users.sf.net)
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Portions (C) 2003 Ben Maurer
-// Copyright (C) 2004,2006 Novell, Inc (http://www.novell.com)
-//
-// Key generation translated from Bouncy Castle JCE (http://www.bouncycastle.org/)
-// See bouncycastle.txt for license.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Security.Cryptography;
-using System.Text;
-
-using Mono.Math;
-
-// Big chunks of code are coming from the original RSACryptoServiceProvider class.
-// The class was refactored to :
-// a.  ease integration of new hash algorithm (like MD2, RIPEMD160, ...);
-// b.  provide better support for the coming SSL implementation (requires 
-//     EncryptValue/DecryptValue) with, or without, Mono runtime/corlib;
-// c.  provide an alternative RSA implementation for all Windows (like using 
-//     OAEP without Windows XP).
-
-namespace Mono.Security.Cryptography {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       class RSAManaged : RSA {
-
-               private const int defaultKeySize = 1024;
-
-               private bool isCRTpossible = false;
-               private bool keyBlinding = true;
-               private bool keypairGenerated = false;
-               private bool m_disposed = false;
-
-               private BigInteger d;
-               private BigInteger p;
-               private BigInteger q;
-               private BigInteger dp;
-               private BigInteger dq;
-               private BigInteger qInv;
-               private BigInteger n;           // modulus
-               private BigInteger e;
-
-               public RSAManaged () : this (defaultKeySize)
-               {
-               }
-
-               public RSAManaged (int keySize) 
-               {
-                       LegalKeySizesValue = new KeySizes [1];
-                       LegalKeySizesValue [0] = new KeySizes (384, 16384, 8);
-                       base.KeySize = keySize;
-               }
-
-               ~RSAManaged () 
-               {
-                       // Zeroize private key
-                       Dispose (false);
-               }
-
-               private void GenerateKeyPair () 
-               {
-                       // p and q values should have a length of half the strength in bits
-                       int pbitlength = ((KeySize + 1) >> 1);
-                       int qbitlength = (KeySize - pbitlength);
-                       const uint uint_e = 17;
-                       e = uint_e; // fixed
-       
-                       // generate p, prime and (p-1) relatively prime to e
-                       for (;;) {
-                               p = BigInteger.GeneratePseudoPrime (pbitlength);
-                               if (p % uint_e != 1)
-                                       break;
-                       }
-                       // generate a modulus of the required length
-                       for (;;) {
-                               // generate q, prime and (q-1) relatively prime to e,
-                               // and not equal to p
-                               for (;;) {
-                                       q = BigInteger.GeneratePseudoPrime (qbitlength);
-                                       if ((q % uint_e != 1) && (p != q))
-                                               break;
-                               }
-       
-                               // calculate the modulus
-                               n = p * q;
-                               if (n.BitCount () == KeySize)
-                                       break;
-       
-                               // if we get here our primes aren't big enough, make the largest
-                               // of the two p and try again
-                               if (p < q)
-                                       p = q;
-                       }
-       
-                       BigInteger pSub1 = (p - 1);
-                       BigInteger qSub1 = (q - 1);
-                       BigInteger phi = pSub1 * qSub1;
-       
-                       // calculate the private exponent
-                       d = e.ModInverse (phi);
-       
-                       // calculate the CRT factors
-                       dp = d % pSub1;
-                       dq = d % qSub1;
-                       qInv = q.ModInverse (p);
-       
-                       keypairGenerated = true;
-                       isCRTpossible = true;
-
-                       if (KeyGenerated != null)
-                               KeyGenerated (this, null);
-               }
-               
-               // overrides from RSA class
-
-               public override int KeySize {
-                       get { 
-                               // in case keypair hasn't been (yet) generated
-                               if (keypairGenerated) {
-                                       int ks = n.BitCount ();
-                                       if ((ks & 7) != 0)
-                                               ks = ks + (8 - (ks & 7));
-                                       return ks;
-                               }
-                               else
-                                       return base.KeySize;
-                       }
-               }
-               public override string KeyExchangeAlgorithm {
-                       get { return "RSA-PKCS1-KeyEx"; }
-               }
-
-               // note: when (if) we generate a keypair then it will have both
-               // the public and private keys
-               public bool PublicOnly {
-                       get { return (keypairGenerated && ((d == null) || (n == null))); }
-               }
-
-               public override string SignatureAlgorithm {
-                       get { return "http://www.w3.org/2000/09/xmldsig#rsa-sha1"; }
-               }
-
-               public override byte[] DecryptValue (byte[] rgb) 
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException ("private key");
-
-                       // decrypt operation is used for signature
-                       if (!keypairGenerated)
-                               GenerateKeyPair ();
-
-                       BigInteger input = new BigInteger (rgb);
-                       BigInteger r = null;
-
-                       // we use key blinding (by default) against timing attacks
-                       if (keyBlinding) {
-                               // x = (r^e * g) mod n 
-                               // *new* random number (so it's timing is also random)
-                               r = BigInteger.GenerateRandom (n.BitCount ());
-                               input = r.ModPow (e, n) * input % n;
-                       }
-
-                       BigInteger output;
-                       // decrypt (which uses the private key) can be 
-                       // optimized by using CRT (Chinese Remainder Theorem)
-                       if (isCRTpossible) {
-                               // m1 = c^dp mod p
-                               BigInteger m1 = input.ModPow (dp, p);
-                               // m2 = c^dq mod q
-                               BigInteger m2 = input.ModPow (dq, q);
-                               BigInteger h;
-                               if (m2 > m1) {
-                                       // thanks to benm!
-                                       h = p - ((m2 - m1) * qInv % p);
-                                       output = m2 + q * h;
-                               } else {
-                                       // h = (m1 - m2) * qInv mod p
-                                       h = (m1 - m2) * qInv % p;
-                                       // m = m2 + q * h;
-                                       output = m2 + q * h;
-                               }
-                       } else if (!PublicOnly) {
-                               // m = c^d mod n
-                               output = input.ModPow (d, n);
-                       } else {
-                               throw new CryptographicException (Locale.GetText ("Missing private key to decrypt value."));
-                       }
-
-                       if (keyBlinding) {
-                               // Complete blinding
-                               // x^e / r mod n
-                               output = output * r.ModInverse (n) % n;
-                               r.Clear ();
-                       }
-
-                       // it's sometimes possible for the results to be a byte short
-                       // and this can break some software (see #79502) so we 0x00 pad the result
-                       byte[] result = GetPaddedValue (output, (KeySize >> 3));
-                       // zeroize values
-                       input.Clear (); 
-                       output.Clear ();
-                       return result;
-               }
-
-               public override byte[] EncryptValue (byte[] rgb) 
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException ("public key");
-
-                       if (!keypairGenerated)
-                               GenerateKeyPair ();
-
-                       BigInteger input = new BigInteger (rgb);
-                       BigInteger output = input.ModPow (e, n);
-                       // it's sometimes possible for the results to be a byte short
-                       // and this can break some software (see #79502) so we 0x00 pad the result
-                       byte[] result = GetPaddedValue (output, (KeySize >> 3));
-                       // zeroize value
-                       input.Clear (); 
-                       output.Clear ();
-                       return result;
-               }
-
-
-
-               public override RSAParameters ExportParameters (bool includePrivateParameters) 
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException (Locale.GetText ("Keypair was disposed"));
-
-                       if (!keypairGenerated)
-                               GenerateKeyPair ();
-       
-                       RSAParameters param = new RSAParameters ();
-                       param.Exponent = e.GetBytes ();
-                       param.Modulus = n.GetBytes ();
-                       if (includePrivateParameters) {
-                               // some parameters are required for exporting the private key
-                               if (d == null)
-                                       throw new CryptographicException ("Missing private key");
-                               param.D = d.GetBytes ();
-                               // hack for bugzilla #57941 where D wasn't provided
-                               if (param.D.Length != param.Modulus.Length) {
-                                       byte[] normalizedD = new byte [param.Modulus.Length];
-                                       Buffer.BlockCopy (param.D, 0, normalizedD, (normalizedD.Length - param.D.Length), param.D.Length);
-                                       param.D = normalizedD;
-                               }
-                               // but CRT parameters are optionals
-                               if ((p != null) && (q != null) && (dp != null) && (dq != null) && (qInv != null)) {
-                                       // and we include them only if we have them all
-                                       int length = (KeySize >> 4);
-                                       param.P = GetPaddedValue (p, length);
-                                       param.Q = GetPaddedValue (q, length);
-                                       param.DP = GetPaddedValue (dp, length);
-                                       param.DQ = GetPaddedValue (dq, length);
-                                       param.InverseQ = GetPaddedValue (qInv, length);
-                               }
-                       }
-                       return param;
-               }
-
-               public override void ImportParameters (RSAParameters parameters) 
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException (Locale.GetText ("Keypair was disposed"));
-
-                       // if missing "mandatory" parameters
-                       if (parameters.Exponent == null) 
-                               throw new CryptographicException (Locale.GetText ("Missing Exponent"));
-                       if (parameters.Modulus == null)
-                               throw new CryptographicException (Locale.GetText ("Missing Modulus"));
-       
-                       e = new BigInteger (parameters.Exponent);
-                       n = new BigInteger (parameters.Modulus);
-                       // only if the private key is present
-                       if (parameters.D != null)
-                               d = new BigInteger (parameters.D);
-                       if (parameters.DP != null)
-                               dp = new BigInteger (parameters.DP);
-                       if (parameters.DQ != null)
-                               dq = new BigInteger (parameters.DQ);
-                       if (parameters.InverseQ != null)
-                               qInv = new BigInteger (parameters.InverseQ);
-                       if (parameters.P != null)
-                               p = new BigInteger (parameters.P);
-                       if (parameters.Q != null)
-                               q = new BigInteger (parameters.Q);
-
-                       // we now have a keypair
-                       keypairGenerated = true;
-                       bool privateKey = ((p != null) && (q != null) && (dp != null));
-                       isCRTpossible = (privateKey && (dq != null) && (qInv != null));
-
-                       // check if the public/private keys match
-                       // the way the check is made allows a bad D to work if CRT is available (like MS does, see unit tests)
-                       if (!privateKey)
-                               return;
-
-                       // always check n == p * q
-                       bool ok = (n == (p * q));
-                       if (ok) {
-                               // we now know that p and q are correct, so (p - 1), (q - 1) and phi will be ok too
-                               BigInteger pSub1 = (p - 1);
-                               BigInteger qSub1 = (q - 1);
-                               BigInteger phi = pSub1 * qSub1;
-                               // e is fairly static but anyway we can ensure it makes sense by recomputing d
-                               BigInteger dcheck = e.ModInverse (phi);
-
-                               // now if our new d(check) is different than the d we're provided then we cannot
-                               // be sure if 'd' or 'e' is invalid... (note that, from experience, 'd' is more 
-                               // likely to be invalid since it's twice as large as DP (or DQ) and sits at the
-                               // end of the structure (e.g. truncation).
-                               ok = (d == dcheck);
-
-                               // ... unless we have the pre-computed CRT parameters
-                               if (!ok && isCRTpossible) {
-                                       // we can override the previous decision since Mono always prefer, for 
-                                       // performance reasons, using the CRT algorithm
-                                       ok = (dp == (dcheck % pSub1)) && (dq == (dcheck % qSub1)) && 
-                                               (qInv == q.ModInverse (p));
-                               }
-                       }
-
-                       if (!ok)
-                               throw new CryptographicException (Locale.GetText ("Private/public key mismatch"));
-               }
-
-               protected override void Dispose (bool disposing) 
-               {
-                       if (!m_disposed) {
-                               // Always zeroize private key
-                               if (d != null) {
-                                       d.Clear (); 
-                                       d = null;
-                               }
-                               if (p != null) {
-                                       p.Clear (); 
-                                       p = null;
-                               }
-                               if (q != null) {
-                                       q.Clear (); 
-                                       q = null;
-                               }
-                               if (dp != null) {
-                                       dp.Clear (); 
-                                       dp = null;
-                               }
-                               if (dq != null) {
-                                       dq.Clear (); 
-                                       dq = null;
-                               }
-                               if (qInv != null) {
-                                       qInv.Clear (); 
-                                       qInv = null;
-                               }
-
-                               if (disposing) {
-                                       // clear public key
-                                       if (e != null) {
-                                               e.Clear (); 
-                                               e = null;
-                                       }
-                                       if (n != null) {
-                                               n.Clear (); 
-                                               n = null;
-                                       }
-                               }
-                       }
-                       // call base class 
-                       // no need as they all are abstract before us
-                       m_disposed = true;
-               }
-
-               public delegate void KeyGeneratedEventHandler (object sender, EventArgs e);
-
-               public event KeyGeneratedEventHandler KeyGenerated;
-
-               public override string ToXmlString (bool includePrivateParameters) 
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       RSAParameters rsaParams = ExportParameters (includePrivateParameters);
-                       try {
-                               sb.Append ("<RSAKeyValue>");
-                               
-                               sb.Append ("<Modulus>");
-                               sb.Append (Convert.ToBase64String (rsaParams.Modulus));
-                               sb.Append ("</Modulus>");
-
-                               sb.Append ("<Exponent>");
-                               sb.Append (Convert.ToBase64String (rsaParams.Exponent));
-                               sb.Append ("</Exponent>");
-
-                               if (includePrivateParameters) {
-                                       if (rsaParams.P != null) {
-                                               sb.Append ("<P>");
-                                               sb.Append (Convert.ToBase64String (rsaParams.P));
-                                               sb.Append ("</P>");
-                                       }
-                                       if (rsaParams.Q != null) {
-                                               sb.Append ("<Q>");
-                                               sb.Append (Convert.ToBase64String (rsaParams.Q));
-                                               sb.Append ("</Q>");
-                                       }
-                                       if (rsaParams.DP != null) {
-                                               sb.Append ("<DP>");
-                                               sb.Append (Convert.ToBase64String (rsaParams.DP));
-                                               sb.Append ("</DP>");
-                                       }
-                                       if (rsaParams.DQ != null) {
-                                               sb.Append ("<DQ>");
-                                               sb.Append (Convert.ToBase64String (rsaParams.DQ));
-                                               sb.Append ("</DQ>");
-                                       }
-                                       if (rsaParams.InverseQ != null) {
-                                               sb.Append ("<InverseQ>");
-                                               sb.Append (Convert.ToBase64String (rsaParams.InverseQ));
-                                               sb.Append ("</InverseQ>");
-                                       }
-                                       sb.Append ("<D>");
-                                       sb.Append (Convert.ToBase64String (rsaParams.D));
-                                       sb.Append ("</D>");
-                               }
-                               
-                               sb.Append ("</RSAKeyValue>");
-                       }
-                       catch {
-                               if (rsaParams.P != null)
-                                       Array.Clear (rsaParams.P, 0, rsaParams.P.Length);
-                               if (rsaParams.Q != null)
-                                       Array.Clear (rsaParams.Q, 0, rsaParams.Q.Length);
-                               if (rsaParams.DP != null)
-                                       Array.Clear (rsaParams.DP, 0, rsaParams.DP.Length);
-                               if (rsaParams.DQ != null)
-                                       Array.Clear (rsaParams.DQ, 0, rsaParams.DQ.Length);
-                               if (rsaParams.InverseQ != null)
-                                       Array.Clear (rsaParams.InverseQ, 0, rsaParams.InverseQ.Length);
-                               if (rsaParams.D != null)
-                                       Array.Clear (rsaParams.D, 0, rsaParams.D.Length);
-                               throw;
-                       }
-                       
-                       return sb.ToString ();
-               }
-
-               // internal for Mono 1.0.x in order to preserve public contract
-               // they are public for Mono 1.1.x (for 1.2) as the API isn't froze ATM
-
-               public bool UseKeyBlinding {
-                       get { return keyBlinding; }
-                       // you REALLY shoudn't touch this (true is fine ;-)
-                       set { keyBlinding = value; }
-               }
-
-               public bool IsCrtPossible {
-                       // either the key pair isn't generated (and will be 
-                       // generated with CRT parameters) or CRT is (or isn't)
-                       // possible (in case the key was imported)
-                       get { return (!keypairGenerated || isCRTpossible); }
-               }
-
-               private byte[] GetPaddedValue (BigInteger value, int length)
-               {
-                       byte[] result = value.GetBytes ();
-                       if (result.Length >= length)
-                               return result;
-
-                       // left-pad 0x00 value on the result (same integer, correct length)
-                       byte[] padded = new byte[length];
-                       Buffer.BlockCopy (result, 0, padded, (length - result.Length), result.Length);
-                       // temporary result may contain decrypted (plaintext) data, clear it
-                       Array.Clear (result, 0, result.Length);
-                       return padded;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Cryptography/SymmetricTransform.cs b/mcs/class/corlib/Mono.Security.Cryptography/SymmetricTransform.cs
deleted file mode 100644 (file)
index 221f0fb..0000000
+++ /dev/null
@@ -1,491 +0,0 @@
-//
-// Mono.Security.Cryptography.SymmetricTransform implementation
-//
-// Authors:
-//     Thomas Neidhart (tome@sbox.tugraz.at)
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// Portions (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Security.Cryptography;
-
-namespace Mono.Security.Cryptography {
-
-       // This class implement most of the common code required for symmetric
-       // algorithm transforms, like:
-       // - CipherMode: Builds CBC and CFB on top of (descendant supplied) ECB
-       // - PaddingMode, transform properties, multiple blocks, reuse...
-       //
-       // Descendants MUST:
-       // - intialize themselves (like key expansion, ...)
-       // - override the ECB (Electronic Code Book) method which will only be
-       //   called using BlockSize byte[] array.
-       internal abstract class SymmetricTransform : ICryptoTransform {
-               protected SymmetricAlgorithm algo;
-               protected bool encrypt;
-               protected int BlockSizeByte;
-               protected byte[] temp;
-               protected byte[] temp2;
-               private byte[] workBuff;
-               private byte[] workout;
-               protected PaddingMode padmode;
-               // Silverlight 2.0 does not support any feedback mode
-               protected int FeedBackByte;
-               private bool m_disposed = false;
-               protected bool lastBlock;
-
-               public SymmetricTransform (SymmetricAlgorithm symmAlgo, bool encryption, byte[] rgbIV) 
-               {
-                       algo = symmAlgo;
-                       encrypt = encryption;
-                       BlockSizeByte = (algo.BlockSize >> 3);
-
-                       if (rgbIV == null) {
-                               rgbIV = KeyBuilder.IV (BlockSizeByte);
-                       } else {
-                               rgbIV = (byte[]) rgbIV.Clone ();
-                       }
-                       // compare the IV length with the "currently selected" block size and *ignore* IV that are too big
-                       if (rgbIV.Length < BlockSizeByte) {
-                               string msg = Locale.GetText ("IV is too small ({0} bytes), it should be {1} bytes long.",
-                                       rgbIV.Length, BlockSizeByte);
-                               throw new CryptographicException (msg);
-                       }
-                       padmode = algo.Padding;
-                       // mode buffers
-                       temp = new byte [BlockSizeByte];
-                       Buffer.BlockCopy (rgbIV, 0, temp, 0, System.Math.Min (BlockSizeByte, rgbIV.Length));
-                       temp2 = new byte [BlockSizeByte];
-                       FeedBackByte = (algo.FeedbackSize >> 3);
-                       // transform buffers
-                       workBuff = new byte [BlockSizeByte];
-                       workout =  new byte [BlockSizeByte];
-               }
-
-               ~SymmetricTransform () 
-               {
-                       Dispose (false);
-               }
-
-               void IDisposable.Dispose () 
-               {
-                       Dispose (true);
-                       GC.SuppressFinalize (this);  // Finalization is now unnecessary
-               }
-
-               // MUST be overriden by classes using unmanaged ressources
-               // the override method must call the base class
-               protected virtual void Dispose (bool disposing) 
-               {
-                       if (!m_disposed) {
-                               if (disposing) {
-                                       // dispose managed object: zeroize and free
-                                       Array.Clear (temp, 0, BlockSizeByte);
-                                       temp = null;
-                                       Array.Clear (temp2, 0, BlockSizeByte);
-                                       temp2 = null;
-                               }
-                               m_disposed = true;
-                       }
-               }
-
-               public virtual bool CanTransformMultipleBlocks {
-                       get { return true; }
-               }
-
-               public virtual bool CanReuseTransform {
-                       get { return false; }
-               }
-
-               public virtual int InputBlockSize {
-                       get { return BlockSizeByte; }
-               }
-
-               public virtual int OutputBlockSize {
-                       get { return BlockSizeByte; }
-               }
-
-               // note: Each block MUST be BlockSizeValue in size!!!
-               // i.e. Any padding must be done before calling this method
-               protected virtual void Transform (byte[] input, byte[] output) 
-               {
-                       switch (algo.Mode) {
-                       case CipherMode.ECB:
-                               ECB (input, output);
-                               break;
-                       case CipherMode.CBC:
-                               CBC (input, output);
-                               break;
-                       case CipherMode.CFB:
-                               CFB (input, output);
-                               break;
-                       case CipherMode.OFB:
-                               OFB (input, output);
-                               break;
-                       case CipherMode.CTS:
-                               CTS (input, output);
-                               break;
-                       default:
-                               throw new NotImplementedException ("Unkown CipherMode" + algo.Mode.ToString ());
-                       }
-               }
-
-               // Electronic Code Book (ECB)
-               protected abstract void ECB (byte[] input, byte[] output); 
-
-               // Cipher-Block-Chaining (CBC)
-               protected virtual void CBC (byte[] input, byte[] output) 
-               {
-                       if (encrypt) {
-                               for (int i = 0; i < BlockSizeByte; i++)
-                                       temp[i] ^= input[i];
-                               ECB (temp, output);
-                               Buffer.BlockCopy (output, 0, temp, 0, BlockSizeByte);
-                       }
-                       else {
-                               Buffer.BlockCopy (input, 0, temp2, 0, BlockSizeByte);
-                               ECB (input, output);
-                               for (int i = 0; i < BlockSizeByte; i++)
-                                       output[i] ^= temp[i];
-                               Buffer.BlockCopy (temp2, 0, temp, 0, BlockSizeByte);
-                       }
-               }
-
-               // Cipher-FeedBack (CFB)
-               // this is how *CryptoServiceProvider implements CFB
-               // only AesCryptoServiceProvider support CFB > 8
-               // RijndaelManaged is incompatible with this implementation (and overrides it in it's own transform)
-               protected virtual void CFB (byte[] input, byte[] output) 
-               {
-                       if (encrypt) {
-                               for (int x = 0; x < BlockSizeByte; x++) {
-                                       // temp is first initialized with the IV
-                                       ECB (temp, temp2);
-                                       output [x] = (byte) (temp2 [0] ^ input [x]);
-                                       Buffer.BlockCopy (temp, 1, temp, 0, BlockSizeByte - 1);
-                                       Buffer.BlockCopy (output, x, temp, BlockSizeByte - 1, 1);
-                               }
-                       }
-                       else {
-                               for (int x = 0; x < BlockSizeByte; x++) {
-                                       // we do not really decrypt this data!
-                                       encrypt = true;
-                                       // temp is first initialized with the IV
-                                       ECB (temp, temp2);
-                                       encrypt = false;
-
-                                       Buffer.BlockCopy (temp, 1, temp, 0, BlockSizeByte - 1);
-                                       Buffer.BlockCopy (input, x, temp, BlockSizeByte - 1, 1);
-                                       output [x] = (byte) (temp2 [0] ^ input [x]);
-                               }
-                       }
-               }
-
-               // Output-FeedBack (OFB)
-               protected virtual void OFB (byte[] input, byte[] output) 
-               {
-                       throw new CryptographicException ("OFB isn't supported by the framework");
-               }
-
-               // Cipher Text Stealing (CTS)
-               protected virtual void CTS (byte[] input, byte[] output) 
-               {
-                       throw new CryptographicException ("CTS isn't supported by the framework");
-               }
-
-               private void CheckInput (byte[] inputBuffer, int inputOffset, int inputCount)
-               {
-                       if (inputBuffer == null)
-                               throw new ArgumentNullException ("inputBuffer");
-                       if (inputOffset < 0)
-                               throw new ArgumentOutOfRangeException ("inputOffset", "< 0");
-                       if (inputCount < 0)
-                               throw new ArgumentOutOfRangeException ("inputCount", "< 0");
-                       // ordered to avoid possible integer overflow
-                       if (inputOffset > inputBuffer.Length - inputCount)
-                               throw new ArgumentException ("inputBuffer", Locale.GetText ("Overflow"));
-               }
-
-               // this method may get called MANY times so this is the one to optimize
-               public virtual int TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset) 
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException ("Object is disposed");
-                       CheckInput (inputBuffer, inputOffset, inputCount);
-                       // check output parameters
-                       if (outputBuffer == null)
-                               throw new ArgumentNullException ("outputBuffer");
-                       if (outputOffset < 0)
-                               throw new ArgumentOutOfRangeException ("outputOffset", "< 0");
-
-                       // ordered to avoid possible integer overflow
-                       int len = outputBuffer.Length - inputCount - outputOffset;
-                       if (!encrypt && (0 > len) && ((padmode == PaddingMode.None) || (padmode == PaddingMode.Zeros))) {
-                               throw new CryptographicException ("outputBuffer", Locale.GetText ("Overflow"));
-                       } else if (KeepLastBlock) {
-                               if (0 > len + BlockSizeByte) {
-                                       throw new CryptographicException ("outputBuffer", Locale.GetText ("Overflow"));
-                               }
-                       } else {
-                               if (0 > len) {
-                                       // there's a special case if this is the end of the decryption process
-                                       if (inputBuffer.Length - inputOffset - outputBuffer.Length == BlockSizeByte)
-                                               inputCount = outputBuffer.Length - outputOffset;
-                                       else
-                                               throw new CryptographicException ("outputBuffer", Locale.GetText ("Overflow"));
-                               }
-                       }
-                       return InternalTransformBlock (inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset);
-               }
-
-               private bool KeepLastBlock {
-                       get {
-                               return ((!encrypt) && (padmode != PaddingMode.None) && (padmode != PaddingMode.Zeros));
-                       }
-               }
-
-               private int InternalTransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset) 
-               {
-                       int offs = inputOffset;
-                       int full;
-
-                       // this way we don't do a modulo every time we're called
-                       // and we may save a division
-                       if (inputCount != BlockSizeByte) {
-                               if ((inputCount % BlockSizeByte) != 0)
-                                       throw new CryptographicException ("Invalid input block size.");
-
-                               full = inputCount / BlockSizeByte;
-                       }
-                       else
-                               full = 1;
-
-                       if (KeepLastBlock)
-                               full--;
-
-                       int total = 0;
-
-                       if (lastBlock) {
-                               Transform (workBuff, workout);
-                               Buffer.BlockCopy (workout, 0, outputBuffer, outputOffset, BlockSizeByte);
-                               outputOffset += BlockSizeByte;
-                               total += BlockSizeByte;
-                               lastBlock = false;
-                       }
-
-                       for (int i = 0; i < full; i++) {
-                               Buffer.BlockCopy (inputBuffer, offs, workBuff, 0, BlockSizeByte);
-                               Transform (workBuff, workout);
-                               Buffer.BlockCopy (workout, 0, outputBuffer, outputOffset, BlockSizeByte);
-                               offs += BlockSizeByte;
-                               outputOffset += BlockSizeByte;
-                               total += BlockSizeByte;
-                       }
-
-                       if (KeepLastBlock) {
-                               Buffer.BlockCopy (inputBuffer, offs, workBuff, 0, BlockSizeByte);
-                               lastBlock = true;
-                       }
-
-                       return total;
-               }
-
-               RandomNumberGenerator _rng;
-
-               private void Random (byte[] buffer, int start, int length)
-               {
-                       if (_rng == null) {
-                               _rng = RandomNumberGenerator.Create ();
-                       }
-                       byte[] random = new byte [length];
-                       _rng.GetBytes (random);
-                       Buffer.BlockCopy (random, 0, buffer, start, length);
-               }
-
-               private void ThrowBadPaddingException (PaddingMode padding, int length, int position)
-               {
-                       string msg = String.Format (Locale.GetText ("Bad {0} padding."), padding);
-                       if (length >= 0)
-                               msg += String.Format (Locale.GetText (" Invalid length {0}."), length);
-                       if (position >= 0)
-                               msg += String.Format (Locale.GetText (" Error found at position {0}."), position);
-                       throw new CryptographicException (msg);
-               }
-
-               protected virtual byte[] FinalEncrypt (byte[] inputBuffer, int inputOffset, int inputCount) 
-               {
-                       // are there still full block to process ?
-                       int full = (inputCount / BlockSizeByte) * BlockSizeByte;
-                       int rem = inputCount - full;
-                       int total = full;
-
-                       switch (padmode) {
-                       case PaddingMode.ANSIX923:
-                       case PaddingMode.ISO10126:
-                       case PaddingMode.PKCS7:
-                               // we need to add an extra block for padding
-                               total += BlockSizeByte;
-                               break;
-                       default:
-                               if (inputCount == 0)
-                                       return new byte [0];
-                               if (rem != 0) {
-                                       if (padmode == PaddingMode.None)
-                                               throw new CryptographicException ("invalid block length");
-                                       // zero padding the input (by adding a block for the partial data)
-                                       byte[] paddedInput = new byte [full + BlockSizeByte];
-                                       Buffer.BlockCopy (inputBuffer, inputOffset, paddedInput, 0, inputCount);
-                                       inputBuffer = paddedInput;
-                                       inputOffset = 0;
-                                       inputCount = paddedInput.Length;
-                                       total = inputCount;
-                               }
-                               break;
-                       }
-
-                       byte[] res = new byte [total];
-                       int outputOffset = 0;
-
-                       // process all blocks except the last (final) block
-                       while (total > BlockSizeByte) {
-                               InternalTransformBlock (inputBuffer, inputOffset, BlockSizeByte, res, outputOffset);
-                               inputOffset += BlockSizeByte;
-                               outputOffset += BlockSizeByte;
-                               total -= BlockSizeByte;
-                       }
-
-                       // now we only have a single last block to encrypt
-                       byte padding = (byte) (BlockSizeByte - rem);
-                       switch (padmode) {
-                       case PaddingMode.ANSIX923:
-                               // XX 00 00 00 00 00 00 07 (zero + padding length)
-                               res [res.Length - 1] = padding;
-                               Buffer.BlockCopy (inputBuffer, inputOffset, res, full, rem);
-                               // the last padded block will be transformed in-place
-                               InternalTransformBlock (res, full, BlockSizeByte, res, full);
-                               break;
-                       case PaddingMode.ISO10126:
-                               // XX 3F 52 2A 81 AB F7 07 (random + padding length)
-                               Random (res, res.Length - padding, padding - 1);
-                               res [res.Length - 1] = padding;
-                               Buffer.BlockCopy (inputBuffer, inputOffset, res, full, rem);
-                               // the last padded block will be transformed in-place
-                               InternalTransformBlock (res, full, BlockSizeByte, res, full);
-                               break;
-                       case PaddingMode.PKCS7:
-                               // XX 07 07 07 07 07 07 07 (padding length)
-                               for (int i = res.Length; --i >= (res.Length - padding);) 
-                                       res [i] = padding;
-                               Buffer.BlockCopy (inputBuffer, inputOffset, res, full, rem);
-                               // the last padded block will be transformed in-place
-                               InternalTransformBlock (res, full, BlockSizeByte, res, full);
-                               break;
-                       default:
-                               InternalTransformBlock (inputBuffer, inputOffset, BlockSizeByte, res, outputOffset);
-                               break;
-                       }
-                       return res;
-               }
-
-               protected virtual byte[] FinalDecrypt (byte[] inputBuffer, int inputOffset, int inputCount) 
-               {
-                       int full = inputCount;
-                       int total = inputCount;
-                       if (lastBlock)
-                               total += BlockSizeByte;
-
-                       byte[] res = new byte [total];
-                       int outputOffset = 0;
-
-                       while (full > 0) {
-                               int len = InternalTransformBlock (inputBuffer, inputOffset, BlockSizeByte, res, outputOffset);
-                               inputOffset += BlockSizeByte;
-                               outputOffset += len;
-                               full -= BlockSizeByte;
-                       }
-
-                       if (lastBlock) {
-                               Transform (workBuff, workout);
-                               Buffer.BlockCopy (workout, 0, res, outputOffset, BlockSizeByte);
-                               outputOffset += BlockSizeByte;
-                               lastBlock = false;
-                       }
-
-                       // total may be 0 (e.g. PaddingMode.None)
-                       byte padding = ((total > 0) ? res [total - 1] : (byte) 0);
-                       switch (padmode) {
-                       case PaddingMode.ANSIX923:
-                               if ((padding == 0) || (padding > BlockSizeByte))
-                                       ThrowBadPaddingException (padmode, padding, -1);
-                               for (int i = padding - 1; i > 0; i--) {
-                                       if (res [total - 1 - i] != 0x00)
-                                               ThrowBadPaddingException (padmode, -1, i);
-                               }
-                               total -= padding;
-                               break;
-                       case PaddingMode.ISO10126:
-                               if ((padding == 0) || (padding > BlockSizeByte))
-                                       ThrowBadPaddingException (padmode, padding, -1);
-                               total -= padding;
-                               break;
-                       case PaddingMode.PKCS7:
-                               if ((padding == 0) || (padding > BlockSizeByte))
-                                       ThrowBadPaddingException (padmode, padding, -1);
-                               for (int i = padding - 1; i > 0; i--) {
-                                       if (res [total - 1 - i] != padding)
-                                               ThrowBadPaddingException (padmode, -1, i);
-                               }
-                               total -= padding;
-                               break;
-                       case PaddingMode.None:  // nothing to do - it's a multiple of block size
-                       case PaddingMode.Zeros: // nothing to do - user must unpad himself
-                               break;
-                       }
-
-                       // return output without padding
-                       if (total > 0) {
-                               byte[] data = new byte [total];
-                               Buffer.BlockCopy (res, 0, data, 0, total);
-                               // zeroize decrypted data (copy with padding)
-                               Array.Clear (res, 0, res.Length);
-                               return data;
-                       }
-                       else
-                               return new byte [0];
-               }
-
-               public virtual byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount) 
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException ("Object is disposed");
-                       CheckInput (inputBuffer, inputOffset, inputCount);
-
-                       if (encrypt)
-                               return FinalEncrypt (inputBuffer, inputOffset, inputCount);
-                       else
-                               return FinalDecrypt (inputBuffer, inputOffset, inputCount);
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509.Extensions/BasicConstraintsExtension.cs b/mcs/class/corlib/Mono.Security.X509.Extensions/BasicConstraintsExtension.cs
deleted file mode 100644 (file)
index 335fe92..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-//
-// BasicConstraintsExtension.cs: Handles X.509 BasicConstrains extensions.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Text;
-
-using Mono.Security;
-using Mono.Security.X509;
-
-namespace Mono.Security.X509.Extensions {
-
-       // References:
-       // 1.   RFC 3280: Internet X.509 Public Key Infrastructure, Section 4.2.1.10
-       //      http://www.ietf.org/rfc/rfc3280.txt
-
-       /* id-ce-basicConstraints OBJECT IDENTIFIER ::=  { id-ce 19 }
-        * 
-        * BasicConstraints ::= SEQUENCE {
-        *      cA                      BOOLEAN DEFAULT FALSE,
-        *      pathLenConstraint       INTEGER (0..MAX) OPTIONAL 
-        * }
-        */
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class BasicConstraintsExtension : X509Extension {
-
-               public const int NoPathLengthConstraint = -1;
-
-               private bool cA;
-               private int pathLenConstraint;
-
-               public BasicConstraintsExtension () : base () 
-               {
-                       extnOid = "2.5.29.19";
-                       pathLenConstraint = NoPathLengthConstraint;
-               }
-
-               public BasicConstraintsExtension (ASN1 asn1) : base (asn1) {}
-
-               public BasicConstraintsExtension (X509Extension extension) : base (extension) {}
-
-               protected override void Decode () 
-               {
-                       // default values
-                       cA = false;
-                       pathLenConstraint = NoPathLengthConstraint;
-
-                       ASN1 sequence = new ASN1 (extnValue.Value);
-                       if (sequence.Tag != 0x30)
-                               throw new ArgumentException ("Invalid BasicConstraints extension");
-                       int n = 0;
-                       ASN1 a = sequence [n++];
-                       if ((a != null) && (a.Tag == 0x01)) {
-                               cA = (a.Value [0] == 0xFF);
-                               a = sequence [n++];
-                       }
-                       if ((a != null) && (a.Tag == 0x02))
-                               pathLenConstraint = ASN1Convert.ToInt32 (a);
-               }
-
-               protected override void Encode () 
-               {
-                       ASN1 seq = new ASN1 (0x30);
-                       if (cA)
-                               seq.Add (new ASN1 (0x01, new byte[] { 0xFF }));
-                       // CAs MUST NOT include the pathLenConstraint field unless the cA boolean is asserted
-                       if (cA && (pathLenConstraint >= 0))
-                               seq.Add (ASN1Convert.FromInt32 (pathLenConstraint));
-
-                       extnValue = new ASN1 (0x04);
-                       extnValue.Add (seq);
-               }
-
-               public bool CertificateAuthority {
-                       get { return cA; }
-                       set { cA = value; }
-               }
-
-               public override string Name {
-                       get { return "Basic Constraints"; }
-               }
-
-               public int PathLenConstraint {
-                       get { return pathLenConstraint; }
-                       set {
-                               if (value < NoPathLengthConstraint) {
-                                       string msg = Locale.GetText ("PathLenConstraint must be positive or -1 for none ({0}).", value);
-                                       throw new ArgumentOutOfRangeException (msg);
-                               }
-                               pathLenConstraint = value;
-                       }
-               }
-
-               public override string ToString () 
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       sb.Append ("Subject Type=");
-                       sb.Append ((cA) ? "CA" : "End Entity");
-                       sb.Append (Environment.NewLine);
-                       sb.Append ("Path Length Constraint=");
-                       if (pathLenConstraint == NoPathLengthConstraint)
-                               sb.Append ("None");
-                       else
-                               sb.Append (pathLenConstraint.ToString (CultureInfo.InvariantCulture));
-                       sb.Append (Environment.NewLine);
-                       return sb.ToString ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509.Extensions/ChangeLog b/mcs/class/corlib/Mono.Security.X509.Extensions/ChangeLog
deleted file mode 100644 (file)
index e07075f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-2006-01-04  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BasicConstraintsExtension.cs: Keep in sync with Mono.Security.dll.
-       * KeyUsageExtension.cs: Keep in sync with Mono.Security.dll.
-
-2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BasicConstaintExtension.cs: New in corlib. In sync with 
-       Mono.Security.dll version.
-       * KeyUsageExtension.cs: New in corlib. In sync with Mono.Security.dll
-       version.
-       * SubjectKeyIdentifierExtension.cs: New in corlib. In sync with 
-       Mono.Security.dll version.
diff --git a/mcs/class/corlib/Mono.Security.X509.Extensions/KeyUsageExtension.cs b/mcs/class/corlib/Mono.Security.X509.Extensions/KeyUsageExtension.cs
deleted file mode 100644 (file)
index d0ad93c..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-//
-// KeyUsageExtension.cs: Handles X.509 KeyUsage extensions.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Text;
-
-using Mono.Security;
-using Mono.Security.X509;
-
-namespace Mono.Security.X509.Extensions {
-
-       /*
-        * id-ce-keyUsage OBJECT IDENTIFIER ::=  { id-ce 15 }
-        * 
-        * KeyUsage ::= BIT STRING {
-        *      digitalSignature        (0),
-        *      nonRepudiation          (1),
-        *      keyEncipherment         (2),
-        *      dataEncipherment        (3),
-        *      keyAgreement            (4),
-        *      keyCertSign             (5),
-        *      cRLSign                 (6),
-        *      encipherOnly            (7),
-        *      decipherOnly            (8) 
-        * }
-        */
-       // note: because nothing is simple in ASN.1 bits are reversed
-       [Flags]
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       enum KeyUsages {
-               digitalSignature = 0x80,
-                nonRepudiation = 0x40,
-               keyEncipherment = 0x20,
-               dataEncipherment = 0x10,
-               keyAgreement = 0x08,
-               keyCertSign = 0x04,
-               cRLSign = 0x02,
-               encipherOnly = 0x01,
-               decipherOnly = 0x800,
-               none = 0x0
-       }
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class KeyUsageExtension : X509Extension {
-
-               private int kubits;
-
-               public KeyUsageExtension (ASN1 asn1) : base (asn1) {}
-
-               public KeyUsageExtension (X509Extension extension) : base (extension) {}
-
-               public KeyUsageExtension () : base ()
-               {
-                       extnOid = "2.5.29.15";
-               }
-
-               protected override void Decode () 
-               {
-                       ASN1 bitString = new ASN1 (extnValue.Value);
-                       if (bitString.Tag != 0x03)
-                               throw new ArgumentException ("Invalid KeyUsage extension");
-                       int i = 1; // byte zero has the number of unused bits (ASN1's BITSTRING)
-                       while (i < bitString.Value.Length)
-                               kubits = (kubits << 8) + bitString.Value [i++];
-               }
-
-               protected override void Encode ()
-               {
-                       extnValue = new ASN1 (0x04);
-
-                       ushort ku = (ushort) kubits;
-                       byte unused = 16;
-                       if (ku > 0) {
-                               // count the unused bits
-                               for (unused = 15; unused > 0; unused--) {
-                                       if ((ku & 0x8000) == 0x8000)
-                                               break;
-                                       ku <<= 1;
-                               }
-
-                               if (kubits > Byte.MaxValue) {
-                                       unused -= 8;
-                                       extnValue.Add (new ASN1 (0x03, new byte[] { unused, (byte) kubits, (byte) (kubits >> 8) }));
-                               } else {
-                                       extnValue.Add (new ASN1 (0x03, new byte[] { unused, (byte) kubits }));
-                               }
-                       } else {
-                               // note: a BITSTRING with a 0 length is invalid (in ASN.1), so would an
-                               // empty OCTETSTRING (at the parent level) so we're encoding a 0
-                               extnValue.Add (new ASN1 (0x03, new byte[] { 7, 0 }));
-                       }
-               }
-
-               public KeyUsages KeyUsage {
-                       get { return (KeyUsages) kubits; }
-                       set { kubits = Convert.ToInt32 (value, CultureInfo.InvariantCulture); }
-               }
-
-               public override string Name {
-                       get { return "Key Usage"; }
-               }
-
-               public bool Support (KeyUsages usage) 
-               {
-                       int x = Convert.ToInt32 (usage, CultureInfo.InvariantCulture);
-                       return ((x & kubits) == x);
-               }
-
-               public override string ToString () 
-               {
-                       const string separator = " , ";
-                       StringBuilder sb = new StringBuilder ();
-                       if (Support (KeyUsages.digitalSignature))
-                               sb.Append ("Digital Signature");
-                       if (Support (KeyUsages.nonRepudiation)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("Non-Repudiation");
-                       }
-                       if (Support (KeyUsages.keyEncipherment)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("Key Encipherment");
-                       }
-                       if (Support (KeyUsages.dataEncipherment)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("Data Encipherment");
-                       }
-                       if (Support (KeyUsages.keyAgreement)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("Key Agreement");            
-                       }
-                       if (Support (KeyUsages.keyCertSign)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("Certificate Signing");
-                       }
-                       if (Support (KeyUsages.cRLSign)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("CRL Signing");
-                       }
-                       if (Support (KeyUsages.encipherOnly)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("Encipher Only ");   // ???
-                       }
-                       if (Support (KeyUsages.decipherOnly)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("Decipher Only");    // ???
-                       }
-                       sb.Append ("(");
-                       sb.Append (kubits.ToString ("X2", CultureInfo.InvariantCulture));
-                       sb.Append (")");
-                       sb.Append (Environment.NewLine);
-                       return sb.ToString ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs b/mcs/class/corlib/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs
deleted file mode 100644 (file)
index 878c3cc..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-//
-// SubjectKeyIdentifierExtension.cs: Handles X.509 SubjectKeyIdentifier extensions.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2004 Novell (http://www.novell.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Text;
-
-using Mono.Security;
-using Mono.Security.X509;
-
-namespace Mono.Security.X509.Extensions {
-
-       /*
-        * id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::=  { id-ce 14 }
-        * 
-        * SubjectKeyIdentifier ::= KeyIdentifier
-        * 
-        * KeyIdentifier ::= OCTET STRING
-        */
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class SubjectKeyIdentifierExtension : X509Extension {
-
-               private byte[] ski;
-
-               public SubjectKeyIdentifierExtension () : base () 
-               {
-                       extnOid = "2.5.29.14";
-               }
-
-               public SubjectKeyIdentifierExtension (ASN1 asn1) : base (asn1)
-               {
-               }
-
-               public SubjectKeyIdentifierExtension (X509Extension extension) : base (extension)
-               {
-               }
-
-               protected override void Decode () 
-               {
-                       ASN1 sequence = new ASN1 (extnValue.Value);
-                       if (sequence.Tag != 0x04)
-                               throw new ArgumentException ("Invalid SubjectKeyIdentifier extension");
-                       ski = sequence.Value;
-               }
-
-               public override string Name {
-                       get { return "Subject Key Identifier"; }
-               }
-
-               public byte[] Identifier {
-                       get { 
-                               if (ski == null)
-                                       return null;
-                               return (byte[]) ski.Clone (); 
-                       }
-               }
-
-               public override string ToString () 
-               {
-                       if (ski == null)
-                               return null;
-
-                       StringBuilder sb = new StringBuilder ();
-                       int x = 0;
-                       while (x < ski.Length) {
-                               sb.Append (ski [x].ToString ("X2", CultureInfo.InvariantCulture));
-                               if (x % 2 == 1)
-                                       sb.Append (" ");
-                               x++;
-                       }
-                       return sb.ToString ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/ChangeLog b/mcs/class/corlib/Mono.Security.X509/ChangeLog
deleted file mode 100644 (file)
index 39c5b85..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-2010-05-10  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509CertificateCollection.cs:
-       * X509Certificate.cs:
-       * X509Extension.cs:
-       * X509Extensions.cs:
-               Keep them public for Moonlight. Other types in other
-               assemblies needs it and the linker will eventually 
-               internalize everything.
-
-2010-03-16  Jb Evain  <jbevain@novell.com>
-
-       * X509Certificate.cs: use MOONLIGHT symbol to disambiguate
-       MonoTouch and Moonlight code.
-
-2009-04-30  Sebastien Pouliot  <sebastien@ximian.com> 
-
-       * X509Certificate.cs: Adapt to work with only [DSA|RSA]Managed when
-       built for NET_2_1, i.e. remove use of [DSA|RSA]CryptoServiceProvider
-
-2008-09-12  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PKCS12.cs, X509Store.cs: Use File.Create instead of OpenWrite to
-       make sure nothing else if left at the end of the file. Issue reported
-       by Christophe Chevalier.
-
-2008-06-03  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Accept text before the PEM certificate itself.
-       [Fix bug #396486]
-
-2008-01-10  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PKCS12.cs, X509Certificate.cs, X509Chain.cs, X509Extension.cs:
-       Synchronize/update with Mono.Security assembly
-
-2006-12-14  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X501Name.cs: Added support for (some cases of) T.61 strings, like
-       the latin-1 encoded accentued characters founds in some DN. Fix bug 
-       #77295.
-
-2006-12-11  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PKCS12.cs: Synchronize source with Mono.Security.dll
-       * X501Name.cs: Synchronize source with Mono.Security.dll
-       * X509Certificate.cs: Synchronize source with Mono.Security.dll
-       * X509CRL.cs: Synchronize source with Mono.Security.dll
-       * X509Store.cs: Synchronize source with Mono.Security.dll
-       * X509Stores.cs: Synchronize source with Mono.Security.dll
-       * X520Attributes.cs: Synchronize source with Mono.Security.dll
-
-2006-11-13  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Add support for PEM encoded (base64) x.509 
-       certificates (supported in 2.0).
-
-2006-11-08  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X501Name.cs: Refactor ToString method to allow most options available 
-       when using fx 2.0.
-       * X509Certificate.cs: Add methods to retrieve the Issuer and Subject
-       Distinguished Names in binary (ASN.1) form. Reverse (actually correct)
-       the text representation of Issuer and Subject for 2.0.
-       * X520Attributes.cs: Keep in sync with latest version from 
-       Mono.Security.dll assembly (required for X501Name update).
-
-2006-10-08  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PKCS12.cs: Synch implementation with Mono.Security.dll. Fix bug
-       #79617.
-
-2006-09-05  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Keep in sync with Mono.Security.dll (#79262).
-
-2006-01-04  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Extension.cs: Keep in sync with Mono.Security.dll.
-
-2005-11-18  Sebastien Pouliot  <sebastien@ximian.com> 
-
-       * X509Extension.cs: Keep in sync with Mono.Security.dll.
-
-2005-10-11  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Fixed bug #76407. ValidFrom and ValidUntil are
-       local date/time so IsCurrent most also use a local date/time.
-       * X509CRL.cs: Updated from Mono.Security.dll (same IsCurrent problem
-       and another previously fixed bug).
-
-2005-09-09  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Fixed version property (bug #76012). Added
-       ISerializable (for 2.0 so we're not breaking current compatibility).
-
-2005-04-27  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PKCS12.cs: New. Copied from Mono.Security.dll to allow support of
-       PKCS#12 files in X509Certificate for 2.0.
-       * X509Certificate.cs: Added new features required to support 2.0.
-
-2005-02-25  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X501Name.cs: In sync with Mono.Security.dll version.
-       * X520Attributes.cs: In sync with Mono.Security.dll version.
-
-2005-01-10  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Fixed NullReferenceException when asking for
-       data that wasn't a proper X.509 certificate.
-
-2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Fixed warning (l4) for unused variable.
-       * X509Extension.cs: Fixed warning (l4) for unused variable.
-
-2004-09-07  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Chain.cs: Merge from Mono.Security. Fix two bugs (chain 
-       construction from collection) and Reset-ing empty chain.
-
-2004-05-27  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Rethrow original exception when parsing X.509 
-       certificates (inside a CryptographicException) so people can see if 
-       their changes affects certificate decoding.
-
-2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X501Name.cs: In sync with Mono.Security.dll version.
-       * X509CRL.cs: New in corlib. In sync with Mono.Security.dll version.
-       * X509Certificate.cs: In sync with Mono.Security.dll version.
-       * X509CertificateCollection.cs: In sync with Mono.Security.dll version.
-       * X509Chain.cs: In sync with Mono.Security.dll version.
-       * X509ChainStatusFlag.cs: New in corlib. In sync with Mono.Security.dll
-       version.
-       * X509Extension.cs: In sync with Mono.Security.dll version.
-       * X509Extensions.cs: In sync with Mono.Security.dll version.
-       * X509Store.cs: New in corlib. In sync with Mono.Security.dll version.
-       * X509StoreManager.cs: New in corlib. In sync with Mono.Security.dll version.
-       * X509Stores.cs: New in corlib. In sync with Mono.Security.dll version.
-       * X520Attributes.cs: In sync with Mono.Security.dll version.
-
-2003-12-15  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * TrustAnchors.cs: Added a new trusted root, Thawte, for code signing.
-
-2003-10-12  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * ITrustAnchors.cs: Added from Mono.Security assembly to
-       support Authenticode in X509Certificate.CreateFromSignedFile
-       * TestAnchors.cs: Added from Mono.Security assembly to
-       support Authenticode in X509Certificate.CreateFromSignedFile
-       * TrustAnchors.cs: Added from Mono.Security assembly to
-       support Authenticode in X509Certificate.CreateFromSignedFile
-       * X509CertificateCollection.cs: Added from Mono.Security assembly to
-       support Authenticode in X509Certificate.CreateFromSignedFile
-       * X509Chain.cs: Added from Mono.Security assembly to
-       support Authenticode in X509Certificate.CreateFromSignedFile
-
-2003-05-16  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * X509Certificate.cs: Added support for "really" NULL key parameters
-       (i.e. not ASN.1 encoded NULL).
-
-2003-03-15  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * X501Name.cs: New. X.501 Distinguished Names stuff
-       * X509Certificate.cs: New. A more complete class to handle X.509
-       certificates.
-       * X509Extension.cs: New. A base class for all X.509 extensions.
-       * X509Extensions.cs: New. X509Extension collection.
-       * X520Attributes.cs: New. X.520 attributes (mainly for X501 names)
diff --git a/mcs/class/corlib/Mono.Security.X509/ITrustAnchors.cs b/mcs/class/corlib/Mono.Security.X509/ITrustAnchors.cs
deleted file mode 100644 (file)
index a73d272..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// ITrustAnchors.cs: Trust Anchors Interface
-//
-// Author:
-//     Sebastien Pouliot (spouliot@motus.com)
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       interface ITrustAnchors
-       {
-               X509CertificateCollection Anchors { get; }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/PKCS12.cs b/mcs/class/corlib/Mono.Security.X509/PKCS12.cs
deleted file mode 100644 (file)
index 848ce80..0000000
+++ /dev/null
@@ -1,1972 +0,0 @@
-//
-// PKCS12.cs: PKCS 12 - Personal Information Exchange Syntax
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004,2005,2006 Novell Inc. (http://www.novell.com)
-//
-// Key derivation translated from Bouncy Castle JCE (http://www.bouncycastle.org/)
-// See bouncycastle.txt for license.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.IO;
-using System.Security.Cryptography;
-using System.Text;
-
-using Mono.Security;
-using Mono.Security.Cryptography;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class PKCS5 {
-
-               public const string pbeWithMD2AndDESCBC = "1.2.840.113549.1.5.1";
-               public const string pbeWithMD5AndDESCBC = "1.2.840.113549.1.5.3";
-               public const string pbeWithMD2AndRC2CBC = "1.2.840.113549.1.5.4";
-               public const string pbeWithMD5AndRC2CBC = "1.2.840.113549.1.5.6";
-               public const string pbeWithSHA1AndDESCBC = "1.2.840.113549.1.5.10";
-               public const string pbeWithSHA1AndRC2CBC = "1.2.840.113549.1.5.11";
-
-               public PKCS5 () {}
-       }
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class PKCS9 {
-
-               public const string friendlyName = "1.2.840.113549.1.9.20";
-               public const string localKeyId = "1.2.840.113549.1.9.21";
-
-               public PKCS9 () {}
-       }
-
-
-       internal class SafeBag {
-               private string _bagOID;
-               private ASN1 _asn1;
-
-               public SafeBag(string bagOID, ASN1 asn1) {
-                       _bagOID = bagOID;
-                       _asn1 = asn1;
-               }
-
-               public string BagOID {
-                       get { return _bagOID; }
-               }
-
-               public ASN1 ASN1 {
-                       get { return _asn1; }
-               }
-       }
-
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class PKCS12 : ICloneable {
-
-               public const string pbeWithSHAAnd128BitRC4 = "1.2.840.113549.1.12.1.1";
-               public const string pbeWithSHAAnd40BitRC4 = "1.2.840.113549.1.12.1.2";
-               public const string pbeWithSHAAnd3KeyTripleDESCBC = "1.2.840.113549.1.12.1.3";
-               public const string pbeWithSHAAnd2KeyTripleDESCBC = "1.2.840.113549.1.12.1.4";
-               public const string pbeWithSHAAnd128BitRC2CBC = "1.2.840.113549.1.12.1.5";
-               public const string pbeWithSHAAnd40BitRC2CBC = "1.2.840.113549.1.12.1.6";
-
-               // bags
-               public const string keyBag  = "1.2.840.113549.1.12.10.1.1";
-               public const string pkcs8ShroudedKeyBag  = "1.2.840.113549.1.12.10.1.2";
-               public const string certBag  = "1.2.840.113549.1.12.10.1.3";
-               public const string crlBag  = "1.2.840.113549.1.12.10.1.4";
-               public const string secretBag  = "1.2.840.113549.1.12.10.1.5";
-               public const string safeContentsBag  = "1.2.840.113549.1.12.10.1.6";
-
-               // types
-               public const string x509Certificate = "1.2.840.113549.1.9.22.1";
-               public const string sdsiCertificate = "1.2.840.113549.1.9.22.2";
-               public const string x509Crl = "1.2.840.113549.1.9.23.1";
-
-               // Adapted from BouncyCastle PKCS12ParametersGenerator.java
-               public class DeriveBytes {
-
-                       public enum Purpose {
-                               Key,
-                               IV,
-                               MAC
-                       }
-
-                       static private byte[] keyDiversifier = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 };
-                       static private byte[] ivDiversifier  = { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 };
-                       static private byte[] macDiversifier = { 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 };
-
-                       private string _hashName;
-                       private int _iterations;
-                       private byte[] _password;
-                       private byte[] _salt;
-
-                       public DeriveBytes () {}
-
-                       public string HashName {
-                               get { return _hashName; } 
-                               set { _hashName = value; }
-                       }
-
-                       public int IterationCount {
-                               get { return _iterations; }
-                               set { _iterations = value; }
-                       }
-
-                       public byte[] Password {
-                               get { return (byte[]) _password.Clone (); }
-                               set { 
-                                       if (value == null)
-                                               _password = new byte [0];
-                                       else
-                                               _password = (byte[]) value.Clone ();
-                               }
-                       }
-
-                       public byte[] Salt {
-                               get { return (byte[]) _salt.Clone ();  }
-                               set {
-                                       if (value != null)
-                                               _salt = (byte[]) value.Clone ();
-                                       else
-                                               _salt = null;
-                               }
-                       }
-
-                       private void Adjust (byte[] a, int aOff, byte[] b) 
-                       {
-                               int x = (b[b.Length - 1] & 0xff) + (a [aOff + b.Length - 1] & 0xff) + 1;
-
-                               a [aOff + b.Length - 1] = (byte) x;
-                               x >>= 8;
-
-                               for (int i = b.Length - 2; i >= 0; i--) {
-                                       x += (b [i] & 0xff) + (a [aOff + i] & 0xff);
-                                       a [aOff + i] = (byte) x;
-                                       x >>= 8;
-                               }
-                       }
-
-                       private byte[] Derive (byte[] diversifier, int n) 
-                       {
-                               HashAlgorithm digest = HashAlgorithm.Create (_hashName);
-                               int u = (digest.HashSize >> 3); // div 8
-                               int v = 64;
-                               byte[] dKey = new byte [n];
-
-                               byte[] S;
-                               if ((_salt != null) && (_salt.Length != 0)) {
-                                       S = new byte[v * ((_salt.Length + v - 1) / v)];
-
-                                       for (int i = 0; i != S.Length; i++) {
-                                               S[i] = _salt[i % _salt.Length];
-                                       }
-                               }
-                               else {
-                                       S = new byte[0];
-                               }
-
-                               byte[] P;
-                               if ((_password != null) && (_password.Length != 0)) {
-                                       P = new byte[v * ((_password.Length + v - 1) / v)];
-
-                                       for (int i = 0; i != P.Length; i++) {
-                                               P[i] = _password[i % _password.Length];
-                                       }
-                               }
-                               else {
-                                       P = new byte[0];
-                               }
-
-                               byte[] I = new byte [S.Length + P.Length];
-
-                               Buffer.BlockCopy (S, 0, I, 0, S.Length);
-                               Buffer.BlockCopy (P, 0, I, S.Length, P.Length);
-
-                               byte[]  B = new byte[v];
-                               int     c = (n + u - 1) / u;
-
-                               for (int i = 1; i <= c; i++) {
-                                       digest.TransformBlock (diversifier, 0, diversifier.Length, diversifier, 0);
-                                       digest.TransformFinalBlock (I, 0, I.Length);
-                                       byte[] A = digest.Hash;
-                                       digest.Initialize ();
-                                       for (int j = 1; j != _iterations; j++) {
-                                               A = digest.ComputeHash (A, 0, A.Length);
-                                       }
-
-                                       for (int j = 0; j != B.Length; j++) {
-                                               B [j] = A [j % A.Length];
-                                       }
-
-                                       for (int j = 0; j != I.Length / v; j++) {
-                                               Adjust (I, j * v, B);
-                                       }
-
-                                       if (i == c) {
-                                               Buffer.BlockCopy(A, 0, dKey, (i - 1) * u, dKey.Length - ((i - 1) * u));
-                                       }
-                                       else {
-                                               Buffer.BlockCopy(A, 0, dKey, (i - 1) * u, A.Length);
-                                       }
-                               }
-
-                               return dKey;
-                       }
-
-                       public byte[] DeriveKey (int size) 
-                       {
-                               return Derive (keyDiversifier, size);
-                       }
-
-                       public byte[] DeriveIV (int size) 
-                       {
-                               return Derive (ivDiversifier, size);
-                       }
-
-                       public byte[] DeriveMAC (int size) 
-                       {
-                               return Derive (macDiversifier, size);
-                       }
-               }
-
-               const int recommendedIterationCount = 2000;
-
-               //private int _version;
-               private byte[] _password;
-               private ArrayList _keyBags;
-               private ArrayList _secretBags;
-               private X509CertificateCollection _certs;
-               private bool _keyBagsChanged;
-               private bool _secretBagsChanged;
-               private bool _certsChanged;
-               private int _iterations;
-               private ArrayList _safeBags;
-               private RandomNumberGenerator _rng;
-
-               // constructors
-
-               public PKCS12 () 
-               {
-                       _iterations = recommendedIterationCount;
-                       _keyBags = new ArrayList ();
-                       _secretBags = new ArrayList ();
-                       _certs = new X509CertificateCollection ();
-                       _keyBagsChanged = false;
-                       _secretBagsChanged = false;
-                       _certsChanged = false;
-                       _safeBags = new ArrayList ();
-               }
-
-               public PKCS12 (byte[] data)
-                       : this ()
-               {
-                       Password = null;
-                       Decode (data);
-               }
-
-               /*
-                * PFX ::= SEQUENCE {
-                *      version INTEGER {v3(3)}(v3,...),
-                *      authSafe ContentInfo,
-                *      macData MacData OPTIONAL
-                * }
-                * 
-                * MacData ::= SEQUENCE {
-                *      mac DigestInfo,
-                *      macSalt OCTET STRING,
-                *      iterations INTEGER DEFAULT 1
-                *      -- Note: The default is for historical reasons and its use is deprecated. A higher
-                *      -- value, like 1024 is recommended.
-                * }
-                * 
-                * SafeContents ::= SEQUENCE OF SafeBag
-                * 
-                * SafeBag ::= SEQUENCE {
-                *      bagId BAG-TYPE.&id ({PKCS12BagSet}),
-                *      bagValue [0] EXPLICIT BAG-TYPE.&Type({PKCS12BagSet}{@bagId}),
-                *      bagAttributes SET OF PKCS12Attribute OPTIONAL
-                * }
-                */
-               public PKCS12 (byte[] data, string password)
-                       : this ()
-               {
-                       Password = password;
-                       Decode (data);
-               }
-
-               public PKCS12 (byte[] data, byte[] password)
-                       : this ()
-               {
-                       _password = password;
-                       Decode (data);
-               }
-
-               private void Decode (byte[] data)
-               {
-                       ASN1 pfx = new ASN1 (data);
-                       if (pfx.Tag != 0x30)
-                               throw new ArgumentException ("invalid data");
-                       
-                       ASN1 version = pfx [0];
-                       if (version.Tag != 0x02)
-                               throw new ArgumentException ("invalid PFX version");
-                       //_version = version.Value [0];
-
-                       PKCS7.ContentInfo authSafe = new PKCS7.ContentInfo (pfx [1]);
-                       if (authSafe.ContentType != PKCS7.Oid.data)
-                               throw new ArgumentException ("invalid authenticated safe");
-
-                       // now that we know it's a PKCS#12 file, check the (optional) MAC
-                       // before decoding anything else in the file
-                       if (pfx.Count > 2) {
-                               ASN1 macData = pfx [2];
-                               if (macData.Tag != 0x30)
-                                       throw new ArgumentException ("invalid MAC");
-                               
-                               ASN1 mac = macData [0];
-                               if (mac.Tag != 0x30)
-                                       throw new ArgumentException ("invalid MAC");
-                               ASN1 macAlgorithm = mac [0];
-                               string macOid = ASN1Convert.ToOid (macAlgorithm [0]);
-                               if (macOid != "1.3.14.3.2.26")
-                                       throw new ArgumentException ("unsupported HMAC");
-                               byte[] macValue = mac [1].Value;
-
-                               ASN1 macSalt = macData [1];
-                               if (macSalt.Tag != 0x04)
-                                       throw new ArgumentException ("missing MAC salt");
-
-                               _iterations = 1; // default value
-                               if (macData.Count > 2) {
-                                       ASN1 iters = macData [2];
-                                       if (iters.Tag != 0x02)
-                                               throw new ArgumentException ("invalid MAC iteration");
-                                       _iterations = ASN1Convert.ToInt32 (iters);
-                               }
-
-                               byte[] authSafeData = authSafe.Content [0].Value;
-                               byte[] calculatedMac = MAC (_password, macSalt.Value, _iterations, authSafeData);
-                               if (!Compare (macValue, calculatedMac))
-                                       throw new CryptographicException ("Invalid MAC - file may have been tampered!");
-                       }
-
-                       // we now returns to our original presentation - PFX
-                       ASN1 authenticatedSafe = new ASN1 (authSafe.Content [0].Value);
-                       for (int i=0; i < authenticatedSafe.Count; i++) {
-                               PKCS7.ContentInfo ci = new PKCS7.ContentInfo (authenticatedSafe [i]);
-                               switch (ci.ContentType) {
-                                       case PKCS7.Oid.data:
-                                               // unencrypted (by PKCS#12)
-                                               ASN1 safeContents = new ASN1 (ci.Content [0].Value);
-                                               for (int j=0; j < safeContents.Count; j++) {
-                                                       ASN1 safeBag = safeContents [j];
-                                                       ReadSafeBag (safeBag);
-                                               }
-                                               break;
-                                       case PKCS7.Oid.encryptedData:
-                                               // password encrypted
-                                               PKCS7.EncryptedData ed = new PKCS7.EncryptedData (ci.Content [0]);
-                                               ASN1 decrypted = new ASN1 (Decrypt (ed));
-                                               for (int j=0; j < decrypted.Count; j++) {
-                                                       ASN1 safeBag = decrypted [j];
-                                                       ReadSafeBag (safeBag);
-                                               }
-                                               break;
-                                       case PKCS7.Oid.envelopedData:
-                                               // public key encrypted
-                                               throw new NotImplementedException ("public key encrypted");
-                                       default:
-                                               throw new ArgumentException ("unknown authenticatedSafe");
-                               }
-                       }
-               }
-
-               ~PKCS12 () 
-               {
-                       if (_password != null) {
-                               Array.Clear (_password, 0, _password.Length);
-                       }
-                       _password = null;
-               }
-
-               // properties
-
-               public string Password {
-                       set {
-                               if (value != null) {
-                                       if (value.Length > 0) {
-                                               int size = value.Length;
-                                               int nul = 0;
-                                               if (size < MaximumPasswordLength) {
-                                                       // if not present, add space for a NULL (0x00) character
-                                                       if (value[size - 1] != 0x00)
-                                                               nul = 1;
-                                               } else {
-                                                       size = MaximumPasswordLength;
-                                               }
-                                               _password = new byte[(size + nul) << 1]; // double for unicode
-                                               Encoding.BigEndianUnicode.GetBytes (value, 0, size, _password, 0);
-                                       } else {
-                                               // double-byte (Unicode) NULL (0x00) - see bug #79617
-                                               _password = new byte[2];
-                                       }
-                               } else {
-                                       // no password
-                                       _password = null;
-                               }
-                       }
-               }
-
-               public int IterationCount {
-                       get { return _iterations; }
-                       set { _iterations = value; }
-               }
-
-               public ArrayList Keys {
-                       get {
-                               if (_keyBagsChanged) {
-                                       _keyBags.Clear ();
-                                       foreach (SafeBag sb in _safeBags) {
-                                               if (sb.BagOID.Equals (keyBag)) {
-                                                       ASN1 safeBag = sb.ASN1;
-                                                       ASN1 bagValue = safeBag [1];
-                                                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (bagValue.Value);
-                                                       byte[] privateKey = pki.PrivateKey;
-                                                       switch (privateKey [0]) {
-                                                       case 0x02:
-                                                               DSAParameters p = new DSAParameters (); // FIXME
-                                                               _keyBags.Add (PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p));
-                                                               break;
-                                                       case 0x30:
-                                                               _keyBags.Add (PKCS8.PrivateKeyInfo.DecodeRSA (privateKey));
-                                                               break;
-                                                       default:
-                                                               break;
-                                                       }
-                                                       Array.Clear (privateKey, 0, privateKey.Length);
-
-                                               } else if (sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                                       ASN1 safeBag = sb.ASN1;
-                                                       ASN1 bagValue = safeBag [1];
-                                                       PKCS8.EncryptedPrivateKeyInfo epki = new PKCS8.EncryptedPrivateKeyInfo (bagValue.Value);
-                                                       byte[] decrypted = Decrypt (epki.Algorithm, epki.Salt, epki.IterationCount, epki.EncryptedData);
-                                                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (decrypted);
-                                                       byte[] privateKey = pki.PrivateKey;
-                                                       switch (privateKey [0]) {
-                                                       case 0x02:
-                                                               DSAParameters p = new DSAParameters (); // FIXME
-                                                               _keyBags.Add (PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p));
-                                                               break;
-                                                       case 0x30:
-                                                               _keyBags.Add (PKCS8.PrivateKeyInfo.DecodeRSA (privateKey));
-                                                               break;
-                                                       default:
-                                                               break;
-                                                       }
-                                                       Array.Clear (privateKey, 0, privateKey.Length);
-                                                       Array.Clear (decrypted, 0, decrypted.Length);
-                                               }
-                                       }
-                                       _keyBagsChanged = false;
-                               }
-                               return ArrayList.ReadOnly(_keyBags);
-                       }
-               }
-
-               public ArrayList Secrets {
-                       get {
-                               if (_secretBagsChanged) {
-                                       _secretBags.Clear ();
-                                       foreach (SafeBag sb in _safeBags) {
-                                               if (sb.BagOID.Equals (secretBag)) {
-                                                       ASN1 safeBag = sb.ASN1;
-                                                       ASN1 bagValue = safeBag [1];
-                                                       byte[] secret = bagValue.Value;
-                                                       _secretBags.Add(secret);
-                                               }
-                                       }
-                                       _secretBagsChanged = false;
-                               }
-                               return ArrayList.ReadOnly(_secretBags);
-                       }
-               }
-
-               public X509CertificateCollection Certificates {
-                       get {
-                               if (_certsChanged) {
-                                       _certs.Clear ();
-                                       foreach (SafeBag sb in _safeBags) {
-                                               if (sb.BagOID.Equals (certBag)) {
-                                                       ASN1 safeBag = sb.ASN1;
-                                                       ASN1 bagValue = safeBag [1];
-                                                       PKCS7.ContentInfo cert = new PKCS7.ContentInfo (bagValue.Value);
-                                                       _certs.Add (new X509Certificate (cert.Content [0].Value));
-                                               }
-                                       }
-                                       _certsChanged = false;
-                               }
-                               return _certs;
-                       }
-               }
-
-               internal RandomNumberGenerator RNG {
-                       get {
-                               if (_rng == null)
-                                       _rng = RandomNumberGenerator.Create ();
-                               return _rng;
-                       }
-               }
-
-               // private methods
-
-               private bool Compare (byte[] expected, byte[] actual) 
-               {
-                       bool compare = false;
-                       if (expected.Length == actual.Length) {
-                               for (int i=0; i < expected.Length; i++) {
-                                       if (expected [i] != actual [i])
-                                               return false;
-                               }
-                               compare = true;
-                       }
-                       return compare;
-               }
-
-               private SymmetricAlgorithm GetSymmetricAlgorithm (string algorithmOid, byte[] salt, int iterationCount)
-               {
-                       string algorithm = null;
-                       int keyLength = 8;      // 64 bits (default)
-                       int ivLength = 8;       // 64 bits (default)
-
-                       PKCS12.DeriveBytes pd = new PKCS12.DeriveBytes ();
-                       pd.Password = _password; 
-                       pd.Salt = salt;
-                       pd.IterationCount = iterationCount;
-
-                       switch (algorithmOid) {
-                               case PKCS5.pbeWithMD2AndDESCBC:                 // no unit test available
-                                       pd.HashName = "MD2";
-                                       algorithm = "DES";
-                                       break;
-                               case PKCS5.pbeWithMD5AndDESCBC:                 // no unit test available
-                                       pd.HashName = "MD5";
-                                       algorithm = "DES";
-                                       break;
-                               case PKCS5.pbeWithMD2AndRC2CBC:                 // no unit test available
-                                       // TODO - RC2-CBC-Parameter (PKCS5)
-                                       // if missing default to 32 bits !!!
-                                       pd.HashName = "MD2";
-                                       algorithm = "RC2";
-                                       keyLength = 4;          // default
-                                       break;
-                               case PKCS5.pbeWithMD5AndRC2CBC:                 // no unit test available
-                                       // TODO - RC2-CBC-Parameter (PKCS5)
-                                       // if missing default to 32 bits !!!
-                                       pd.HashName = "MD5";
-                                       algorithm = "RC2";
-                                       keyLength = 4;          // default
-                                       break;
-                               case PKCS5.pbeWithSHA1AndDESCBC:                // no unit test available
-                                       pd.HashName = "SHA1";
-                                       algorithm = "DES";
-                                       break;
-                               case PKCS5.pbeWithSHA1AndRC2CBC:                // no unit test available
-                                       // TODO - RC2-CBC-Parameter (PKCS5)
-                                       // if missing default to 32 bits !!!
-                                       pd.HashName = "SHA1";
-                                       algorithm = "RC2";
-                                       keyLength = 4;          // default
-                                       break;
-                               case PKCS12.pbeWithSHAAnd128BitRC4:             // no unit test available
-                                       pd.HashName = "SHA1";
-                                       algorithm = "RC4";
-                                       keyLength = 16;
-                                       ivLength = 0;           // N/A
-                                       break;
-                               case PKCS12.pbeWithSHAAnd40BitRC4:              // no unit test available
-                                       pd.HashName = "SHA1";
-                                       algorithm = "RC4";
-                                       keyLength = 5;
-                                       ivLength = 0;           // N/A
-                                       break;
-                               case PKCS12.pbeWithSHAAnd3KeyTripleDESCBC: 
-                                       pd.HashName = "SHA1";
-                                       algorithm = "TripleDES";
-                                       keyLength = 24;
-                                       break;
-                               case PKCS12.pbeWithSHAAnd2KeyTripleDESCBC:      // no unit test available
-                                       pd.HashName = "SHA1";
-                                       algorithm = "TripleDES";
-                                       keyLength = 16;
-                                       break;
-                               case PKCS12.pbeWithSHAAnd128BitRC2CBC:          // no unit test available
-                                       pd.HashName = "SHA1";
-                                       algorithm = "RC2";
-                                       keyLength = 16;
-                                       break;
-                               case PKCS12.pbeWithSHAAnd40BitRC2CBC: 
-                                       pd.HashName = "SHA1";
-                                       algorithm = "RC2";
-                                       keyLength = 5;
-                                       break;
-                               default:
-                                       throw new NotSupportedException ("unknown oid " + algorithm);
-                       }
-
-                       SymmetricAlgorithm sa = SymmetricAlgorithm.Create (algorithm);
-                       sa.Key = pd.DeriveKey (keyLength);
-                       // IV required only for block ciphers (not stream ciphers)
-                       if (ivLength > 0) {
-                               sa.IV = pd.DeriveIV (ivLength);
-                               sa.Mode = CipherMode.CBC;
-                       }
-                       return sa;
-               }
-
-               public byte[] Decrypt (string algorithmOid, byte[] salt, int iterationCount, byte[] encryptedData) 
-               {
-                       SymmetricAlgorithm sa = null;
-                       byte[] result = null;
-                       try {
-                               sa = GetSymmetricAlgorithm (algorithmOid, salt, iterationCount);
-                               ICryptoTransform ct = sa.CreateDecryptor ();
-                               result = ct.TransformFinalBlock (encryptedData, 0, encryptedData.Length);
-                       }
-                       finally {
-                               if (sa != null)
-                                       sa.Clear ();
-                       }
-                       return result;
-               }
-
-               public byte[] Decrypt (PKCS7.EncryptedData ed)
-               {
-                       return Decrypt (ed.EncryptionAlgorithm.ContentType, 
-                               ed.EncryptionAlgorithm.Content [0].Value, 
-                               ASN1Convert.ToInt32 (ed.EncryptionAlgorithm.Content [1]),
-                               ed.EncryptedContent);
-               }
-
-               public byte[] Encrypt (string algorithmOid, byte[] salt, int iterationCount, byte[] data) 
-               {
-                       byte[] result = null;
-                       using (SymmetricAlgorithm sa = GetSymmetricAlgorithm (algorithmOid, salt, iterationCount)) {
-                               ICryptoTransform ct = sa.CreateEncryptor ();
-                               result = ct.TransformFinalBlock (data, 0, data.Length);
-                       }
-                       return result;
-               }
-
-               private DSAParameters GetExistingParameters (out bool found)
-               {
-                       foreach (X509Certificate cert in Certificates) {
-                               // FIXME: that won't work if parts of the parameters are missing
-                               if (cert.KeyAlgorithmParameters != null) {
-                                       DSA dsa = cert.DSA;
-                                       if (dsa != null) {
-                                               found = true;
-                                               return dsa.ExportParameters (false);
-                                       }
-                               }
-                       }
-                       found = false;
-                       return new DSAParameters ();
-               }
-
-               private void AddPrivateKey (PKCS8.PrivateKeyInfo pki) 
-               {
-                       byte[] privateKey = pki.PrivateKey;
-                       switch (privateKey [0]) {
-                               case 0x02:
-                                       bool found;
-                                       DSAParameters p = GetExistingParameters (out found);
-                                       if (found) {
-                                               _keyBags.Add (PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p));
-                                       }
-                                       break;
-                               case 0x30:
-                                       _keyBags.Add (PKCS8.PrivateKeyInfo.DecodeRSA (privateKey));
-                                       break;
-                               default:
-                                       Array.Clear (privateKey, 0, privateKey.Length);
-                                       throw new CryptographicException ("Unknown private key format");
-                       }
-                       Array.Clear (privateKey, 0, privateKey.Length);
-               }
-
-               private void ReadSafeBag (ASN1 safeBag) 
-               {
-                       if (safeBag.Tag != 0x30)
-                               throw new ArgumentException ("invalid safeBag");
-
-                       ASN1 bagId = safeBag [0];
-                       if (bagId.Tag != 0x06)
-                               throw new ArgumentException ("invalid safeBag id");
-
-                       ASN1 bagValue = safeBag [1];
-                       string oid = ASN1Convert.ToOid (bagId);
-                       switch (oid) {
-                               case keyBag:
-                                       // NEED UNIT TEST
-                                       AddPrivateKey (new PKCS8.PrivateKeyInfo (bagValue.Value));
-                                       break;
-                               case pkcs8ShroudedKeyBag:
-                                       PKCS8.EncryptedPrivateKeyInfo epki = new PKCS8.EncryptedPrivateKeyInfo (bagValue.Value);
-                                       byte[] decrypted = Decrypt (epki.Algorithm, epki.Salt, epki.IterationCount, epki.EncryptedData);
-                                       AddPrivateKey (new PKCS8.PrivateKeyInfo (decrypted));
-                                       Array.Clear (decrypted, 0, decrypted.Length);
-                                       break;
-                               case certBag:
-                                       PKCS7.ContentInfo cert = new PKCS7.ContentInfo (bagValue.Value);
-                                       if (cert.ContentType != x509Certificate)
-                                               throw new NotSupportedException ("unsupport certificate type");
-                                       X509Certificate x509 = new X509Certificate (cert.Content [0].Value);
-                                       _certs.Add (x509);
-                                       break;
-                               case crlBag:
-                                       // TODO
-                                       break;
-                               case secretBag: 
-                                       byte[] secret = bagValue.Value;
-                                       _secretBags.Add(secret);
-                                       break;
-                               case safeContentsBag:
-                                       // TODO - ? recurse ?
-                                       break;
-                               default:
-                                       throw new ArgumentException ("unknown safeBag oid");
-                       }
-
-                       if (safeBag.Count > 2) {
-                               ASN1 bagAttributes = safeBag [2];
-                               if (bagAttributes.Tag != 0x31)
-                                       throw new ArgumentException ("invalid safeBag attributes id");
-
-                               for (int i = 0; i < bagAttributes.Count; i++) {
-                                       ASN1 pkcs12Attribute = bagAttributes[i];
-                                               
-                                       if (pkcs12Attribute.Tag != 0x30)
-                                               throw new ArgumentException ("invalid PKCS12 attributes id");
-
-                                       ASN1 attrId = pkcs12Attribute [0];
-                                       if (attrId.Tag != 0x06)
-                                               throw new ArgumentException ("invalid attribute id");
-                                               
-                                       string attrOid = ASN1Convert.ToOid (attrId);
-
-                                       ASN1 attrValues = pkcs12Attribute[1];
-                                       for (int j = 0; j < attrValues.Count; j++) {
-                                               ASN1 attrValue = attrValues[j];
-
-                                               switch (attrOid) {
-                                               case PKCS9.friendlyName:
-                                                       if (attrValue.Tag != 0x1e)
-                                                               throw new ArgumentException ("invalid attribute value id");
-                                                       break;
-                                               case PKCS9.localKeyId:
-                                                       if (attrValue.Tag != 0x04)
-                                                               throw new ArgumentException ("invalid attribute value id");
-                                                       break;
-                                               default:
-                                                       // Unknown OID -- don't check Tag
-                                                       break;
-                                               }
-                                       }
-                               }
-                       }
-
-                       _safeBags.Add (new SafeBag(oid, safeBag));
-               }
-
-               private ASN1 Pkcs8ShroudedKeyBagSafeBag (AsymmetricAlgorithm aa, IDictionary attributes) 
-               {
-                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo ();
-                       if (aa is RSA) {
-                               pki.Algorithm = "1.2.840.113549.1.1.1";
-                               pki.PrivateKey = PKCS8.PrivateKeyInfo.Encode ((RSA)aa);
-                       }
-                       else if (aa is DSA) {
-                               pki.Algorithm = null;
-                               pki.PrivateKey = PKCS8.PrivateKeyInfo.Encode ((DSA)aa);
-                       }
-                       else
-                               throw new CryptographicException ("Unknown asymmetric algorithm {0}", aa.ToString ());
-
-                       PKCS8.EncryptedPrivateKeyInfo epki = new PKCS8.EncryptedPrivateKeyInfo ();
-                       epki.Algorithm = pbeWithSHAAnd3KeyTripleDESCBC;
-                       epki.IterationCount = _iterations;
-                       epki.EncryptedData = Encrypt (pbeWithSHAAnd3KeyTripleDESCBC, epki.Salt, _iterations, pki.GetBytes ());
-
-                       ASN1 safeBag = new ASN1 (0x30);
-                       safeBag.Add (ASN1Convert.FromOid (pkcs8ShroudedKeyBag));
-                       ASN1 bagValue = new ASN1 (0xA0);
-                       bagValue.Add (new ASN1 (epki.GetBytes ()));
-                       safeBag.Add (bagValue);
-
-                       if (attributes != null) {
-                               ASN1 bagAttributes = new ASN1 (0x31);
-                               IDictionaryEnumerator de = attributes.GetEnumerator ();
-
-                               while (de.MoveNext ()) {
-                                       string oid = (string)de.Key;
-                                       switch (oid) {
-                                       case PKCS9.friendlyName:
-                                               ArrayList names = (ArrayList)de.Value;
-                                               if (names.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.friendlyName));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] name in names) {
-                                                               ASN1 attrValue = new ASN1 (0x1e);
-                                                               attrValue.Value = name;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       case PKCS9.localKeyId:
-                                               ArrayList keys = (ArrayList)de.Value;
-                                               if (keys.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.localKeyId));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] key in keys) {
-                                                               ASN1 attrValue = new ASN1 (0x04);
-                                                               attrValue.Value = key;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       default:
-                                               break;
-                                       }
-                               }
-
-                               if (bagAttributes.Count > 0) {
-                                       safeBag.Add (bagAttributes);
-                               }
-                       }
-
-                       return safeBag;
-               }
-
-               private ASN1 KeyBagSafeBag (AsymmetricAlgorithm aa, IDictionary attributes) 
-               {
-                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo ();
-                       if (aa is RSA) {
-                               pki.Algorithm = "1.2.840.113549.1.1.1";
-                               pki.PrivateKey = PKCS8.PrivateKeyInfo.Encode ((RSA)aa);
-                       }
-                       else if (aa is DSA) {
-                               pki.Algorithm = null;
-                               pki.PrivateKey = PKCS8.PrivateKeyInfo.Encode ((DSA)aa);
-                       }
-                       else
-                               throw new CryptographicException ("Unknown asymmetric algorithm {0}", aa.ToString ());
-
-                       ASN1 safeBag = new ASN1 (0x30);
-                       safeBag.Add (ASN1Convert.FromOid (keyBag));
-                       ASN1 bagValue = new ASN1 (0xA0);
-                       bagValue.Add (new ASN1 (pki.GetBytes ()));
-                       safeBag.Add (bagValue);
-
-                       if (attributes != null) {
-                               ASN1 bagAttributes = new ASN1 (0x31);
-                               IDictionaryEnumerator de = attributes.GetEnumerator ();
-
-                               while (de.MoveNext ()) {
-                                       string oid = (string)de.Key;
-                                       switch (oid) {
-                                       case PKCS9.friendlyName:
-                                               ArrayList names = (ArrayList)de.Value;
-                                               if (names.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.friendlyName));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] name in names) {
-                                                               ASN1 attrValue = new ASN1 (0x1e);
-                                                               attrValue.Value = name;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       case PKCS9.localKeyId:
-                                               ArrayList keys = (ArrayList)de.Value;
-                                               if (keys.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.localKeyId));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] key in keys) {
-                                                               ASN1 attrValue = new ASN1 (0x04);
-                                                               attrValue.Value = key;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       default:
-                                               break;
-                                       }
-                               }
-
-                               if (bagAttributes.Count > 0) {
-                                       safeBag.Add (bagAttributes);
-                               }
-                       }
-
-                       return safeBag;
-               }
-
-               private ASN1 SecretBagSafeBag (byte[] secret, IDictionary attributes) 
-               {
-                       ASN1 safeBag = new ASN1 (0x30);
-                       safeBag.Add (ASN1Convert.FromOid (secretBag));
-                       ASN1 bagValue = new ASN1 (0x80, secret);
-                       safeBag.Add (bagValue);
-
-                       if (attributes != null) {
-                               ASN1 bagAttributes = new ASN1 (0x31);
-                               IDictionaryEnumerator de = attributes.GetEnumerator ();
-
-                               while (de.MoveNext ()) {
-                                       string oid = (string)de.Key;
-                                       switch (oid) {
-                                       case PKCS9.friendlyName:
-                                               ArrayList names = (ArrayList)de.Value;
-                                               if (names.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.friendlyName));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] name in names) {
-                                                               ASN1 attrValue = new ASN1 (0x1e);
-                                                               attrValue.Value = name;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       case PKCS9.localKeyId:
-                                               ArrayList keys = (ArrayList)de.Value;
-                                               if (keys.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.localKeyId));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] key in keys) {
-                                                               ASN1 attrValue = new ASN1 (0x04);
-                                                               attrValue.Value = key;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       default:
-                                               break;
-                                       }
-                               }
-
-                               if (bagAttributes.Count > 0) {
-                                       safeBag.Add (bagAttributes);
-                               }
-                       }
-
-                       return safeBag;
-               }
-
-               private ASN1 CertificateSafeBag (X509Certificate x509, IDictionary attributes) 
-               {
-                       ASN1 encapsulatedCertificate = new ASN1 (0x04, x509.RawData);
-
-                       PKCS7.ContentInfo ci = new PKCS7.ContentInfo ();
-                       ci.ContentType = x509Certificate;
-                       ci.Content.Add (encapsulatedCertificate);
-
-                       ASN1 bagValue = new ASN1 (0xA0);
-                       bagValue.Add (ci.ASN1);
-
-                       ASN1 safeBag = new ASN1 (0x30);
-                       safeBag.Add (ASN1Convert.FromOid (certBag));
-                       safeBag.Add (bagValue);
-
-                       if (attributes != null) {
-                               ASN1 bagAttributes = new ASN1 (0x31);
-                               IDictionaryEnumerator de = attributes.GetEnumerator ();
-
-                               while (de.MoveNext ()) {
-                                       string oid = (string)de.Key;
-                                       switch (oid) {
-                                       case PKCS9.friendlyName:
-                                               ArrayList names = (ArrayList)de.Value;
-                                               if (names.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.friendlyName));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] name in names) {
-                                                               ASN1 attrValue = new ASN1 (0x1e);
-                                                               attrValue.Value = name;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       case PKCS9.localKeyId:
-                                               ArrayList keys = (ArrayList)de.Value;
-                                               if (keys.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.localKeyId));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] key in keys) {
-                                                               ASN1 attrValue = new ASN1 (0x04);
-                                                               attrValue.Value = key;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       default:
-                                               break;
-                                       }
-                               }
-
-                               if (bagAttributes.Count > 0) {
-                                       safeBag.Add (bagAttributes);
-                               }
-                       }
-
-                       return safeBag;
-               }
-
-               private byte[] MAC (byte[] password, byte[] salt, int iterations, byte[] data) 
-               {
-                       PKCS12.DeriveBytes pd = new PKCS12.DeriveBytes ();
-                       pd.HashName = "SHA1";
-                       pd.Password = password;
-                       pd.Salt = salt;
-                       pd.IterationCount = iterations;
-
-                       HMACSHA1 hmac = (HMACSHA1) HMACSHA1.Create ();
-                       hmac.Key = pd.DeriveMAC (20);
-                       return hmac.ComputeHash (data, 0, data.Length);
-               }
-
-               /*
-                * SafeContents ::= SEQUENCE OF SafeBag
-                * 
-                * SafeBag ::= SEQUENCE {
-                *      bagId BAG-TYPE.&id ({PKCS12BagSet}),
-                *      bagValue [0] EXPLICIT BAG-TYPE.&Type({PKCS12BagSet}{@bagId}),
-                *      bagAttributes SET OF PKCS12Attribute OPTIONAL
-                * }
-                */
-               public byte[] GetBytes () 
-               {
-                       // TODO (incomplete)
-                       ASN1 safeBagSequence = new ASN1 (0x30);
-
-                       // Sync Safe Bag list since X509CertificateCollection may be updated
-                       ArrayList scs = new ArrayList ();
-                       foreach (SafeBag sb in _safeBags) {
-                               if (sb.BagOID.Equals (certBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-                                       ASN1 bagValue = safeBag [1];
-                                       PKCS7.ContentInfo cert = new PKCS7.ContentInfo (bagValue.Value);
-                                       scs.Add (new X509Certificate (cert.Content [0].Value));
-                               }
-                       }
-
-                       ArrayList addcerts = new ArrayList ();
-                       ArrayList removecerts = new ArrayList ();
-
-                       foreach (X509Certificate c in Certificates) {
-                               bool found = false;
-
-                               foreach (X509Certificate lc in scs) {
-                                       if (Compare (c.RawData, lc.RawData)) {
-                                               found = true;
-                                       }
-                               }
-
-                               if (!found) {
-                                       addcerts.Add (c);
-                               }
-                       }
-                       foreach (X509Certificate c in scs) {
-                               bool found = false;
-
-                               foreach (X509Certificate lc in Certificates) {
-                                       if (Compare (c.RawData, lc.RawData)) {
-                                               found = true;
-                                       }
-                               }
-
-                               if (!found) {
-                                       removecerts.Add (c);
-                               }
-                       }
-
-                       foreach (X509Certificate c in removecerts) {
-                               RemoveCertificate (c);
-                       }
-
-                       foreach (X509Certificate c in addcerts) {
-                               AddCertificate (c);
-                       }
-                       // Sync done
-
-                       if (_safeBags.Count > 0) {
-                               ASN1 certsSafeBag = new ASN1 (0x30);
-                               foreach (SafeBag sb in _safeBags) {
-                                       if (sb.BagOID.Equals (certBag)) {
-                                               certsSafeBag.Add (sb.ASN1);
-                                       }
-                               }
-
-                               if (certsSafeBag.Count > 0) {
-                                       PKCS7.ContentInfo contentInfo = EncryptedContentInfo (certsSafeBag, pbeWithSHAAnd3KeyTripleDESCBC);
-                                       safeBagSequence.Add (contentInfo.ASN1);
-                               }
-                       }
-
-                       if (_safeBags.Count > 0) {
-                               ASN1 safeContents = new ASN1 (0x30);
-                               foreach (SafeBag sb in _safeBags) {
-                                       if (sb.BagOID.Equals (keyBag) ||
-                                           sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                               safeContents.Add (sb.ASN1);
-                                       }
-                               }
-                               if (safeContents.Count > 0) {
-                                       ASN1 content = new ASN1 (0xA0);
-                                       content.Add (new ASN1 (0x04, safeContents.GetBytes ()));
-                               
-                                       PKCS7.ContentInfo keyBag = new PKCS7.ContentInfo (PKCS7.Oid.data);
-                                       keyBag.Content = content;
-                                       safeBagSequence.Add (keyBag.ASN1);
-                               }
-                       }
-
-                       // Doing SecretBags separately in case we want to change their encryption independently.
-                       if (_safeBags.Count > 0) {
-                               ASN1 secretsSafeBag = new ASN1 (0x30);
-                               foreach (SafeBag sb in _safeBags) {
-                                       if (sb.BagOID.Equals (secretBag)) {
-                                               secretsSafeBag.Add (sb.ASN1);
-                                       }
-                               }
-
-                               if (secretsSafeBag.Count > 0) {
-                                       PKCS7.ContentInfo contentInfo = EncryptedContentInfo (secretsSafeBag, pbeWithSHAAnd3KeyTripleDESCBC);
-                                       safeBagSequence.Add (contentInfo.ASN1);
-                               }
-                       }
-
-
-                       ASN1 encapsulates = new ASN1 (0x04, safeBagSequence.GetBytes ());
-                       ASN1 ci = new ASN1 (0xA0);
-                       ci.Add (encapsulates);
-                       PKCS7.ContentInfo authSafe = new PKCS7.ContentInfo (PKCS7.Oid.data);
-                       authSafe.Content = ci;
-                       
-                       ASN1 macData = new ASN1 (0x30);
-                       if (_password != null) {
-                               // only for password based encryption
-                               byte[] salt = new byte [20];
-                               RNG.GetBytes (salt);
-                               byte[] macValue = MAC (_password, salt, _iterations, authSafe.Content [0].Value);
-                               ASN1 oidSeq = new ASN1 (0x30);
-                               oidSeq.Add (ASN1Convert.FromOid ("1.3.14.3.2.26"));     // SHA1
-                               oidSeq.Add (new ASN1 (0x05));
-
-                               ASN1 mac = new ASN1 (0x30);
-                               mac.Add (oidSeq);
-                               mac.Add (new ASN1 (0x04, macValue));
-
-                               macData.Add (mac);
-                               macData.Add (new ASN1 (0x04, salt));
-                               macData.Add (ASN1Convert.FromInt32 (_iterations));
-                       }
-                       
-                       ASN1 version = new ASN1 (0x02, new byte [1] { 0x03 });
-                       
-                       ASN1 pfx = new ASN1 (0x30);
-                       pfx.Add (version);
-                       pfx.Add (authSafe.ASN1);
-                       if (macData.Count > 0) {
-                               // only for password based encryption
-                               pfx.Add (macData);
-                       }
-
-                       return pfx.GetBytes ();
-               }
-
-               // Creates an encrypted PKCS#7 ContentInfo with safeBags as its SafeContents.  Used in GetBytes(), above.
-               private PKCS7.ContentInfo EncryptedContentInfo(ASN1 safeBags, string algorithmOid)
-               {
-                       byte[] salt = new byte [8];
-                       RNG.GetBytes (salt);
-
-                       ASN1 seqParams = new ASN1 (0x30);
-                       seqParams.Add (new ASN1 (0x04, salt));
-                       seqParams.Add (ASN1Convert.FromInt32 (_iterations));
-
-                       ASN1 seqPbe = new ASN1 (0x30);
-                       seqPbe.Add (ASN1Convert.FromOid (algorithmOid));
-                       seqPbe.Add (seqParams);
-
-                       byte[] encrypted = Encrypt (algorithmOid, salt, _iterations, safeBags.GetBytes ());
-                       ASN1 encryptedContent = new ASN1 (0x80, encrypted);
-
-                       ASN1 seq = new ASN1 (0x30);
-                       seq.Add (ASN1Convert.FromOid (PKCS7.Oid.data));
-                       seq.Add (seqPbe);
-                       seq.Add (encryptedContent);
-
-                       ASN1 version = new ASN1 (0x02, new byte [1] { 0x00 });
-                       ASN1 encData = new ASN1 (0x30);
-                       encData.Add (version);
-                       encData.Add (seq);
-
-                       ASN1 finalContent = new ASN1 (0xA0);
-                       finalContent.Add (encData);
-
-                       PKCS7.ContentInfo bag = new PKCS7.ContentInfo (PKCS7.Oid.encryptedData);
-                       bag.Content = finalContent;
-                       return bag;
-               }
-
-               public void AddCertificate (X509Certificate cert)
-               {
-                       AddCertificate (cert, null);
-               }
-
-               public void AddCertificate (X509Certificate cert, IDictionary attributes)
-               {
-                       bool found = false;
-
-                       for (int i = 0; !found && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (certBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-                                       ASN1 bagValue = safeBag [1];
-                                       PKCS7.ContentInfo crt = new PKCS7.ContentInfo (bagValue.Value);
-                                       X509Certificate c = new X509Certificate (crt.Content [0].Value);
-                                       if (Compare (cert.RawData, c.RawData)) {
-                                               found = true;
-                                       }
-                               }
-                       }
-
-                       if (!found) {
-                               _safeBags.Add (new SafeBag (certBag, CertificateSafeBag (cert, attributes)));
-                               _certsChanged = true;
-                       }
-               }
-
-               public void RemoveCertificate (X509Certificate cert)
-               {
-                       RemoveCertificate (cert, null);
-               }
-
-               public void RemoveCertificate (X509Certificate cert, IDictionary attrs)
-               {
-                       int certIndex = -1;
-
-                       for (int i = 0; certIndex == -1 && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (certBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-                                       ASN1 bagValue = safeBag [1];
-                                       PKCS7.ContentInfo crt = new PKCS7.ContentInfo (bagValue.Value);
-                                       X509Certificate c = new X509Certificate (crt.Content [0].Value);
-                                       if (Compare (cert.RawData, c.RawData)) {
-                                               if (attrs != null) {
-                                                       if (safeBag.Count == 3) {
-                                                               ASN1 bagAttributes = safeBag [2];
-                                                               int bagAttributesFound = 0;
-                                                               for (int j = 0; j < bagAttributes.Count; j++) {
-                                                                       ASN1 pkcs12Attribute = bagAttributes [j];
-                                                                       ASN1 attrId = pkcs12Attribute [0];
-                                                                       string ao = ASN1Convert.ToOid (attrId);
-                                                                       ArrayList dattrValues = (ArrayList)attrs [ao];
-
-                                                                       if (dattrValues != null) {
-                                                                               ASN1 attrValues = pkcs12Attribute [1];
-
-                                                                               if (dattrValues.Count == attrValues.Count) {
-                                                                                       int attrValuesFound = 0;
-                                                                                       for (int k = 0; k < attrValues.Count; k++) {
-                                                                                               ASN1 attrValue = attrValues [k];
-                                                                                               byte[] value = (byte[])dattrValues [k];
-                                                                       
-                                                                                               if (Compare (value, attrValue.Value)) {
-                                                                                                       attrValuesFound += 1;
-                                                                                               }
-                                                                                       }
-                                                                                       if (attrValuesFound == attrValues.Count) {
-                                                                                               bagAttributesFound += 1;
-                                                                                       }
-                                                                               }
-                                                                       }
-                                                               }
-                                                               if (bagAttributesFound == bagAttributes.Count) {
-                                                                       certIndex = i;
-                                                               }
-                                                       }
-                                               } else {
-                                                       certIndex = i;
-                                               }
-                                       }
-                               }
-                       }
-
-                       if (certIndex != -1) {
-                               _safeBags.RemoveAt (certIndex);
-                               _certsChanged = true;
-                       }
-               }
-
-               private bool CompareAsymmetricAlgorithm (AsymmetricAlgorithm a1, AsymmetricAlgorithm a2)
-               {
-                       // fast path
-                       if (a1.KeySize != a2.KeySize)
-                               return false;
-                       // compare public keys - if they match we can assume the private match too
-                       return (a1.ToXmlString (false) == a2.ToXmlString (false));
-               }
-
-               public void AddPkcs8ShroudedKeyBag (AsymmetricAlgorithm aa)
-               {
-                       AddPkcs8ShroudedKeyBag (aa, null);
-               }
-
-               public void AddPkcs8ShroudedKeyBag (AsymmetricAlgorithm aa, IDictionary attributes)
-               {
-                       bool found = false;
-
-                       for (int i = 0; !found && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                       ASN1 bagValue = sb.ASN1 [1];
-                                       PKCS8.EncryptedPrivateKeyInfo epki = new PKCS8.EncryptedPrivateKeyInfo (bagValue.Value);
-                                       byte[] decrypted = Decrypt (epki.Algorithm, epki.Salt, epki.IterationCount, epki.EncryptedData);
-                                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (decrypted);
-                                       byte[] privateKey = pki.PrivateKey;
-
-                                       AsymmetricAlgorithm saa = null;
-                                       switch (privateKey [0]) {
-                                       case 0x02:
-                                               DSAParameters p = new DSAParameters (); // FIXME
-                                               saa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                               break;
-                                       case 0x30:
-                                               saa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                               break;
-                                       default:
-                                               Array.Clear (decrypted, 0, decrypted.Length);
-                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                               throw new CryptographicException ("Unknown private key format");
-                                       }
-
-                                       Array.Clear (decrypted, 0, decrypted.Length);
-                                       Array.Clear (privateKey, 0, privateKey.Length);
-
-                                       if (CompareAsymmetricAlgorithm (aa , saa)) {
-                                               found = true;
-                                       }
-                               }
-                       }
-
-                       if (!found) {
-                               _safeBags.Add (new SafeBag (pkcs8ShroudedKeyBag, Pkcs8ShroudedKeyBagSafeBag (aa, attributes)));
-                               _keyBagsChanged = true;
-                       }
-               }
-
-               public void RemovePkcs8ShroudedKeyBag (AsymmetricAlgorithm aa)
-               {
-                       int aaIndex = -1;
-
-                       for (int i = 0; aaIndex == -1 && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                       ASN1 bagValue = sb.ASN1 [1];
-                                       PKCS8.EncryptedPrivateKeyInfo epki = new PKCS8.EncryptedPrivateKeyInfo (bagValue.Value);
-                                       byte[] decrypted = Decrypt (epki.Algorithm, epki.Salt, epki.IterationCount, epki.EncryptedData);
-                                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (decrypted);
-                                       byte[] privateKey = pki.PrivateKey;
-
-                                       AsymmetricAlgorithm saa = null;
-                                       switch (privateKey [0]) {
-                                       case 0x02:
-                                               DSAParameters p = new DSAParameters (); // FIXME
-                                               saa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                               break;
-                                       case 0x30:
-                                               saa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                               break;
-                                       default:
-                                               Array.Clear (decrypted, 0, decrypted.Length);
-                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                               throw new CryptographicException ("Unknown private key format");
-                                       }
-
-                                       Array.Clear (decrypted, 0, decrypted.Length);
-                                       Array.Clear (privateKey, 0, privateKey.Length);
-
-                                       if (CompareAsymmetricAlgorithm (aa, saa)) {
-                                               aaIndex = i;
-                                       }
-                               }
-                       }
-
-                       if (aaIndex != -1) {
-                               _safeBags.RemoveAt (aaIndex);
-                               _keyBagsChanged = true;
-                       }
-               }
-
-               public void AddKeyBag (AsymmetricAlgorithm aa)
-               {
-                       AddKeyBag (aa, null);
-               }
-
-               public void AddKeyBag (AsymmetricAlgorithm aa, IDictionary attributes)
-               {
-                       bool found = false;
-
-                       for (int i = 0; !found && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (keyBag)) {
-                                       ASN1 bagValue = sb.ASN1 [1];
-                                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (bagValue.Value);
-                                       byte[] privateKey = pki.PrivateKey;
-
-                                       AsymmetricAlgorithm saa = null;
-                                       switch (privateKey [0]) {
-                                       case 0x02:
-                                               DSAParameters p = new DSAParameters (); // FIXME
-                                               saa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                               break;
-                                       case 0x30:
-                                               saa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                               break;
-                                       default:
-                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                               throw new CryptographicException ("Unknown private key format");
-                                       }
-
-                                       Array.Clear (privateKey, 0, privateKey.Length);
-
-                                       if (CompareAsymmetricAlgorithm (aa, saa)) {
-                                               found = true;
-                                       }
-                               }
-                       }
-
-                       if (!found) {
-                               _safeBags.Add (new SafeBag (keyBag, KeyBagSafeBag (aa, attributes)));
-                               _keyBagsChanged = true;
-                       }
-               }
-
-               public void RemoveKeyBag (AsymmetricAlgorithm aa)
-               {
-                       int aaIndex = -1;
-
-                       for (int i = 0; aaIndex == -1 && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (keyBag)) {
-                                       ASN1 bagValue = sb.ASN1 [1];
-                                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (bagValue.Value);
-                                       byte[] privateKey = pki.PrivateKey;
-
-                                       AsymmetricAlgorithm saa = null;
-                                       switch (privateKey [0]) {
-                                       case 0x02:
-                                               DSAParameters p = new DSAParameters (); // FIXME
-                                               saa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                               break;
-                                       case 0x30:
-                                               saa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                               break;
-                                       default:
-                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                               throw new CryptographicException ("Unknown private key format");
-                                       }
-
-                                       Array.Clear (privateKey, 0, privateKey.Length);
-
-                                       if (CompareAsymmetricAlgorithm (aa, saa)) {
-                                               aaIndex = i;
-                                       }
-                               }
-                       }
-
-                       if (aaIndex != -1) {
-                               _safeBags.RemoveAt (aaIndex);
-                               _keyBagsChanged = true;
-                       }
-               }
-
-               public void AddSecretBag (byte[] secret)
-               {
-                       AddSecretBag (secret, null);
-               }
-
-               public void AddSecretBag (byte[] secret, IDictionary attributes)
-               {
-                       bool found = false;
-
-                       for (int i = 0; !found && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (secretBag)) {
-                                       ASN1 bagValue = sb.ASN1 [1];
-                                       byte[] ssecret = bagValue.Value;
-
-                                       if (Compare (secret, ssecret)) {
-                                               found = true;
-                                       }
-                               }
-                       }
-
-                       if (!found) {
-                               _safeBags.Add (new SafeBag (secretBag, SecretBagSafeBag (secret, attributes)));
-                               _secretBagsChanged = true;
-                       }
-               }
-
-               public void RemoveSecretBag (byte[] secret)
-               {
-                       int sIndex = -1;
-
-                       for (int i = 0; sIndex == -1 && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (secretBag)) {
-                                       ASN1 bagValue = sb.ASN1 [1];
-                                       byte[] ssecret = bagValue.Value;
-
-                                       if (Compare (secret, ssecret)) {
-                                               sIndex = i;
-                                       }
-                               }
-                       }
-
-                       if (sIndex != -1) {
-                               _safeBags.RemoveAt (sIndex);
-                               _secretBagsChanged = true;
-                       }
-               }
-
-               public AsymmetricAlgorithm GetAsymmetricAlgorithm (IDictionary attrs)
-               {
-                       foreach (SafeBag sb in _safeBags) {
-                               if (sb.BagOID.Equals (keyBag) || sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-
-                                       if (safeBag.Count == 3) {
-                                               ASN1 bagAttributes = safeBag [2];
-
-                                               int bagAttributesFound = 0;
-                                               for (int i = 0; i < bagAttributes.Count; i++) {
-                                                       ASN1 pkcs12Attribute = bagAttributes [i];
-                                                       ASN1 attrId = pkcs12Attribute [0];
-                                                       string ao = ASN1Convert.ToOid (attrId);
-                                                       ArrayList dattrValues = (ArrayList)attrs [ao];
-
-                                                       if (dattrValues != null) {
-                                                               ASN1 attrValues = pkcs12Attribute [1];
-
-                                                               if (dattrValues.Count == attrValues.Count) {
-                                                                       int attrValuesFound = 0;
-                                                                       for (int j = 0; j < attrValues.Count; j++) {
-                                                                               ASN1 attrValue = attrValues [j];
-                                                                               byte[] value = (byte[])dattrValues [j];
-                                                                       
-                                                                               if (Compare (value, attrValue.Value)) {
-                                                                                       attrValuesFound += 1;
-                                                                               }
-                                                                       }
-                                                                       if (attrValuesFound == attrValues.Count) {
-                                                                               bagAttributesFound += 1;
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-                                               if (bagAttributesFound == bagAttributes.Count) {
-                                                       ASN1 bagValue = safeBag [1];
-                                                       AsymmetricAlgorithm aa = null;
-                                                       if (sb.BagOID.Equals (keyBag)) {
-                                                               PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (bagValue.Value);
-                                                               byte[] privateKey = pki.PrivateKey;
-                                                               switch (privateKey [0]) {
-                                                               case 0x02:
-                                                                       DSAParameters p = new DSAParameters (); // FIXME
-                                                                       aa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                                                       break;
-                                                               case 0x30:
-                                                                       aa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                                                       break;
-                                                               default:
-                                                                       break;
-                                                               }
-                                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                                       } else if (sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                                               PKCS8.EncryptedPrivateKeyInfo epki = new PKCS8.EncryptedPrivateKeyInfo (bagValue.Value);
-                                                               byte[] decrypted = Decrypt (epki.Algorithm, epki.Salt, epki.IterationCount, epki.EncryptedData);
-                                                               PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (decrypted);
-                                                               byte[] privateKey = pki.PrivateKey;
-                                                               switch (privateKey [0]) {
-                                                               case 0x02:
-                                                                       DSAParameters p = new DSAParameters (); // FIXME
-                                                                       aa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                                                       break;
-                                                               case 0x30:
-                                                                       aa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                                                       break;
-                                                               default:
-                                                                       break;
-                                                               }
-                                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                                               Array.Clear (decrypted, 0, decrypted.Length);
-                                                       }
-                                                       return aa;
-                                               }
-                                       }
-                               }
-                       }
-
-                       return null;
-               }
-
-               public byte[] GetSecret (IDictionary attrs)
-               {
-                       foreach (SafeBag sb in _safeBags) {
-                               if (sb.BagOID.Equals (secretBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-
-                                       if (safeBag.Count == 3) {
-                                               ASN1 bagAttributes = safeBag [2];
-
-                                               int bagAttributesFound = 0;
-                                               for (int i = 0; i < bagAttributes.Count; i++) {
-                                                       ASN1 pkcs12Attribute = bagAttributes [i];
-                                                       ASN1 attrId = pkcs12Attribute [0];
-                                                       string ao = ASN1Convert.ToOid (attrId);
-                                                       ArrayList dattrValues = (ArrayList)attrs [ao];
-
-                                                       if (dattrValues != null) {
-                                                               ASN1 attrValues = pkcs12Attribute [1];
-
-                                                               if (dattrValues.Count == attrValues.Count) {
-                                                                       int attrValuesFound = 0;
-                                                                       for (int j = 0; j < attrValues.Count; j++) {
-                                                                               ASN1 attrValue = attrValues [j];
-                                                                               byte[] value = (byte[])dattrValues [j];
-                                                                       
-                                                                               if (Compare (value, attrValue.Value)) {
-                                                                                       attrValuesFound += 1;
-                                                                               }
-                                                                       }
-                                                                       if (attrValuesFound == attrValues.Count) {
-                                                                               bagAttributesFound += 1;
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-                                               if (bagAttributesFound == bagAttributes.Count) {
-                                                       ASN1 bagValue = safeBag [1];
-                                                       return bagValue.Value;
-                                               }
-                                       }
-                               }
-                       }
-
-                       return null;
-               }
-
-               public X509Certificate GetCertificate (IDictionary attrs)
-               {
-                       foreach (SafeBag sb in _safeBags) {
-                               if (sb.BagOID.Equals (certBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-
-                                       if (safeBag.Count == 3) {
-                                               ASN1 bagAttributes = safeBag [2];
-
-                                               int bagAttributesFound = 0;
-                                               for (int i = 0; i < bagAttributes.Count; i++) {
-                                                       ASN1 pkcs12Attribute = bagAttributes [i];
-                                                       ASN1 attrId = pkcs12Attribute [0];
-                                                       string ao = ASN1Convert.ToOid (attrId);
-                                                       ArrayList dattrValues = (ArrayList)attrs [ao];
-
-                                                       if (dattrValues != null) {
-                                                               ASN1 attrValues = pkcs12Attribute [1];
-                                                               
-                                                               if (dattrValues.Count == attrValues.Count) {
-                                                                       int attrValuesFound = 0;
-                                                                       for (int j = 0; j < attrValues.Count; j++) {
-                                                                               ASN1 attrValue = attrValues [j];
-                                                                               byte[] value = (byte[])dattrValues [j];
-                                                                       
-                                                                               if (Compare (value, attrValue.Value)) {
-                                                                                       attrValuesFound += 1;
-                                                                               }
-                                                                       }
-                                                                       if (attrValuesFound == attrValues.Count) {
-                                                                               bagAttributesFound += 1;
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-                                               if (bagAttributesFound == bagAttributes.Count) {
-                                                       ASN1 bagValue = safeBag [1];
-                                                       PKCS7.ContentInfo crt = new PKCS7.ContentInfo (bagValue.Value);
-                                                       return new X509Certificate (crt.Content [0].Value);
-                                               }
-                                       }
-                               }
-                       }
-
-                       return null;
-               }
-
-               public IDictionary GetAttributes (AsymmetricAlgorithm aa)
-               {
-                       IDictionary result = new Hashtable ();
-
-                       foreach (SafeBag sb in _safeBags) {
-                               if (sb.BagOID.Equals (keyBag) || sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-
-                                       ASN1 bagValue = safeBag [1];
-                                       AsymmetricAlgorithm saa = null;
-                                       if (sb.BagOID.Equals (keyBag)) {
-                                               PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (bagValue.Value);
-                                               byte[] privateKey = pki.PrivateKey;
-                                               switch (privateKey [0]) {
-                                               case 0x02:
-                                                       DSAParameters p = new DSAParameters (); // FIXME
-                                                       saa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                                       break;
-                                               case 0x30:
-                                                       saa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                                       break;
-                                               default:
-                                                       break;
-                                               }
-                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                       } else if (sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                               PKCS8.EncryptedPrivateKeyInfo epki = new PKCS8.EncryptedPrivateKeyInfo (bagValue.Value);
-                                               byte[] decrypted = Decrypt (epki.Algorithm, epki.Salt, epki.IterationCount, epki.EncryptedData);
-                                               PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (decrypted);
-                                               byte[] privateKey = pki.PrivateKey;
-                                               switch (privateKey [0]) {
-                                               case 0x02:
-                                                       DSAParameters p = new DSAParameters (); // FIXME
-                                                       saa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                                       break;
-                                               case 0x30:
-                                                       saa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                                       break;
-                                               default:
-                                                       break;
-                                               }
-                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                               Array.Clear (decrypted, 0, decrypted.Length);
-                                       }
-
-                                       if (saa != null && CompareAsymmetricAlgorithm (saa, aa)) {
-                                               if (safeBag.Count == 3) {
-                                                       ASN1 bagAttributes = safeBag [2];
-                                                       
-                                                       for (int i = 0; i < bagAttributes.Count; i++) {
-                                                               ASN1 pkcs12Attribute = bagAttributes [i];
-                                                               ASN1 attrId = pkcs12Attribute [0];
-                                                               string aOid = ASN1Convert.ToOid (attrId);
-                                                               ArrayList aValues = new ArrayList ();
-
-                                                               ASN1 attrValues = pkcs12Attribute [1];
-                                                                       
-                                                               for (int j = 0; j < attrValues.Count; j++) {
-                                                                       ASN1 attrValue = attrValues [j];
-                                                                       aValues.Add (attrValue.Value);
-                                                               }
-                                                               result.Add (aOid, aValues);
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-
-                       return result;
-               }
-
-               public IDictionary GetAttributes (X509Certificate cert)
-               {
-                       IDictionary result = new Hashtable ();
-
-                       foreach (SafeBag sb in _safeBags) {
-                               if (sb.BagOID.Equals (certBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-                                       ASN1 bagValue = safeBag [1];
-                                       PKCS7.ContentInfo crt = new PKCS7.ContentInfo (bagValue.Value);
-                                       X509Certificate xc = new X509Certificate (crt.Content [0].Value);
-
-                                       if (Compare (cert.RawData, xc.RawData)) {
-                                               if (safeBag.Count == 3) {
-                                                       ASN1 bagAttributes = safeBag [2];
-
-                                                       for (int i = 0; i < bagAttributes.Count; i++) {
-                                                               ASN1 pkcs12Attribute = bagAttributes [i];
-                                                               ASN1 attrId = pkcs12Attribute [0];
-
-                                                               string aOid = ASN1Convert.ToOid (attrId);
-                                                               ArrayList aValues = new ArrayList ();
-
-                                                               ASN1 attrValues = pkcs12Attribute [1];
-                                                                       
-                                                               for (int j = 0; j < attrValues.Count; j++) {
-                                                                       ASN1 attrValue = attrValues [j];
-                                                                       aValues.Add (attrValue.Value);
-                                                               }
-                                                               result.Add (aOid, aValues);
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-
-                       return result;
-               }
-
-               public void SaveToFile (string filename)
-               {
-                       if (filename == null)
-                               throw new ArgumentNullException ("filename");
-
-                       using (FileStream fs = File.Create (filename)) {
-                               byte[] data = GetBytes ();
-                               fs.Write (data, 0, data.Length);
-                       }
-               }
-
-               public object Clone ()
-               {
-                       PKCS12 clone = null;
-                       if (_password != null) {
-                               clone = new PKCS12 (GetBytes (), Encoding.BigEndianUnicode.GetString (_password));
-                       } else {
-                               clone = new PKCS12 (GetBytes ());
-                       }
-                       clone.IterationCount = this.IterationCount;
-
-                       return clone;
-               }
-
-               // static
-
-               public const int CryptoApiPasswordLimit = 32;
-               
-               static private int password_max_length = Int32.MaxValue;
-
-               // static properties
-               
-               // MS CryptoAPI limits the password to a maximum of 31 characters
-               // other implementations, like OpenSSL, have no such limitation.
-               // Setting a maximum value will truncate the password length to 
-               // ensure compatibility with MS's PFXImportCertStore API.
-               static public int MaximumPasswordLength {
-                       get { return password_max_length; }
-                       set {
-                               if (value < CryptoApiPasswordLimit) {
-                                       string msg = Locale.GetText ("Maximum password length cannot be less than {0}.", CryptoApiPasswordLimit);
-                                       throw new ArgumentOutOfRangeException (msg);
-                               }
-                               password_max_length = value;
-                       }
-               }
-
-               // static methods
-
-               static private byte[] LoadFile (string filename) 
-               {
-                       byte[] data = null;
-                       using (FileStream fs = File.OpenRead (filename)) {
-                               data = new byte [fs.Length];
-                               fs.Read (data, 0, data.Length);
-                               fs.Close ();
-                       }
-                       return data;
-               }
-
-               static public PKCS12 LoadFromFile (string filename) 
-               {
-                       if (filename == null)
-                               throw new ArgumentNullException ("filename");
-
-                       return new PKCS12 (LoadFile (filename));
-               }
-
-               static public PKCS12 LoadFromFile (string filename, string password) 
-               {
-                       if (filename == null)
-                               throw new ArgumentNullException ("filename");
-
-                       return new PKCS12 (LoadFile (filename), password);
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/TestAnchors.cs b/mcs/class/corlib/Mono.Security.X509/TestAnchors.cs
deleted file mode 100644 (file)
index 2319f28..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-//
-// TestAnchors.cs: Trust Anchors for development and debugging
-//     include test certificates for Microsoft (root agency) and Mono
-//
-// Author:
-//     Sebastien Pouliot (spouliot@motus.com)
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       class TestAnchors : TrustAnchors {
-
-               static byte[] rootagency = { 
-                       0x30, 0x82, 0x01, 0xCA, 0x30, 0x82, 0x01, 0x74, 0xA0, 0x03, 0x02, 0x01, 
-                       0x02, 0x02, 0x10, 0x06, 0x37, 0x6C, 0x00, 0xAA, 0x00, 0x64, 0x8A, 0x11, 
-                       0xCF, 0xB8, 0xD4, 0xAA, 0x5C, 0x35, 0xF4, 0x30, 0x0D, 0x06, 0x09, 0x2A, 
-                       0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x30, 0x16, 
-                       0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0B, 0x52, 
-                       0x6F, 0x6F, 0x74, 0x20, 0x41, 0x67, 0x65, 0x6E, 0x63, 0x79, 0x30, 0x1E, 
-                       0x17, 0x0D, 0x39, 0x36, 0x30, 0x35, 0x32, 0x38, 0x32, 0x32, 0x30, 0x32, 
-                       0x35, 0x39, 0x5A, 0x17, 0x0D, 0x33, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 
-                       0x33, 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x16, 0x31, 0x14, 0x30, 0x12, 
-                       0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0B, 0x52, 0x6F, 0x6F, 0x74, 0x20, 
-                       0x41, 0x67, 0x65, 0x6E, 0x63, 0x79, 0x30, 0x5B, 0x30, 0x0D, 0x06, 0x09, 
-                       0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 
-                       0x4A, 0x00, 0x30, 0x47, 0x02, 0x40, 0x81, 0x55, 0x22, 0xB9, 0x8A, 0xA4, 
-                       0x6F, 0xED, 0xD6, 0xE7, 0xD9, 0x66, 0x0F, 0x55, 0xBC, 0xD7, 0xCD, 0xD5, 
-                       0xBC, 0x4E, 0x40, 0x02, 0x21, 0xA2, 0xB1, 0xF7, 0x87, 0x30, 0x85, 0x5E, 
-                       0xD2, 0xF2, 0x44, 0xB9, 0xDC, 0x9B, 0x75, 0xB6, 0xFB, 0x46, 0x5F, 0x42, 
-                       0xB6, 0x9D, 0x23, 0x36, 0x0B, 0xDE, 0x54, 0x0F, 0xCD, 0xBD, 0x1F, 0x99, 
-                       0x2A, 0x10, 0x58, 0x11, 0xCB, 0x40, 0xCB, 0xB5, 0xA7, 0x41, 0x02, 0x03, 
-                       0x01, 0x00, 0x01, 0xA3, 0x81, 0x9E, 0x30, 0x81, 0x9B, 0x30, 0x50, 0x06, 
-                       0x03, 0x55, 0x04, 0x03, 0x04, 0x49, 0x13, 0x47, 0x46, 0x6F, 0x72, 0x20, 
-                       0x54, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x50, 0x75, 0x72, 0x70, 
-                       0x6F, 0x73, 0x65, 0x73, 0x20, 0x4F, 0x6E, 0x6C, 0x79, 0x20, 0x53, 0x61, 
-                       0x6D, 0x70, 0x6C, 0x65, 0x20, 0x53, 0x6F, 0x66, 0x74, 0x77, 0x61, 0x72, 
-                       0x65, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x73, 0x68, 0x69, 0x6E, 0x67, 
-                       0x20, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x61, 0x6C, 0x73, 
-                       0x20, 0x41, 0x67, 0x65, 0x6E, 0x63, 0x79, 0x30, 0x47, 0x06, 0x03, 0x55, 
-                       0x1D, 0x01, 0x04, 0x40, 0x30, 0x3E, 0x80, 0x10, 0x12, 0xE4, 0x09, 0x2D, 
-                       0x06, 0x1D, 0x1D, 0x4F, 0x00, 0x8D, 0x61, 0x21, 0xDC, 0x16, 0x64, 0x63, 
-                       0xA1, 0x18, 0x30, 0x16, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 
-                       0x03, 0x13, 0x0B, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x41, 0x67, 0x65, 0x6E, 
-                       0x63, 0x79, 0x82, 0x10, 0x06, 0x37, 0x6C, 0x00, 0xAA, 0x00, 0x64, 0x8A, 
-                       0x11, 0xCF, 0xB8, 0xD4, 0xAA, 0x5C, 0x35, 0xF4, 0x30, 0x0D, 0x06, 0x09, 
-                       0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x03, 
-                       0x41, 0x00, 0x2D, 0x2E, 0x3E, 0x7B, 0x89, 0x42, 0x89, 0x3F, 0xA8, 0x21, 
-                       0x17, 0xFA, 0xF0, 0xF5, 0xC3, 0x95, 0xDB, 0x62, 0x69, 0x5B, 0xC9, 0xDC, 
-                       0xC1, 0xB3, 0xFA, 0xF0, 0xC4, 0x6F, 0x6F, 0x64, 0x9A, 0xBD, 0xE7, 0x1B, 
-                       0x25, 0x68, 0x72, 0x83, 0x67, 0xBD, 0x56, 0xB0, 0x8D, 0x01, 0xBD, 0x2A, 
-                       0xF7, 0xCC, 0x4B, 0xBD, 0x87, 0xA5, 0xBA, 0x87, 0x20, 0x4C, 0x42, 0x11, 
-                       0x41, 0xAD, 0x10, 0x17, 0x3B, 0x8C };
-
-               static byte[] monoTestRoot = { 
-                       0x30, 0x82, 0x01, 0xC2, 0x30, 0x82, 0x01, 0x2B, 0xA0, 0x03, 0x02, 0x01, 
-                       0x02, 0x02, 0x10, 0x28, 0xF4, 0x76, 0x38, 0x91, 0x74, 0x0E, 0x48, 0x85, 
-                       0xC7, 0x6E, 0x88, 0x4F, 0xE1, 0xB0, 0x69, 0x30, 0x0D, 0x06, 0x09, 0x2A, 
-                       0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x30, 0x20, 
-                       0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x15, 0x4D, 
-                       0x6F, 0x6E, 0x6F, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 
-                       0x74, 0x20, 0x41, 0x67, 0x65, 0x6E, 0x63, 0x79, 0x30, 0x1E, 0x17, 0x0D, 
-                       0x30, 0x33, 0x30, 0x39, 0x30, 0x31, 0x31, 0x35, 0x35, 0x35, 0x34, 0x38, 
-                       0x5A, 0x17, 0x0D, 0x33, 0x39, 0x31, 0x32, 0x33, 0x31, 0x31, 0x38, 0x35, 
-                       0x39, 0x35, 0x39, 0x5A, 0x30, 0x20, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 
-                       0x55, 0x04, 0x03, 0x13, 0x15, 0x4D, 0x6F, 0x6E, 0x6F, 0x20, 0x54, 0x65, 
-                       0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x41, 0x67, 0x65, 0x6E, 
-                       0x63, 0x79, 0x30, 0x81, 0x9E, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 
-                       0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8C, 0x00, 
-                       0x30, 0x81, 0x88, 0x02, 0x81, 0x80, 0xBF, 0xFE, 0x27, 0x00, 0xB0, 0x71, 
-                       0x08, 0x4F, 0xBD, 0x26, 0x01, 0x02, 0xD0, 0xB9, 0xC3, 0x52, 0xF2, 0xA1, 
-                       0xE9, 0xEF, 0x7A, 0x3F, 0x04, 0xE9, 0x37, 0x84, 0x63, 0xFA, 0xF5, 0xA7, 
-                       0xA8, 0xA4, 0xFB, 0x20, 0x0A, 0x75, 0x88, 0xAF, 0xC9, 0x8E, 0xEA, 0xAF, 
-                       0x02, 0x0E, 0x83, 0x43, 0x6B, 0xD3, 0x7E, 0xFD, 0x1D, 0x4E, 0x5A, 0x9F, 
-                       0x7E, 0x61, 0xC7, 0xE7, 0x53, 0xB2, 0x8A, 0x8A, 0x6B, 0x71, 0x3E, 0x67, 
-                       0xCF, 0x17, 0x12, 0x4E, 0xC6, 0x5B, 0xFF, 0xD8, 0xDC, 0x1D, 0x27, 0x06, 
-                       0xD2, 0xCD, 0xFF, 0x15, 0x12, 0x16, 0x9D, 0x77, 0x8B, 0x93, 0xF7, 0xE0, 
-                       0x9B, 0xB9, 0x92, 0x62, 0x18, 0xD4, 0x68, 0x73, 0x48, 0xD2, 0x6D, 0x7F, 
-                       0x35, 0x34, 0xE4, 0xB6, 0x2A, 0x62, 0x72, 0x32, 0xB1, 0xA3, 0xBD, 0x61, 
-                       0x18, 0x88, 0x3D, 0xAA, 0xE7, 0x02, 0x5A, 0x70, 0xEE, 0x9B, 0xE2, 0xAB, 
-                       0x87, 0xF9, 0x02, 0x03, 0x01, 0x00, 0x01, 0x30, 0x0D, 0x06, 0x09, 0x2A, 
-                       0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x03, 0x81, 
-                       0x81, 0x00, 0x8E, 0x08, 0xD7, 0x0F, 0x30, 0xB2, 0xFD, 0x3A, 0x5C, 0x94, 
-                       0xA9, 0x56, 0xBE, 0x44, 0x77, 0xE3, 0xA3, 0x92, 0xBC, 0xB9, 0xE4, 0x95, 
-                       0x68, 0xD4, 0xF4, 0xF9, 0x24, 0x4B, 0x2A, 0x79, 0x93, 0x57, 0x7E, 0x84, 
-                       0x50, 0x3F, 0xA9, 0xC8, 0xDA, 0x9E, 0x08, 0x9C, 0x21, 0xE1, 0x10, 0xFC, 
-                       0x1C, 0x5C, 0x4B, 0x60, 0x97, 0xBA, 0x55, 0xCB, 0x7C, 0xEA, 0xC3, 0x04, 
-                       0x2F, 0x55, 0xBB, 0x16, 0x26, 0xCD, 0x87, 0x90, 0x30, 0x7F, 0xE0, 0xCF, 
-                       0x24, 0x27, 0xB4, 0x3A, 0xD0, 0x9F, 0xC7, 0x55, 0xF8, 0x7C, 0xC9, 0xA0, 
-                       0x72, 0xE4, 0x06, 0xF1, 0x4A, 0x5B, 0xBB, 0x71, 0x84, 0x8B, 0x76, 0x23, 
-                       0x65, 0x1F, 0x1B, 0xEA, 0x96, 0x85, 0x13, 0x84, 0x0C, 0x8C, 0xCD, 0xDA, 
-                       0x3D, 0x1F, 0xEB, 0xA9, 0xA7, 0xDF, 0xE0, 0xD1, 0xDC, 0x93, 0x21, 0x7A, 
-                       0x10, 0xA7, 0x92, 0x63, 0x5D, 0xAB, 0xA2, 0x13, 0x37, 0xA4 };
-
-               static TestAnchors ()
-               {
-                       // add Microsoft Test Root for people who used MS makecert to create
-                       // their Authenticode(tm) test certificates
-                       coll.Add (new X509Certificate (rootagency));
-
-                       // add Mono Test Root for people who used Mono makecert to create
-                       // their Authenticode(tm) test certificates
-                       coll.Add (new X509Certificate (monoTestRoot));
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/TrustAnchors.cs b/mcs/class/corlib/Mono.Security.X509/TrustAnchors.cs
deleted file mode 100644 (file)
index 26832a4..0000000
+++ /dev/null
@@ -1,381 +0,0 @@
-//
-// TrustAnchors.cs: "Official" default Trust Anchors for Mono
-//
-// Author:
-//     Sebastien Pouliot (spouliot@motus.com)
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class TrustAnchors : ITrustAnchors {
-
-               static byte[] msroot = { 
-                       0x30, 0x82, 0x04, 0x12, 0x30, 0x82, 0x02, 0xFA, 0xA0, 0x03, 0x02, 0x01, 
-                       0x02, 0x02, 0x0F, 0x00, 0xC1, 0x00, 0x8B, 0x3C, 0x3C, 0x88, 0x11, 0xD1, 
-                       0x3E, 0xF6, 0x63, 0xEC, 0xDF, 0x40, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 
-                       0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x30, 0x70, 0x31, 
-                       0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x22, 0x43, 0x6F, 
-                       0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20, 
-                       0x31, 0x39, 0x39, 0x37, 0x20, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 
-                       0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x2E, 0x31, 0x1E, 0x30, 0x1C, 
-                       0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x15, 0x4D, 0x69, 0x63, 0x72, 0x6F, 
-                       0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 
-                       0x74, 0x69, 0x6F, 0x6E, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 
-                       0x03, 0x13, 0x18, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 
-                       0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 
-                       0x69, 0x74, 0x79, 0x30, 0x1E, 0x17, 0x0D, 0x39, 0x37, 0x30, 0x31, 0x31, 
-                       0x30, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x30, 
-                       0x31, 0x32, 0x33, 0x31, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x30, 
-                       0x70, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x22, 
-                       0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 
-                       0x29, 0x20, 0x31, 0x39, 0x39, 0x37, 0x20, 0x4D, 0x69, 0x63, 0x72, 0x6F, 
-                       0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x2E, 0x31, 0x1E, 
-                       0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x15, 0x4D, 0x69, 0x63, 
-                       0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 
-                       0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 
-                       0x55, 0x04, 0x03, 0x13, 0x18, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 
-                       0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x41, 0x75, 0x74, 0x68, 
-                       0x6F, 0x72, 0x69, 0x74, 0x79, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 
-                       0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 
-                       0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 
-                       0x01, 0x00, 0xA9, 0x02, 0xBD, 0xC1, 0x70, 0xE6, 0x3B, 0xF2, 0x4E, 0x1B, 
-                       0x28, 0x9F, 0x97, 0x78, 0x5E, 0x30, 0xEA, 0xA2, 0xA9, 0x8D, 0x25, 0x5F, 
-                       0xF8, 0xFE, 0x95, 0x4C, 0xA3, 0xB7, 0xFE, 0x9D, 0xA2, 0x20, 0x3E, 0x7C, 
-                       0x51, 0xA2, 0x9B, 0xA2, 0x8F, 0x60, 0x32, 0x6B, 0xD1, 0x42, 0x64, 0x79, 
-                       0xEE, 0xAC, 0x76, 0xC9, 0x54, 0xDA, 0xF2, 0xEB, 0x9C, 0x86, 0x1C, 0x8F, 
-                       0x9F, 0x84, 0x66, 0xB3, 0xC5, 0x6B, 0x7A, 0x62, 0x23, 0xD6, 0x1D, 0x3C, 
-                       0xDE, 0x0F, 0x01, 0x92, 0xE8, 0x96, 0xC4, 0xBF, 0x2D, 0x66, 0x9A, 0x9A, 
-                       0x68, 0x26, 0x99, 0xD0, 0x3A, 0x2C, 0xBF, 0x0C, 0xB5, 0x58, 0x26, 0xC1, 
-                       0x46, 0xE7, 0x0A, 0x3E, 0x38, 0x96, 0x2C, 0xA9, 0x28, 0x39, 0xA8, 0xEC, 
-                       0x49, 0x83, 0x42, 0xE3, 0x84, 0x0F, 0xBB, 0x9A, 0x6C, 0x55, 0x61, 0xAC, 
-                       0x82, 0x7C, 0xA1, 0x60, 0x2D, 0x77, 0x4C, 0xE9, 0x99, 0xB4, 0x64, 0x3B, 
-                       0x9A, 0x50, 0x1C, 0x31, 0x08, 0x24, 0x14, 0x9F, 0xA9, 0xE7, 0x91, 0x2B, 
-                       0x18, 0xE6, 0x3D, 0x98, 0x63, 0x14, 0x60, 0x58, 0x05, 0x65, 0x9F, 0x1D, 
-                       0x37, 0x52, 0x87, 0xF7, 0xA7, 0xEF, 0x94, 0x02, 0xC6, 0x1B, 0xD3, 0xBF, 
-                       0x55, 0x45, 0xB3, 0x89, 0x80, 0xBF, 0x3A, 0xEC, 0x54, 0x94, 0x4E, 0xAE, 
-                       0xFD, 0xA7, 0x7A, 0x6D, 0x74, 0x4E, 0xAF, 0x18, 0xCC, 0x96, 0x09, 0x28, 
-                       0x21, 0x00, 0x57, 0x90, 0x60, 0x69, 0x37, 0xBB, 0x4B, 0x12, 0x07, 0x3C, 
-                       0x56, 0xFF, 0x5B, 0xFB, 0xA4, 0x66, 0x0A, 0x08, 0xA6, 0xD2, 0x81, 0x56, 
-                       0x57, 0xEF, 0xB6, 0x3B, 0x5E, 0x16, 0x81, 0x77, 0x04, 0xDA, 0xF6, 0xBE, 
-                       0xAE, 0x80, 0x95, 0xFE, 0xB0, 0xCD, 0x7F, 0xD6, 0xA7, 0x1A, 0x72, 0x5C, 
-                       0x3C, 0xCA, 0xBC, 0xF0, 0x08, 0xA3, 0x22, 0x30, 0xB3, 0x06, 0x85, 0xC9, 
-                       0xB3, 0x20, 0x77, 0x13, 0x85, 0xDF, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 
-                       0x81, 0xA8, 0x30, 0x81, 0xA5, 0x30, 0x81, 0xA2, 0x06, 0x03, 0x55, 0x1D, 
-                       0x01, 0x04, 0x81, 0x9A, 0x30, 0x81, 0x97, 0x80, 0x10, 0x5B, 0xD0, 0x70, 
-                       0xEF, 0x69, 0x72, 0x9E, 0x23, 0x51, 0x7E, 0x14, 0xB2, 0x4D, 0x8E, 0xFF, 
-                       0xCB, 0xA1, 0x72, 0x30, 0x70, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 
-                       0x04, 0x0B, 0x13, 0x22, 0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 
-                       0x74, 0x20, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x37, 0x20, 0x4D, 
-                       0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 
-                       0x70, 0x2E, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 
-                       0x15, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 
-                       0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x21, 
-                       0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x4D, 0x69, 0x63, 
-                       0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 
-                       0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x82, 0x0F, 0x00, 
-                       0xC1, 0x00, 0x8B, 0x3C, 0x3C, 0x88, 0x11, 0xD1, 0x3E, 0xF6, 0x63, 0xEC, 
-                       0xDF, 0x40, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 
-                       0x01, 0x01, 0x04, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x95, 0xE8, 
-                       0x0B, 0xC0, 0x8D, 0xF3, 0x97, 0x18, 0x35, 0xED, 0xB8, 0x01, 0x24, 0xD8, 
-                       0x77, 0x11, 0xF3, 0x5C, 0x60, 0x32, 0x9F, 0x9E, 0x0B, 0xCB, 0x3E, 0x05, 
-                       0x91, 0x88, 0x8F, 0xC9, 0x3A, 0xE6, 0x21, 0xF2, 0xF0, 0x57, 0x93, 0x2C, 
-                       0xB5, 0xA0, 0x47, 0xC8, 0x62, 0xEF, 0xFC, 0xD7, 0xCC, 0x3B, 0x3B, 0x5A, 
-                       0xA9, 0x36, 0x54, 0x69, 0xFE, 0x24, 0x6D, 0x3F, 0xC9, 0xCC, 0xAA, 0xDE, 
-                       0x05, 0x7C, 0xDD, 0x31, 0x8D, 0x3D, 0x9F, 0x10, 0x70, 0x6A, 0xBB, 0xFE, 
-                       0x12, 0x4F, 0x18, 0x69, 0xC0, 0xFC, 0xD0, 0x43, 0xE3, 0x11, 0x5A, 0x20, 
-                       0x4F, 0xEA, 0x62, 0x7B, 0xAF, 0xAA, 0x19, 0xC8, 0x2B, 0x37, 0x25, 0x2D, 
-                       0xBE, 0x65, 0xA1, 0x12, 0x8A, 0x25, 0x0F, 0x63, 0xA3, 0xF7, 0x54, 0x1C, 
-                       0xF9, 0x21, 0xC9, 0xD6, 0x15, 0xF3, 0x52, 0xAC, 0x6E, 0x43, 0x32, 0x07, 
-                       0xFD, 0x82, 0x17, 0xF8, 0xE5, 0x67, 0x6C, 0x0D, 0x51, 0xF6, 0xBD, 0xF1, 
-                       0x52, 0xC7, 0xBD, 0xE7, 0xC4, 0x30, 0xFC, 0x20, 0x31, 0x09, 0x88, 0x1D, 
-                       0x95, 0x29, 0x1A, 0x4D, 0xD5, 0x1D, 0x02, 0xA5, 0xF1, 0x80, 0xE0, 0x03, 
-                       0xB4, 0x5B, 0xF4, 0xB1, 0xDD, 0xC8, 0x57, 0xEE, 0x65, 0x49, 0xC7, 0x52, 
-                       0x54, 0xB6, 0xB4, 0x03, 0x28, 0x12, 0xFF, 0x90, 0xD6, 0xF0, 0x08, 0x8F, 
-                       0x7E, 0xB8, 0x97, 0xC5, 0xAB, 0x37, 0x2C, 0xE4, 0x7A, 0xE4, 0xA8, 0x77, 
-                       0xE3, 0x76, 0xA0, 0x00, 0xD0, 0x6A, 0x3F, 0xC1, 0xD2, 0x36, 0x8A, 0xE0, 
-                       0x41, 0x12, 0xA8, 0x35, 0x6A, 0x1B, 0x6A, 0xDB, 0x35, 0xE1, 0xD4, 0x1C, 
-                       0x04, 0xE4, 0xA8, 0x45, 0x04, 0xC8, 0x5A, 0x33, 0x38, 0x6E, 0x4D, 0x1C, 
-                       0x0D, 0x62, 0xB7, 0x0A, 0xA2, 0x8C, 0xD3, 0xD5, 0x54, 0x3F, 0x46, 0xCD, 
-                       0x1C, 0x55, 0xA6, 0x70, 0xDB, 0x12, 0x3A, 0x87, 0x93, 0x75, 0x9F, 0xA7, 
-                       0xD2, 0xA0 };
-
-               static byte[] verisign = { 
-                       0x30, 0x82, 0x02, 0x40, 0x30, 0x82, 0x01, 0xA9, 0x02, 0x10, 0x03, 0xC7, 
-                       0x8F, 0x37, 0xDB, 0x92, 0x28, 0xDF, 0x3C, 0xBB, 0x1A, 0xAD, 0x82, 0xFA, 
-                       0x67, 0x10, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 
-                       0x01, 0x01, 0x02, 0x05, 0x00, 0x30, 0x61, 0x31, 0x11, 0x30, 0x0F, 0x06, 
-                       0x03, 0x55, 0x04, 0x07, 0x13, 0x08, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 
-                       0x65, 0x74, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 
-                       0x0E, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 
-                       0x6E, 0x63, 0x2E, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x0B, 
-                       0x13, 0x2A, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 
-                       0x6F, 0x6D, 0x6D, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x53, 0x6F, 
-                       0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 
-                       0x73, 0x68, 0x65, 0x72, 0x73, 0x20, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 
-                       0x39, 0x36, 0x30, 0x34, 0x30, 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-                       0x5A, 0x17, 0x0D, 0x30, 0x34, 0x30, 0x31, 0x30, 0x37, 0x32, 0x33, 0x35, 
-                       0x39, 0x35, 0x39, 0x5A, 0x30, 0x61, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 
-                       0x55, 0x04, 0x07, 0x13, 0x08, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65, 
-                       0x74, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0E, 
-                       0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 
-                       0x63, 0x2E, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 
-                       0x2A, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 0x6F, 
-                       0x6D, 0x6D, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x53, 0x6F, 0x66, 
-                       0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x73, 
-                       0x68, 0x65, 0x72, 0x73, 0x20, 0x43, 0x41, 0x30, 0x81, 0x9F, 0x30, 0x0D, 
-                       0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 
-                       0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 
-                       0xC3, 0xD3, 0x69, 0x65, 0x52, 0x01, 0x94, 0x54, 0xAB, 0x28, 0xC6, 0x62, 
-                       0x18, 0xB3, 0x54, 0x55, 0xC5, 0x44, 0x87, 0x45, 0x4A, 0x3B, 0xC2, 0x7E, 
-                       0xD8, 0xD3, 0xD7, 0xC8, 0x80, 0x86, 0x8D, 0xD8, 0x0C, 0xF1, 0x16, 0x9C, 
-                       0xCC, 0x6B, 0xA9, 0x29, 0xB2, 0x8F, 0x76, 0x73, 0x92, 0xC8, 0xC5, 0x62, 
-                       0xA6, 0x3C, 0xED, 0x1E, 0x05, 0x75, 0xF0, 0x13, 0x00, 0x6C, 0x14, 0x4D, 
-                       0xD4, 0x98, 0x90, 0x07, 0xBE, 0x69, 0x73, 0x81, 0xB8, 0x62, 0x4E, 0x31, 
-                       0x1E, 0xD1, 0xFC, 0xC9, 0x0C, 0xEB, 0x7D, 0x90, 0xBF, 0xAE, 0xB4, 0x47, 
-                       0x51, 0xEC, 0x6F, 0xCE, 0x64, 0x35, 0x02, 0xD6, 0x7D, 0x67, 0x05, 0x77, 
-                       0xE2, 0x8F, 0xD9, 0x51, 0xD7, 0xFB, 0x97, 0x19, 0xBC, 0x3E, 0xD7, 0x77, 
-                       0x81, 0xC6, 0x43, 0xDD, 0xF2, 0xDD, 0xDF, 0xCA, 0xA3, 0x83, 0x8B, 0xCB, 
-                       0x41, 0xC1, 0x3D, 0x22, 0x48, 0x48, 0xA6, 0x19, 0x02, 0x03, 0x01, 0x00, 
-                       0x01, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 
-                       0x01, 0x02, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0xB5, 0xBC, 0xB0, 0x75, 
-                       0x6A, 0x89, 0xA2, 0x86, 0xBD, 0x64, 0x78, 0xC3, 0xA7, 0x32, 0x75, 0x72, 
-                       0x11, 0xAA, 0x26, 0x02, 0x17, 0x60, 0x30, 0x4C, 0xE3, 0x48, 0x34, 0x19, 
-                       0xB9, 0x52, 0x4A, 0x51, 0x18, 0x80, 0xFE, 0x53, 0x2D, 0x7B, 0xD5, 0x31, 
-                       0x8C, 0xC5, 0x65, 0x99, 0x41, 0x41, 0x2F, 0xF2, 0xAE, 0x63, 0x7A, 0xE8, 
-                       0x73, 0x99, 0x15, 0x90, 0x1A, 0x1F, 0x7A, 0x8B, 0x41, 0xD0, 0x8E, 0x3A, 
-                       0xD0, 0xCD, 0x38, 0x34, 0x44, 0xD0, 0x75, 0xF8, 0xEA, 0x71, 0xC4, 0x81, 
-                       0x19, 0x38, 0x17, 0x35, 0x4A, 0xAE, 0xC5, 0x3E, 0x32, 0xE6, 0x21, 0xB8, 
-                       0x05, 0xC0, 0x93, 0xE1, 0xC7, 0x38, 0x5C, 0xD8, 0xF7, 0x93, 0x38, 0x64, 
-                       0x90, 0xED, 0x54, 0xCE, 0xCA, 0xD3, 0xD3, 0xD0, 0x5F, 0xEF, 0x04, 0x9B, 
-                       0xDE, 0x02, 0x82, 0xDD, 0x88, 0x29, 0xB1, 0xC3, 0x4F, 0xA5, 0xCD, 0x71, 
-                       0x64, 0x31, 0x3C, 0x3C };
-
-               static byte[] verisign_ts_root = { 
-                       0x30, 0x82, 0x02, 0xBC, 0x30, 0x82, 0x02, 0x25, 0x02, 0x10, 0x4A, 0x19, 
-                       0xD2, 0x38, 0x8C, 0x82, 0x59, 0x1C, 0xA5, 0x5D, 0x73, 0x5F, 0x15, 0x5D, 
-                       0xDC, 0xA3, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 
-                       0x01, 0x01, 0x04, 0x05, 0x00, 0x30, 0x81, 0x9E, 0x31, 0x1F, 0x30, 0x1D, 
-                       0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 
-                       0x69, 0x67, 0x6E, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 
-                       0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 
-                       0x04, 0x0B, 0x13, 0x0E, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 
-                       0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x2C, 0x30, 0x2A, 0x06, 0x03, 
-                       0x55, 0x04, 0x0B, 0x13, 0x23, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 
-                       0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6D, 0x70, 
-                       0x69, 0x6E, 0x67, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 
-                       0x52, 0x6F, 0x6F, 0x74, 0x31, 0x34, 0x30, 0x32, 0x06, 0x03, 0x55, 0x04, 
-                       0x0B, 0x13, 0x2B, 0x4E, 0x4F, 0x20, 0x4C, 0x49, 0x41, 0x42, 0x49, 0x4C, 
-                       0x49, 0x54, 0x59, 0x20, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 
-                       0x2C, 0x20, 0x28, 0x63, 0x29, 0x39, 0x37, 0x20, 0x56, 0x65, 0x72, 0x69, 
-                       0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x30, 0x1E, 
-                       0x17, 0x0D, 0x39, 0x37, 0x30, 0x35, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 
-                       0x30, 0x30, 0x5A, 0x17, 0x0D, 0x30, 0x34, 0x30, 0x31, 0x30, 0x37, 0x32, 
-                       0x33, 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x81, 0x9E, 0x31, 0x1F, 0x30, 
-                       0x1D, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 
-                       0x53, 0x69, 0x67, 0x6E, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 
-                       0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 
-                       0x55, 0x04, 0x0B, 0x13, 0x0E, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 
-                       0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x2C, 0x30, 0x2A, 0x06, 
-                       0x03, 0x55, 0x04, 0x0B, 0x13, 0x23, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 
-                       0x67, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6D, 
-                       0x70, 0x69, 0x6E, 0x67, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 
-                       0x20, 0x52, 0x6F, 0x6F, 0x74, 0x31, 0x34, 0x30, 0x32, 0x06, 0x03, 0x55, 
-                       0x04, 0x0B, 0x13, 0x2B, 0x4E, 0x4F, 0x20, 0x4C, 0x49, 0x41, 0x42, 0x49, 
-                       0x4C, 0x49, 0x54, 0x59, 0x20, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 
-                       0x44, 0x2C, 0x20, 0x28, 0x63, 0x29, 0x39, 0x37, 0x20, 0x56, 0x65, 0x72, 
-                       0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x30, 
-                       0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 
-                       0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 
-                       0x02, 0x81, 0x81, 0x00, 0xD3, 0x2E, 0x20, 0xF0, 0x68, 0x7C, 0x2C, 0x2D, 
-                       0x2E, 0x81, 0x1C, 0xB1, 0x06, 0xB2, 0xA7, 0x0B, 0xB7, 0x11, 0x0D, 0x57, 
-                       0xDA, 0x53, 0xD8, 0x75, 0xE3, 0xC9, 0x33, 0x2A, 0xB2, 0xD4, 0xF6, 0x09, 
-                       0x5B, 0x34, 0xF3, 0xE9, 0x90, 0xFE, 0x09, 0x0C, 0xD0, 0xDB, 0x1B, 0x5A, 
-                       0xB9, 0xCD, 0xE7, 0xF6, 0x88, 0xB1, 0x9D, 0xC0, 0x87, 0x25, 0xEB, 0x7D, 
-                       0x58, 0x10, 0x73, 0x6A, 0x78, 0xCB, 0x71, 0x15, 0xFD, 0xC6, 0x58, 0xF6, 
-                       0x29, 0xAB, 0x58, 0x5E, 0x96, 0x04, 0xFD, 0x2D, 0x62, 0x11, 0x58, 0x81, 
-                       0x1C, 0xCA, 0x71, 0x94, 0xD5, 0x22, 0x58, 0x2F, 0xD5, 0xCC, 0x14, 0x05, 
-                       0x84, 0x36, 0xBA, 0x94, 0xAA, 0xB4, 0x4D, 0x4A, 0xE9, 0xEE, 0x3B, 0x22, 
-                       0xAD, 0x56, 0x99, 0x7E, 0x21, 0x9C, 0x6C, 0x86, 0xC0, 0x4A, 0x47, 0x97, 
-                       0x6A, 0xB4, 0xA6, 0x36, 0xD5, 0xFC, 0x09, 0x2D, 0xD3, 0xB4, 0x39, 0x9B, 
-                       0x02, 0x03, 0x01, 0x00, 0x01, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 
-                       0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 
-                       0x61, 0x55, 0x0E, 0x3E, 0x7B, 0xC7, 0x92, 0x12, 0x7E, 0x11, 0x10, 0x8E, 
-                       0x22, 0xCC, 0xD4, 0xB3, 0x13, 0x2B, 0x5B, 0xE8, 0x44, 0xE4, 0x0B, 0x78, 
-                       0x9E, 0xA4, 0x7E, 0xF3, 0xA7, 0x07, 0x72, 0x1E, 0xE2, 0x59, 0xEF, 0xCC, 
-                       0x84, 0xE3, 0x89, 0x94, 0x4C, 0xDB, 0x4E, 0x61, 0xEF, 0xB3, 0xA4, 0xFB, 
-                       0x46, 0x3D, 0x50, 0x34, 0x0B, 0x9F, 0x70, 0x56, 0xF6, 0x8E, 0x2A, 0x7F, 
-                       0x17, 0xCE, 0xE5, 0x63, 0xBF, 0x79, 0x69, 0x07, 0x73, 0x2E, 0xB0, 0x95, 
-                       0x28, 0x8A, 0xF5, 0xED, 0xAA, 0xA9, 0xD2, 0x5D, 0xCD, 0x0A, 0xCA, 0x10, 
-                       0x09, 0x8F, 0xCE, 0xB3, 0xAF, 0x28, 0x96, 0xC4, 0x79, 0x29, 0x84, 0x92, 
-                       0xDC, 0xFF, 0xBA, 0x67, 0x42, 0x48, 0xA6, 0x90, 0x10, 0xE4, 0xBF, 0x61, 
-                       0xF8, 0x9C, 0x53, 0xE5, 0x93, 0xD1, 0x73, 0x3F, 0xF8, 0xFD, 0x9D, 0x4F, 
-                       0x84, 0xAC, 0x55, 0xD1, 0xFD, 0x11, 0x63, 0x63 };
-
-               // old verisign code signing certificate (96-99) using MD2
-               // still valid because of the timestamps
-               static byte[] oldverisign = { 
-                       0x30, 0x82, 0x02, 0x35, 0x30, 0x82, 0x01, 0x9E, 0x02, 0x05, 0x02, 0xB4, 
-                       0x00, 0x00, 0x01, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 
-                       0x0D, 0x01, 0x01, 0x02, 0x05, 0x00, 0x30, 0x61, 0x31, 0x11, 0x30, 0x0F, 
-                       0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x08, 0x49, 0x6E, 0x74, 0x65, 0x72, 
-                       0x6E, 0x65, 0x74, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0A, 
-                       0x13, 0x0E, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 
-                       0x49, 0x6E, 0x63, 0x2E, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 
-                       0x0B, 0x13, 0x2A, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 
-                       0x43, 0x6F, 0x6D, 0x6D, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x53, 
-                       0x6F, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x50, 0x75, 0x62, 0x6C, 
-                       0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x20, 0x43, 0x41, 0x30, 0x1E, 0x17, 
-                       0x0D, 0x39, 0x36, 0x30, 0x34, 0x30, 0x39, 0x30, 0x39, 0x33, 0x35, 0x35, 
-                       0x39, 0x5A, 0x17, 0x0D, 0x39, 0x39, 0x31, 0x32, 0x33, 0x31, 0x30, 0x39, 
-                       0x33, 0x35, 0x35, 0x38, 0x5A, 0x30, 0x61, 0x31, 0x11, 0x30, 0x0F, 0x06, 
-                       0x03, 0x55, 0x04, 0x07, 0x13, 0x08, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 
-                       0x65, 0x74, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 
-                       0x0E, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 
-                       0x6E, 0x63, 0x2E, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x0B, 
-                       0x13, 0x2A, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 
-                       0x6F, 0x6D, 0x6D, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x53, 0x6F, 
-                       0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 
-                       0x73, 0x68, 0x65, 0x72, 0x73, 0x20, 0x43, 0x41, 0x30, 0x81, 0x9F, 0x30, 
-                       0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 
-                       0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 
-                       0x00, 0xC3, 0xD3, 0x69, 0x65, 0x52, 0x01, 0x94, 0x54, 0xAB, 0x28, 0xC6, 
-                       0x62, 0x18, 0xB3, 0x54, 0x55, 0xC5, 0x44, 0x87, 0x45, 0x4A, 0x3B, 0xC2, 
-                       0x7E, 0xD8, 0xD3, 0xD7, 0xC8, 0x80, 0x86, 0x8D, 0xD8, 0x0C, 0xF1, 0x16, 
-                       0x9C, 0xCC, 0x6B, 0xA9, 0x29, 0xB2, 0x8F, 0x76, 0x73, 0x92, 0xC8, 0xC5, 
-                       0x62, 0xA6, 0x3C, 0xED, 0x1E, 0x05, 0x75, 0xF0, 0x13, 0x00, 0x6C, 0x14, 
-                       0x4D, 0xD4, 0x98, 0x90, 0x07, 0xBE, 0x69, 0x73, 0x81, 0xB8, 0x62, 0x4E, 
-                       0x31, 0x1E, 0xD1, 0xFC, 0xC9, 0x0C, 0xEB, 0x7D, 0x90, 0xBF, 0xAE, 0xB4, 
-                       0x47, 0x51, 0xEC, 0x6F, 0xCE, 0x64, 0x35, 0x02, 0xD6, 0x7D, 0x67, 0x05, 
-                       0x77, 0xE2, 0x8F, 0xD9, 0x51, 0xD7, 0xFB, 0x97, 0x19, 0xBC, 0x3E, 0xD7, 
-                       0x77, 0x81, 0xC6, 0x43, 0xDD, 0xF2, 0xDD, 0xDF, 0xCA, 0xA3, 0x83, 0x8B, 
-                       0xCB, 0x41, 0xC1, 0x3D, 0x22, 0x48, 0x48, 0xA6, 0x19, 0x02, 0x03, 0x01, 
-                       0x00, 0x01, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 
-                       0x01, 0x01, 0x02, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x31, 0xBB, 0x30, 
-                       0xC5, 0x6F, 0xA7, 0xBE, 0x23, 0x26, 0x6D, 0xA5, 0x99, 0x76, 0x68, 0xC5, 
-                       0x2A, 0x03, 0x28, 0x4B, 0xF3, 0x89, 0xB0, 0x99, 0x03, 0x32, 0x5B, 0x94, 
-                       0xA1, 0x7B, 0xC1, 0xC8, 0x19, 0xD7, 0xF4, 0x95, 0x6C, 0xAC, 0x73, 0x24, 
-                       0x0A, 0xCB, 0x44, 0x05, 0x7D, 0x78, 0xEE, 0xFA, 0xF6, 0xA7, 0x9F, 0x87, 
-                       0xA4, 0x7F, 0xE8, 0xF3, 0x4B, 0x4F, 0x32, 0x30, 0x30, 0x15, 0x08, 0x17, 
-                       0x01, 0xB2, 0x80, 0xFC, 0xA1, 0xD9, 0x24, 0x87, 0xA5, 0x00, 0x5F, 0xCD, 
-                       0xDD, 0x29, 0xC8, 0xA1, 0xA5, 0xCA, 0x58, 0x75, 0x39, 0x60, 0x45, 0x1F, 
-                       0xDE, 0x8D, 0xD6, 0x57, 0x08, 0xD3, 0xC0, 0x1B, 0x81, 0xC2, 0xD9, 0xE2, 
-                       0x00, 0x8C, 0xEC, 0x0A, 0x91, 0x02, 0xC6, 0x9D, 0x36, 0x74, 0x9A, 0x83, 
-                       0x6B, 0xEF, 0x7C, 0x8C, 0xD2, 0xA5, 0x2A, 0x6A, 0xC9, 0x7E, 0xDB, 0xA9, 
-                       0xBD, 0x2B, 0x22, 0xFF, 0x1C };
-
-               static byte[] thawte = { 
-                       0x30, 0x82, 0x03, 0x13, 0x30, 0x82, 0x02, 0x7C, 0xA0, 0x03, 0x02, 0x01, 
-                       0x02, 0x02, 0x01, 0x01, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 
-                       0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x30, 0x81, 0xC4, 0x31, 0x0B, 
-                       0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x5A, 0x41, 0x31, 
-                       0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0C, 0x57, 0x65, 
-                       0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x43, 0x61, 0x70, 0x65, 0x31, 0x12, 
-                       0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, 0x61, 0x70, 
-                       0x65, 0x20, 0x54, 0x6F, 0x77, 0x6E, 0x31, 0x1D, 0x30, 0x1B, 0x06, 0x03, 
-                       0x55, 0x04, 0x0A, 0x13, 0x14, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 
-                       0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x63, 
-                       0x63, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x1F, 
-                       0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 
-                       0x6E, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, 
-                       0x69, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x31, 0x19, 0x30, 0x17, 0x06, 
-                       0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 
-                       0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x31, 0x26, 
-                       0x30, 0x24, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 
-                       0x01, 0x16, 0x17, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2D, 0x63, 0x65, 
-                       0x72, 0x74, 0x73, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2E, 0x63, 
-                       0x6F, 0x6D, 0x30, 0x1E, 0x17, 0x0D, 0x39, 0x36, 0x30, 0x38, 0x30, 0x31, 
-                       0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x30, 0x31, 
-                       0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x81, 
-                       0xC4, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 
-                       0x5A, 0x41, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 
-                       0x0C, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x43, 0x61, 0x70, 
-                       0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 
-                       0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6F, 0x77, 0x6E, 0x31, 0x1D, 0x30, 
-                       0x1B, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x14, 0x54, 0x68, 0x61, 0x77, 
-                       0x74, 0x65, 0x20, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 
-                       0x67, 0x20, 0x63, 0x63, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 
-                       0x0B, 0x13, 0x1F, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 
-                       0x74, 0x69, 0x6F, 0x6E, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 
-                       0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x31, 0x19, 
-                       0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x54, 0x68, 0x61, 
-                       0x77, 0x74, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 
-                       0x41, 0x31, 0x26, 0x30, 0x24, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 
-                       0x0D, 0x01, 0x09, 0x01, 0x16, 0x17, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 
-                       0x2D, 0x63, 0x65, 0x72, 0x74, 0x73, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 
-                       0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 
-                       0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 
-                       0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xD3, 0xA4, 
-                       0x50, 0x6E, 0xC8, 0xFF, 0x56, 0x6B, 0xE6, 0xCF, 0x5D, 0xB6, 0xEA, 0x0C, 
-                       0x68, 0x75, 0x47, 0xA2, 0xAA, 0xC2, 0xDA, 0x84, 0x25, 0xFC, 0xA8, 0xF4, 
-                       0x47, 0x51, 0xDA, 0x85, 0xB5, 0x20, 0x74, 0x94, 0x86, 0x1E, 0x0F, 0x75, 
-                       0xC9, 0xE9, 0x08, 0x61, 0xF5, 0x06, 0x6D, 0x30, 0x6E, 0x15, 0x19, 0x02, 
-                       0xE9, 0x52, 0xC0, 0x62, 0xDB, 0x4D, 0x99, 0x9E, 0xE2, 0x6A, 0x0C, 0x44, 
-                       0x38, 0xCD, 0xFE, 0xBE, 0xE3, 0x64, 0x09, 0x70, 0xC5, 0xFE, 0xB1, 0x6B, 
-                       0x29, 0xB6, 0x2F, 0x49, 0xC8, 0x3B, 0xD4, 0x27, 0x04, 0x25, 0x10, 0x97, 
-                       0x2F, 0xE7, 0x90, 0x6D, 0xC0, 0x28, 0x42, 0x99, 0xD7, 0x4C, 0x43, 0xDE, 
-                       0xC3, 0xF5, 0x21, 0x6D, 0x54, 0x9F, 0x5D, 0xC3, 0x58, 0xE1, 0xC0, 0xE4, 
-                       0xD9, 0x5B, 0xB0, 0xB8, 0xDC, 0xB4, 0x7B, 0xDF, 0x36, 0x3A, 0xC2, 0xB5, 
-                       0x66, 0x22, 0x12, 0xD6, 0x87, 0x0D, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 
-                       0x13, 0x30, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 
-                       0xFF, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x0D, 0x06, 0x09, 
-                       0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x03, 
-                       0x81, 0x81, 0x00, 0x07, 0xFA, 0x4C, 0x69, 0x5C, 0xFB, 0x95, 0xCC, 0x46, 
-                       0xEE, 0x85, 0x83, 0x4D, 0x21, 0x30, 0x8E, 0xCA, 0xD9, 0xA8, 0x6F, 0x49, 
-                       0x1A, 0xE6, 0xDA, 0x51, 0xE3, 0x60, 0x70, 0x6C, 0x84, 0x61, 0x11, 0xA1, 
-                       0x1A, 0xC8, 0x48, 0x3E, 0x59, 0x43, 0x7D, 0x4F, 0x95, 0x3D, 0xA1, 0x8B, 
-                       0xB7, 0x0B, 0x62, 0x98, 0x7A, 0x75, 0x8A, 0xDD, 0x88, 0x4E, 0x4E, 0x9E, 
-                       0x40, 0xDB, 0xA8, 0xCC, 0x32, 0x74, 0xB9, 0x6F, 0x0D, 0xC6, 0xE3, 0xB3, 
-                       0x44, 0x0B, 0xD9, 0x8A, 0x6F, 0x9A, 0x29, 0x9B, 0x99, 0x18, 0x28, 0x3B, 
-                       0xD1, 0xE3, 0x40, 0x28, 0x9A, 0x5A, 0x3C, 0xD5, 0xB5, 0xE7, 0x20, 0x1B, 
-                       0x8B, 0xCA, 0xA4, 0xAB, 0x8D, 0xE9, 0x51, 0xD9, 0xE2, 0x4C, 0x2C, 0x59, 
-                       0xA9, 0xDA, 0xB9, 0xB2, 0x75, 0x1B, 0xF6, 0x42, 0xF2, 0xEF, 0xC7, 0xF2, 
-                       0x18, 0xF9, 0x89, 0xBC, 0xA3, 0xFF, 0x8A, 0x23, 0x2E, 0x70, 0x47 };
-
-               static internal X509CertificateCollection coll;
-
-               static TrustAnchors () 
-               {
-                       coll = new X509CertificateCollection ();
-                       coll.Add (new X509Certificate (msroot));
-                       coll.Add (new X509Certificate (verisign));
-                       coll.Add (new X509Certificate (verisign_ts_root));
-                       coll.Add (new X509Certificate (thawte));
-               }
-
-               public X509CertificateCollection Anchors {
-                       get { return coll; }
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X501Name.cs b/mcs/class/corlib/Mono.Security.X509/X501Name.cs
deleted file mode 100644 (file)
index 8343e5f..0000000
+++ /dev/null
@@ -1,400 +0,0 @@
-//
-// X501Name.cs: X.501 Distinguished Names stuff 
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Text;
-
-using Mono.Security;
-using Mono.Security.Cryptography;
-
-namespace Mono.Security.X509 {
-
-       // References:
-       // 1.   Information technology - Open Systems Interconnection - The Directory: Models
-       //      http://www.itu.int/rec/recommendation.asp?type=items&lang=e&parent=T-REC-X.501-200102-I
-       // 2.   RFC2253: Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names
-       //      http://www.ietf.org/rfc/rfc2253.txt
-
-       /*
-        * Name ::= CHOICE { RDNSequence }
-        * 
-        * RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
-        * 
-        * RelativeDistinguishedName ::= SET OF AttributeTypeAndValue
-        */
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       sealed class X501 {
-
-               static byte[] countryName = { 0x55, 0x04, 0x06 };
-               static byte[] organizationName = { 0x55, 0x04, 0x0A };
-               static byte[] organizationalUnitName = { 0x55, 0x04, 0x0B };
-               static byte[] commonName = { 0x55, 0x04, 0x03 };
-               static byte[] localityName = { 0x55, 0x04, 0x07 };
-               static byte[] stateOrProvinceName = { 0x55, 0x04, 0x08 };
-               static byte[] streetAddress = { 0x55, 0x04, 0x09 };
-               //static byte[] serialNumber = { 0x55, 0x04, 0x05 };
-               static byte[] domainComponent = { 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19 };
-               static byte[] userid = { 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x01 };
-               static byte[] email = { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01 };
-               static byte[] dnQualifier = { 0x55, 0x04, 0x2E };
-               static byte[] title = { 0x55, 0x04, 0x0C };
-               static byte[] surname = { 0x55, 0x04, 0x04 };
-               static byte[] givenName = { 0x55, 0x04, 0x2A };
-               static byte[] initial = { 0x55, 0x04, 0x2B };
-
-               private X501 () 
-               {
-               }
-
-               static public string ToString (ASN1 seq) 
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       for (int i = 0; i < seq.Count; i++) {
-                               ASN1 entry = seq [i];
-                               AppendEntry (sb, entry, true);
-
-                               // separator (not on last iteration)
-                               if (i < seq.Count - 1)
-                                       sb.Append (", ");
-                       }
-                       return sb.ToString ();
-               }
-
-               static public string ToString (ASN1 seq, bool reversed, string separator, bool quotes)
-               {
-                       StringBuilder sb = new StringBuilder ();
-
-                       if (reversed) {
-                               for (int i = seq.Count - 1; i >= 0; i--) {
-                                       ASN1 entry = seq [i];
-                                       AppendEntry (sb, entry, quotes);
-
-                                       // separator (not on last iteration)
-                                       if (i > 0)
-                                               sb.Append (separator);
-                               }
-                       } else {
-                               for (int i = 0; i < seq.Count; i++) {
-                                       ASN1 entry = seq [i];
-                                       AppendEntry (sb, entry, quotes);
-
-                                       // separator (not on last iteration)
-                                       if (i < seq.Count - 1)
-                                               sb.Append (separator);
-                               }
-                       }
-                       return sb.ToString ();
-               }
-
-               static private void AppendEntry (StringBuilder sb, ASN1 entry, bool quotes)
-               {
-                       // multiple entries are valid
-                       for (int k = 0; k < entry.Count; k++) {
-                               ASN1 pair = entry [k];
-                               ASN1 s = pair [1];
-                               if (s == null)
-                                       continue;
-
-                               ASN1 poid = pair [0];
-                               if (poid == null)
-                                       continue;
-
-                               if (poid.CompareValue (countryName))
-                                       sb.Append ("C=");
-                               else if (poid.CompareValue (organizationName))
-                                       sb.Append ("O=");
-                               else if (poid.CompareValue (organizationalUnitName))
-                                       sb.Append ("OU=");
-                               else if (poid.CompareValue (commonName))
-                                       sb.Append ("CN=");
-                               else if (poid.CompareValue (localityName))
-                                       sb.Append ("L=");
-                               else if (poid.CompareValue (stateOrProvinceName))
-                                       sb.Append ("S=");       // NOTE: RFC2253 uses ST=
-                               else if (poid.CompareValue (streetAddress))
-                                       sb.Append ("STREET=");
-                               else if (poid.CompareValue (domainComponent))
-                                       sb.Append ("DC=");
-                               else if (poid.CompareValue (userid))
-                                       sb.Append ("UID=");
-                               else if (poid.CompareValue (email))
-                                       sb.Append ("E=");       // NOTE: Not part of RFC2253
-                               else if (poid.CompareValue (dnQualifier))
-                                       sb.Append ("dnQualifier=");
-                               else if (poid.CompareValue (title))
-                                       sb.Append ("T=");
-                               else if (poid.CompareValue (surname))
-                                       sb.Append ("SN=");
-                               else if (poid.CompareValue (givenName))
-                                       sb.Append ("G=");
-                               else if (poid.CompareValue (initial))
-                                       sb.Append ("I=");
-                               else {
-                                       // unknown OID
-                                       sb.Append ("OID.");     // NOTE: Not present as RFC2253
-                                       sb.Append (ASN1Convert.ToOid (poid));
-                                       sb.Append ("=");
-                               }
-
-                               string sValue = null;
-                               // 16bits or 8bits string ? TODO not complete (+special chars!)
-                               if (s.Tag == 0x1E) {
-                                       // BMPSTRING
-                                       StringBuilder sb2 = new StringBuilder ();
-                                       for (int j = 1; j < s.Value.Length; j += 2)
-                                               sb2.Append ((char)s.Value[j]);
-                                       sValue = sb2.ToString ();
-                               } else {
-                                       if (s.Tag == 0x14)
-                                               sValue = Encoding.UTF7.GetString (s.Value);
-                                       else
-                                               sValue = Encoding.UTF8.GetString (s.Value);
-                                       // in some cases we must quote (") the value
-                                       // Note: this doesn't seems to conform to RFC2253
-                                       char[] specials = { ',', '+', '"', '\\', '<', '>', ';' };
-                                       if (quotes) {
-                                               if ((sValue.IndexOfAny (specials, 0, sValue.Length) > 0) ||
-                                                   sValue.StartsWith (" ") || (sValue.EndsWith (" ")))
-                                                       sValue = "\"" + sValue + "\"";
-                                       }
-                               }
-
-                               sb.Append (sValue);
-
-                               // separator (not on last iteration)
-                               if (k < entry.Count - 1)
-                                       sb.Append (", ");
-                       }
-               }
-
-               static private X520.AttributeTypeAndValue GetAttributeFromOid (string attributeType) 
-               {
-                       string s = attributeType.ToUpper (CultureInfo.InvariantCulture).Trim ();
-                       switch (s) {
-                               case "C":
-                                       return new X520.CountryName ();
-                               case "O":
-                                       return new X520.OrganizationName ();
-                               case "OU":
-                                       return new X520.OrganizationalUnitName ();
-                               case "CN":
-                                       return new X520.CommonName ();
-                               case "L":
-                                       return new X520.LocalityName ();
-                               case "S":       // Microsoft
-                               case "ST":      // RFC2253
-                                       return new X520.StateOrProvinceName ();
-                               case "E":       // NOTE: Not part of RFC2253
-                                       return new X520.EmailAddress ();
-                               case "DC":      // RFC2247
-                                       return new X520.DomainComponent ();
-                               case "UID":     // RFC1274
-                                       return new X520.UserId ();
-                               case "DNQUALIFIER":
-                                       return new X520.DnQualifier ();
-                               case "T":
-                                       return new X520.Title ();
-                               case "SN":
-                                       return new X520.Surname ();
-                               case "G":
-                                       return new X520.GivenName ();
-                               case "I":
-                                       return new X520.Initial ();
-                               default:
-                                       if (s.StartsWith ("OID.")) {
-                                               // MUST support it but it OID may be without it
-                                               return new X520.Oid (s.Substring (4));
-                                       } else {
-                                               if (IsOid (s))
-                                                       return new X520.Oid (s);
-                                               else
-                                                       return null;
-                                       }
-                       }
-               }
-
-               static private bool IsOid (string oid)
-               {
-                       try {
-                               ASN1 asn = ASN1Convert.FromOid (oid);
-                               return (asn.Tag == 0x06);
-                       }
-                       catch {
-                               return false;
-                       }
-               }
-
-               // no quote processing
-               static private X520.AttributeTypeAndValue ReadAttribute (string value, ref int pos)
-               {
-                       while ((value[pos] == ' ') && (pos < value.Length))
-                               pos++;
-
-                       // get '=' position in substring
-                       int equal = value.IndexOf ('=', pos);
-                       if (equal == -1) {
-                               string msg = Locale.GetText ("No attribute found.");
-                               throw new FormatException (msg);
-                       }
-
-                       string s = value.Substring (pos, equal - pos);
-                       X520.AttributeTypeAndValue atv = GetAttributeFromOid (s);
-                       if (atv == null) {
-                               string msg = Locale.GetText ("Unknown attribute '{0}'.");
-                               throw new FormatException (String.Format (msg, s));
-                       }
-                       pos = equal + 1; // skip the '='
-                       return atv;
-               }
-
-               static private bool IsHex (char c)
-               {
-                       if (Char.IsDigit (c))
-                               return true;
-                       char up = Char.ToUpper (c, CultureInfo.InvariantCulture);
-                       return ((up >= 'A') && (up <= 'F'));
-               }
-
-               static string ReadHex (string value, ref int pos)
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       // it is (at least an) 8 bits char
-                       sb.Append (value[pos++]);
-                       sb.Append (value[pos]);
-                       // look ahead for a 16 bits char
-                       if ((pos < value.Length - 4) && (value[pos+1] == '\\') && IsHex (value[pos+2])) {
-                               pos += 2; // pass last char and skip \
-                               sb.Append (value[pos++]);
-                               sb.Append (value[pos]);
-                       }
-                       byte[] data = CryptoConvert.FromHex (sb.ToString ());
-                       return Encoding.UTF8.GetString (data);
-               }
-
-               static private int ReadEscaped (StringBuilder sb, string value, int pos)
-               {
-                       switch (value[pos]) {
-                       case '\\':
-                       case '"':
-                       case '=':
-                       case ';':
-                       case '<':
-                       case '>':
-                       case '+':
-                       case '#':
-                       case ',':
-                               sb.Append (value[pos]);
-                               return pos;
-                       default:
-                               if (pos >= value.Length - 2) {
-                                       string msg = Locale.GetText ("Malformed escaped value '{0}'.");
-                                       throw new FormatException (string.Format (msg, value.Substring (pos)));
-                               }
-                               // it's either a 8 bits or 16 bits char
-                               sb.Append (ReadHex (value, ref pos));
-                               return pos;
-                       }
-               }
-
-               static private int ReadQuoted (StringBuilder sb, string value, int pos)
-               {
-                       int original = pos;
-                       while (pos <= value.Length) {
-                               switch (value[pos]) {
-                               case '"':
-                                       return pos;
-                               case '\\':
-                                       return ReadEscaped (sb, value, pos);
-                               default:
-                                       sb.Append (value[pos]);
-                                       pos++;
-                                       break;
-                               }
-                       }
-                       string msg = Locale.GetText ("Malformed quoted value '{0}'.");
-                       throw new FormatException (string.Format (msg, value.Substring (original)));
-               }
-
-               static private string ReadValue (string value, ref int pos)
-               {
-                       int original = pos;
-                       StringBuilder sb = new StringBuilder ();
-                       while (pos < value.Length) {
-                               switch (value [pos]) {
-                               case '\\':
-                                       pos = ReadEscaped (sb, value, ++pos);
-                                       break;
-                               case '"':
-                                       pos = ReadQuoted (sb, value, ++pos);
-                                       break;
-                               case '=':
-                               case ';':
-                               case '<':
-                               case '>':
-                                       string msg = Locale.GetText ("Malformed value '{0}' contains '{1}' outside quotes.");
-                                       throw new FormatException (string.Format (msg, value.Substring (original), value[pos]));
-                               case '+':
-                               case '#':
-                                       throw new NotImplementedException ();
-                               case ',':
-                                       pos++;
-                                       return sb.ToString ();
-                               default:
-                                       sb.Append (value[pos]);
-                                       break;
-                               }
-                               pos++;
-                       }
-                       return sb.ToString ();
-               }
-
-               static public ASN1 FromString (string rdn) 
-               {
-                       if (rdn == null)
-                               throw new ArgumentNullException ("rdn");
-
-                       int pos = 0;
-                       ASN1 asn1 = new ASN1 (0x30);
-                       while (pos < rdn.Length) {
-                               X520.AttributeTypeAndValue atv = ReadAttribute (rdn, ref pos);
-                               atv.Value = ReadValue (rdn, ref pos);
-
-                               ASN1 sequence = new ASN1 (0x31);
-                               sequence.Add (atv.GetASN1 ());
-                               asn1.Add (sequence); 
-                       }
-                       return asn1;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509CRL.cs b/mcs/class/corlib/Mono.Security.X509/X509CRL.cs
deleted file mode 100644 (file)
index ca33845..0000000
+++ /dev/null
@@ -1,424 +0,0 @@
-//
-// X509CRL.cs: Handles X.509 certificates revocation lists.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004,2006 Novell Inc. (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Globalization;
-using System.IO;
-using System.Security.Cryptography;
-
-using Mono.Security.X509.Extensions;
-
-namespace Mono.Security.X509 {
-       /*
-        * CertificateList  ::=  SEQUENCE  {
-        *      tbsCertList          TBSCertList,
-        *      signatureAlgorithm   AlgorithmIdentifier,
-        *      signature            BIT STRING  
-        * }
-        * 
-        * TBSCertList  ::=  SEQUENCE  {
-        *      version                 Version OPTIONAL,
-        *              -- if present, MUST be v2
-        *      signature               AlgorithmIdentifier,
-        *      issuer                  Name,
-        *      thisUpdate              Time,
-        *      nextUpdate              Time OPTIONAL,
-        *      revokedCertificates     SEQUENCE OF SEQUENCE  {
-        *              userCertificate         CertificateSerialNumber,
-        *              revocationDate          Time,
-        *              crlEntryExtensions      Extensions OPTIONAL
-        *                      -- if present, MUST be v2
-        *      }  OPTIONAL,
-        *      crlExtensions           [0] Extensions OPTIONAL }
-        *              -- if present, MUST be v2
-        */
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class X509Crl {
-
-               public class X509CrlEntry {
-
-                       private byte[] sn;
-                       private DateTime revocationDate;
-                       private X509ExtensionCollection extensions;
-
-                       internal X509CrlEntry (byte[] serialNumber, DateTime revocationDate, X509ExtensionCollection extensions) 
-                       {
-                               sn = serialNumber;
-                               this.revocationDate = revocationDate;
-                               if (extensions == null)
-                                       this.extensions = new X509ExtensionCollection ();
-                               else
-                                       this.extensions = extensions;
-                       }
-
-                       internal X509CrlEntry (ASN1 entry) 
-                       {
-                               sn = entry [0].Value;
-                               Array.Reverse (sn);
-                               revocationDate = ASN1Convert.ToDateTime (entry [1]);
-                               extensions = new X509ExtensionCollection (entry [2]);
-                       }
-
-                       public byte[] SerialNumber {
-                               get { return (byte[]) sn.Clone (); }
-                       }
-
-                       public DateTime RevocationDate {
-                               get { return revocationDate; }
-                       }
-
-                       public X509ExtensionCollection Extensions {
-                               get { return extensions; }
-                       }
-
-                       public byte[] GetBytes () 
-                       {
-                               ASN1 sequence = new ASN1 (0x30);
-                               sequence.Add (new ASN1 (0x02, sn));
-                               sequence.Add (ASN1Convert.FromDateTime (revocationDate));
-                               if (extensions.Count > 0)
-                                       sequence.Add (new ASN1 (extensions.GetBytes ()));
-                               return sequence.GetBytes ();
-                       }
-               }
-
-               private string issuer;
-               private byte version;
-               private DateTime thisUpdate;
-               private DateTime nextUpdate;
-               private ArrayList entries;
-               private string signatureOID;
-               private byte[] signature;
-               private X509ExtensionCollection extensions;
-               private byte[] encoded;
-               private byte[] hash_value;
-
-               public X509Crl (byte[] crl) 
-               {
-                       if (crl == null)
-                               throw new ArgumentNullException ("crl");
-                       encoded = (byte[]) crl.Clone ();
-                       Parse (encoded);
-               }
-
-               private void Parse (byte[] crl) 
-               {
-                       string e = "Input data cannot be coded as a valid CRL.";
-                       try {
-                               // CertificateList  ::=  SEQUENCE  {
-                               ASN1 encodedCRL = new ASN1 (encoded);
-                               if ((encodedCRL.Tag != 0x30) || (encodedCRL.Count != 3))
-                                       throw new CryptographicException (e);
-
-                               // CertificateList / TBSCertList,
-                               ASN1 toBeSigned = encodedCRL [0];
-                               if ((toBeSigned.Tag != 0x30) || (toBeSigned.Count < 3))
-                                       throw new CryptographicException (e);
-
-                               int n = 0;
-                               // CertificateList / TBSCertList / Version OPTIONAL, -- if present, MUST be v2
-                               if (toBeSigned [n].Tag == 0x02) {
-                                       version = (byte) (toBeSigned [n++].Value [0] + 1);
-                               }
-                               else
-                                       version = 1; // DEFAULT
-                               // CertificateList / TBSCertList / AlgorithmIdentifier,
-                               signatureOID = ASN1Convert.ToOid (toBeSigned [n++][0]);
-                               // CertificateList / TBSCertList / Name,
-                               issuer = X501.ToString (toBeSigned [n++]);
-                               // CertificateList / TBSCertList / Time,
-                               thisUpdate = ASN1Convert.ToDateTime (toBeSigned [n++]);
-                               // CertificateList / TBSCertList / Time OPTIONAL,
-                               ASN1 next = toBeSigned [n++];
-                               if ((next.Tag == 0x17) || (next.Tag == 0x18)) {
-                                       nextUpdate = ASN1Convert.ToDateTime (next);
-                                       next = toBeSigned [n++];
-                               }
-                               // CertificateList / TBSCertList / revokedCertificates  SEQUENCE OF SEQUENCE  {
-                               entries = new ArrayList ();
-                               // this is OPTIONAL so it may not be present if no entries exists
-                               if ((next != null) && (next.Tag == 0x30)) {
-                                       ASN1 revokedCertificates = next;
-                                       for (int i=0; i < revokedCertificates.Count; i++) {
-                                               entries.Add (new X509CrlEntry (revokedCertificates [i]));
-                                       }
-                               } else {
-                                       n--;
-                               }
-                               // CertificateList / TBSCertList / crlExtensions [0] Extensions OPTIONAL }
-                               ASN1 extns = toBeSigned [n];
-                               if ((extns != null) && (extns.Tag == 0xA0) && (extns.Count == 1))
-                                       extensions = new X509ExtensionCollection (extns [0]);
-                               else
-                                       extensions = new X509ExtensionCollection (null); // result in a read only object
-                               // CertificateList / AlgorithmIdentifier
-                               string signatureAlgorithm = ASN1Convert.ToOid (encodedCRL [1][0]);
-                               if (signatureOID != signatureAlgorithm)
-                                       throw new CryptographicException (e + " [Non-matching signature algorithms in CRL]");
-
-                               // CertificateList / BIT STRING 
-                               byte[] bitstring = encodedCRL [2].Value;
-                               // first byte contains unused bits in first byte
-                               signature = new byte [bitstring.Length - 1];
-                               Buffer.BlockCopy (bitstring, 1, signature, 0, signature.Length);
-                       }
-                       catch {
-                               throw new CryptographicException (e);
-                       }
-               }
-
-               public ArrayList Entries {
-                       get { return ArrayList.ReadOnly (entries); }
-               }
-
-               public X509CrlEntry this [int index] {
-                       get { return (X509CrlEntry) entries [index]; }
-               }
-
-               public X509CrlEntry this [byte[] serialNumber] {
-                       get { return GetCrlEntry (serialNumber); }
-               }
-
-               public X509ExtensionCollection Extensions {
-                       get { return extensions; }
-               }
-
-               public byte[] Hash {
-                       get {
-                               if (hash_value == null) {
-                                       ASN1 encodedCRL = new ASN1 (encoded);
-                                       byte[] toBeSigned = encodedCRL [0].GetBytes ();
-                                       HashAlgorithm ha = HashAlgorithm.Create (GetHashName ());
-                                       hash_value = ha.ComputeHash (toBeSigned);
-                               }
-                               return hash_value;
-                       }
-               }
-
-               public string IssuerName {
-                       get { return issuer; }
-               }
-
-               public DateTime NextUpdate {
-                       get { return nextUpdate; }
-               }
-
-               public DateTime ThisUpdate {
-                       get { return thisUpdate; }
-               }
-
-               public string SignatureAlgorithm {
-                       get { return signatureOID; }
-               }
-
-               public byte[] Signature {
-                       get { 
-                               if (signature == null)
-                                       return null;
-                               return (byte[]) signature.Clone ();
-                       }
-               }
-
-               public byte[] RawData {
-                       get { return (byte[]) encoded.Clone (); }
-               }
-
-               public byte Version {
-                       get { return version; }
-               }
-
-               public bool IsCurrent {
-                       get { return WasCurrent (DateTime.Now); }
-               }
-
-               public bool WasCurrent (DateTime instant) 
-               {
-                       if (nextUpdate == DateTime.MinValue)
-                               return (instant >= thisUpdate);
-                       else
-                               return ((instant >= thisUpdate) && (instant <= nextUpdate));
-               }
-
-               public byte[] GetBytes () 
-               {
-                       return (byte[]) encoded.Clone ();
-               }
-
-               private bool Compare (byte[] array1, byte[] array2) 
-               {
-                       if ((array1 == null) && (array2 == null))
-                               return true;
-                       if ((array1 == null) || (array2 == null))
-                               return false;
-                       if (array1.Length != array2.Length)
-                               return false;
-                       for (int i=0; i < array1.Length; i++) {
-                               if (array1 [i] != array2 [i])
-                                       return false;
-                       }
-                       return true;
-               }
-
-               public X509CrlEntry GetCrlEntry (X509Certificate x509) 
-               {
-                       if (x509 == null)
-                               throw new ArgumentNullException ("x509");
-
-                       return GetCrlEntry (x509.SerialNumber);
-               }
-
-               public X509CrlEntry GetCrlEntry (byte[] serialNumber) 
-               {
-                       if (serialNumber == null)
-                               throw new ArgumentNullException ("serialNumber");
-
-                       for (int i=0; i < entries.Count; i++) {
-                               X509CrlEntry entry = (X509CrlEntry) entries [i];
-                               if (Compare (serialNumber, entry.SerialNumber))
-                                       return entry;
-                       }
-                       return null;
-               }
-
-               public bool VerifySignature (X509Certificate x509) 
-               {
-                       if (x509 == null)
-                               throw new ArgumentNullException ("x509");
-
-                       // 1. x509 certificate must be a CA certificate (unknown for v1 or v2 certs)
-                       if (x509.Version >= 3) {
-                               // 1.1. Check for "cRLSign" bit in KeyUsage extension
-                               X509Extension ext = x509.Extensions ["2.5.29.15"];
-                               if (ext != null) {
-                                       KeyUsageExtension keyUsage = new KeyUsageExtension (ext);
-                                       if (!keyUsage.Support (KeyUsages.cRLSign))
-                                               return false;
-                               }
-                               // 1.2. Check for ca = true in BasicConstraint
-                               ext = x509.Extensions ["2.5.29.19"];
-                               if (ext != null) {
-                                       BasicConstraintsExtension basicConstraints = new BasicConstraintsExtension (ext);
-                                       if (!basicConstraints.CertificateAuthority)
-                                               return false;
-                               }
-                       }
-                       // 2. CRL issuer must match CA subject name
-                       if (issuer != x509.SubjectName)
-                               return false;
-                       // 3. Check the CRL signature with the CA certificate public key
-                       switch (signatureOID) {
-                               case "1.2.840.10040.4.3":
-                                       return VerifySignature (x509.DSA);
-                               default:
-                                       return VerifySignature (x509.RSA);
-                       }
-               }
-
-               private string GetHashName ()
-               {
-                       switch (signatureOID) {
-                       // MD2 with RSA encryption 
-                       case "1.2.840.113549.1.1.2":
-                               // maybe someone installed MD2 ?
-                               return "MD2";
-                       // MD5 with RSA encryption 
-                       case "1.2.840.113549.1.1.4":
-                               return "MD5";
-                       // SHA-1 with DSA
-                       case "1.2.840.10040.4.3":
-                       // SHA-1 with RSA Encryption 
-                       case "1.2.840.113549.1.1.5":
-                               return "SHA1";
-                       default:
-                               throw new CryptographicException ("Unsupported hash algorithm: " + signatureOID);
-                       }
-               }
-
-               internal bool VerifySignature (DSA dsa) 
-               {
-                       if (signatureOID != "1.2.840.10040.4.3")
-                               throw new CryptographicException ("Unsupported hash algorithm: " + signatureOID);
-                       DSASignatureDeformatter v = new DSASignatureDeformatter (dsa);
-                       // only SHA-1 is supported
-                       v.SetHashAlgorithm ("SHA1");
-                       ASN1 sign = new ASN1 (signature);
-                       if ((sign == null) || (sign.Count != 2))
-                               return false;
-                       // parts may be less than 20 bytes (i.e. first bytes were 0x00)
-                       byte[] part1 = sign [0].Value;
-                       byte[] part2 = sign [1].Value;
-                       byte[] sig = new byte [40];
-                       // parts may be less than 20 bytes (i.e. first bytes were 0x00)
-                       // parts may be more than 20 bytes (i.e. first byte > 0x80, negative)
-                       int s1 = System.Math.Max (0, part1.Length - 20);
-                       int e1 = System.Math.Max (0, 20 - part1.Length);
-                       Buffer.BlockCopy (part1, s1, sig, e1, part1.Length - s1);
-                       int s2 = System.Math.Max (0, part2.Length - 20);
-                       int e2 = System.Math.Max (20, 40 - part2.Length);
-                       Buffer.BlockCopy (part2, s2, sig, e2, part2.Length - s2);
-                       return v.VerifySignature (Hash, sig);
-               }
-
-               internal bool VerifySignature (RSA rsa) 
-               {
-                       RSAPKCS1SignatureDeformatter v = new RSAPKCS1SignatureDeformatter (rsa);
-                       v.SetHashAlgorithm (GetHashName ());
-                       return v.VerifySignature (Hash, signature);
-               }
-
-               public bool VerifySignature (AsymmetricAlgorithm aa) 
-               {
-                       if (aa == null)
-                               throw new ArgumentNullException ("aa");
-
-                       // only validate the signature (in case we don't have the CA certificate)
-                       if (aa is RSA)
-                               return VerifySignature (aa as RSA);
-                       else if (aa is DSA)
-                               return VerifySignature (aa as DSA);
-                       else
-                               throw new NotSupportedException ("Unknown Asymmetric Algorithm " + aa.ToString ());
-               }
-
-               static public X509Crl CreateFromFile (string filename) 
-               {
-                       byte[] crl = null;
-                       using (FileStream fs = File.Open (filename, FileMode.Open, FileAccess.Read, FileShare.Read)) {
-                               crl = new byte [fs.Length];
-                               fs.Read (crl, 0, crl.Length);
-                               fs.Close ();
-                       }
-                       return new X509Crl (crl);
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509Certificate.cs b/mcs/class/corlib/Mono.Security.X509/X509Certificate.cs
deleted file mode 100644 (file)
index 5131e99..0000000
+++ /dev/null
@@ -1,583 +0,0 @@
-//
-// X509Certificates.cs: Handles X.509 certificates.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.Serialization;
-using System.Security.Cryptography;
-using SSCX = System.Security.Cryptography.X509Certificates;
-using System.Security.Permissions;
-using System.Text;
-
-using Mono.Security.Cryptography;
-
-namespace Mono.Security.X509 {
-
-       // References:
-       // a.   Internet X.509 Public Key Infrastructure Certificate and CRL Profile
-       //      http://www.ietf.org/rfc/rfc3280.txt
-       // b.   ITU ASN.1 standards (free download)
-       //      http://www.itu.int/ITU-T/studygroups/com17/languages/
-
-#if INSIDE_CORLIB
-       internal class X509Certificate : ISerializable {
-#else
-       public class X509Certificate : ISerializable {
-#endif
-               const string encoding_error = "Input data cannot be coded as a valid certificate.";
-
-               private ASN1 decoder;
-
-               private byte[] m_encodedcert;
-               private DateTime m_from;
-               private DateTime m_until;
-               private ASN1 issuer;
-               private string m_issuername;
-               private string m_keyalgo;
-               private byte[] m_keyalgoparams;
-               private ASN1 subject;
-               private string m_subject;
-               private byte[] m_publickey;
-               private byte[] signature;
-               private string m_signaturealgo;
-               private byte[] m_signaturealgoparams;
-               private byte[] certhash;
-               private RSA _rsa;
-               private DSA _dsa;
-               
-               // from http://www.ietf.org/rfc/rfc2459.txt
-               //
-               //Certificate  ::=  SEQUENCE  {
-               //     tbsCertificate       TBSCertificate,
-               //     signatureAlgorithm   AlgorithmIdentifier,
-               //     signature            BIT STRING  }
-               //
-               //TBSCertificate  ::=  SEQUENCE  {
-               //     version         [0]  Version DEFAULT v1,
-               //     serialNumber         CertificateSerialNumber,
-               //     signature            AlgorithmIdentifier,
-               //     issuer               Name,
-               //     validity             Validity,
-               //     subject              Name,
-               //     subjectPublicKeyInfo SubjectPublicKeyInfo,
-               //     issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
-               //                          -- If present, version shall be v2 or v3
-               //     subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
-               //                          -- If present, version shall be v2 or v3
-               //     extensions      [3]  Extensions OPTIONAL
-               //                          -- If present, version shall be v3 --  }
-               private int version;
-               private byte[] serialnumber;
-
-               private byte[] issuerUniqueID;
-               private byte[] subjectUniqueID;
-               private X509ExtensionCollection extensions;
-
-               // that's were the real job is!
-               private void Parse (byte[] data) 
-               {
-                       try {
-                               decoder = new ASN1 (data);
-                               // Certificate 
-                               if (decoder.Tag != 0x30)
-                                       throw new CryptographicException (encoding_error);
-                               // Certificate / TBSCertificate
-                               if (decoder [0].Tag != 0x30)
-                                       throw new CryptographicException (encoding_error);
-
-                               ASN1 tbsCertificate = decoder [0];
-
-                               int tbs = 0;
-                               // Certificate / TBSCertificate / Version
-                               ASN1 v = decoder [0][tbs];
-                               version = 1;                    // DEFAULT v1
-                               if ((v.Tag == 0xA0) && (v.Count > 0)) {
-                                       // version (optional) is present only in v2+ certs
-                                       version += v [0].Value [0];     // zero based
-                                       tbs++;
-                               }
-
-                               // Certificate / TBSCertificate / CertificateSerialNumber
-                               ASN1 sn = decoder [0][tbs++];
-                               if (sn.Tag != 0x02) 
-                                       throw new CryptographicException (encoding_error);
-                               serialnumber = sn.Value;
-                               Array.Reverse (serialnumber, 0, serialnumber.Length);
-               
-                               // Certificate / TBSCertificate / AlgorithmIdentifier
-                               tbs++;
-                               // ASN1 signatureAlgo = tbsCertificate.Element (tbs++, 0x30); 
-               
-                               issuer = tbsCertificate.Element (tbs++, 0x30); 
-                               m_issuername = X501.ToString (issuer);
-               
-                               ASN1 validity = tbsCertificate.Element (tbs++, 0x30);
-                               ASN1 notBefore = validity [0];
-                               m_from = ASN1Convert.ToDateTime (notBefore);
-                               ASN1 notAfter = validity [1];
-                               m_until = ASN1Convert.ToDateTime (notAfter);
-               
-                               subject = tbsCertificate.Element (tbs++, 0x30);
-                               m_subject = X501.ToString (subject);
-               
-                               ASN1 subjectPublicKeyInfo = tbsCertificate.Element (tbs++, 0x30);
-               
-                               ASN1 algorithm = subjectPublicKeyInfo.Element (0, 0x30);
-                               ASN1 algo = algorithm.Element (0, 0x06);
-                               m_keyalgo = ASN1Convert.ToOid (algo);
-                               // parameters ANY DEFINED BY algorithm OPTIONAL
-                               // so we dont ask for a specific (Element) type and return DER
-                               ASN1 parameters = algorithm [1];
-                               m_keyalgoparams = ((algorithm.Count > 1) ? parameters.GetBytes () : null);
-               
-                               ASN1 subjectPublicKey = subjectPublicKeyInfo.Element (1, 0x03); 
-                               // we must drop th first byte (which is the number of unused bits
-                               // in the BITSTRING)
-                               int n = subjectPublicKey.Length - 1;
-                               m_publickey = new byte [n];
-                               Buffer.BlockCopy (subjectPublicKey.Value, 1, m_publickey, 0, n);
-
-                               // signature processing
-                               byte[] bitstring = decoder [2].Value;
-                               // first byte contains unused bits in first byte
-                               signature = new byte [bitstring.Length - 1];
-                               Buffer.BlockCopy (bitstring, 1, signature, 0, signature.Length);
-
-                               algorithm = decoder [1];
-                               algo = algorithm.Element (0, 0x06);
-                               m_signaturealgo = ASN1Convert.ToOid (algo);
-                               parameters = algorithm [1];
-                               if (parameters != null)
-                                       m_signaturealgoparams = parameters.GetBytes ();
-                               else
-                                       m_signaturealgoparams = null;
-
-                               // Certificate / TBSCertificate / issuerUniqueID
-                               ASN1 issuerUID = tbsCertificate.Element (tbs, 0x81);
-                               if (issuerUID != null) {
-                                       tbs++;
-                                       issuerUniqueID = issuerUID.Value;
-                               }
-
-                               // Certificate / TBSCertificate / subjectUniqueID
-                               ASN1 subjectUID = tbsCertificate.Element (tbs, 0x82);
-                               if (subjectUID != null) {
-                                       tbs++;
-                                       subjectUniqueID = subjectUID.Value;
-                               }
-
-                               // Certificate / TBSCertificate / Extensions
-                               ASN1 extns = tbsCertificate.Element (tbs, 0xA3);
-                               if ((extns != null) && (extns.Count == 1))
-                                       extensions = new X509ExtensionCollection (extns [0]);
-                               else
-                                       extensions = new X509ExtensionCollection (null);
-
-                               // keep a copy of the original data
-                               m_encodedcert = (byte[]) data.Clone ();
-                       }
-                       catch (Exception ex) {
-                               throw new CryptographicException (encoding_error, ex);
-                       }
-               }
-
-               // constructors
-
-               public X509Certificate (byte[] data) 
-               {
-                       if (data != null) {
-                               // does it looks like PEM ?
-                               if ((data.Length > 0) && (data [0] != 0x30)) {
-                                       try {
-                                               data = PEM ("CERTIFICATE", data);
-                                       }
-                                       catch (Exception ex) {
-                                               throw new CryptographicException (encoding_error, ex);
-                                       }
-                               }
-                               Parse (data);
-                       }
-               }
-
-               private byte[] GetUnsignedBigInteger (byte[] integer) 
-               {
-                       if (integer [0] == 0x00) {
-                               // this first byte is added so we're sure it's an unsigned integer
-                               // however we can't feed it into RSAParameters or DSAParameters
-                               int length = integer.Length - 1;
-                               byte[] uinteger = new byte [length];
-                               Buffer.BlockCopy (integer, 1, uinteger, 0, length);
-                               return uinteger;
-                       }
-                       else
-                               return integer;
-               }
-
-               // public methods
-
-               public DSA DSA {
-                       get {
-                               if (m_keyalgoparams == null)
-                                       throw new CryptographicException ("Missing key algorithm parameters.");
-
-                               if (_dsa == null) {
-                                       DSAParameters dsaParams = new DSAParameters ();
-                                       // for DSA m_publickey contains 1 ASN.1 integer - Y
-                                       ASN1 pubkey = new ASN1 (m_publickey);
-                                       if ((pubkey == null) || (pubkey.Tag != 0x02))
-                                               return null;
-                                       dsaParams.Y = GetUnsignedBigInteger (pubkey.Value);
-
-                                       ASN1 param = new ASN1 (m_keyalgoparams);
-                                       if ((param == null) || (param.Tag != 0x30) || (param.Count < 3))
-                                               return null;
-                                       if ((param [0].Tag != 0x02) || (param [1].Tag != 0x02) || (param [2].Tag != 0x02))
-                                               return null;
-                                       dsaParams.P = GetUnsignedBigInteger (param [0].Value);
-                                       dsaParams.Q = GetUnsignedBigInteger (param [1].Value);
-                                       dsaParams.G = GetUnsignedBigInteger (param [2].Value);
-
-                                       // BUG: MS BCL 1.0 can't import a key which 
-                                       // isn't the same size as the one present in
-                                       // the container.
-                                       _dsa = (DSA) new DSACryptoServiceProvider (dsaParams.Y.Length << 3);
-                                       _dsa.ImportParameters (dsaParams);
-                               }
-                               return _dsa; 
-                       }
-
-                       set {
-                               _dsa = value;
-                               if (value != null)
-                                       _rsa = null;
-                       }
-               }
-
-               public X509ExtensionCollection Extensions {
-                       get { return extensions; }
-               }
-
-               public byte[] Hash {
-                       get {
-                               if (certhash == null) {
-                                       HashAlgorithm hash = null;
-                                       switch (m_signaturealgo) {
-                                               case "1.2.840.113549.1.1.2":    // MD2 with RSA encryption 
-                                                       // maybe someone installed MD2 ?
-#if INSIDE_CORLIB
-                                                       hash = HashAlgorithm.Create ("MD2");
-#else
-                                                       hash = Mono.Security.Cryptography.MD2.Create ();
-#endif
-                                                       break;
-                                               case "1.2.840.113549.1.1.4":    // MD5 with RSA encryption 
-                                                       hash = MD5.Create ();
-                                                       break;
-                                               case "1.2.840.113549.1.1.5":    // SHA-1 with RSA Encryption 
-                                               case "1.3.14.3.2.29":           // SHA1 with RSA signature 
-                                               case "1.2.840.10040.4.3":       // SHA1-1 with DSA
-                                                       hash = SHA1.Create ();
-                                                       break;
-                                               default:
-                                                       return null;
-                                       }
-                                       if ((decoder == null) || (decoder.Count < 1))
-                                               return null;
-                                       byte[] toBeSigned = decoder [0].GetBytes ();
-                                       certhash = hash.ComputeHash (toBeSigned, 0, toBeSigned.Length);
-                               }
-                               return (byte[]) certhash.Clone ();
-                       }
-               }
-
-               public virtual string IssuerName {
-                       get { return m_issuername; }
-               }
-
-               public virtual string KeyAlgorithm {
-                       get { return m_keyalgo; }
-               }
-
-               public virtual byte[] KeyAlgorithmParameters {
-                       get {
-                               if (m_keyalgoparams == null)
-                                       return null;
-                               return (byte[]) m_keyalgoparams.Clone (); 
-                       }
-                       set { m_keyalgoparams = value; }
-               }
-
-               public virtual byte[] PublicKey {
-                       get { 
-                               if (m_publickey == null)
-                                       return null;
-                               return (byte[]) m_publickey.Clone ();
-                       }
-               }
-
-               public virtual RSA RSA {
-                       get {
-                               if (_rsa == null) {
-                                       RSAParameters rsaParams = new RSAParameters ();
-                                       // for RSA m_publickey contains 2 ASN.1 integers
-                                       // the modulus and the public exponent
-                                       ASN1 pubkey = new ASN1 (m_publickey);
-                                       ASN1 modulus = pubkey [0];
-                                       if ((modulus == null) || (modulus.Tag != 0x02))
-                                               return null;
-                                       ASN1 exponent = pubkey [1];
-                                       if (exponent.Tag != 0x02)
-                                               return null;
-
-                                       rsaParams.Modulus = GetUnsignedBigInteger (modulus.Value);
-                                       rsaParams.Exponent = exponent.Value;
-
-                                       // BUG: MS BCL 1.0 can't import a key which 
-                                       // isn't the same size as the one present in
-                                       // the container.
-                                       int keySize = (rsaParams.Modulus.Length << 3);
-                                       _rsa = (RSA) new RSACryptoServiceProvider (keySize);
-                                       _rsa.ImportParameters (rsaParams);
-                               }
-                               return _rsa; 
-                       }
-
-                       set {
-                               if (value != null)
-                                       _dsa = null;
-                               _rsa = value;
-                       }
-               }
-               
-               public virtual byte[] RawData {
-                       get {
-                               if (m_encodedcert == null)
-                                       return null;
-                               return (byte[]) m_encodedcert.Clone ();
-                       }
-               }
-
-               public virtual byte[] SerialNumber {
-                       get { 
-                               if (serialnumber == null)
-                                       return null;
-                               return (byte[]) serialnumber.Clone (); 
-                       }
-               }
-
-               public virtual byte[] Signature {
-                       get { 
-                               if (signature == null)
-                                       return null;
-
-                               switch (m_signaturealgo) {
-                                       case "1.2.840.113549.1.1.2":    // MD2 with RSA encryption 
-                                       case "1.2.840.113549.1.1.4":    // MD5 with RSA encryption 
-                                       case "1.2.840.113549.1.1.5":    // SHA-1 with RSA Encryption 
-                                       case "1.3.14.3.2.29":           // SHA1 with RSA signature
-                                               return (byte[]) signature.Clone ();
-
-                                       case "1.2.840.10040.4.3":       // SHA-1 with DSA
-                                               ASN1 sign = new ASN1 (signature);
-                                               if ((sign == null) || (sign.Count != 2))
-                                                       return null;
-                                               byte[] part1 = sign [0].Value;
-                                               byte[] part2 = sign [1].Value;
-                                               byte[] sig = new byte [40];
-                                               // parts may be less than 20 bytes (i.e. first bytes were 0x00)
-                                               // parts may be more than 20 bytes (i.e. first byte > 0x80, negative)
-                                               int s1 = System.Math.Max (0, part1.Length - 20);
-                                               int e1 = System.Math.Max (0, 20 - part1.Length);
-                                               Buffer.BlockCopy (part1, s1, sig, e1, part1.Length - s1);
-                                               int s2 = System.Math.Max (0, part2.Length - 20);
-                                               int e2 = System.Math.Max (20, 40 - part2.Length);
-                                               Buffer.BlockCopy (part2, s2, sig, e2, part2.Length - s2);
-                                               return sig;
-
-                                       default:
-                                               throw new CryptographicException ("Unsupported hash algorithm: " + m_signaturealgo);
-                               }
-                       }
-               }
-
-               public virtual string SignatureAlgorithm {
-                       get { return m_signaturealgo; }
-               }
-
-               public virtual byte[] SignatureAlgorithmParameters {
-                       get { 
-                               if (m_signaturealgoparams == null)
-                                       return m_signaturealgoparams;
-                               return (byte[]) m_signaturealgoparams.Clone ();
-                       }
-               }
-
-               public virtual string SubjectName {
-                       get { return m_subject; }
-               }
-
-               public virtual DateTime ValidFrom {
-                       get { return m_from; }
-               }
-
-               public virtual DateTime ValidUntil {
-                       get { return m_until; }
-               }
-
-               public int Version {
-                       get { return version; }
-               }
-
-               public bool IsCurrent {
-                       get { return WasCurrent (DateTime.UtcNow); }
-               }
-
-               public bool WasCurrent (DateTime instant) 
-               {
-                       return ((instant > ValidFrom) && (instant <= ValidUntil));
-               }
-
-               // uncommon v2 "extension"
-               public byte[] IssuerUniqueIdentifier {
-                       get {
-                               if (issuerUniqueID == null)
-                                       return null;
-                               return (byte[]) issuerUniqueID.Clone ();
-                       }
-               }
-
-               // uncommon v2 "extension"
-               public byte[] SubjectUniqueIdentifier {
-                       get {
-                               if (subjectUniqueID == null)
-                                       return null;
-                               return (byte[]) subjectUniqueID.Clone ();
-                       }
-               }
-
-               internal bool VerifySignature (DSA dsa) 
-               {
-                       // signatureOID is check by both this.Hash and this.Signature
-                       DSASignatureDeformatter v = new DSASignatureDeformatter (dsa);
-                       // only SHA-1 is supported
-                       v.SetHashAlgorithm ("SHA1");
-                       return v.VerifySignature (this.Hash, this.Signature);
-               }
-
-               internal string GetHashNameFromOID (string oid)
-               {
-                       switch (oid) {
-                       // MD2 with RSA encryption 
-                       case "1.2.840.113549.1.1.2":
-                               // maybe someone installed MD2 ?
-                               return "MD2";
-                       // MD5 with RSA encryption 
-                       case "1.2.840.113549.1.1.4":
-                               return "MD5";
-                       // SHA-1 with RSA Encryption 
-                       case "1.2.840.113549.1.1.5":
-                       case "1.3.14.3.2.29":
-                               return "SHA1";
-                       default:
-                               return null;
-                       }
-               }
-
-               internal bool VerifySignature (RSA rsa) 
-               {
-                       RSAPKCS1SignatureDeformatter v = new RSAPKCS1SignatureDeformatter (rsa);
-                       string hashName = GetHashNameFromOID (m_signaturealgo);
-                       if (hashName == null)
-                               throw new CryptographicException ("Unsupported hash algorithm: " + m_signaturealgo);
-
-                       v.SetHashAlgorithm (hashName);
-                       return v.VerifySignature (this.Hash, this.Signature);
-               }
-
-               public bool VerifySignature (AsymmetricAlgorithm aa) 
-               {
-                       if (aa == null)
-                               throw new ArgumentNullException ("aa");
-
-                       if (aa is RSA)
-                               return VerifySignature (aa as RSA);
-                       else if (aa is DSA)
-                               return VerifySignature (aa as DSA);
-                       else 
-                               throw new NotSupportedException ("Unknown Asymmetric Algorithm " + aa.ToString ());
-               }
-
-               public bool CheckSignature (byte[] hash, string hashAlgorithm, byte[] signature) 
-               {
-                       RSACryptoServiceProvider r = (RSACryptoServiceProvider) RSA;
-                       return r.VerifyHash (hash, hashAlgorithm, signature);
-               }
-
-               public bool IsSelfSigned {
-                       get { 
-                               if (m_issuername == m_subject)
-                                       return VerifySignature (RSA); 
-                               else
-                                       return false;
-                       }
-               }
-
-               public ASN1 GetIssuerName ()
-               {
-                       return issuer;
-               }
-
-               public ASN1 GetSubjectName ()
-               {
-                       return subject;
-               }
-
-               protected X509Certificate (SerializationInfo info, StreamingContext context)
-               {
-                       Parse ((byte[]) info.GetValue ("raw", typeof (byte[])));
-               }
-
-               [SecurityPermission (SecurityAction.Demand, SerializationFormatter = true)]
-               public virtual void GetObjectData (SerializationInfo info, StreamingContext context)
-               {
-                       info.AddValue ("raw", m_encodedcert);
-                       // note: we NEVER serialize the private key
-               }
-
-               static byte[] PEM (string type, byte[] data) 
-               {
-                       string pem = Encoding.ASCII.GetString (data);
-                       string header = String.Format ("-----BEGIN {0}-----", type);
-                       string footer = String.Format ("-----END {0}-----", type);
-                       int start = pem.IndexOf (header) + header.Length;
-                       int end = pem.IndexOf (footer, start);
-                       string base64 = pem.Substring (start, (end - start));
-                       return Convert.FromBase64String (base64);
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509CertificateCollection.cs b/mcs/class/corlib/Mono.Security.X509/X509CertificateCollection.cs
deleted file mode 100644 (file)
index 1b7b840..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-//
-// Based on System.Security.Cryptography.X509Certificates.X509CertificateCollection
-//     in System assembly
-//
-// Authors:
-//     Lawrence Pit (loz@cable.a2000.nl)
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-
-namespace Mono.Security.X509 {
-
-       [Serializable]
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class X509CertificateCollection : CollectionBase, IEnumerable {
-               
-               public X509CertificateCollection () 
-               {
-               }
-               
-               public X509CertificateCollection (X509Certificate [] value) 
-               {
-                       AddRange (value);
-               }
-               
-               public X509CertificateCollection (X509CertificateCollection value)
-               {
-                       AddRange (value);
-               }
-               
-               // Properties
-               
-               public X509Certificate this [int index] {
-                       get { return (X509Certificate) InnerList [index]; }
-                       set { InnerList [index] = value; }
-               }
-               
-               // Methods
-
-               public int Add (X509Certificate value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-                       
-                       return InnerList.Add (value);
-               }
-               
-               public void AddRange (X509Certificate [] value) 
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-
-                       for (int i = 0; i < value.Length; i++) 
-                               InnerList.Add (value [i]);
-               }
-               
-               public void AddRange (X509CertificateCollection value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-
-                       for (int i = 0; i < value.InnerList.Count; i++) 
-                               InnerList.Add (value [i]);
-               }
-               
-               public bool Contains (X509Certificate value) 
-               {
-                       return (IndexOf (value) != -1);
-               }
-
-               public void CopyTo (X509Certificate[] array, int index)
-               {
-                       InnerList.CopyTo (array, index);
-               }
-               
-               public new X509CertificateEnumerator GetEnumerator ()
-               {
-                       return new X509CertificateEnumerator (this);
-               }
-               
-               IEnumerator IEnumerable.GetEnumerator ()
-               {
-                       return InnerList.GetEnumerator ();
-               }
-               
-               public override int GetHashCode () 
-               {
-                       return InnerList.GetHashCode ();
-               }
-               
-               public int IndexOf (X509Certificate value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-
-                       byte[] hash = value.Hash;
-                       for (int i=0; i < InnerList.Count; i++) {
-                               X509Certificate x509 = (X509Certificate) InnerList [i];
-                               if (Compare (x509.Hash, hash))
-                                       return i;
-                       }
-                       return -1;
-               }
-               
-               public void Insert (int index, X509Certificate value)
-               {
-                       InnerList.Insert (index, value);
-               }
-               
-               public void Remove (X509Certificate value)
-               {
-                       InnerList.Remove (value);
-               }
-
-               // private stuff
-
-               private bool Compare (byte[] array1, byte[] array2) 
-               {
-                       if ((array1 == null) && (array2 == null))
-                               return true;
-                       if ((array1 == null) || (array2 == null))
-                               return false;
-                       if (array1.Length != array2.Length)
-                               return false;
-                       for (int i=0; i < array1.Length; i++) {
-                               if (array1 [i] != array2 [i])
-                                       return false;
-                       }
-                       return true;
-               }
-
-               // Inner Class
-               
-               public class X509CertificateEnumerator : IEnumerator {
-
-                       private IEnumerator enumerator;
-
-                       // Constructors
-                       
-                       public X509CertificateEnumerator (X509CertificateCollection mappings)
-                       {
-                               enumerator = ((IEnumerable) mappings).GetEnumerator ();
-                       }
-
-                       // Properties
-                       
-                       public X509Certificate Current {
-                               get { return (X509Certificate) enumerator.Current; }
-                       }
-                       
-                       object IEnumerator.Current {
-                               get { return enumerator.Current; }
-                       }
-
-                       // Methods
-                       
-                       bool IEnumerator.MoveNext ()
-                       {
-                               return enumerator.MoveNext ();
-                       }
-                       
-                       void IEnumerator.Reset () 
-                       {
-                               enumerator.Reset ();
-                       }
-                       
-                       public bool MoveNext () 
-                       {
-                               return enumerator.MoveNext ();
-                       }
-                       
-                       public void Reset ()
-                       {
-                               enumerator.Reset ();
-                       }
-               }               
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509Chain.cs b/mcs/class/corlib/Mono.Security.X509/X509Chain.cs
deleted file mode 100644 (file)
index 6edd5fe..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-//
-// X509Chain.cs: X.509 Certificate Path
-//     This is a VERY simplified and minimal version
-//     used for
-//             Authenticode support
-//             TLS/SSL support
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-#if !INSIDE_CORLIB
-using System.Net;
-#endif
-
-using Mono.Security.X509.Extensions;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class X509Chain {
-
-               private X509CertificateCollection roots;
-               private X509CertificateCollection certs;
-               private X509Certificate _root;
-
-               private X509CertificateCollection _chain;
-               private X509ChainStatusFlags _status;
-
-               // constructors
-
-               public X509Chain ()
-               {
-                       certs = new X509CertificateCollection ();
-               }
-
-               // get a pre-builded chain
-               public X509Chain (X509CertificateCollection chain) : this ()
-               {
-                       _chain = new X509CertificateCollection ();
-                       _chain.AddRange (chain);
-               }
-
-               // properties
-
-               public X509CertificateCollection Chain {
-                       get { return _chain; }
-               }
-
-               // the root of the specified certificate (may not be trusted!)
-               public X509Certificate Root {
-                       get { return _root; }
-               }
-
-               public X509ChainStatusFlags Status {
-                       get { return _status; }
-               }
-
-               public X509CertificateCollection TrustAnchors {
-                       get { 
-                               if (roots == null) {
-                                       roots = new X509CertificateCollection ();
-                                       roots.AddRange (X509StoreManager.TrustedRootCertificates);
-                                       return roots;
-                               }
-                               return roots;
-                       }
-                       [SecurityPermission (SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlPolicy)]
-                       set { roots = value; }
-               }
-
-               // methods
-
-               public void LoadCertificate (X509Certificate x509) 
-               {
-                       certs.Add (x509);
-               }
-
-               public void LoadCertificates (X509CertificateCollection collection) 
-               {
-                       certs.AddRange (collection);
-               }
-
-               public X509Certificate FindByIssuerName (string issuerName) 
-               {
-                       foreach (X509Certificate x in certs) {
-                               if (x.IssuerName == issuerName)
-                                       return x;
-                       }
-                       return null;
-               }
-
-               public bool Build (X509Certificate leaf) 
-               {
-                       _status = X509ChainStatusFlags.NoError;
-                       if (_chain == null) {
-                               // chain not supplied - we must build it ourselve
-                               _chain = new X509CertificateCollection ();
-                               X509Certificate x = leaf;
-                               X509Certificate tmp = x;
-                               while ((x != null) && (!x.IsSelfSigned)) {
-                                       tmp = x; // last valid
-                                       _chain.Add (x);
-                                       x = FindCertificateParent (x);
-                               }
-                               // find a trusted root
-                               _root = FindCertificateRoot (tmp);
-                       }
-                       else {
-                               // chain supplied - still have to check signatures!
-                               int last = _chain.Count;
-                               if (last > 0) {
-                                       if (IsParent (leaf, _chain [0])) {
-                                               int i = 1;
-                                               for (; i < last; i++) {
-                                                       if (!IsParent (_chain [i-1], _chain [i]))
-                                                               break;
-                                               }
-                                               if (i == last)
-                                                       _root = FindCertificateRoot (_chain [last - 1]);
-                                       }
-                               }
-                               else {
-                                       // is the leaf a root ? (trusted or untrusted)
-                                       _root = FindCertificateRoot (leaf);
-                               }
-                       }
-
-                       // validate the chain
-                       if ((_chain != null) && (_status == X509ChainStatusFlags.NoError)) {
-                               foreach (X509Certificate x in _chain) {
-                                       // validate dates for each certificate in the chain
-                                       // note: we DO NOT check for nested date/time
-                                       if (!IsValid (x)) {
-                                               return false;
-                                       }
-                               }
-                               // check leaf
-                               if (!IsValid (leaf)) {
-                                       // switch status code if the failure is expiration
-                                       if (_status == X509ChainStatusFlags.NotTimeNested)
-                                               _status = X509ChainStatusFlags.NotTimeValid;
-                                       return false;
-                               }
-                               // check root
-                               if ((_root != null) && !IsValid (_root)) {
-                                       return false;
-                               }
-                       }
-                       return (_status == X509ChainStatusFlags.NoError);
-               }
-
-               //
-
-               public void Reset () 
-               {
-                       _status = X509ChainStatusFlags.NoError;
-                       roots = null; // this force a reload
-                       certs.Clear ();
-                       if (_chain != null)
-                               _chain.Clear ();
-               }
-
-               // private stuff
-
-               private bool IsValid (X509Certificate cert) 
-               {
-                       if (!cert.IsCurrent) {
-                               // FIXME: nesting isn't very well implemented
-                               _status = X509ChainStatusFlags.NotTimeNested;
-                               return false;
-                       }
-
-                       // TODO - we should check for CRITICAL but unknown extensions
-                       // X509ChainStatusFlags.InvalidExtension
-#if !INSIDE_CORLIB
-                       if (ServicePointManager.CheckCertificateRevocationList) {
-                               // TODO - check revocation (CRL, OCSP ...)
-                               // X509ChainStatusFlags.RevocationStatusUnknown
-                               // X509ChainStatusFlags.Revoked
-                       }
-#endif
-                       return true;
-               }
-
-               private X509Certificate FindCertificateParent (X509Certificate child) 
-               {
-                       foreach (X509Certificate potentialParent in certs) {
-                               if (IsParent (child, potentialParent))
-                                       return potentialParent;
-                       }
-                       return null;
-               }
-
-               private X509Certificate FindCertificateRoot (X509Certificate potentialRoot) 
-               {
-                       if (potentialRoot == null) {
-                               _status = X509ChainStatusFlags.PartialChain;
-                               return null;
-                       }
-
-                       // if the trusted root is in the chain
-                       if (IsTrusted (potentialRoot)) {
-                               return potentialRoot;
-                       }
-
-                       // if the root isn't in the chain
-                       foreach (X509Certificate root in TrustAnchors) {
-                               if (IsParent (potentialRoot, root)) {
-                                       return root;
-                               }
-                       }
-
-                       // is it a (untrusted) root ?
-                       if (potentialRoot.IsSelfSigned) {
-                               _status = X509ChainStatusFlags.UntrustedRoot;
-                               return potentialRoot;
-                       }
-
-                       _status = X509ChainStatusFlags.PartialChain;
-                       return null;
-               }
-
-               private bool IsTrusted (X509Certificate potentialTrusted) 
-               {
-                       return TrustAnchors.Contains (potentialTrusted);
-               }
-
-               private bool IsParent (X509Certificate child, X509Certificate parent) 
-               {
-                       if (child.IssuerName != parent.SubjectName)
-                               return false;
-
-                       // parent MUST have the Basic Constraint CA=true (except for trusted roots)
-                       // see why at http://www.microsoft.com/technet/security/bulletin/MS02-050.asp
-                       if ((parent.Version > 2) && (!IsTrusted (parent))) {
-                               // TODO: we do not support pathLenConstraint
-                               X509Extension ext = parent.Extensions ["2.5.29.19"];
-                               if (ext != null) {
-                                       BasicConstraintsExtension bc = new BasicConstraintsExtension (ext);
-                                       if (!bc.CertificateAuthority)
-                                               _status = X509ChainStatusFlags.InvalidBasicConstraints;
-                               }
-                               else
-                                       _status = X509ChainStatusFlags.InvalidBasicConstraints;
-                       }
-
-                       if (!child.VerifySignature (parent.RSA)) {
-                               _status = X509ChainStatusFlags.NotSignatureValid;
-                               return false;
-                       }
-                       return true;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509ChainStatusFlags.cs b/mcs/class/corlib/Mono.Security.X509/X509ChainStatusFlags.cs
deleted file mode 100644 (file)
index f72660c..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// X509ChainStatusFlags.cs: X.509 Chain Status
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2004 Novell (http://www.novell.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Security.X509 {
-
-       // definitions from Fx 1.2
-       // commented flags aren't implemented in X509Chain
-
-       [Serializable]
-       [Flags]
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       enum X509ChainStatusFlags {
-//             CtlNotSignatureValid = 262144,
-//             CtlNotTimeValid = 131072,
-//             CtlNotValidForUsage = 524288,
-//             Cyclic = 128,
-//             HasExcludedNameConstraint = 32768,
-//             HasNotDefinedNameConstraint = 8192,
-//             HasNotPermittedNameConstraint = 16384,
-//             HasNotSupportedNameConstraint = 4096,
-               InvalidBasicConstraints = 1024,
-//             InvalidExtension = 256,
-//             InvalidNameConstraints = 2048,
-//             InvalidPolicyConstraints = 512,
-               NoError = 0,
-//             NoIssuanceChainPolicy = 33554432,
-               NotSignatureValid = 8,
-               NotTimeNested = 2,
-               NotTimeValid = 1,
-//             NotValidForUsage = 16,
-//             OfflineRevocation = 16777216,
-               PartialChain = 65536,
-//             RevocationStatusUnknown = 64,
-//             Revoked = 4,
-               UntrustedRoot = 32
-       } 
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509Extension.cs b/mcs/class/corlib/Mono.Security.X509/X509Extension.cs
deleted file mode 100644 (file)
index 637e74b..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-//
-// X509Extension.cs: Base class for all X.509 extensions.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Text;
-
-using Mono.Security;
-
-namespace Mono.Security.X509 {
-       /*
-        * Extension  ::=  SEQUENCE  {
-        *      extnID      OBJECT IDENTIFIER,
-        *      critical    BOOLEAN DEFAULT FALSE,
-        *      extnValue   OCTET STRING  
-        * }
-        */
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class X509Extension {
-
-               protected string extnOid;
-               protected bool extnCritical;
-               protected ASN1 extnValue;
-
-               protected X509Extension () 
-               {
-                       extnCritical = false;
-               }
-
-               public X509Extension (ASN1 asn1) 
-               {
-                       if ((asn1.Tag != 0x30) || (asn1.Count < 2))
-                               throw new ArgumentException (Locale.GetText ("Invalid X.509 extension."));
-                       if (asn1[0].Tag != 0x06)
-                               throw new ArgumentException (Locale.GetText ("Invalid X.509 extension."));
-
-                       extnOid = ASN1Convert.ToOid (asn1[0]);
-                       extnCritical = ((asn1[1].Tag == 0x01) && (asn1[1].Value[0] == 0xFF));
-                       // last element is an octet string which may need to be decoded
-                       extnValue = asn1 [asn1.Count - 1];
-                       if ((extnValue.Tag == 0x04) && (extnValue.Length > 0) && (extnValue.Count == 0)) {
-                               try {
-                                       ASN1 encapsulated = new ASN1 (extnValue.Value);
-                                       extnValue.Value = null;
-                                       extnValue.Add (encapsulated);
-                               }
-                               catch {
-                                       // data isn't ASN.1
-                               }
-                       }
-                       Decode ();
-               }
-
-               public X509Extension (X509Extension extension)
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-                       if ((extension.Value == null) || (extension.Value.Tag != 0x04) || (extension.Value.Count != 1))
-                               throw new ArgumentException (Locale.GetText ("Invalid X.509 extension."));
-
-                       extnOid = extension.Oid;
-                       extnCritical = extension.Critical;
-                       extnValue = extension.Value;
-                       Decode ();
-               }
-
-               // encode the extension *into* an OCTET STRING
-               protected virtual void Decode () 
-               {
-               }
-
-               // decode the extension from *inside* an OCTET STRING
-               protected virtual void Encode ()
-               {
-               }
-
-               public ASN1 ASN1 {
-                       get {
-                               ASN1 extension = new ASN1 (0x30);
-                               extension.Add (ASN1Convert.FromOid (extnOid));
-                               if (extnCritical)
-                                       extension.Add (new ASN1 (0x01, new byte [1] { 0xFF }));
-                               Encode ();
-                               extension.Add (extnValue);
-                               return extension;
-                       }
-               }
-
-               public string Oid {
-                       get { return extnOid; }
-               }
-
-               public bool Critical {
-                       get { return extnCritical; }
-                       set { extnCritical = value; }
-               }
-
-               // this gets overrided with more meaningful names
-               public virtual string Name {
-                       get { return extnOid; }
-               }
-
-               public ASN1 Value {
-                       get {
-                               if (extnValue == null) {
-                                       Encode ();
-                               }
-                               return extnValue;
-                       }
-               }
-
-               public override bool Equals (object obj) 
-               {
-                       if (obj == null)
-                               return false;
-                       
-                       X509Extension ex = (obj as X509Extension);
-                       if (ex == null)
-                               return false;
-
-                       if (extnCritical != ex.extnCritical)
-                               return false;
-                       if (extnOid != ex.extnOid)
-                               return false;
-                       if (extnValue.Length != ex.extnValue.Length)
-                               return false;
-                       
-                        for (int i=0; i < extnValue.Length; i++) {
-                               if (extnValue [i] != ex.extnValue [i])
-                                       return false;
-                       }
-                       return true;
-               }
-
-               public byte[] GetBytes () 
-               {
-                       return ASN1.GetBytes ();
-               }
-
-               public override int GetHashCode () 
-               {
-                       // OID should be unique in a collection of extensions
-                       return extnOid.GetHashCode ();
-               }
-
-               private void WriteLine (StringBuilder sb, int n, int pos) 
-               {
-                       byte[] value = extnValue.Value;
-                       int p = pos;
-                       for (int j=0; j < 8; j++) {
-                               if (j < n) {
-                                       sb.Append (value [p++].ToString ("X2", CultureInfo.InvariantCulture));
-                                       sb.Append (" ");
-                               }
-                               else
-                                       sb.Append ("   ");
-                       }
-                       sb.Append ("  ");
-                       p = pos;
-                       for (int j=0; j < n; j++) {
-                               byte b = value [p++];
-                               if (b < 0x20)
-                                       sb.Append (".");
-                               else
-                                       sb.Append (Convert.ToChar (b));
-                       }
-                       sb.Append (Environment.NewLine);
-               }
-
-               public override string ToString () 
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       int div = (extnValue.Length >> 3);
-                       int rem = (extnValue.Length - (div << 3));
-                       int x = 0;
-                       for (int i=0; i < div; i++) {
-                               WriteLine (sb, 8, x);
-                               x += 8;
-                       }
-                       WriteLine (sb, rem, x);
-                       return sb.ToString ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509Extensions.cs b/mcs/class/corlib/Mono.Security.X509/X509Extensions.cs
deleted file mode 100644 (file)
index da2de3c..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-//
-// X509Extensions.cs: Handles X.509 extensions.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// (C) 2004 Novell (http://www.novell.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-
-using Mono.Security;
-
-namespace Mono.Security.X509 {
-       /*
-        * Extensions  ::=  SEQUENCE SIZE (1..MAX) OF Extension
-        * 
-        * Note: 1..MAX -> There shouldn't be 0 Extensions in the ASN1 structure
-        */
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       sealed class X509ExtensionCollection : CollectionBase, IEnumerable {
-
-               private bool readOnly;
-
-               public X509ExtensionCollection () : base ()
-               {
-               }
-
-               public X509ExtensionCollection (ASN1 asn1) : this ()
-               {
-                       readOnly = true;
-                       if (asn1 == null)
-                               return;
-                       if (asn1.Tag != 0x30)
-                               throw new Exception ("Invalid extensions format");
-                       for (int i=0; i < asn1.Count; i++) {
-                               X509Extension extension = new X509Extension (asn1 [i]);
-                               InnerList.Add (extension);
-                       }
-               }
-
-               public int Add (X509Extension extension) 
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-                       if (readOnly)
-                               throw new NotSupportedException ("Extensions are read only");
-               
-                       return InnerList.Add (extension);
-               }
-
-               public void AddRange (X509Extension[] extension) 
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-                       if (readOnly)
-                               throw new NotSupportedException ("Extensions are read only");
-
-                       for (int i = 0; i < extension.Length; i++) 
-                               InnerList.Add (extension [i]);
-               }
-       
-               public void AddRange (X509ExtensionCollection collection) 
-               {
-                       if (collection == null)
-                               throw new ArgumentNullException ("collection");
-                       if (readOnly)
-                               throw new NotSupportedException ("Extensions are read only");
-
-                       for (int i = 0; i < collection.InnerList.Count; i++) 
-                               InnerList.Add (collection [i]);
-               }
-
-               public bool Contains (X509Extension extension) 
-               {
-                       return (IndexOf (extension) != -1);
-               }
-
-               public bool Contains (string oid) 
-               {
-                       return (IndexOf (oid) != -1);
-               }
-
-               public void CopyTo (X509Extension[] extensions, int index) 
-               {
-                       if (extensions == null)
-                               throw new ArgumentNullException ("extensions");
-
-                       InnerList.CopyTo (extensions, index);
-               }
-
-               public int IndexOf (X509Extension extension) 
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-
-                       for (int i=0; i < InnerList.Count; i++) {
-                               X509Extension ex = (X509Extension) InnerList [i];
-                               if (ex.Equals (extension))
-                                       return i;
-                       }
-                       return -1;
-               }
-
-               public int IndexOf (string oid) 
-               {
-                       if (oid == null)
-                               throw new ArgumentNullException ("oid");
-
-                       for (int i=0; i < InnerList.Count; i++) {
-                               X509Extension ex = (X509Extension) InnerList [i];
-                               if (ex.Oid == oid)
-                                       return i;
-                       }
-                       return -1;
-               }
-
-               public void Insert (int index, X509Extension extension) 
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-
-                       InnerList.Insert (index, extension);
-               }
-
-               public void Remove (X509Extension extension) 
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-
-                       InnerList.Remove (extension);
-               }
-
-               public void Remove (string oid) 
-               {
-                       if (oid == null)
-                               throw new ArgumentNullException ("oid");
-
-                       int index = IndexOf (oid);
-                       if (index != -1)
-                               InnerList.RemoveAt (index);
-               }
-
-               IEnumerator IEnumerable.GetEnumerator () 
-               {
-                       return InnerList.GetEnumerator ();
-               }
-
-               public X509Extension this [int index] {
-                       get { return (X509Extension) InnerList [index]; }
-               }
-
-               public X509Extension this [string oid] {
-                       get {
-                               int index = IndexOf (oid);
-                               if (index == -1)
-                                       return null;
-                               return (X509Extension) InnerList [index];
-                       }
-               }
-
-               public byte[] GetBytes () 
-               {
-                       if (InnerList.Count < 1)
-                               return null;
-                       ASN1 sequence = new ASN1 (0x30);
-                       for (int i=0; i < InnerList.Count; i++) {
-                               X509Extension x = (X509Extension) InnerList [i];
-                               sequence.Add (x.ASN1);
-                       }
-                       return sequence.GetBytes ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509Store.cs b/mcs/class/corlib/Mono.Security.X509/X509Store.cs
deleted file mode 100644 (file)
index c4bb4b9..0000000
+++ /dev/null
@@ -1,355 +0,0 @@
-//
-// X509Store.cs: Handles a X.509 certificates/CRLs store
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//     Pablo Ruiz <pruiz@netway.org>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// (C) 2010 Pablo Ruiz.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Globalization;
-using System.IO;
-using System.Text;
-using System.Security.Cryptography;
-
-using Mono.Security.Cryptography;
-using Mono.Security.X509.Extensions;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class X509Store {
-
-               private string _storePath;
-               private X509CertificateCollection _certificates;
-               private ArrayList _crls;
-               private bool _crl;
-               private string _name;
-
-               internal X509Store (string path, bool crl) 
-               {
-                       _storePath = path;
-                       _crl = crl;
-               }
-
-               // properties
-
-               public X509CertificateCollection Certificates {
-                       get { 
-                               if (_certificates == null) {
-                                       _certificates = BuildCertificatesCollection (_storePath);
-                               }
-                               return _certificates; 
-                       }
-               }
-
-               public ArrayList Crls {
-                       get {
-                               // CRL aren't applicable to all stores
-                               // but returning null is a little rude
-                               if (!_crl) {
-                                       _crls = new ArrayList ();
-                               }
-                               if (_crls == null) {
-                                       _crls = BuildCrlsCollection (_storePath);
-                               }
-                               return _crls; 
-                       }
-               }
-
-               public string Name {
-                       get {
-                               if (_name == null) {
-                                       int n = _storePath.LastIndexOf (Path.DirectorySeparatorChar);
-                                       _name = _storePath.Substring (n+1);
-                               }
-                               return _name;
-                       }
-               }
-
-               // methods
-
-               public void Clear () 
-               {
-                       if (_certificates != null)
-                               _certificates.Clear ();
-                       _certificates = null;
-                       if (_crls != null)
-                               _crls.Clear ();
-                       _crls = null;
-               }
-
-               public void Import (X509Certificate certificate) 
-               {
-                       CheckStore (_storePath, true);
-
-                       string filename = Path.Combine (_storePath, GetUniqueName (certificate));
-                       if (!File.Exists (filename)) {
-                               using (FileStream fs = File.Create (filename)) {
-                                       byte[] data = certificate.RawData;
-                                       fs.Write (data, 0, data.Length);
-                                       fs.Close ();
-                               }
-                       }
-#if !NET_2_1
-                       // Try to save privateKey if available..
-                       CspParameters cspParams = new CspParameters ();
-                       cspParams.KeyContainerName = CryptoConvert.ToHex (certificate.Hash);
-
-                       // Right now this seems to be the best way to know if we should use LM store.. ;)
-                       if (_storePath.StartsWith (X509StoreManager.LocalMachinePath))
-                               cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
-
-                       ImportPrivateKey (certificate, cspParams);
-#endif
-               }
-
-               public void Import (X509Crl crl) 
-               {
-                       CheckStore (_storePath, true);
-
-                       string filename = Path.Combine (_storePath, GetUniqueName (crl));
-                       if (!File.Exists (filename)) {
-                               using (FileStream fs = File.Create (filename)) {
-                                       byte[] data = crl.RawData;
-                                       fs.Write (data, 0, data.Length);
-                               }
-                       }
-               }
-
-               public void Remove (X509Certificate certificate) 
-               {
-                       string filename = Path.Combine (_storePath, GetUniqueName (certificate));
-                       if (File.Exists (filename)) {
-                               File.Delete (filename);
-                       }
-               }
-
-               public void Remove (X509Crl crl) 
-               {
-                       string filename = Path.Combine (_storePath, GetUniqueName (crl));
-                       if (File.Exists (filename)) {
-                               File.Delete (filename);
-                       }
-               }
-
-               // private stuff
-
-               private string GetUniqueName (X509Certificate certificate) 
-               {
-                       string method;
-                       byte[] name = GetUniqueName (certificate.Extensions);
-                       if (name == null) {
-                               method = "tbp"; // thumbprint
-                               name = certificate.Hash;
-                       } else {
-                               method = "ski";
-                       }
-                       return GetUniqueName (method, name, ".cer");
-               }
-
-               private string GetUniqueName (X509Crl crl) 
-               {
-                       string method;
-                       byte[] name = GetUniqueName (crl.Extensions);
-                       if (name == null) {
-                               method = "tbp"; // thumbprint
-                               name = crl.Hash;
-                       } else {
-                               method = "ski";
-                       }
-                       return GetUniqueName (method, name, ".crl");
-               }
-
-               private byte[] GetUniqueName (X509ExtensionCollection extensions) 
-               {
-                       // We prefer Subject Key Identifier as the unique name
-                       // as it will provide faster lookups
-                       X509Extension ext = extensions ["2.5.29.14"];
-                       if (ext == null)
-                               return null;
-
-                       SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension (ext);
-                       return ski.Identifier;
-               }
-
-               private string GetUniqueName (string method, byte[] name, string fileExtension) 
-               {
-                       StringBuilder sb = new StringBuilder (method);
-                       
-                       sb.Append ("-");
-                       foreach (byte b in name) {
-                               sb.Append (b.ToString ("X2", CultureInfo.InvariantCulture));
-                       }
-                       sb.Append (fileExtension);
-
-                       return sb.ToString ();
-               }
-
-               private byte[] Load (string filename) 
-               {
-                       byte[] data = null;
-                       using (FileStream fs = File.OpenRead (filename)) {
-                               data = new byte [fs.Length];
-                               fs.Read (data, 0, data.Length);
-                               fs.Close ();
-                       }
-                       return data;
-               }
-
-               private X509Certificate LoadCertificate (string filename) 
-               {
-                       byte[] data = Load (filename);
-                       X509Certificate cert = new X509Certificate (data);
-#if !NET_2_1
-                       // If privateKey it's available, load it too..
-                       CspParameters cspParams = new CspParameters ();
-                       cspParams.KeyContainerName = CryptoConvert.ToHex (cert.Hash);
-                       if (_storePath.StartsWith (X509StoreManager.LocalMachinePath))
-                               cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
-                       KeyPairPersistence kpp = new KeyPairPersistence (cspParams);
-
-                       if (!kpp.Load ())
-                               return cert;
-
-                       if (cert.RSA != null)
-                               cert.RSA = new RSACryptoServiceProvider (cspParams);
-                       else if (cert.DSA != null)
-                               cert.DSA = new DSACryptoServiceProvider (cspParams);
-#endif
-                       return cert;
-               }
-
-               private X509Crl LoadCrl (string filename) 
-               {
-                       byte[] data = Load (filename);
-                       X509Crl crl = new X509Crl (data);
-                       return crl;
-               }
-
-               private bool CheckStore (string path, bool throwException)
-               {
-                       try {
-                               if (Directory.Exists (path))
-                                       return true;
-                               Directory.CreateDirectory (path);
-                               return Directory.Exists (path);
-                       }
-                       catch {
-                               if (throwException)
-                                       throw;
-                               return false;
-                       }
-               }
-
-               private X509CertificateCollection BuildCertificatesCollection (string storeName) 
-               {
-                       X509CertificateCollection coll = new X509CertificateCollection ();
-                       string path = Path.Combine (_storePath, storeName);
-                       if (!CheckStore (path, false))
-                               return coll;    // empty collection
-
-                       string[] files = Directory.GetFiles (path, "*.cer");
-                       if ((files != null) && (files.Length > 0)) {
-                               foreach (string file in files) {
-                                       try {
-                                               X509Certificate cert = LoadCertificate (file);
-                                               coll.Add (cert);
-                                       }
-                                       catch {
-                                               // in case someone is dumb enough
-                                               // (like me) to include a base64
-                                               // encoded certs (or other junk 
-                                               // into the store).
-                                       }
-                               }
-                       }
-                       return coll;
-               }
-
-               private ArrayList BuildCrlsCollection (string storeName) 
-               {
-                       ArrayList list = new ArrayList ();
-                       string path = Path.Combine (_storePath, storeName);
-                       if (!CheckStore (path, false))
-                               return list;    // empty list
-
-                       string[] files = Directory.GetFiles (path, "*.crl");
-                       if ((files != null) && (files.Length > 0)) {
-                               foreach (string file in files) {
-                                       try {
-                                               X509Crl crl = LoadCrl (file);
-                                               list.Add (crl);
-                                       }
-                                       catch {
-                                               // junk catcher
-                                       }
-                               }
-                       }
-                       return list;
-               }
-#if !NET_2_1
-               private void ImportPrivateKey (X509Certificate certificate, CspParameters cspParams)
-               {
-                       RSACryptoServiceProvider rsaCsp = certificate.RSA as RSACryptoServiceProvider;
-                       if (rsaCsp != null) {
-                               if (rsaCsp.PublicOnly)
-                                       return;
-
-                               RSACryptoServiceProvider csp = new RSACryptoServiceProvider(cspParams);
-                               csp.ImportParameters(rsaCsp.ExportParameters(true));
-                               csp.PersistKeyInCsp = true;
-                               return;
-                       }
-
-                       RSAManaged rsaMng = certificate.RSA as RSAManaged;
-                       if (rsaMng != null) {
-                               if (rsaMng.PublicOnly)
-                                       return;
-
-                               RSACryptoServiceProvider csp = new RSACryptoServiceProvider(cspParams);
-                               csp.ImportParameters(rsaMng.ExportParameters(true));
-                               csp.PersistKeyInCsp = true;
-                               return;
-                       }
-
-                       DSACryptoServiceProvider dsaCsp = certificate.DSA as DSACryptoServiceProvider;
-                       if (dsaCsp != null) {
-                               if (dsaCsp.PublicOnly)
-                                       return;
-
-                               DSACryptoServiceProvider csp = new DSACryptoServiceProvider(cspParams);
-                               csp.ImportParameters(dsaCsp.ExportParameters(true));
-                               csp.PersistKeyInCsp = true;
-                       }
-               }
-#endif
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509StoreManager.cs b/mcs/class/corlib/Mono.Security.X509/X509StoreManager.cs
deleted file mode 100644 (file)
index db73583..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-//
-// X509StoreManager.cs: X.509 store manager.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2004 Novell (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.IO;
-
-using Mono.Security.X509.Extensions;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       sealed class X509StoreManager {
-
-               static private string _userPath;
-               static private string _localMachinePath;
-               static private X509Stores _userStore;
-               static private X509Stores _machineStore;
-
-               private X509StoreManager ()
-               {
-               }
-
-               internal static string CurrentUserPath {
-                       get {
-                               if (_userPath == null) {
-                                       _userPath = Path.Combine(
-                                                       Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
-                                                       ".mono");
-                                       _userPath = Path.Combine(_userPath, "certs");
-                               }
-                               return _userPath;
-                       }
-               }
-
-               internal static string LocalMachinePath {
-                       get {
-                               if (_localMachinePath == null) {
-                                       _localMachinePath = Path.Combine (
-                                               Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData),
-                                               ".mono");
-                                       _localMachinePath = Path.Combine (_localMachinePath, "certs");
-                               }
-                               return _localMachinePath;
-                       }
-               }
-
-               static public X509Stores CurrentUser {
-                       get { 
-                               if (_userStore == null)
-                                       _userStore = new X509Stores(CurrentUserPath);
-                               
-                               return _userStore;
-                       }
-               }
-
-               static public X509Stores LocalMachine {
-                       get {
-                               if (_machineStore == null) 
-                                       _machineStore = new X509Stores (LocalMachinePath);
-
-                               return _machineStore;
-                       }
-               }
-
-               // Merged stores collections
-               // we need to look at both the user and the machine (entreprise)
-               // certificates/CRLs when building/validating a chain
-
-               static public X509CertificateCollection IntermediateCACertificates {
-                       get { 
-                               X509CertificateCollection intermediateCerts = new X509CertificateCollection ();
-                               intermediateCerts.AddRange (CurrentUser.IntermediateCA.Certificates);
-                               intermediateCerts.AddRange (LocalMachine.IntermediateCA.Certificates);
-                               return intermediateCerts; 
-                       }
-               }
-
-               static public ArrayList IntermediateCACrls {
-                       get { 
-                               ArrayList intermediateCRLs = new ArrayList ();
-                               intermediateCRLs.AddRange (CurrentUser.IntermediateCA.Crls);
-                               intermediateCRLs.AddRange (LocalMachine.IntermediateCA.Crls);
-                               return intermediateCRLs; 
-                       }
-               }
-
-               static public X509CertificateCollection TrustedRootCertificates {
-                       get { 
-                               X509CertificateCollection trustedCerts = new X509CertificateCollection ();
-                               trustedCerts.AddRange (CurrentUser.TrustedRoot.Certificates);
-                               trustedCerts.AddRange (LocalMachine.TrustedRoot.Certificates);
-                               return trustedCerts; 
-                       }
-               }
-
-               static public ArrayList TrustedRootCACrls {
-                       get { 
-                               ArrayList trustedCRLs = new ArrayList ();
-                               trustedCRLs.AddRange (CurrentUser.TrustedRoot.Crls);
-                               trustedCRLs.AddRange (LocalMachine.TrustedRoot.Crls);
-                               return trustedCRLs; 
-                       }
-               }
-
-               static public X509CertificateCollection UntrustedCertificates {
-                       get { 
-                               X509CertificateCollection untrustedCerts = new X509CertificateCollection ();
-                               untrustedCerts.AddRange (CurrentUser.Untrusted.Certificates);
-                               untrustedCerts.AddRange (LocalMachine.Untrusted.Certificates);
-                               return untrustedCerts; 
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509Stores.cs b/mcs/class/corlib/Mono.Security.X509/X509Stores.cs
deleted file mode 100644 (file)
index bfe7451..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-//
-// X509Stores.cs: Handles X.509 certificates/CRLs stores group.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2004 Novell (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.IO;
-
-using Mono.Security.X509.Extensions;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class X509Stores {
-
-               private string _storePath;
-               private X509Store _personal;
-               private X509Store _other;
-               private X509Store _intermediate;
-               private X509Store _trusted;
-               private X509Store _untrusted;
-
-               internal X509Stores (string path) 
-               {
-                       _storePath = path;
-               }
-
-               // properties
-
-               public X509Store Personal {
-                       get { 
-                               if (_personal == null) {
-                                       string path = Path.Combine (_storePath, Names.Personal);
-                                       _personal = new X509Store (path, false);
-                               }
-                               return _personal; 
-                       }
-               }
-
-               public X509Store OtherPeople {
-                       get { 
-                               if (_other == null) {
-                                       string path = Path.Combine (_storePath, Names.OtherPeople);
-                                       _other = new X509Store (path, false);
-                               }
-                               return _other; 
-                       }
-               }
-
-               public X509Store IntermediateCA {
-                       get { 
-                               if (_intermediate == null) {
-                                       string path = Path.Combine (_storePath, Names.IntermediateCA);
-                                       _intermediate = new X509Store (path, true);
-                               }
-                               return _intermediate; 
-                       }
-               }
-
-               public X509Store TrustedRoot {
-                       get { 
-                               if (_trusted == null) {
-                                       string path = Path.Combine (_storePath, Names.TrustedRoot);
-                                       _trusted = new X509Store (path, true);
-                               }
-                               return _trusted; 
-                       }
-               }
-
-               public X509Store Untrusted {
-                       get { 
-                               if (_untrusted == null) {
-                                       string path = Path.Combine (_storePath, Names.Untrusted);
-                                       _untrusted = new X509Store (path, false);
-                               }
-                               return _untrusted; 
-                       }
-               }
-
-               // methods
-
-               public void Clear () 
-               {
-                       // this will force a reload of all stores
-                       if (_personal != null)
-                               _personal.Clear ();
-                       _personal = null;
-                       if (_other != null)
-                               _other.Clear ();
-                       _other = null;
-                       if (_intermediate != null)
-                               _intermediate.Clear ();
-                       _intermediate = null;
-                       if (_trusted != null)
-                               _trusted.Clear ();
-                       _trusted = null;
-                       if (_untrusted != null)
-                               _untrusted.Clear ();
-                       _untrusted = null;
-               }
-
-               public X509Store Open (string storeName, bool create)
-               {
-                       if (storeName == null)
-                               throw new ArgumentNullException ("storeName");
-
-                       string path = Path.Combine (_storePath, storeName);
-                       if (!create && !Directory.Exists (path))
-                               return null;
-
-                       return new X509Store (path, true);
-               }
-
-               // names
-
-               public class Names {
-
-                       // do not translate
-                       public const string Personal = "My";
-                       public const string OtherPeople = "AddressBook";
-                       public const string IntermediateCA = "CA";
-                       public const string TrustedRoot = "Trust";
-                       public const string Untrusted = "Disallowed";
-                       
-                       public Names () {}
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X520Attributes.cs b/mcs/class/corlib/Mono.Security.X509/X520Attributes.cs
deleted file mode 100644 (file)
index b8506aa..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-//
-// X520.cs: X.520 related stuff (attributes, RDN)
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Text;
-
-using Mono.Security;
-
-namespace Mono.Security.X509 {
-
-       // References:
-       // 1.   Information technology - Open Systems Interconnection - The Directory: Selected attribute types 
-       //      http://www.itu.int/rec/recommendation.asp?type=folders&lang=e&parent=T-REC-X.520 
-       // 2.   Internet X.509 Public Key Infrastructure Certificate and CRL Profile
-       //      http://www.ietf.org/rfc/rfc3280.txt
-       // 3.   A Summary of the X.500(96) User Schema for use with LDAPv3
-       //      http://www.faqs.org/rfcs/rfc2256.html
-       // 4.   RFC 2247 - Using Domains in LDAP/X.500 Distinguished Names
-       //      http://www.faqs.org/rfcs/rfc2247.html
-
-       /* 
-        * AttributeTypeAndValue ::= SEQUENCE {
-        *      type     AttributeType,
-        *      value    AttributeValue 
-        * }
-        * 
-        * AttributeType ::= OBJECT IDENTIFIER
-        * 
-        * AttributeValue ::= ANY DEFINED BY AttributeType
-        */
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class X520 {
-
-               public abstract class AttributeTypeAndValue {
-                       private string oid;
-                       private string attrValue;
-                       private int upperBound;
-                       private byte encoding;
-
-                       protected AttributeTypeAndValue (string oid, int upperBound)
-                       {
-                               this.oid = oid;
-                               this.upperBound = upperBound;
-                               this.encoding = 0xFF;
-                       }
-
-                       protected AttributeTypeAndValue (string oid, int upperBound, byte encoding) 
-                       {
-                               this.oid = oid;
-                               this.upperBound = upperBound;
-                               this.encoding = encoding;
-                       }
-
-                       public string Value {
-                               get { return attrValue; }
-                               set { 
-                                       if ((attrValue != null) && (attrValue.Length > upperBound)) {
-                                               string msg = Locale.GetText ("Value length bigger than upperbound ({0}).");
-                                               throw new FormatException (String.Format (msg, upperBound));
-                                       }
-                                       attrValue = value; 
-                               }
-                       }
-
-                       public ASN1 ASN1 {
-                               get { return GetASN1 (); }
-                       }
-
-                       internal ASN1 GetASN1 (byte encoding) 
-                       {
-                               byte encode = encoding;
-                               if (encode == 0xFF)
-                                       encode = SelectBestEncoding ();
-                                       
-                               ASN1 asn1 = new ASN1 (0x30);
-                               asn1.Add (ASN1Convert.FromOid (oid));
-                               switch (encode) {
-                                       case 0x13:
-                                               // PRINTABLESTRING
-                                               asn1.Add (new ASN1 (0x13, Encoding.ASCII.GetBytes (attrValue)));
-                                               break;
-                                       case 0x16:
-                                               // IA5STRING
-                                               asn1.Add (new ASN1 (0x16, Encoding.ASCII.GetBytes (attrValue)));
-                                               break;
-                                       case 0x1E:
-                                               // BMPSTRING
-                                               asn1.Add (new ASN1 (0x1E, Encoding.BigEndianUnicode.GetBytes (attrValue)));
-                                               break;
-                               }
-                               return asn1;
-                       }
-
-                       internal ASN1 GetASN1 () 
-                       {
-                               return GetASN1 (encoding);
-                       }
-
-                       public byte[] GetBytes (byte encoding) 
-                       {
-                               return GetASN1 (encoding) .GetBytes ();
-                       }
-
-                       public byte[] GetBytes () 
-                       {
-                               return GetASN1 () .GetBytes ();
-                       }
-
-                       private byte SelectBestEncoding ()
-                       {
-                               foreach (char c in attrValue) {
-                                       switch (c) {
-                                       case '@':
-                                       case '_':
-                                               return 0x1E; // BMPSTRING
-                                       default:
-                                               if (c > 127)
-                                                       return 0x1E; // BMPSTRING
-                                               break;
-                                       }
-                               }
-                               return 0x13; // PRINTABLESTRING
-                       }
-               }
-
-               public class Name : AttributeTypeAndValue {
-
-                       public Name () : base ("2.5.4.41", 32768) 
-                       {
-                       }
-               }
-
-               public class CommonName : AttributeTypeAndValue {
-
-                       public CommonName () : base ("2.5.4.3", 64) 
-                       {
-                       }
-               }
-
-               // RFC2256, Section 5.6
-               public class SerialNumber : AttributeTypeAndValue {
-
-                       // max length 64 bytes, Printable String only
-                       public SerialNumber ()
-                               : base ("2.5.4.5", 64, 0x13)
-                       {
-                       }
-               }
-
-               public class LocalityName : AttributeTypeAndValue {
-
-                       public LocalityName () : base ("2.5.4.7", 128)
-                       {
-                       }
-               }
-
-               public class StateOrProvinceName : AttributeTypeAndValue {
-
-                       public StateOrProvinceName () : base ("2.5.4.8", 128) 
-                       {
-                       }
-               }
-                
-               public class OrganizationName : AttributeTypeAndValue {
-
-                       public OrganizationName () : base ("2.5.4.10", 64)
-                       {
-                       }
-               }
-                
-               public class OrganizationalUnitName : AttributeTypeAndValue {
-
-                       public OrganizationalUnitName () : base ("2.5.4.11", 64)
-                       {
-                       }
-               }
-
-               // NOTE: Not part of RFC2253
-               public class EmailAddress : AttributeTypeAndValue {
-
-                       public EmailAddress () : base ("1.2.840.113549.1.9.1", 128, 0x16)
-                       {
-                       }
-               }
-
-               // RFC2247, Section 4
-               public class DomainComponent : AttributeTypeAndValue {
-
-                       // no maximum length defined
-                       public DomainComponent ()
-                               : base ("0.9.2342.19200300.100.1.25", Int32.MaxValue, 0x16)
-                       {
-                       }
-               }
-
-               // RFC1274, Section 9.3.1
-               public class UserId : AttributeTypeAndValue {
-
-                       public UserId ()
-                               : base ("0.9.2342.19200300.100.1.1", 256)
-                       {
-                       }
-               }
-
-               public class Oid : AttributeTypeAndValue {
-
-                       public Oid (string oid)
-                               : base (oid, Int32.MaxValue)
-                       {
-                       }
-               }
-
-               /* -- Naming attributes of type X520Title
-                * id-at-title             AttributeType ::= { id-at 12 }
-                * 
-                * X520Title ::= CHOICE {
-                *       teletexString     TeletexString   (SIZE (1..ub-title)),
-                *       printableString   PrintableString (SIZE (1..ub-title)),
-                *       universalString   UniversalString (SIZE (1..ub-title)),
-                *       utf8String        UTF8String      (SIZE (1..ub-title)),
-                *       bmpString         BMPString       (SIZE (1..ub-title)) 
-                * }
-                */
-               public class Title : AttributeTypeAndValue {
-
-                       public Title () : base ("2.5.4.12", 64)
-                       {
-                       }
-               }
-
-               public class CountryName : AttributeTypeAndValue {
-
-                       // (0x13) PRINTABLESTRING
-                       public CountryName () : base ("2.5.4.6", 2, 0x13) 
-                       {
-                       }
-               }
-
-               public class DnQualifier : AttributeTypeAndValue {
-
-                       // (0x13) PRINTABLESTRING
-                       public DnQualifier () : base ("2.5.4.46", 2, 0x13) 
-                       {
-                       }
-               }
-
-               public class Surname : AttributeTypeAndValue {
-
-                       public Surname () : base ("2.5.4.4", 32768) 
-                       {
-                       }
-               }
-
-               public class GivenName : AttributeTypeAndValue {
-
-                       public GivenName () : base ("2.5.4.42", 16) 
-                       {
-                       }
-               }
-
-               public class Initial : AttributeTypeAndValue {
-
-                       public Initial () : base ("2.5.4.43", 5) 
-                       {
-                       }
-               }
-
-       }
-        
-       /* From RFC3280
-        * --  specifications of Upper Bounds MUST be regarded as mandatory
-        * --  from Annex B of ITU-T X.411 Reference Definition of MTS Parameter
-        * 
-        * --  Upper Bounds
-        * 
-        * ub-name INTEGER ::= 32768
-        * ub-common-name INTEGER ::= 64
-        * ub-locality-name INTEGER ::= 128
-        * ub-state-name INTEGER ::= 128
-        * ub-organization-name INTEGER ::= 64
-        * ub-organizational-unit-name INTEGER ::= 64
-        * ub-title INTEGER ::= 64
-        * ub-serial-number INTEGER ::= 64
-        * ub-match INTEGER ::= 128
-        * ub-emailaddress-length INTEGER ::= 128
-        * ub-common-name-length INTEGER ::= 64
-        * ub-country-name-alpha-length INTEGER ::= 2
-        * ub-country-name-numeric-length INTEGER ::= 3
-        * ub-domain-defined-attributes INTEGER ::= 4
-        * ub-domain-defined-attribute-type-length INTEGER ::= 8
-        * ub-domain-defined-attribute-value-length INTEGER ::= 128
-        * ub-domain-name-length INTEGER ::= 16
-        * ub-extension-attributes INTEGER ::= 256
-        * ub-e163-4-number-length INTEGER ::= 15
-        * ub-e163-4-sub-address-length INTEGER ::= 40
-        * ub-generation-qualifier-length INTEGER ::= 3
-        * ub-given-name-length INTEGER ::= 16
-        * ub-initials-length INTEGER ::= 5
-        * ub-integer-options INTEGER ::= 256
-        * ub-numeric-user-id-length INTEGER ::= 32
-        * ub-organization-name-length INTEGER ::= 64
-        * ub-organizational-unit-name-length INTEGER ::= 32
-        * ub-organizational-units INTEGER ::= 4
-        * ub-pds-name-length INTEGER ::= 16
-        * ub-pds-parameter-length INTEGER ::= 30
-        * ub-pds-physical-address-lines INTEGER ::= 6
-        * ub-postal-code-length INTEGER ::= 16
-        * ub-pseudonym INTEGER ::= 128
-        * ub-surname-length INTEGER ::= 40
-        * ub-terminal-id-length INTEGER ::= 24
-        * ub-unformatted-address-length INTEGER ::= 180
-        * ub-x121-address-length INTEGER ::= 16
-        * 
-        * -- Note - upper bounds on string types, such as TeletexString, are
-        * -- measured in characters.  Excepting PrintableString or IA5String, a
-        * -- significantly greater number of octets will be required to hold
-        * -- such a value.  As a minimum, 16 octets, or twice the specified
-        * -- upper bound, whichever is the larger, should be allowed for
-        * -- TeletexString.  For UTF8String or UniversalString at least four
-        * -- times the upper bound should be allowed.
-        */
-}
diff --git a/mcs/class/corlib/Mono.Security/ASN1.cs b/mcs/class/corlib/Mono.Security/ASN1.cs
deleted file mode 100644 (file)
index 2d65670..0000000
+++ /dev/null
@@ -1,343 +0,0 @@
-//
-// ASN1.cs: Abstract Syntax Notation 1 - micro-parser and generator
-//
-// Authors:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//     Jesper Pedersen  <jep@itplus.dk>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// (C) 2004 IT+ A/S (http://www.itplus.dk)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.IO;
-using System.Text;
-
-namespace Mono.Security {
-
-       // References:
-       // a.   ITU ASN.1 standards (free download)
-       //      http://www.itu.int/ITU-T/studygroups/com17/languages/
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       class ASN1 {
-
-               private byte m_nTag;
-               private byte[] m_aValue;
-               private ArrayList elist;
-
-               public ASN1 () : this (0x00, null) {}
-
-               public ASN1 (byte tag) : this (tag, null) {}
-
-               public ASN1 (byte tag, byte[] data) 
-               {
-                       m_nTag = tag;
-                       m_aValue = data;
-               }
-
-               public ASN1 (byte[] data) 
-               {
-                       m_nTag = data [0];
-
-                       int nLenLength = 0;
-                       int nLength = data [1];
-
-                       if (nLength > 0x80) {
-                               // composed length
-                               nLenLength = nLength - 0x80;
-                               nLength = 0;
-                               for (int i = 0; i < nLenLength; i++) {
-                                       nLength *= 256;
-                                       nLength += data [i + 2];
-                               }
-                       }
-                       else if (nLength == 0x80) {
-                               // undefined length encoding
-                               throw new NotSupportedException ("Undefined length encoding.");
-                       }
-
-                       m_aValue = new byte [nLength];
-                       Buffer.BlockCopy (data, (2 + nLenLength), m_aValue, 0, nLength);
-
-                       if ((m_nTag & 0x20) == 0x20) {
-                               int nStart = (2 + nLenLength);
-                               Decode (data, ref nStart, data.Length);
-                       }
-               }
-
-               public int Count {
-                       get { 
-                               if (elist == null)
-                                       return 0;
-                               return elist.Count; 
-                       }
-               }
-
-               public byte Tag {
-                       get { return m_nTag; }
-               }
-
-               public int Length {
-                       get { 
-                               if (m_aValue != null)
-                                       return m_aValue.Length; 
-                               else
-                                       return 0;
-                       }
-               }
-
-               public byte[] Value {
-                       get { 
-                               if (m_aValue == null)
-                                       GetBytes ();
-                               return (byte[]) m_aValue.Clone (); 
-                       }
-                       set { 
-                               if (value != null)
-                                       m_aValue = (byte[]) value.Clone (); 
-                       }
-               }
-
-               private bool CompareArray (byte[] array1, byte[] array2)
-               {
-                       bool bResult = (array1.Length == array2.Length);
-                       if (bResult) {
-                               for (int i = 0; i < array1.Length; i++) {
-                                       if (array1[i] != array2[i])
-                                               return false;
-                               }
-                       }
-                       return bResult;
-               }
-
-               public bool Equals (byte[] asn1) 
-               {
-                       return CompareArray (this.GetBytes (), asn1);
-               }
-
-               public bool CompareValue (byte[] value) 
-               {
-                       return CompareArray (m_aValue, value);
-               }
-
-               public ASN1 Add (ASN1 asn1) 
-               {
-                       if (asn1 != null) {
-                               if (elist == null)
-                                       elist = new ArrayList ();
-                               elist.Add (asn1);
-                       }
-                       return asn1;
-               }
-
-               public virtual byte[] GetBytes () 
-               {
-                       byte[] val = null;
-                       
-                       if (Count > 0) {
-                               int esize = 0;
-                               ArrayList al = new ArrayList ();
-                               foreach (ASN1 a in elist) {
-                                       byte[] item = a.GetBytes ();
-                                       al.Add (item);
-                                       esize += item.Length;
-                               }
-                               val = new byte [esize];
-                               int pos = 0;
-                               for (int i=0; i < elist.Count; i++) {
-                                       byte[] item = (byte[]) al[i];
-                                       Buffer.BlockCopy (item, 0, val, pos, item.Length);
-                                       pos += item.Length;
-                               }
-                       } else if (m_aValue != null) {
-                               val = m_aValue;
-                       }
-
-                       byte[] der;
-                       int nLengthLen = 0;
-
-                       if (val != null) {
-                               int nLength = val.Length;
-                               // special for length > 127
-                               if (nLength > 127) {
-                                       if (nLength <= Byte.MaxValue) {
-                                               der = new byte [3 + nLength];
-                                               Buffer.BlockCopy (val, 0, der, 3, nLength);
-                                               nLengthLen = 0x81;
-                                               der[2] = (byte)(nLength);
-                                       }
-                                       else if (nLength <= UInt16.MaxValue) {
-                                               der = new byte [4 + nLength];
-                                               Buffer.BlockCopy (val, 0, der, 4, nLength);
-                                               nLengthLen = 0x82;
-                                               der[2] = (byte)(nLength >> 8);
-                                               der[3] = (byte)(nLength);
-                                       }
-                                       else if (nLength <= 0xFFFFFF) {
-                                               // 24 bits
-                                               der = new byte [5 + nLength];
-                                               Buffer.BlockCopy (val, 0, der, 5, nLength);
-                                               nLengthLen = 0x83;
-                                               der [2] = (byte)(nLength >> 16);
-                                               der [3] = (byte)(nLength >> 8);
-                                               der [4] = (byte)(nLength);
-                                       }
-                                       else {
-                                               // max (Length is an integer) 32 bits
-                                               der = new byte [6 + nLength];
-                                               Buffer.BlockCopy (val, 0, der, 6, nLength);
-                                               nLengthLen = 0x84;
-                                               der [2] = (byte)(nLength >> 24);
-                                               der [3] = (byte)(nLength >> 16);
-                                               der [4] = (byte)(nLength >> 8);
-                                               der [5] = (byte)(nLength);
-                                       }
-                               }
-                               else {
-                                       // basic case (no encoding)
-                                       der = new byte [2 + nLength];
-                                       Buffer.BlockCopy (val, 0, der, 2, nLength);
-                                       nLengthLen = nLength;
-                               }
-                               if (m_aValue == null)
-                                       m_aValue = val;
-                       }
-                       else
-                               der = new byte[2];
-
-                       der[0] = m_nTag;
-                       der[1] = (byte)nLengthLen;
-
-                       return der;
-               }
-
-               // Note: Recursive
-               protected void Decode (byte[] asn1, ref int anPos, int anLength) 
-               {
-                       byte nTag;
-                       int nLength;
-                       byte[] aValue;
-
-                       // minimum is 2 bytes (tag + length of 0)
-                       while (anPos < anLength - 1) {
-                               DecodeTLV (asn1, ref anPos, out nTag, out nLength, out aValue);
-                               // sometimes we get trailing 0
-                               if (nTag == 0)
-                                       continue;
-
-                               ASN1 elm = Add (new ASN1 (nTag, aValue));
-
-                               if ((nTag & 0x20) == 0x20) {
-                                       int nConstructedPos = anPos;
-                                       elm.Decode (asn1, ref nConstructedPos, nConstructedPos + nLength);
-                               }
-                               anPos += nLength; // value length
-                       }
-               }
-
-               // TLV : Tag - Length - Value
-               protected void DecodeTLV (byte[] asn1, ref int pos, out byte tag, out int length, out byte[] content) 
-               {
-                       tag = asn1 [pos++];
-                       length = asn1 [pos++];
-
-                       // special case where L contains the Length of the Length + 0x80
-                       if ((length & 0x80) == 0x80) {
-                               int nLengthLen = length & 0x7F;
-                               length = 0;
-                               for (int i = 0; i < nLengthLen; i++)
-                                       length = length * 256 + asn1 [pos++];
-                       }
-
-                       content = new byte [length];
-                       Buffer.BlockCopy (asn1, pos, content, 0, length);
-               }
-
-               public ASN1 this [int index] {
-                       get {           
-                               try {
-                                       if ((elist == null) || (index >= elist.Count))
-                                               return null;
-                                       return (ASN1) elist [index];
-                               }
-                               catch (ArgumentOutOfRangeException) {
-                                       return null;
-                               }
-                       }
-               }
-
-               public ASN1 Element (int index, byte anTag) 
-               {
-                       try {
-                               if ((elist == null) || (index >= elist.Count))
-                                       return null;
-
-                               ASN1 elm = (ASN1) elist [index];
-                               if (elm.Tag == anTag)
-                                       return elm;
-                               else
-                                       return null;
-                       }
-                       catch (ArgumentOutOfRangeException) {
-                               return null;
-                       }
-               }
-
-               public override string ToString()
-               {
-                       StringBuilder hexLine = new StringBuilder ();
-            
-                       // Add tag
-                       hexLine.AppendFormat ("Tag: {0} {1}", m_nTag.ToString ("X2"), Environment.NewLine);
-
-                       // Add length
-                       hexLine.AppendFormat ("Length: {0} {1}", Value.Length, Environment.NewLine);
-
-                       // Add value
-                       hexLine.Append ("Value: ");
-                       hexLine.Append (Environment.NewLine);
-                       for (int i = 0; i < Value.Length; i++) {
-                               hexLine.AppendFormat ("{0} ", Value [i].ToString ("X2"));
-                               if ((i+1) % 16 == 0)
-                                       hexLine.AppendFormat (Environment.NewLine);
-                       }
-                       return hexLine.ToString ();
-               }
-
-               public void SaveToFile (string filename)
-               {
-                       if (filename == null)
-                               throw new ArgumentNullException ("filename");
-
-                       using (FileStream fs = File.Create (filename)) {
-                               byte[] data = GetBytes ();
-                               fs.Write (data, 0, data.Length);
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security/ASN1Convert.cs b/mcs/class/corlib/Mono.Security/ASN1Convert.cs
deleted file mode 100644 (file)
index 3a1cf93..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-//
-// ASN1Convert.cs: Abstract Syntax Notation 1 convertion routines
-//
-// Authors:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//     Jesper Pedersen  <jep@itplus.dk>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// (C) 2004 IT+ A/S (http://www.itplus.dk)
-// Copyright (C) 2004-2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Globalization;
-using System.Security.Cryptography;
-using System.Text;
-
-namespace Mono.Security {
-
-       // References:
-       // a.   ITU ASN.1 standards (free download)
-       //      http://www.itu.int/ITU-T/studygroups/com17/languages/
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       static class ASN1Convert {
-               // RFC3280, section 4.2.1.5
-               // CAs conforming to this profile MUST always encode certificate
-               // validity dates through the year 2049 as UTCTime; certificate validity
-               // dates in 2050 or later MUST be encoded as GeneralizedTime.
-
-               // Under 1.x this API requires a Local datetime to be provided
-               // Under 2.0 it will also accept a Utc datetime
-               static public ASN1 FromDateTime (DateTime dt) 
-               {
-                       if (dt.Year < 2050) {
-                               // UTCTIME
-                               return new ASN1 (0x17, Encoding.ASCII.GetBytes (
-                                       dt.ToUniversalTime ().ToString ("yyMMddHHmmss",
-                                       CultureInfo.InvariantCulture) + "Z"));
-                       }
-                       else {
-                               // GENERALIZEDTIME
-                               return new ASN1 (0x18, Encoding.ASCII.GetBytes (
-                                       dt.ToUniversalTime ().ToString ("yyyyMMddHHmmss", 
-                                       CultureInfo.InvariantCulture) + "Z"));
-                       }
-               }
-
-               static public ASN1 FromInt32 (Int32 value) 
-               {
-                       byte[] integer = BitConverterLE.GetBytes (value);
-                       Array.Reverse (integer);
-                       int x = 0;
-                       while ((x < integer.Length) && (integer [x] == 0x00))
-                               x++;
-                       ASN1 asn1 = new ASN1 (0x02);
-                       switch (x) {
-                       case 0:
-                               asn1.Value = integer;
-                               break;
-                       case 4:
-                               asn1.Value = new byte [1];
-                               break;
-                       default:
-                               byte[] smallerInt = new byte [4 - x];
-                               Buffer.BlockCopy (integer, x, smallerInt, 0, smallerInt.Length);
-                               asn1.Value = smallerInt;
-                               break;
-                       }
-                       return asn1;
-               }
-
-               static public ASN1 FromOid (string oid) 
-               {
-                       if (oid == null)
-                               throw new ArgumentNullException ("oid");
-
-                       return new ASN1 (CryptoConfig.EncodeOID (oid));
-               }
-
-               static public ASN1 FromUnsignedBigInteger (byte[] big) 
-               {
-                       if (big == null)
-                               throw new ArgumentNullException ("big");
-
-                       // check for numbers that could be interpreted as negative (first bit)
-                       if (big [0] >= 0x80) {
-                               // in thie cas we add a new, empty, byte (position 0) so we're
-                               // sure this will always be interpreted an unsigned integer.
-                               // However we can't feed it into RSAParameters or DSAParameters
-                               int length = big.Length + 1;
-                               byte[] uinteger = new byte [length];
-                               Buffer.BlockCopy (big, 0, uinteger, 1, length - 1);
-                               big = uinteger;
-                       }
-                       return new ASN1 (0x02, big);
-               }
-
-               static public int ToInt32 (ASN1 asn1) 
-               {
-                       if (asn1 == null)
-                               throw new ArgumentNullException ("asn1");
-                       if (asn1.Tag != 0x02)
-                               throw new FormatException ("Only integer can be converted");
-
-                       int x = 0;
-                       for (int i=0; i < asn1.Value.Length; i++)
-                               x = (x << 8) + asn1.Value [i];
-                       return x;
-               }
-
-               // Convert a binary encoded OID to human readable string representation of 
-               // an OID (IETF style). Based on DUMPASN1.C from Peter Gutmann.
-               static public string ToOid (ASN1 asn1) 
-               {
-                       if (asn1 == null)
-                               throw new ArgumentNullException ("asn1");
-
-                       byte[] aOID = asn1.Value;
-                       StringBuilder sb = new StringBuilder ();
-                       // Pick apart the OID
-                       byte x = (byte) (aOID[0] / 40);
-                       byte y = (byte) (aOID[0] % 40);
-                       if (x > 2) {
-                               // Handle special case for large y if x = 2
-                               y += (byte) ((x - 2) * 40);
-                               x = 2;
-                       }
-                       sb.Append (x.ToString (CultureInfo.InvariantCulture));
-                       sb.Append (".");
-                       sb.Append (y.ToString (CultureInfo.InvariantCulture));
-                       ulong val = 0;
-                       for (x = 1; x < aOID.Length; x++) {
-                               val = ((val << 7) | ((byte) (aOID [x] & 0x7F)));
-                               if ( !((aOID [x] & 0x80) == 0x80)) {
-                                       sb.Append (".");
-                                       sb.Append (val.ToString (CultureInfo.InvariantCulture));
-                                       val = 0;
-                               }
-                       }
-                       return sb.ToString ();
-               }
-
-               static public DateTime ToDateTime (ASN1 time) 
-               {
-                       if (time == null)
-                               throw new ArgumentNullException ("time");
-
-                       string t = Encoding.ASCII.GetString (time.Value);
-                       // to support both UTCTime and GeneralizedTime (and not so common format)
-                       string mask = null;
-                       int year;
-                       switch (t.Length) {
-                               case 11:
-                                       // illegal format, still it's supported for compatibility
-                                       mask = "yyMMddHHmmZ";
-                                       break;
-                               case 13: 
-                                       // RFC3280: 4.1.2.5.1  UTCTime
-                                       year = Convert.ToInt16 (t.Substring (0, 2), CultureInfo.InvariantCulture);
-                                       // Where YY is greater than or equal to 50, the 
-                                       // year SHALL be interpreted as 19YY; and 
-                                       // Where YY is less than 50, the year SHALL be 
-                                       // interpreted as 20YY.
-                                       if (year >= 50)
-                                               t = "19" + t;
-                                       else
-                                               t = "20" + t;
-                                       mask = "yyyyMMddHHmmssZ";
-                                       break;
-                               case 15:
-                                       mask = "yyyyMMddHHmmssZ"; // GeneralizedTime
-                                       break;
-                               case 17:
-                                       // another illegal format (990630000000+1000), again supported for compatibility
-                                       year = Convert.ToInt16 (t.Substring (0, 2), CultureInfo.InvariantCulture);
-                                       string century = (year >= 50) ? "19" : "20";
-                                       // ASN.1 (see ITU X.680 section 43.3) deals with offset differently than .NET
-                                       char sign = (t[12] == '+') ? '-' : '+';
-                                       t = String.Format ("{0}{1}{2}{3}{4}:{5}{6}", century, t.Substring (0, 12), sign, 
-                                               t[13], t[14], t[15], t[16]);
-                                       mask = "yyyyMMddHHmmsszzz";
-                                       break;
-                       }
-                       return DateTime.ParseExact (t, mask, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security/BitConverterLE.cs b/mcs/class/corlib/Mono.Security/BitConverterLE.cs
deleted file mode 100644 (file)
index ad3b505..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-//
-// Mono.Security.BitConverterLE.cs
-//  Like System.BitConverter but always little endian
-//
-// Author:
-//   Bernie Solomon
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Security
-{
-       internal sealed class BitConverterLE
-       {
-               private BitConverterLE ()
-               {
-               }
-
-               unsafe private static byte[] GetUShortBytes (byte *bytes)
-               {
-                       if (BitConverter.IsLittleEndian)
-                               return new byte [] { bytes [0], bytes [1] };
-                       else
-                               return new byte [] { bytes [1], bytes [0] };
-               }
-
-               unsafe private static byte[] GetUIntBytes (byte *bytes)
-               {
-                       if (BitConverter.IsLittleEndian)
-                               return new byte [] { bytes [0], bytes [1], bytes [2], bytes [3] };
-                       else
-                               return new byte [] { bytes [3], bytes [2], bytes [1], bytes [0] };
-               }
-
-               unsafe private static byte[] GetULongBytes (byte *bytes)
-               {
-                       if (BitConverter.IsLittleEndian)
-                               return new byte [] { bytes [0], bytes [1], bytes [2], bytes [3],
-                                                    bytes [4], bytes [5], bytes [6], bytes [7] };
-                       else
-                               return new byte [] { bytes [7], bytes [6], bytes [5], bytes [4],
-                                                    bytes [3], bytes [2], bytes [1], bytes [0] };
-               }
-
-               unsafe internal static byte[] GetBytes (bool value)
-               {
-                       return new byte [] { value ? (byte)1 : (byte)0 };
-               }
-
-               unsafe internal static byte[] GetBytes (char value)
-               {
-                       return GetUShortBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (short value)
-               {
-                       return GetUShortBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (int value)
-               {
-                       return GetUIntBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (long value)
-               {
-                       return GetULongBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (ushort value)
-               {
-                       return GetUShortBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (uint value)
-               {
-                       return GetUIntBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (ulong value)
-               {
-                       return GetULongBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (float value)
-               {
-                       return GetUIntBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (double value)
-               {
-                       return GetULongBytes ((byte *) &value);
-               }
-
-               unsafe private static void UShortFromBytes (byte *dst, byte[] src, int startIndex)
-               {
-                       if (BitConverter.IsLittleEndian) {
-                               dst [0] = src [startIndex];
-                               dst [1] = src [startIndex + 1];
-                       } else {
-                               dst [0] = src [startIndex + 1];
-                               dst [1] = src [startIndex];
-                       }
-               }
-
-               unsafe private static void UIntFromBytes (byte *dst, byte[] src, int startIndex)
-               {
-                       if (BitConverter.IsLittleEndian) {
-                               dst [0] = src [startIndex];
-                               dst [1] = src [startIndex + 1];
-                               dst [2] = src [startIndex + 2];
-                               dst [3] = src [startIndex + 3];
-                       } else {
-                               dst [0] = src [startIndex + 3];
-                               dst [1] = src [startIndex + 2];
-                               dst [2] = src [startIndex + 1];
-                               dst [3] = src [startIndex];
-                       }
-               }
-
-               unsafe private static void ULongFromBytes (byte *dst, byte[] src, int startIndex)
-               {
-                       if (BitConverter.IsLittleEndian) {
-                               for (int i = 0; i < 8; ++i)
-                                       dst [i] = src [startIndex + i];
-                       } else {
-                               for (int i = 0; i < 8; ++i)
-                                       dst [i] = src [startIndex + (7 - i)];
-                       }
-               }
-
-               unsafe internal static bool ToBoolean (byte[] value, int startIndex)
-               {
-                       return value [startIndex] != 0;
-               }
-
-               unsafe internal static char ToChar (byte[] value, int startIndex)
-               {
-                       char ret;
-
-                       UShortFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static short ToInt16 (byte[] value, int startIndex)
-               {
-                       short ret;
-
-                       UShortFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static int ToInt32 (byte[] value, int startIndex)
-               {
-                       int ret;
-
-                       UIntFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static long ToInt64 (byte[] value, int startIndex)
-               {
-                       long ret;
-
-                       ULongFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static ushort ToUInt16 (byte[] value, int startIndex)
-               {
-                       ushort ret;
-
-                       UShortFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static uint ToUInt32 (byte[] value, int startIndex)
-               {
-                       uint ret;
-
-                       UIntFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static ulong ToUInt64 (byte[] value, int startIndex)
-               {
-                       ulong ret;
-
-                       ULongFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static float ToSingle (byte[] value, int startIndex)
-               {
-                       float ret;
-
-                       UIntFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static double ToDouble (byte[] value, int startIndex)
-               {
-                       double ret;
-
-                       ULongFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security/ChangeLog b/mcs/class/corlib/Mono.Security/ChangeLog
deleted file mode 100644 (file)
index 97d44bd..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-2010-05-10  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Keep it public for Moonlight. Other types in other 
-       assemblies needs it and the linker will eventually internalize
-       everything.
-
-2010-03-24  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1Convert.cs: Specify CultureInfo.InvariantCulture (instead of 
-       null) to avoid crash on Windows. Patch by Yoni Shalom.
-
-2010-03-16  Jb Evain  <jbevain@novell.com>
-
-       * StrongName.cs: use MOONLIGHT symbol to disambiguate
-       MonoTouch and Moonlight code.
-
-2009-09-22  Sebastien Pouliot  <sebastien@ximian.com> 
-
-       * StrongName.cs: Moonlight NET_2_1 cannot depend on machine.config
-       * StrongNameManager_2_1.cs: Minimal version for NET_2_1
-
-2009-04-30  Sebastien Pouliot  <sebastien@ximian.com> 
-
-       * StrongName.cs: Adapt to work with only RSAManaged when built 
-       for NET_2_1, i.e. remove use of RSACryptoServiceProvider
-
-2008-09-12  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Use File.Create instead of OpenWrite to make sure nothing
-       else if left at the end of the file.
-
-2008-04-25  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: New test cases to verify signatures from streams.
-       Patch from Dave Hillier <daveh@lindenlab.com>
-
-2008-03-10  Stephane Delcroix  <sdelcroix@novell.com>
-
-       * Uri.cs: port the changes I did in System.Uri in r97844.
-
-2007-03-11  Zoltan Varga  <vargaz@gmail.com>
-
-       * ASN1Convert.cs: Fix a warning.
-
-2007-02-12  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1Convert.cs: Add support for decoding ASN.1 dates with an UTC 
-       offset (e.g. 990630000000+1000) as some certificates use this format.
-
-2007-01-05  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1Convert.cs: Added comment to FromDateTime to specify that, under
-       1.x, the DateTime must be a local (not UTC) date time. Fixed ToDateTime
-       to return a DateTimeKind.Utc DateTime under 2.0.
-
-2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: Fix the (very unlikely) case where an MD5 public key
-       token is requested (part of the spec, never seen in the wild).
-
-2006-06-14  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Switch condition not to use the cached data if there is a
-       collection being used. Skip extra 0 at the end of the byte[] buffer.
-
-2006-01-04  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1Convert.cs: Fix convertion of integer 0 to ASN.1.
-
-2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: Synch with Mono.Security.dll to get support for 
-       strongname keypairs different from 1024 bits.
-
-2005-10-06  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1Convert.cs: Better handle big integer than cannot be interpreted
-       as a negative number (don't extend). Fix bug #75778.
-
-2004-12-15  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Fixed warning for unused variable.
-
-2004-10-29  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Throw an NotSupportedException when "undefined length 
-       encoding" is used (#68903 but it's not a fix ;-). Fixed GetBytes to
-       encode structures bigger than 64k (fix #68907). Simplified ToString
-       and added Length to help debugging.
-       * PKCS7.cs: Added a flag to avoid resigning a structure (which was
-       duplicating some attributes).
-
-2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Fixed warning (l4) for unused variable.
-       * PKCS7.cs: Fixed warning (l4) for unused variable.
-       * Uri.cs: Fixed warning (l4) for unused variables. Remove sealed from
-       class to reduce number of warnings.
-
-2004-08-30  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Uri.cs: Copied from System.dll assembly and started adaptation for
-       it's reuse inside the security classes (CAS).
-
-2004-06-08  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: Added corlib specific code to load configuration
-       from machine.config to allow public key token remapping to work
-       with (for example) gacutil.
-       * StrongNameManager.cs: Now load configuration from machine.config.
-
-2004-05-19  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PKCS7.cs: In sync with Mono.Security.dll version.
-
-2004-05-18  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1Convert.cs: In sync with Mono.Security.dll version.
-       * StrongName.cs: In sync with Mono.Security.dll version.
-
-2004-05-03  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Fixed NullReferenceException in xmldsig standalone tests.
-
-2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: In sync with Mono.Security.dll version.
-       * ASN1Convert.cs: In sync with Mono.Security.dll version.
-       * PKCS7.cs: In sync with Mono.Security.dll version.
-       * StrongName.cs: In sync with Mono.Security.dll version.
-
-2004-04-20  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Added SaveToFile for easier debugging. Patch from
-       Jesper Pedersen.
-       * StrongName.cs: Removed compilation warning (unused variable).
-
-2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
-
-       * BitConverterLE.cs: added which always does
-       little endian conversion
-       * StrongName.cs: Use BitConverterLE
-       * ASN1Convert.cs: Use BitConverterLE
-
-2004-04-06  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: Added support for ECMA "key" to StringName(byte[])
-       constructor.
-
-2004-03-31  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: Update to include new static method that can be 
-       called from the runtime to validate strongname signatures. 
-       Refactored the existing class to reduce code duplication.
-       * StrongNameManager.cs: New. This class keeps the configuration
-       required to map a public key token to an alternative public key
-       (e.g. ECMA public key token -> Mono public key) and to skip
-       strongname validation for specific assemblies/token/users.
-
-2004-03-24  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: Added CanSign property for AssemblyBuilder. Current
-       Fx design requires an exception to know if the private key is present
-       in an RSA instance. In some case (inside corlib) we can do without...
-
-2004-03-23  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: Added exceptions for null or invalid keys.
-
-2004-03-17  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Class synched with Mono.Security.
-       * ASN1Convert.cs: Class synched with Mono.Security.
-
-2003-10-18  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * StrongName.cs: Added from Mono.Security assembly for StrongName
-       support in AssemblyBuilder.
-
-2003-10-12  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * PKCS7.cs: Added from Mono.Security assembly for Authenticode
-       support in X509Certificate.CreateFromSignedFile
-
-2003-03-15  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * ASN1.cs: Improved version.
-       * ASN1Convert.cs: New. Helper class to convert between .NET 
-       types and ASN.1 structures.
-
-2003-02-08  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * ASN1.cs: Renamed namespace to match new location.
-
diff --git a/mcs/class/corlib/Mono.Security/PKCS7.cs b/mcs/class/corlib/Mono.Security/PKCS7.cs
deleted file mode 100644 (file)
index 3cdbb6f..0000000
+++ /dev/null
@@ -1,976 +0,0 @@
-//
-// PKCS7.cs: PKCS #7 - Cryptographic Message Syntax Standard 
-//     http://www.rsasecurity.com/rsalabs/pkcs/pkcs-7/index.html
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Security.Cryptography;
-
-using Mono.Security.X509;
-
-namespace Mono.Security {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       sealed class PKCS7 {
-
-               public class Oid {
-                       // pkcs 1
-                       public const string rsaEncryption = "1.2.840.113549.1.1.1";
-                       // pkcs 7
-                       public const string data = "1.2.840.113549.1.7.1";
-                       public const string signedData = "1.2.840.113549.1.7.2";
-                       public const string envelopedData = "1.2.840.113549.1.7.3";
-                       public const string signedAndEnvelopedData = "1.2.840.113549.1.7.4";
-                       public const string digestedData = "1.2.840.113549.1.7.5";
-                       public const string encryptedData = "1.2.840.113549.1.7.6";
-                       // pkcs 9
-                       public const string contentType = "1.2.840.113549.1.9.3";
-                       public const string messageDigest  = "1.2.840.113549.1.9.4";
-                       public const string signingTime = "1.2.840.113549.1.9.5";
-                       public const string countersignature = "1.2.840.113549.1.9.6";
-
-                       public Oid () 
-                       {
-                       }
-               }
-
-               private PKCS7 ()
-               {
-               }
-
-               static public ASN1 Attribute (string oid, ASN1 value) 
-               {
-                       ASN1 attr = new ASN1 (0x30);
-                       attr.Add (ASN1Convert.FromOid (oid));
-                       ASN1 aset = attr.Add (new ASN1 (0x31));
-                       aset.Add (value);
-                       return attr;
-               }
-
-               static public ASN1 AlgorithmIdentifier (string oid)
-               {
-                       ASN1 ai = new ASN1 (0x30);
-                       ai.Add (ASN1Convert.FromOid (oid));
-                       ai.Add (new ASN1 (0x05));       // NULL
-                       return ai;
-               }
-
-               static public ASN1 AlgorithmIdentifier (string oid, ASN1 parameters) 
-               {
-                       ASN1 ai = new ASN1 (0x30);
-                       ai.Add (ASN1Convert.FromOid (oid));
-                       ai.Add (parameters);
-                       return ai;
-               }
-
-               /*
-                * IssuerAndSerialNumber ::= SEQUENCE {
-                *      issuer Name,
-                *      serialNumber CertificateSerialNumber 
-                * }
-                */
-               static public ASN1 IssuerAndSerialNumber (X509Certificate x509) 
-               {
-                       ASN1 issuer = null;
-                       ASN1 serial = null;
-                       ASN1 cert = new ASN1 (x509.RawData);
-                       int tbs = 0;
-                       bool flag = false;
-                       while (tbs < cert[0].Count) {
-                               ASN1 e = cert[0][tbs++];
-                               if (e.Tag == 0x02)
-                                       serial = e;
-                               else if (e.Tag == 0x30) {
-                                       if (flag) {
-                                               issuer = e;
-                                               break;
-                                       }
-                                       flag = true;
-                               }
-                       }
-                       ASN1 iasn = new ASN1 (0x30);
-                       iasn.Add (issuer);
-                       iasn.Add (serial);
-                       return iasn;
-               }
-
-               /*
-                * ContentInfo ::= SEQUENCE {
-                *      contentType ContentType,
-                *      content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL 
-                * }
-                * ContentType ::= OBJECT IDENTIFIER
-                */
-               public class ContentInfo {
-
-                       private string contentType;
-                       private ASN1 content;
-
-                       public ContentInfo () 
-                       {
-                               content = new ASN1 (0xA0);
-                       }
-
-                       public ContentInfo (string oid) : this ()
-                       {
-                               contentType = oid;
-                       }
-
-                       public ContentInfo (byte[] data) 
-                               : this (new ASN1 (data)) {}
-
-                       public ContentInfo (ASN1 asn1) 
-                       {
-                               // SEQUENCE with 1 or 2 elements
-                               if ((asn1.Tag != 0x30) || ((asn1.Count < 1) && (asn1.Count > 2)))
-                                       throw new ArgumentException ("Invalid ASN1");
-                               if (asn1[0].Tag != 0x06)
-                                       throw new ArgumentException ("Invalid contentType");
-                               contentType = ASN1Convert.ToOid (asn1[0]);
-                               if (asn1.Count > 1) {
-                                       if (asn1[1].Tag != 0xA0)
-                                               throw new ArgumentException ("Invalid content");
-                                       content = asn1[1];
-                               }
-                       }
-
-                       public ASN1 ASN1 {
-                               get { return GetASN1(); }
-                       }
-
-                       public ASN1 Content {
-                               get { return content; }
-                               set { content = value; }
-                       }
-
-                       public string ContentType {
-                               get { return contentType; }
-                               set { contentType = value; }
-                       }
-
-                       internal ASN1 GetASN1 () 
-                       {
-                               // ContentInfo ::= SEQUENCE {
-                               ASN1 contentInfo = new ASN1 (0x30);
-                               // contentType ContentType, -> ContentType ::= OBJECT IDENTIFIER
-                               contentInfo.Add (ASN1Convert.FromOid (contentType));
-                               // content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL 
-                               if ((content != null) && (content.Count > 0))
-                                       contentInfo.Add (content);
-                               return contentInfo;
-                       }
-
-                       public byte[] GetBytes () 
-                       {
-                               return GetASN1 ().GetBytes ();
-                       }
-               }
-
-               /*
-                * EncryptedData ::= SEQUENCE {
-                *      version         INTEGER {edVer0(0)} (edVer0),
-                *       encryptedContentInfo  EncryptedContentInfo
-                * }
-                */
-               public class EncryptedData {
-                       private byte _version;
-                       private ContentInfo _content;
-                       private ContentInfo _encryptionAlgorithm;
-                       private byte[] _encrypted;
-
-                       public EncryptedData () 
-                       {
-                               _version = 0;
-                       }
-
-                       public EncryptedData (byte[] data) 
-                               : this (new ASN1 (data))
-                       {
-                       }
-
-                       public EncryptedData (ASN1 asn1) : this () 
-                       {
-                               if ((asn1.Tag != 0x30) || (asn1.Count < 2))
-                                       throw new ArgumentException ("Invalid EncryptedData");
-
-                               if (asn1 [0].Tag != 0x02)
-                                       throw new ArgumentException ("Invalid version");
-                               _version = asn1 [0].Value [0];
-
-                               ASN1 encryptedContentInfo = asn1 [1];
-                               if (encryptedContentInfo.Tag != 0x30)
-                                       throw new ArgumentException ("missing EncryptedContentInfo");
-
-                               ASN1 contentType = encryptedContentInfo [0];
-                               if (contentType.Tag != 0x06)
-                                       throw new ArgumentException ("missing EncryptedContentInfo.ContentType");
-                               _content = new ContentInfo (ASN1Convert.ToOid (contentType));
-
-                               ASN1 contentEncryptionAlgorithm = encryptedContentInfo [1];
-                               if (contentEncryptionAlgorithm.Tag != 0x30)
-                                       throw new ArgumentException ("missing EncryptedContentInfo.ContentEncryptionAlgorithmIdentifier");
-                               _encryptionAlgorithm = new ContentInfo (ASN1Convert.ToOid (contentEncryptionAlgorithm [0]));
-                               _encryptionAlgorithm.Content = contentEncryptionAlgorithm [1];
-                               
-                               ASN1 encryptedContent = encryptedContentInfo [2];
-                               if (encryptedContent.Tag != 0x80)
-                                       throw new ArgumentException ("missing EncryptedContentInfo.EncryptedContent");
-                               _encrypted = encryptedContent.Value;
-                       }
-
-                       public ASN1 ASN1 {
-                               get { return GetASN1(); }
-                       }
-
-                       public ContentInfo ContentInfo {
-                               get { return _content; }
-                       }
-
-                       public ContentInfo EncryptionAlgorithm {
-                               get { return _encryptionAlgorithm; }
-                       }
-
-                       public byte[] EncryptedContent {
-                               get {
-                                       if (_encrypted == null)
-                                               return null;
-                                       return (byte[]) _encrypted.Clone ();
-                               }
-                       }
-
-                       public byte Version {
-                               get { return _version; }
-                               set { _version = value; }
-                       }
-
-                       // methods
-
-                       internal ASN1 GetASN1 () 
-                       {
-                               return null;
-                       }
-
-                       public byte[] GetBytes () 
-                       {
-                               return GetASN1 ().GetBytes ();
-                       }
-               }
-
-               /*
-                * EnvelopedData ::= SEQUENCE {
-                *      version Version,
-                *      recipientInfos RecipientInfos,
-                *      encryptedContentInfo EncryptedContentInfo 
-                * }
-                * 
-                * RecipientInfos ::= SET OF RecipientInfo
-                * 
-                * EncryptedContentInfo ::= SEQUENCE {
-                *      contentType ContentType,
-                *      contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
-                *      encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL 
-                * }
-                * 
-                * EncryptedContent ::= OCTET STRING
-                * 
-                */
-               public class EnvelopedData {
-                       private byte _version;
-                       private ContentInfo _content;
-                       private ContentInfo _encryptionAlgorithm;
-                       private ArrayList _recipientInfos;
-                       private byte[] _encrypted;
-
-                       public EnvelopedData () 
-                       {
-                               _version = 0;
-                               _content = new ContentInfo ();
-                               _encryptionAlgorithm = new ContentInfo ();
-                               _recipientInfos = new ArrayList ();
-                       }
-
-                       public EnvelopedData (byte[] data) 
-                               : this (new ASN1 (data))
-                       {
-                       }
-
-                       public EnvelopedData (ASN1 asn1) : this ()
-                       {
-                               if ((asn1[0].Tag != 0x30) || (asn1[0].Count < 3))
-                                       throw new ArgumentException ("Invalid EnvelopedData");
-
-                               if (asn1[0][0].Tag != 0x02)
-                                       throw new ArgumentException ("Invalid version");
-                               _version = asn1[0][0].Value[0];
-
-                               // recipientInfos
-
-                               ASN1 recipientInfos = asn1 [0][1];
-                               if (recipientInfos.Tag != 0x31)
-                                       throw new ArgumentException ("missing RecipientInfos");
-                               for (int i=0; i < recipientInfos.Count; i++) {
-                                       ASN1 recipientInfo = recipientInfos [i];
-                                       _recipientInfos.Add (new RecipientInfo (recipientInfo));
-                               }
-
-                               ASN1 encryptedContentInfo = asn1[0][2];
-                               if (encryptedContentInfo.Tag != 0x30)
-                                       throw new ArgumentException ("missing EncryptedContentInfo");
-
-                               ASN1 contentType = encryptedContentInfo [0];
-                               if (contentType.Tag != 0x06)
-                                       throw new ArgumentException ("missing EncryptedContentInfo.ContentType");
-                               _content = new ContentInfo (ASN1Convert.ToOid (contentType));
-
-                               ASN1 contentEncryptionAlgorithm = encryptedContentInfo [1];
-                               if (contentEncryptionAlgorithm.Tag != 0x30)
-                                       throw new ArgumentException ("missing EncryptedContentInfo.ContentEncryptionAlgorithmIdentifier");
-                               _encryptionAlgorithm = new ContentInfo (ASN1Convert.ToOid (contentEncryptionAlgorithm [0]));
-                               _encryptionAlgorithm.Content = contentEncryptionAlgorithm [1];
-                               
-                               ASN1 encryptedContent = encryptedContentInfo [2];
-                               if (encryptedContent.Tag != 0x80)
-                                       throw new ArgumentException ("missing EncryptedContentInfo.EncryptedContent");
-                               _encrypted = encryptedContent.Value;
-                       }
-
-                       public ArrayList RecipientInfos {
-                                 get { return _recipientInfos; }
-                       }
-
-                       public ASN1 ASN1 {
-                               get { return GetASN1(); }
-                       }
-
-                       public ContentInfo ContentInfo {
-                               get { return _content; }
-                       }
-
-                       public ContentInfo EncryptionAlgorithm {
-                               get { return _encryptionAlgorithm; }
-                       }
-
-                       public byte[] EncryptedContent {
-                               get { 
-                                       if (_encrypted == null)
-                                               return null;
-                                       return (byte[]) _encrypted.Clone ();
-                               }
-                       }
-
-                       public byte Version {
-                               get { return _version; }
-                               set { _version = value; }
-                       }
-
-                       internal ASN1 GetASN1 () 
-                       {
-                               // SignedData ::= SEQUENCE {
-                               ASN1 signedData = new ASN1 (0x30);
-                               // version Version -> Version ::= INTEGER
-/*                             byte[] ver = { _version };
-                               signedData.Add (new ASN1 (0x02, ver));
-                               // digestAlgorithms DigestAlgorithmIdentifiers -> DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier
-                               ASN1 digestAlgorithms = signedData.Add (new ASN1 (0x31));
-                               if (hashAlgorithm != null) {
-                                       string hashOid = CryptoConfig.MapNameToOid (hashAlgorithm);
-                                       digestAlgorithms.Add (AlgorithmIdentifier (hashOid));
-                               }
-
-                               // contentInfo ContentInfo,
-                               ASN1 ci = contentInfo.ASN1;
-                               signedData.Add (ci);
-                               if ((mda == null) && (hashAlgorithm != null)) {
-                                       // automatically add the messageDigest authenticated attribute
-                                       HashAlgorithm ha = HashAlgorithm.Create (hashAlgorithm);
-                                       byte[] idcHash = ha.ComputeHash (ci[1][0].Value);
-                                       ASN1 md = new ASN1 (0x30);
-                                       mda = Attribute (messageDigest, md.Add (new ASN1 (0x04, idcHash)));
-                                       signerInfo.AuthenticatedAttributes.Add (mda);
-                               }
-
-                               // certificates [0] IMPLICIT ExtendedCertificatesAndCertificates OPTIONAL,
-                               if (certs.Count > 0) {
-                                       ASN1 a0 = signedData.Add (new ASN1 (0xA0));
-                                       foreach (X509Certificate x in certs)
-                                               a0.Add (new ASN1 (x.RawData));
-                               }
-                               // crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
-                               if (crls.Count > 0) {
-                                       ASN1 a1 = signedData.Add (new ASN1 (0xA1));
-                                       foreach (byte[] crl in crls)
-                                               a1.Add (new ASN1 (crl));
-                               }
-                               // signerInfos SignerInfos -> SignerInfos ::= SET OF SignerInfo
-                               ASN1 signerInfos = signedData.Add (new ASN1 (0x31));
-                               if (signerInfo.Key != null)
-                                       signerInfos.Add (signerInfo.ASN1);*/
-                               return signedData;
-                       }
-
-                       public byte[] GetBytes () {
-                               return GetASN1 ().GetBytes ();
-                       }
-               }
-
-               /* RecipientInfo ::= SEQUENCE {
-                *      version Version,
-                *      issuerAndSerialNumber IssuerAndSerialNumber,
-                *      keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
-                *      encryptedKey EncryptedKey 
-                * }
-                * 
-                * KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
-                * 
-                * EncryptedKey ::= OCTET STRING
-                */
-               public class RecipientInfo {
-
-                       private int _version;
-                       private string _oid;
-                       private byte[] _key;
-                       private byte[] _ski;
-                       private string _issuer;
-                       private byte[] _serial;
-
-                       public RecipientInfo () {}
-
-                       public RecipientInfo (ASN1 data) 
-                       {
-                               if (data.Tag != 0x30)
-                                       throw new ArgumentException ("Invalid RecipientInfo");
-                               
-                               ASN1 version = data [0];
-                               if (version.Tag != 0x02)
-                                       throw new ArgumentException ("missing Version");
-                               _version = version.Value [0];
-
-                               // issuerAndSerialNumber IssuerAndSerialNumber
-                               ASN1 subjectIdentifierType = data [1];
-                               if ((subjectIdentifierType.Tag == 0x80) && (_version == 3)) {
-                                       _ski = subjectIdentifierType.Value;
-                               }
-                               else {
-                                       _issuer = X501.ToString (subjectIdentifierType [0]);
-                                       _serial = subjectIdentifierType [1].Value;
-                               }
-
-                               ASN1 keyEncryptionAlgorithm = data [2];
-                               _oid = ASN1Convert.ToOid (keyEncryptionAlgorithm [0]);
-
-                               ASN1 encryptedKey = data [3];
-                               _key = encryptedKey.Value;
-                       }
-
-                       public string Oid {
-                               get { return _oid; }
-                       }
-
-                       public byte[] Key {
-                               get { 
-                                       if (_key == null)
-                                               return null;
-                                        return (byte[]) _key.Clone ();
-                               }
-                       }
-
-                       public byte[] SubjectKeyIdentifier {
-                               get { 
-                                       if (_ski == null)
-                                               return null;
-                                       return (byte[]) _ski.Clone ();
-                               }
-                       }
-
-                       public string Issuer {
-                               get { return _issuer; }
-                       }
-
-                       public byte[] Serial {
-                               get { 
-                                       if (_serial == null)
-                                               return null;
-                                       return (byte[]) _serial.Clone ();
-                               }
-                       }
-
-                       public int Version {
-                               get { return _version; }
-                       }
-               }
-
-               /*
-                * SignedData ::= SEQUENCE {
-                *      version Version,
-                *      digestAlgorithms DigestAlgorithmIdentifiers,
-                *      contentInfo ContentInfo,
-                *      certificates [0] IMPLICIT ExtendedCertificatesAndCertificates OPTIONAL,
-                *      crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
-                *      signerInfos SignerInfos 
-                * }
-                */
-               public class SignedData {
-                       private byte version;
-                       private string hashAlgorithm;
-                       private ContentInfo contentInfo;
-                       private X509CertificateCollection certs;
-                       private ArrayList crls;
-                       private SignerInfo signerInfo;
-                       private bool mda;
-                       private bool signed;
-
-                       public SignedData () 
-                       {
-                               version = 1;
-                               contentInfo = new ContentInfo ();
-                               certs = new X509CertificateCollection ();
-                               crls = new ArrayList ();
-                               signerInfo = new SignerInfo ();
-                               mda = true;
-                               signed = false;
-                       }
-
-                       public SignedData (byte[] data) 
-                               : this (new ASN1 (data)) 
-                       {
-                       }
-
-                       public SignedData (ASN1 asn1) 
-                       {
-                               if ((asn1[0].Tag != 0x30) || (asn1[0].Count < 4))
-                                       throw new ArgumentException ("Invalid SignedData");
-
-                               if (asn1[0][0].Tag != 0x02)
-                                       throw new ArgumentException ("Invalid version");
-                               version = asn1[0][0].Value[0];
-
-                               contentInfo = new ContentInfo (asn1[0][2]);
-
-                               int n = 3;
-                               certs = new X509CertificateCollection ();
-                               if (asn1[0][n].Tag == 0xA0) {
-                                       for (int i=0; i < asn1[0][n].Count; i++)
-                                               certs.Add (new X509Certificate (asn1[0][n][i].GetBytes ()));
-                                       n++;
-                               }
-
-                               crls = new ArrayList ();
-                               if (asn1[0][n].Tag == 0xA1) {
-                                       for (int i=0; i < asn1[0][n].Count; i++)
-                                               crls.Add (asn1[0][n][i].GetBytes ());
-                                       n++;
-                               }
-
-                               if (asn1[0][n].Count > 0)
-                                       signerInfo = new SignerInfo (asn1[0][n]);
-                               else
-                                       signerInfo = new SignerInfo ();
-
-                               // Exchange hash algorithm Oid from SignerInfo
-                               if (signerInfo.HashName != null) {
-                                       HashName = OidToName(signerInfo.HashName);
-                               }
-                               
-                               // Check if SignerInfo has authenticated attributes
-                               mda = (signerInfo.AuthenticatedAttributes.Count > 0);
-                       }
-
-                       public ASN1 ASN1 {
-                               get { return GetASN1(); }
-                       }
-
-                       public X509CertificateCollection Certificates {
-                               get { return certs; }
-                       }
-
-                       public ContentInfo ContentInfo {
-                               get { return contentInfo; }
-                       }
-
-                       public ArrayList Crls {
-                               get { return crls; }
-                       }
-
-                       public string HashName {
-                               get { return hashAlgorithm; }
-                               // todo add validation
-                               set { 
-                                       hashAlgorithm = value; 
-                                       signerInfo.HashName = value;
-                               }
-                       }
-
-                       public SignerInfo SignerInfo {
-                               get { return signerInfo; }
-                       }
-
-                       public byte Version {
-                               get { return version; }
-                               set { version = value; }
-                       }
-
-                       public bool UseAuthenticatedAttributes {
-                               get { return mda; }
-                               set { mda = value; }
-                       }
-
-                       public bool VerifySignature (AsymmetricAlgorithm aa)
-                       {
-                               if (aa == null) {
-                                       return false;
-                               }
-
-                               RSAPKCS1SignatureDeformatter r = new RSAPKCS1SignatureDeformatter (aa);
-                               r.SetHashAlgorithm (hashAlgorithm);
-                               HashAlgorithm ha = HashAlgorithm.Create (hashAlgorithm);
-
-                               byte[] signature = signerInfo.Signature;
-                               byte[] hash = null;
-
-                               if (mda) {
-                                       ASN1 asn = new ASN1 (0x31);
-                                       foreach (ASN1 attr in signerInfo.AuthenticatedAttributes)
-                                               asn.Add (attr);
-
-                                       hash = ha.ComputeHash (asn.GetBytes ());
-                               } else {
-                                       hash = ha.ComputeHash (contentInfo.Content[0].Value);
-                               }
-
-                               if (hash != null && signature != null) {
-                                       return r.VerifySignature (hash, signature);
-                               }
-                               return false;
-                       }
-
-                       internal string OidToName (string oid)
-                       {
-                               switch (oid) {
-                               case "1.3.14.3.2.26" :
-                                       return "SHA1";
-                               case "1.2.840.113549.2.2" :
-                                       return "MD2";
-                               case "1.2.840.113549.2.5" :
-                                       return "MD5";
-                               case "2.16.840.1.101.3.4.1" :
-                                       return "SHA256";
-                               case "2.16.840.1.101.3.4.2" :
-                                       return "SHA384";
-                               case "2.16.840.1.101.3.4.3" :
-                                       return "SHA512";
-                               default :
-                                       break;
-                               }
-                               // Unknown Oid
-                               return oid;
-                       }
-
-                       internal ASN1 GetASN1 () 
-                       {
-                               // SignedData ::= SEQUENCE {
-                               ASN1 signedData = new ASN1 (0x30);
-                               // version Version -> Version ::= INTEGER
-                               byte[] ver = { version };
-                               signedData.Add (new ASN1 (0x02, ver));
-                               // digestAlgorithms DigestAlgorithmIdentifiers -> DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier
-                               ASN1 digestAlgorithms = signedData.Add (new ASN1 (0x31));
-                               if (hashAlgorithm != null) {
-                                       string hashOid = CryptoConfig.MapNameToOID (hashAlgorithm);
-                                       digestAlgorithms.Add (AlgorithmIdentifier (hashOid));
-                               }
-
-                               // contentInfo ContentInfo,
-                               ASN1 ci = contentInfo.ASN1;
-                               signedData.Add (ci);
-                               if (!signed && (hashAlgorithm != null)) {
-                                       if (mda) {
-                                               // Use authenticated attributes for signature
-                                               
-                                               // Automatically add the contentType authenticated attribute
-                                               ASN1 ctattr = Attribute (Oid.contentType, ci[0]);
-                                               signerInfo.AuthenticatedAttributes.Add (ctattr);
-                                               
-                                               // Automatically add the messageDigest authenticated attribute
-                                               HashAlgorithm ha = HashAlgorithm.Create (hashAlgorithm);
-                                               byte[] idcHash = ha.ComputeHash (ci[1][0].Value);
-                                               ASN1 md = new ASN1 (0x30);
-                                               ASN1 mdattr = Attribute (Oid.messageDigest, md.Add (new ASN1 (0x04, idcHash)));
-                                               signerInfo.AuthenticatedAttributes.Add (mdattr);
-                                       } else {
-                                               // Don't use authenticated attributes for signature -- signature is content
-                                               RSAPKCS1SignatureFormatter r = new RSAPKCS1SignatureFormatter (signerInfo.Key);
-                                               r.SetHashAlgorithm (hashAlgorithm);
-                                               HashAlgorithm ha = HashAlgorithm.Create (hashAlgorithm);
-                                               byte[] sig = ha.ComputeHash (ci[1][0].Value);
-                                               signerInfo.Signature = r.CreateSignature (sig);
-                                       }
-                                       signed = true;
-                               }
-
-                               // certificates [0] IMPLICIT ExtendedCertificatesAndCertificates OPTIONAL,
-                               if (certs.Count > 0) {
-                                       ASN1 a0 = signedData.Add (new ASN1 (0xA0));
-                                       foreach (X509Certificate x in certs)
-                                               a0.Add (new ASN1 (x.RawData));
-                               }
-                               // crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
-                               if (crls.Count > 0) {
-                                       ASN1 a1 = signedData.Add (new ASN1 (0xA1));
-                                       foreach (byte[] crl in crls)
-                                               a1.Add (new ASN1 (crl));
-                               }
-                               // signerInfos SignerInfos -> SignerInfos ::= SET OF SignerInfo
-                               ASN1 signerInfos = signedData.Add (new ASN1 (0x31));
-                               if (signerInfo.Key != null)
-                                       signerInfos.Add (signerInfo.ASN1);
-                               return signedData;
-                       }
-
-                       public byte[] GetBytes () 
-                       {
-                               return GetASN1 ().GetBytes ();
-                       }
-               }
-
-               /*
-                * SignerInfo ::= SEQUENCE {
-                *      version Version,
-                *      issuerAndSerialNumber IssuerAndSerialNumber,
-                *      digestAlgorithm DigestAlgorithmIdentifier,
-                *      authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,
-                *      digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
-                *      encryptedDigest EncryptedDigest,
-                *      unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL 
-                * }
-                * 
-                * For version == 3 issuerAndSerialNumber may be replaced by ...
-                */
-               public class SignerInfo {
-
-                       private byte version;
-                       private X509Certificate x509;
-                       private string hashAlgorithm;
-                       private AsymmetricAlgorithm key;
-                       private ArrayList authenticatedAttributes;
-                       private ArrayList unauthenticatedAttributes;
-                       private byte[] signature;
-                       private string issuer;
-                       private byte[] serial;
-                       private byte[] ski;
-
-                       public SignerInfo () 
-                       {
-                               version = 1;
-                               authenticatedAttributes = new ArrayList ();
-                               unauthenticatedAttributes = new ArrayList ();
-                       }
-
-                       public SignerInfo (byte[] data) 
-                               : this (new ASN1 (data)) {}
-
-                       // TODO: INCOMPLETE
-                       public SignerInfo (ASN1 asn1) : this () 
-                       {
-                               if ((asn1[0].Tag != 0x30) || (asn1[0].Count < 5))
-                                       throw new ArgumentException ("Invalid SignedData");
-
-                               // version Version
-                               if (asn1[0][0].Tag != 0x02)
-                                       throw new ArgumentException ("Invalid version");
-                               version = asn1[0][0].Value[0];
-
-                               // issuerAndSerialNumber IssuerAndSerialNumber
-                               ASN1 subjectIdentifierType = asn1 [0][1];
-                               if ((subjectIdentifierType.Tag == 0x80) && (version == 3)) {
-                                       ski = subjectIdentifierType.Value;
-                               }
-                               else {
-                                       issuer = X501.ToString (subjectIdentifierType [0]);
-                                       serial = subjectIdentifierType [1].Value;
-                               }
-
-                               // digestAlgorithm DigestAlgorithmIdentifier
-                               ASN1 digestAlgorithm = asn1 [0][2];
-                               hashAlgorithm = ASN1Convert.ToOid (digestAlgorithm [0]);
-
-                               // authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL
-                               int n = 3;
-                               ASN1 authAttributes = asn1 [0][n];
-                               if (authAttributes.Tag == 0xA0) {
-                                       n++;
-                                       for (int i=0; i < authAttributes.Count; i++)
-                                               authenticatedAttributes.Add (authAttributes [i]);
-                               }
-
-                               // digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier
-                               n++;
-                               // ASN1 digestEncryptionAlgorithm = asn1 [0][n++];
-                               // string digestEncryptionAlgorithmOid = ASN1Convert.ToOid (digestEncryptionAlgorithm [0]);
-
-                               // encryptedDigest EncryptedDigest
-                               ASN1 encryptedDigest = asn1 [0][n++];
-                               if (encryptedDigest.Tag == 0x04)
-                                       signature = encryptedDigest.Value;
-
-                               // unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL
-                               ASN1 unauthAttributes = asn1 [0][n];
-                               if ((unauthAttributes != null) && (unauthAttributes.Tag == 0xA1)) {
-                                       for (int i=0; i < unauthAttributes.Count; i++)
-                                               unauthenticatedAttributes.Add (unauthAttributes [i]);
-                               }
-                       }
-
-                       public string IssuerName {
-                               get { return issuer; }
-                       }
-
-                       public byte[] SerialNumber {
-                               get { 
-                                       if (serial == null)
-                                               return null;
-                                       return (byte[]) serial.Clone (); 
-                               }
-                       }
-
-                       public byte[] SubjectKeyIdentifier {
-                               get { 
-                                       if (ski == null)
-                                               return null;
-                                       return (byte[]) ski.Clone (); 
-                               }
-                       }
-
-                       public ASN1 ASN1 {
-                               get { return GetASN1(); }
-                       }
-
-                       public ArrayList AuthenticatedAttributes {
-                               get { return authenticatedAttributes; }
-                       }
-
-                       public X509Certificate Certificate {
-                               get { return x509; }
-                               set { x509 = value; }
-                       }
-
-                       public string HashName {
-                               get { return hashAlgorithm; }
-                               set { hashAlgorithm = value; }
-                       }
-
-                       public AsymmetricAlgorithm Key {
-                               get { return key; }
-                               set { key = value; }
-                       }
-
-                       public byte[] Signature {
-                               get { 
-                                       if (signature == null)
-                                               return null;
-                                       return (byte[]) signature.Clone (); 
-                               }
-
-                               set {
-                                       if (value != null) {
-                                               signature = (byte[]) value.Clone ();
-                                       }
-                               }
-                       }
-
-                       public ArrayList UnauthenticatedAttributes {
-                               get { return unauthenticatedAttributes; }
-                       }
-
-                       public byte Version {
-                               get { return version; }
-                               set { version = value; }
-                       }
-
-                       internal ASN1 GetASN1 () 
-                       {
-                               if ((key == null) || (hashAlgorithm == null))
-                                       return null;
-                               byte[] ver = { version };
-                               ASN1 signerInfo = new ASN1 (0x30);
-                               // version Version -> Version ::= INTEGER
-                               signerInfo.Add (new ASN1 (0x02, ver));
-                               // issuerAndSerialNumber IssuerAndSerialNumber,
-                               signerInfo.Add (PKCS7.IssuerAndSerialNumber (x509));
-                               // digestAlgorithm DigestAlgorithmIdentifier,
-                               string hashOid = CryptoConfig.MapNameToOID (hashAlgorithm);
-                               signerInfo.Add (AlgorithmIdentifier (hashOid));
-                               // authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,
-                               ASN1 aa = null;
-                               if (authenticatedAttributes.Count > 0) {
-                                       aa = signerInfo.Add (new ASN1 (0xA0));
-                                       foreach (ASN1 attr in authenticatedAttributes)
-                                               aa.Add (attr);
-                               }
-                               // digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
-                               if (key is RSA) {
-                                       signerInfo.Add (AlgorithmIdentifier (PKCS7.Oid.rsaEncryption));
-
-                                       if (aa != null) {
-                                               // Calculate the signature here; otherwise it must be set from SignedData
-                                               RSAPKCS1SignatureFormatter r = new RSAPKCS1SignatureFormatter (key);
-                                               r.SetHashAlgorithm (hashAlgorithm);
-                                               byte[] tbs = aa.GetBytes ();
-                                               tbs [0] = 0x31; // not 0xA0 for signature
-                                               HashAlgorithm ha = HashAlgorithm.Create (hashAlgorithm);
-                                               byte[] tbsHash = ha.ComputeHash (tbs);
-                                               signature = r.CreateSignature (tbsHash);
-                                       }
-                               }
-                               else if (key is DSA) {
-                                       throw new NotImplementedException ("not yet");
-                               }
-                               else
-                                       throw new CryptographicException ("Unknown assymetric algorithm");
-                               // encryptedDigest EncryptedDigest,
-                               signerInfo.Add (new ASN1 (0x04, signature));
-                               // unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL 
-                               if (unauthenticatedAttributes.Count > 0) {
-                                       ASN1 ua = signerInfo.Add (new ASN1 (0xA1));
-                                       foreach (ASN1 attr in unauthenticatedAttributes)
-                                               ua.Add (attr);
-                               }
-                               return signerInfo;
-                       }
-
-                       public byte[] GetBytes () 
-                       {
-                               return GetASN1 ().GetBytes ();
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security/StrongName.cs b/mcs/class/corlib/Mono.Security/StrongName.cs
deleted file mode 100644 (file)
index 4c6aaee..0000000
+++ /dev/null
@@ -1,546 +0,0 @@
-//
-// StrongName.cs - Strong Name Implementation
-//
-// Author:
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// (C) 2004 Novell (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Configuration.Assemblies;
-using System.Globalization;
-using System.IO;
-using System.Reflection;
-using System.Security.Cryptography;
-
-using Mono.Security.Cryptography;
-
-namespace Mono.Security {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       sealed class StrongName {
-
-               internal class StrongNameSignature {
-                       private byte[] hash;
-                       private byte[] signature;
-                       private UInt32 signaturePosition;
-                       private UInt32 signatureLength;
-                       private UInt32 metadataPosition;
-                       private UInt32 metadataLength;
-                       private byte cliFlag;
-                       private UInt32 cliFlagPosition;
-
-                       public byte[] Hash {
-                               get { return hash; }
-                               set { hash = value; }
-                       }
-
-                       public byte[] Signature {
-                               get { return signature; }
-                               set { signature = value; }
-                       }
-
-                       public UInt32 MetadataPosition {
-                               get { return metadataPosition; }
-                               set { metadataPosition = value; }
-                       }
-
-                       public UInt32 MetadataLength {
-                               get { return metadataLength; }
-                               set { metadataLength = value; }
-                       }
-
-                       public UInt32 SignaturePosition {
-                               get { return signaturePosition; }
-                               set { signaturePosition = value; }
-                       }
-
-                       public UInt32 SignatureLength {
-                               get { return signatureLength; }
-                               set { signatureLength = value; }
-                       }
-
-                       // delay signed -> flag = 0x01
-                       // strongsigned -> flag = 0x09
-                       public byte CliFlag {
-                               get { return cliFlag; }
-                               set { cliFlag = value; }
-                       }
-
-                       public UInt32 CliFlagPosition {
-                               get { return cliFlagPosition; }
-                               set { cliFlagPosition = value; }
-                       }
-               }
-
-               internal enum StrongNameOptions {
-                       Metadata,
-                       Signature
-               }
-
-               private RSA rsa;
-               private byte[] publicKey;
-               private byte[] keyToken;
-               private string tokenAlgorithm;
-
-               public StrongName ()
-               {
-               }
-
-               public StrongName (int keySize)
-               {
-                       rsa = new RSAManaged (keySize);
-               }
-
-               public StrongName (byte[] data)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-
-                       // check for ECMA key
-                       if (data.Length == 16) {
-                               int i = 0;
-                               int sum = 0;
-                               while (i < data.Length)
-                                       sum += data [i++];
-                               if (sum == 4) {
-                                       // it is the ECMA key
-                                       publicKey = (byte[]) data.Clone ();
-                               }
-                       }
-                       else {
-                               RSA = CryptoConvert.FromCapiKeyBlob (data);
-                               if (rsa == null)
-                                       throw new ArgumentException ("data isn't a correctly encoded RSA public key");
-                       }
-               }
-
-               public StrongName (RSA rsa)
-               {
-                       if (rsa == null)
-                               throw new ArgumentNullException ("rsa");
-
-                       RSA = rsa;
-               }
-
-               private void InvalidateCache () 
-               {
-                       publicKey = null;
-                       keyToken = null;
-               }
-
-               public bool CanSign {
-                       get {
-                               if (rsa == null)
-                                       return false;
-#if INSIDE_CORLIB
-                               // the easy way
-                               if (RSA is RSACryptoServiceProvider) {
-                                       // available as internal for corlib
-                                       return !(rsa as RSACryptoServiceProvider).PublicOnly;
-                               }
-                               else 
-#endif
-                               if (RSA is RSAManaged) {
-                                       return !(rsa as RSAManaged).PublicOnly;
-                               }
-                               else {
-                                       // the hard way
-                                       try {
-                                               RSAParameters p = rsa.ExportParameters (true);
-                                               return ((p.D != null) && (p.P != null) && (p.Q != null));
-                                       }
-                                       catch (CryptographicException) {
-                                               return false;
-                                       }
-                               }
-                       }
-               }
-
-               public RSA RSA {
-                       get {
-                               // if none then we create a new keypair
-                               if (rsa == null)
-                                       rsa = (RSA) RSA.Create ();
-                               return rsa; 
-                       }
-                       set { 
-                               rsa = value;
-                               InvalidateCache ();
-                       }
-               }
-
-               public byte[] PublicKey {
-                       get { 
-                               if (publicKey == null) {
-                                       byte[] keyPair = CryptoConvert.ToCapiKeyBlob (rsa, false);
-                                       // since 2.0 public keys can vary from 384 to 16384 bits
-                                       publicKey = new byte [32 + (rsa.KeySize >> 3)];
-
-                                       // The first 12 bytes are documented at:
-                                       // http://msdn.microsoft.com/library/en-us/cprefadd/html/grfungethashfromfile.asp
-                                       // ALG_ID - Signature
-                                       publicKey [0] = keyPair [4];
-                                       publicKey [1] = keyPair [5];    
-                                       publicKey [2] = keyPair [6];    
-                                       publicKey [3] = keyPair [7];    
-                                       // ALG_ID - Hash (SHA1 == 0x8004)
-                                       publicKey [4] = 0x04;
-                                       publicKey [5] = 0x80;
-                                       publicKey [6] = 0x00;
-                                       publicKey [7] = 0x00;
-                                       // Length of Public Key (in bytes)
-                                       byte[] lastPart = BitConverterLE.GetBytes (publicKey.Length - 12);
-                                       publicKey [8] = lastPart [0];
-                                       publicKey [9] = lastPart [1];
-                                       publicKey [10] = lastPart [2];
-                                       publicKey [11] = lastPart [3];
-                                       // Ok from here - Same structure as keypair - expect for public key
-                                       publicKey [12] = 0x06;          // PUBLICKEYBLOB
-                                       // we can copy this part
-                                       Buffer.BlockCopy (keyPair, 1, publicKey, 13, publicKey.Length - 13);
-                                       // and make a small adjustment 
-                                       publicKey [23] = 0x31;          // (RSA1 not RSA2)
-                               }
-                               return (byte[]) publicKey.Clone ();
-                       }
-               }
-
-               public byte[] PublicKeyToken {
-                       get {
-                               if (keyToken == null) {
-                                       byte[] publicKey = PublicKey;
-                                       if (publicKey == null)
-                                               return null;
-                                       HashAlgorithm ha = HashAlgorithm.Create (TokenAlgorithm);
-                                       byte[] hash = ha.ComputeHash (publicKey);
-                                       // we need the last 8 bytes in reverse order
-                                       keyToken = new byte [8];
-                                       Buffer.BlockCopy (hash, (hash.Length - 8), keyToken, 0, 8);
-                                       Array.Reverse (keyToken, 0, 8);
-                               }
-                               return (byte[]) keyToken.Clone ();
-                       }
-               }
-
-               public string TokenAlgorithm {
-                       get { 
-                               if (tokenAlgorithm == null)
-                                       tokenAlgorithm = "SHA1";
-                               return tokenAlgorithm; 
-                       }
-                       set {
-                               string algo = value.ToUpper (CultureInfo.InvariantCulture);
-                               if ((algo == "SHA1") || (algo == "MD5")) {
-                                       tokenAlgorithm = value;
-                                       InvalidateCache ();
-                               }
-                               else
-                                       throw new ArgumentException ("Unsupported hash algorithm for token");
-                       }
-               }
-
-               public byte[] GetBytes () 
-               {
-                       return CryptoConvert.ToCapiPrivateKeyBlob (RSA);
-               }
-
-               private UInt32 RVAtoPosition (UInt32 r, int sections, byte[] headers) 
-               {
-                       for (int i=0; i < sections; i++) {
-                               UInt32 p = BitConverterLE.ToUInt32 (headers, i * 40 + 20);
-                               UInt32 s = BitConverterLE.ToUInt32 (headers, i * 40 + 12);
-                               int l = (int) BitConverterLE.ToUInt32 (headers, i * 40 + 8);
-                               if ((s <= r) && (r < s + l)) {
-                                       return p + r - s;
-                               }
-                       }
-                       return 0;
-               }
-
-               internal StrongNameSignature StrongHash (Stream stream, StrongNameOptions options)
-               {
-                       StrongNameSignature info = new StrongNameSignature ();
-
-                       HashAlgorithm hash = HashAlgorithm.Create (TokenAlgorithm);
-                       CryptoStream cs = new CryptoStream (Stream.Null, hash, CryptoStreamMode.Write);
-
-                       // MS-DOS Header - always 128 bytes
-                       // ref: Section 24.2.1, Partition II Metadata
-                       byte[] mz = new byte [128];
-                       stream.Read (mz, 0, 128);
-                       if (BitConverterLE.ToUInt16 (mz, 0) != 0x5a4d)
-                               return null;
-                       UInt32 peHeader = BitConverterLE.ToUInt32 (mz, 60);
-                       cs.Write (mz, 0, 128);
-                       if (peHeader != 128) {
-                               byte[] mzextra = new byte [peHeader - 128];
-                               stream.Read (mzextra, 0, mzextra.Length);
-                               cs.Write (mzextra, 0, mzextra.Length);
-                       }
-
-                       // PE File Header - always 248 bytes
-                       // ref: Section 24.2.2, Partition II Metadata
-                       byte[] pe = new byte [248];
-                       stream.Read (pe, 0, 248);
-                       if (BitConverterLE.ToUInt32 (pe, 0) != 0x4550)
-                               return null;
-                       if (BitConverterLE.ToUInt16 (pe, 4) != 0x14c)
-                               return null;
-                       // MUST zeroize both CheckSum and Security Directory
-                       byte[] v = new byte [8];
-                       Buffer.BlockCopy (v, 0, pe, 88, 4);
-                       Buffer.BlockCopy (v, 0, pe, 152, 8);
-                       cs.Write (pe, 0, 248);
-
-                       UInt16 numSection = BitConverterLE.ToUInt16 (pe, 6);
-                       int sectionLength = (numSection * 40);
-                       byte[] sectionHeaders = new byte [sectionLength];
-                       stream.Read (sectionHeaders, 0, sectionLength);
-                       cs.Write (sectionHeaders, 0, sectionLength);
-
-                       UInt32 cliHeaderRVA = BitConverterLE.ToUInt32 (pe, 232);
-                       UInt32 cliHeaderPos = RVAtoPosition (cliHeaderRVA, numSection, sectionHeaders);
-                       int cliHeaderSiz = (int) BitConverterLE.ToUInt32 (pe, 236);
-
-                       // CLI Header
-                       // ref: Section 24.3.3, Partition II Metadata
-                       byte[] cli = new byte [cliHeaderSiz];
-                       stream.Position = cliHeaderPos;
-                       stream.Read (cli, 0, cliHeaderSiz);
-
-                       UInt32 strongNameSignatureRVA = BitConverterLE.ToUInt32 (cli, 32);
-                       info.SignaturePosition = RVAtoPosition (strongNameSignatureRVA, numSection, sectionHeaders);
-                       info.SignatureLength = BitConverterLE.ToUInt32 (cli, 36);
-
-                       UInt32 metadataRVA = BitConverterLE.ToUInt32 (cli, 8);
-                       info.MetadataPosition = RVAtoPosition (metadataRVA, numSection, sectionHeaders);
-                       info.MetadataLength = BitConverterLE.ToUInt32 (cli, 12);
-
-                       if (options == StrongNameOptions.Metadata) {
-                               cs.Close ();
-                               hash.Initialize ();
-                               byte[] metadata = new byte [info.MetadataLength];
-                               stream.Position = info.MetadataPosition;
-                               stream.Read (metadata, 0, metadata.Length);
-                               info.Hash = hash.ComputeHash (metadata);
-                               return info;
-                       }
-
-                       // now we hash every section EXCEPT the signature block
-                       for (int i=0; i < numSection; i++) {
-                               UInt32 start = BitConverterLE.ToUInt32 (sectionHeaders, i * 40 + 20);
-                               int length = (int) BitConverterLE.ToUInt32 (sectionHeaders, i * 40 + 16);
-                               byte[] section = new byte [length];
-                               stream.Position = start;
-                               stream.Read (section, 0, length);
-                               if ((start <= info.SignaturePosition) && (info.SignaturePosition < start + length)) {
-                                       // hash before the signature
-                                       int before = (int)(info.SignaturePosition - start);
-                                       if (before > 0) {
-                                               cs.Write (section, 0, before);
-                                       }
-                                       // copy signature
-                                       info.Signature = new byte [info.SignatureLength];
-                                       Buffer.BlockCopy (section, before, info.Signature, 0, (int)info.SignatureLength);
-                                       Array.Reverse (info.Signature);
-                                       // hash after the signature
-                                       int s = (int)(before + info.SignatureLength);
-                                       int after = (int)(length - s);
-                                       if (after > 0) {
-                                               cs.Write (section, s, after);
-                                       }
-                               }
-                               else
-                                       cs.Write (section, 0, length);
-                       }
-
-                       cs.Close ();
-                       info.Hash = hash.Hash;
-                       return info;
-               }
-
-               // return the same result as the undocumented and unmanaged GetHashFromAssemblyFile
-               public byte[] Hash (string fileName) 
-               {
-                       FileStream fs = File.OpenRead (fileName);
-                       StrongNameSignature sn = StrongHash (fs, StrongNameOptions.Metadata);
-                       fs.Close ();
-
-                       return sn.Hash;
-               }
-
-               public bool Sign (string fileName) 
-               {
-                       bool result = false;
-                       StrongNameSignature sn;
-                       using (FileStream fs = File.OpenRead (fileName)) {
-                               sn = StrongHash (fs, StrongNameOptions.Signature);
-                               fs.Close ();
-                       }
-                       if (sn.Hash == null)
-                               return false;
-
-                       byte[] signature = null;
-                       try {
-                               RSAPKCS1SignatureFormatter sign = new RSAPKCS1SignatureFormatter (rsa);
-                               sign.SetHashAlgorithm (TokenAlgorithm);
-                               signature = sign.CreateSignature (sn.Hash);
-                               Array.Reverse (signature);
-                       }
-                       catch (CryptographicException) {
-                               return false;
-                       }
-
-                       using (FileStream fs = File.OpenWrite (fileName)) {
-                               fs.Position = sn.SignaturePosition;
-                               fs.Write (signature, 0, signature.Length);
-                               fs.Close ();
-                               result = true;
-                       }
-                       return result;
-               }
-
-               public bool Verify (string fileName) 
-               {
-                       bool result = false;
-                       using (FileStream fs = File.OpenRead (fileName)) {
-                               result = Verify (fs);
-                               fs.Close ();
-                       }
-                       return result;
-               }
-
-               public bool Verify (Stream stream)
-               {
-                       StrongNameSignature sn = StrongHash (stream, StrongNameOptions.Signature);
-                       if (sn.Hash == null) {
-                               return false;
-                       }
-
-                       try {
-                               AssemblyHashAlgorithm algorithm = AssemblyHashAlgorithm.SHA1;
-                               if (tokenAlgorithm == "MD5")
-                                       algorithm = AssemblyHashAlgorithm.MD5;
-                               return Verify (rsa, algorithm, sn.Hash, sn.Signature);
-                       }
-                       catch (CryptographicException) {
-                               // no exception allowed
-                               return false;
-                       }
-               }
-
-#if INSIDE_CORLIB
-               static object lockObject = new object ();
-               static bool initialized;
-
-               // We don't want a dependency on StrongNameManager in Mono.Security.dll
-               static public bool IsAssemblyStrongnamed (string assemblyName) 
-               {
-                       if (!initialized) {
-                               lock (lockObject) {
-                                       if (!initialized) {
-#if NET_2_1
-                                               // Moonlight cannot depend on machine.config
-#else
-                                               string config = Environment.GetMachineConfigPath ();
-                                               StrongNameManager.LoadConfig (config);
-#endif
-                                               initialized = true;
-                                       }
-                               }
-                       }
-
-                       try {
-                               // this doesn't load the assembly (well it unloads it ;)
-                               // http://weblogs.asp.net/nunitaddin/posts/9991.aspx
-                               AssemblyName an = AssemblyName.GetAssemblyName (assemblyName);
-                               if (an == null)
-                                       return false;
-
-                               byte[] publicKey = StrongNameManager.GetMappedPublicKey (an.GetPublicKeyToken ());
-                               if ((publicKey == null) || (publicKey.Length < 12)) {
-                                       // no mapping
-                                       publicKey = an.GetPublicKey ();
-                                       if ((publicKey == null) || (publicKey.Length < 12))
-                                               return false;
-                               }
-
-                               // Note: MustVerify is based on the original token (by design). Public key
-                               // remapping won't affect if the assembly is verified or not.
-                               if (!StrongNameManager.MustVerify (an)) {
-                                       return true;
-                               }
-
-                               RSA rsa = CryptoConvert.FromCapiPublicKeyBlob (publicKey, 12);
-                               StrongName sn = new StrongName (rsa);
-                               bool result = sn.Verify (assemblyName);
-                               return result;
-                       }
-                       catch {
-                               // no exception allowed
-                               return false;
-                       }
-               }
-
-               // TODO
-               // we would get better performance if the runtime hashed the
-               // assembly - as we wouldn't have to load it from disk a 
-               // second time. The runtime already have implementations of
-               // SHA1 (and even MD5 if required someday).
-               static public bool VerifySignature (byte[] publicKey, int algorithm, byte[] hash, byte[] signature) 
-               {
-                       try {
-                               RSA rsa = CryptoConvert.FromCapiPublicKeyBlob (publicKey);
-                               return Verify (rsa, (AssemblyHashAlgorithm) algorithm, hash, signature);
-                       }
-                       catch {
-                               // no exception allowed
-                               return false;
-                       }
-               }
-#endif
-               static private bool Verify (RSA rsa, AssemblyHashAlgorithm algorithm, byte[] hash, byte[] signature) 
-               {
-                       RSAPKCS1SignatureDeformatter vrfy = new RSAPKCS1SignatureDeformatter (rsa);
-                       switch (algorithm) {
-                       case AssemblyHashAlgorithm.MD5:
-                               vrfy.SetHashAlgorithm ("MD5");
-                               break;
-                       case AssemblyHashAlgorithm.SHA1:
-                       case AssemblyHashAlgorithm.None:
-                       default:
-                               vrfy.SetHashAlgorithm ("SHA1");
-                               break;
-                       }
-                       return vrfy.VerifySignature (hash, signature);
-               }
-       }
-}
index b9d6a3e71e4adf165a435913d9c289cacecc9e70..6a57a75acbacf7d894cf042626ab2f46a1c777ca 100644 (file)
@@ -53,7 +53,8 @@ namespace System.Collections.ObjectModel
                , IReadOnlyList<T>
 #endif
        {
-               IList <T> list;
+               IList <T> items;
+               [field:NonSerializedAttribute()]
                object syncRoot;
                
                public Collection ()
@@ -61,21 +62,21 @@ namespace System.Collections.ObjectModel
                        List <T> l = new List <T> ();
                        IList l2 = l as IList;
                        syncRoot = l2.SyncRoot;
-                       list = l;
+                       items = l;
                }
 
-               public Collection (IList <T> list)
+               public Collection (IList <T> items)
                {
-                       if (list == null)
-                               throw new ArgumentNullException ("list");
-                       this.list = list;
-                       ICollection l = list as ICollection;
+                       if (items == null)
+                               throw new ArgumentNullException ("items");
+                       this.items = items;
+                       ICollection l = items as ICollection;
                        syncRoot = (l != null) ? l.SyncRoot : new object ();
                }
 
                public void Add (T item)
                {
-                       int idx = list.Count;
+                       int idx = items.Count;
                        InsertItem (idx, item);
                }
 
@@ -86,27 +87,27 @@ namespace System.Collections.ObjectModel
 
                protected virtual void ClearItems ()
                {
-                       list.Clear ();
+                       items.Clear ();
                }
 
                public bool Contains (T item)
                {
-                       return list.Contains (item);
+                       return items.Contains (item);
                }
 
                public void CopyTo (T [] array, int index)
                {
-                       list.CopyTo (array, index);
+                       items.CopyTo (array, index);
                }
 
                public IEnumerator <T> GetEnumerator ()
                {
-                       return list.GetEnumerator ();
+                       return items.GetEnumerator ();
                }
 
                public int IndexOf (T item)
                {
-                       return list.IndexOf (item);
+                       return items.IndexOf (item);
                }
 
                public void Insert (int index, T item)
@@ -116,11 +117,11 @@ namespace System.Collections.ObjectModel
 
                protected virtual void InsertItem (int index, T item)
                {
-                       list.Insert (index, item);
+                       items.Insert (index, item);
                }
 
                protected IList<T> Items {
-                       get { return list; }
+                       get { return items; }
                }
 
                public bool Remove (T item)
@@ -141,25 +142,25 @@ namespace System.Collections.ObjectModel
 
                protected virtual void RemoveItem (int index)
                {
-                       list.RemoveAt (index);
+                       items.RemoveAt (index);
                }
 
                public int Count {
-                       get { return list.Count; }
+                       get { return items.Count; }
                }
 
                public T this [int index] {
-                       get { return list [index]; }
+                       get { return items [index]; }
                        set { SetItem (index, value); }
                }
 
                bool ICollection<T>.IsReadOnly {
-                       get { return list.IsReadOnly; }
+                       get { return items.IsReadOnly; }
                }
 
                protected virtual void SetItem (int index, T item)
                {
-                       list[index] = item;
+                       items[index] = item;
                }
 
                
@@ -172,21 +173,21 @@ namespace System.Collections.ObjectModel
                        throw new ArgumentException ("item");
                }
                
-               internal static void CheckWritable (IList <T> list)
+               internal static void CheckWritable (IList <T> items)
                {
-                       if (list.IsReadOnly)
+                       if (items.IsReadOnly)
                                throw new NotSupportedException ();
                }
                
-               internal static bool IsSynchronized (IList <T> list)
+               internal static bool IsSynchronized (IList <T> items)
                {
-                       ICollection c = list as ICollection;
+                       ICollection c = items as ICollection;
                        return (c != null) ? c.IsSynchronized : false;
                }
                
-               internal static bool IsFixedSize (IList <T> list)
+               internal static bool IsFixedSize (IList <T> items)
                {
-                       IList l = list as IList;
+                       IList l = items as IList;
                        return (l != null) ? l.IsFixedSize : false;
                }
 #endregion
@@ -194,17 +195,17 @@ namespace System.Collections.ObjectModel
 #region Not generic interface implementations
                void ICollection.CopyTo (Array array, int index)
                {
-                       ((ICollection)list).CopyTo (array, index);
+                       ((ICollection)items).CopyTo (array, index);
                }
                
                IEnumerator IEnumerable.GetEnumerator ()
                {
-                       return (IEnumerator) list.GetEnumerator ();
+                       return (IEnumerator) items.GetEnumerator ();
                }
                                
                int IList.Add (object value)
                {
-                       int idx = list.Count;
+                       int idx = items.Count;
                        InsertItem (idx, ConvertItem (value));
                        return idx;
                }
@@ -212,14 +213,14 @@ namespace System.Collections.ObjectModel
                bool IList.Contains (object value)
                {
                        if (CollectionHelpers.IsValidItem<T> (value))
-                               return list.Contains ((T) value);
+                               return items.Contains ((T) value);
                        return false;
                }
                
                int IList.IndexOf (object value)
                {
                        if (CollectionHelpers.IsValidItem<T> (value))
-                               return list.IndexOf ((T) value);
+                               return items.IndexOf ((T) value);
                        return -1;
                }
                
@@ -230,7 +231,7 @@ namespace System.Collections.ObjectModel
                
                void IList.Remove (object value)
                {
-                       CheckWritable (list);
+                       CheckWritable (items);
 
                        int idx = IndexOf (ConvertItem (value));
 
@@ -238,22 +239,22 @@ namespace System.Collections.ObjectModel
                }
                
                bool ICollection.IsSynchronized {
-                       get { return IsSynchronized (list); }
+                       get { return IsSynchronized (items); }
                }
                
                object ICollection.SyncRoot {
                        get { return syncRoot; }
                }
                bool IList.IsFixedSize {
-                       get { return IsFixedSize (list); }
+                       get { return IsFixedSize (items); }
                }
                
                bool IList.IsReadOnly {
-                       get { return list.IsReadOnly; }
+                       get { return items.IsReadOnly; }
                }
                
                object IList.this [int index] {
-                       get { return list [index]; }
+                       get { return items [index]; }
                        set { SetItem (index, ConvertItem (value)); }
                }
 #endregion
index 9ae8c5b27a359b8a39cf7d76a699d37f25d43250..9e812f4a47e2d47d7d40c17649dcfe3bbf7b3d8a 100644 (file)
@@ -57,7 +57,7 @@ namespace System.Collections {
                private void Resize(int ncapacity)
                {
                        
-                       ncapacity = Math.Max (ncapacity, 16);
+                       ncapacity = Math.Max (ncapacity, default_capacity);
                        object[] ncontents = new object[ncapacity];
 
                        Array.Copy(contents, ncontents, count);
@@ -72,7 +72,7 @@ namespace System.Collections {
                        capacity = default_capacity;
                }
 
-               public Stack(ICollection col) : this (col == null ? 16 : col.Count) {
+               public Stack(ICollection col) : this (col == null ? default_capacity : col.Count) {
                        if (col == null)
                                throw new ArgumentNullException("col");
                        
index d738574dc41d1319412ed6f43e725b2d5203b11b..9ce2574ebb18bb71eae8d5c98784f15f7d537702 100644 (file)
@@ -45,7 +45,7 @@ namespace System.Collections
 
                        int IEqualityComparer.GetHashCode (object obj)
                        {
-                               var comparer = obj as IEqualityComparer;
+                               var comparer = obj as IStructuralEquatable;
                                if (comparer != null)
                                        return comparer.GetHashCode (this);
 
@@ -54,7 +54,7 @@ namespace System.Collections
 
                        bool IEqualityComparer.Equals (object x, object y)
                        {
-                               var comparer = x as IEqualityComparer;
+                               var comparer = x as IStructuralEquatable;
                                if (comparer != null)
                                        return comparer.Equals (y, this);
 
index 51b2e810087ba9daf2eeb4a673732982827d7f22..a942d65ff981fbb6eb643760fd964a351eba9004 100644 (file)
@@ -1,5 +1,5 @@
 //
-// System.Collections.DebuggableAttribute.cs
+// ConditionalAttribute.cs
 //
 // Author:
 //   Nick Drochak II (ndrochak@gol.com)
index 1c05373daaac4088535018a8030f37bf1f279bf9..a12203b1fc11d76df250132863ff6038b9f4688f 100644 (file)
@@ -1,5 +1,5 @@
 //
-// System.Collections.DebuggableAttribute.cs
+// DebuggableAttribute.cs
 //
 // Author:
 //   Nick Drochak II (ndrochak@gol.com)
index 1e0cc11cb763863a39a562435ca2dc31299ac4fe..8b740044e34df7f9a1c29cf1b997c5a5113abc92 100644 (file)
@@ -279,8 +279,15 @@ namespace System.Globalization
                                if (parent_culture == null) {
                                        if (!constructed)
                                                Construct ();
-                                       if (parent_lcid == cultureID)
+                                       if (parent_lcid == cultureID) {
+                                               //
+                                               // Parent lcid is same but culture info is not for legacy zh culture
+                                               //
+                                               if (parent_lcid == 0x7C04 && EnglishName.EndsWith (" Legacy", StringComparison.Ordinal))
+                                                       return parent_culture = new CultureInfo ("zh-Hant");
+
                                                return null;
+                                       }
                                        
                                        if (parent_lcid == InvariantCultureId)
                                                parent_culture = InvariantCulture;
index 89fefa3c6f03dade0034704a667f97989c7e42fb..65e103b4f7ec9e774b1f5c529160d5c444acf776 100644 (file)
@@ -5,7 +5,7 @@
 // Authors:
 //     Sebastien Pouliot  <sebastien@xamarin.com>
 //
-// Copyright 2012 Xamarin Inc.
+// Copyright 2012-2013 Xamarin Inc.
 //
 // The class can be either constructed from a string (from user code)
 // or from a handle (from iphone-sharp.dll internal calls).  This
 #if MONOTOUCH
 
 using System;
-using System.Reflection;
+using System.Runtime.InteropServices;
 
 namespace System.Globalization {
 
        public partial class RegionInfo {
-               
-               static Type nslocale;
-               
-               static Type NSLocale {
-                       get {
-                               if (nslocale == null)
-                                       nslocale = Type.GetType ("MonoTouch.Foundation.NSLocale, monotouch, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
-                               return nslocale;
-                       }
-               }
-               
+
+               [DllImport ("__Internal")]
+               extern static string monotouch_get_locale_country_code ();
+
                static RegionInfo CreateFromNSLocale ()
                {
-                       try {
-                               var cl = NSLocale.GetProperty ("CurrentLocale", BindingFlags.Static | BindingFlags.Public).GetGetMethod ();
-                               var cc = NSLocale.GetProperty ("CountryCode", BindingFlags.Instance | BindingFlags.Public).GetGetMethod ();
-                               
-                               object current = cl.Invoke (null, null);
-                               return new RegionInfo ((string) cc.Invoke (current, null));
-                       }
-                       catch (TargetInvocationException tie) {
-                               throw tie.InnerException;
-                       }
+                       return new RegionInfo (monotouch_get_locale_country_code ());
                }
        }
 }
index 99586d35531707c29054613cbd5c56d3c89b1809..6066c031cba72eb04542b7c30d45fd55193eb802 100644 (file)
@@ -537,7 +537,6 @@ namespace System.IO
                        IntPtr handle;
                        MonoIOError error;
                        FileAttributes rattr;
-                       
                        string s = MonoIO.FindFirst (path, path_with_pattern, out rattr, out error, out handle);
                        try {
                                while (s != null) {
@@ -545,7 +544,7 @@ namespace System.IO
                                        if (((rattr & FileAttributes.Directory) == 0) && rattr != 0)
                                                rattr |= FileAttributes.Normal;
 
-                                       if ((rattr & FileAttributes.ReparsePoint) == 0 && (rattr & kind) != 0)
+                                       if ((rattr & kind) != 0)
                                                yield return s;
 
                                        s = MonoIO.FindNext (handle, out rattr, out error);
@@ -563,7 +562,7 @@ namespace System.IO
 
                                try {
                                        while (s != null) {
-                                               if ((rattr & FileAttributes.Directory) != 0)
+                                               if ((rattr & FileAttributes.Directory) != 0 && (rattr & FileAttributes.ReparsePoint) == 0)
                                                        foreach (string child in EnumerateKind (s, searchPattern, searchOption, kind))
                                                                yield return child;
                                                s = MonoIO.FindNext (handle, out rattr, out error);
index 0b76fbb629981b75e8bb6a491242ddf54ed251e9..62be3c834f4b45562475d9c863997efec66fbf76 100644 (file)
@@ -404,13 +404,6 @@ namespace System.IO
                                return(buf_start + buf_offset);
                        }
                        set {
-                               if (handle == MonoIO.InvalidHandle)
-                                       throw new ObjectDisposedException ("Stream has been closed");
-
-                               if(CanSeek == false) {
-                                       throw new NotSupportedException("The stream does not support seeking");
-                               }
-
                                if(value < 0) {
                                        throw new ArgumentOutOfRangeException("Attempt to set the position to a negative value");
                                }
@@ -706,11 +699,14 @@ namespace System.IO
                                MemoryStream ms = new MemoryStream ();
                                FlushBuffer (ms);
                                ms.Write (array, offset, numBytes);
+
+                               // Set arguments to new compounded buffer 
                                offset = 0;
-                               numBytes = (int) ms.Length;
+                               array = ms.ToArray ();
+                               numBytes = array.Length;
                        }
 
-                       WriteDelegate w = new WriteDelegate (WriteInternal);
+                       WriteDelegate w = WriteInternal;
                        return w.BeginInvoke (array, offset, numBytes, userCallback, stateObject);                      
                }
                
index 22de37d7cf1acc9a2aee5624573bba4e69c2067a..3eeb79195bd09c68918b50cc03fa43f08ffffbda 100644 (file)
@@ -289,6 +289,30 @@ namespace System.IO {
                        return fullpath;
                }
 
+               [DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
+               // http://msdn.microsoft.com/en-us/library/windows/desktop/aa364963%28v=vs.85%29.aspx
+               // http://www.codeproject.com/Tips/223321/Win32-API-GetFullPathName
+               private static extern int GetFullPathName(string path, int numBufferChars, StringBuilder buffer, ref IntPtr lpFilePartOrNull); 
+
+               internal static string GetFullPathName(string path)
+               {
+                       const int MAX_PATH = 260;
+                       StringBuilder buffer = new StringBuilder(MAX_PATH);
+                       IntPtr ptr = IntPtr.Zero;
+                       int length = GetFullPathName(path, MAX_PATH, buffer, ref ptr);
+                       if (length == 0)
+                       {
+                               int error = Marshal.GetLastWin32Error();
+                               throw new IOException("Windows API call to GetFullPathName failed, Windows error code: " + error);
+                       }
+                       else if (length > MAX_PATH)
+                       {
+                               buffer = new StringBuilder(length);
+                               GetFullPathName(path, length, buffer, ref ptr);
+                       }
+                       return buffer.ToString();
+               }
+
                internal static string WindowsDriveAdjustment (string path)
                {
                        // two special cases to consider when a drive is specified
@@ -304,7 +328,7 @@ namespace System.IO {
                                if (current [0] == path [0])
                                        path = current; // we return it
                                else
-                                       path += '\\';
+                                       path = GetFullPathName(path); // we have to use the GetFullPathName Windows API
                        } else if ((path [2] != Path.DirectorySeparatorChar) && (path [2] != Path.AltDirectorySeparatorChar)) {
                                // second, the drive + a directory is specified *without* a separator between them (e.g. C:dir).
                                // If the current directory is on the specified drive...
@@ -312,8 +336,8 @@ namespace System.IO {
                                        // then specified directory is appended to the current drive directory
                                        path = Path.Combine (current, path.Substring (2, path.Length - 2));
                                } else {
-                                       // if not, then just pretend there was a separator (Path.Combine won't work in this case)
-                                       path = String.Concat (path.Substring (0, 2), DirectorySeparatorStr, path.Substring (2, path.Length - 2));
+                                       // we have to use the GetFullPathName Windows API
+                                       path = GetFullPathName(path);
                                }
                        }
                        return path;
@@ -462,6 +486,10 @@ namespace System.IO {
                                        if (ex.hresult != MonoIO.FileAlreadyExistsHResult || count ++ > 65536)
                                                throw;
                                }
+                               catch (UnauthorizedAccessException ex) {
+                                       if (count ++ > 65536)
+                                               throw new IOException (ex.Message, ex);
+                               }
                        } while (f == null);
                        
                        f.Close();
index 44dfb411296ea74c8fdc6fb06516e2e5ce95661f..fe3a606261730cd522bea0648a95c3deb600117e 100644 (file)
@@ -234,6 +234,45 @@ namespace System.IO {
                        }\r
                }\r
 \r
+               void LowLevelWrite (char[] buffer, int index, int count)\r
+               {\r
+                       while (count > 0) {\r
+                               int todo = decode_buf.Length - decode_pos;\r
+                               if (todo == 0) {\r
+                                       Decode ();\r
+                                       todo = decode_buf.Length;\r
+                               }\r
+                               if (todo > count)\r
+                                       todo = count;\r
+                               Buffer.BlockCopy (buffer, index * 2, decode_buf, decode_pos * 2, todo * 2);\r
+                               count -= todo;\r
+                               index += todo;\r
+                               decode_pos += todo;\r
+                       }\r
+               }\r
+               \r
+               void LowLevelWrite (string s)\r
+               {\r
+                       int count = s.Length;\r
+                       int index = 0;\r
+                       while (count > 0) {\r
+                               int todo = decode_buf.Length - decode_pos;\r
+                               if (todo == 0) {\r
+                                       Decode ();\r
+                                       todo = decode_buf.Length;\r
+                               }\r
+                               if (todo > count)\r
+                                       todo = count;\r
+                               \r
+                               for (int i = 0; i < todo; i ++)\r
+                                       decode_buf [i + decode_pos] = s [i + index];\r
+                               \r
+                               count -= todo;\r
+                               index += todo;\r
+                               decode_pos += todo;\r
+                       }\r
+               }               \r
+\r
 #if NET_4_5\r
                async Task FlushCoreAsync ()\r
                {\r
@@ -268,33 +307,13 @@ namespace System.IO {
                                decode_pos = 0;\r
                        }\r
                }               \r
-#endif\r
 \r
-               public override void Write (char[] buffer, int index, int count) \r
-               {\r
-                       if (buffer == null)\r
-                               throw new ArgumentNullException ("buffer");\r
-                       if (index < 0)\r
-                               throw new ArgumentOutOfRangeException ("index", "< 0");\r
-                       if (count < 0)\r
-                               throw new ArgumentOutOfRangeException ("count", "< 0");\r
-                       // re-ordered to avoid possible integer overflow\r
-                       if (index > buffer.Length - count)\r
-                               throw new ArgumentException ("index + count > buffer.Length");\r
-\r
-                       CheckState ();\r
-\r
-                       LowLevelWrite (buffer, index, count);\r
-                       if (iflush)\r
-                               FlushCore ();\r
-               }\r
-               \r
-               void LowLevelWrite (char[] buffer, int index, int count)\r
+               async Task LowLevelWriteAsync (char[] buffer, int index, int count)\r
                {\r
                        while (count > 0) {\r
                                int todo = decode_buf.Length - decode_pos;\r
                                if (todo == 0) {\r
-                                       Decode ();\r
+                                       await DecodeAsync ().ConfigureAwait (false);\r
                                        todo = decode_buf.Length;\r
                                }\r
                                if (todo > count)\r
@@ -306,14 +325,14 @@ namespace System.IO {
                        }\r
                }\r
                \r
-               void LowLevelWrite (string s)\r
+               async Task LowLevelWriteAsync (string s)\r
                {\r
                        int count = s.Length;\r
                        int index = 0;\r
                        while (count > 0) {\r
                                int todo = decode_buf.Length - decode_pos;\r
                                if (todo == 0) {\r
-                                       Decode ();\r
+                                       await DecodeAsync ().ConfigureAwait (false);\r
                                        todo = decode_buf.Length;\r
                                }\r
                                if (todo > count)\r
@@ -326,8 +345,28 @@ namespace System.IO {
                                index += todo;\r
                                decode_pos += todo;\r
                        }\r
-               }\r
+               }       \r
+#endif\r
+\r
+               public override void Write (char[] buffer, int index, int count) \r
+               {\r
+                       if (buffer == null)\r
+                               throw new ArgumentNullException ("buffer");\r
+                       if (index < 0)\r
+                               throw new ArgumentOutOfRangeException ("index", "< 0");\r
+                       if (count < 0)\r
+                               throw new ArgumentOutOfRangeException ("count", "< 0");\r
+                       // re-ordered to avoid possible integer overflow\r
+                       if (index > buffer.Length - count)\r
+                               throw new ArgumentException ("index + count > buffer.Length");\r
 \r
+                       CheckState ();\r
+\r
+                       LowLevelWrite (buffer, index, count);\r
+                       if (iflush)\r
+                               FlushCore ();\r
+               }\r
+               \r
                public override void Write (char value)\r
                {\r
                        CheckState ();\r
@@ -355,8 +394,10 @@ namespace System.IO {
                {\r
                        CheckState ();\r
 \r
-                       if (value != null)\r
-                               LowLevelWrite (value);\r
+                       if (value == null)\r
+                               return;\r
+                       \r
+                       LowLevelWrite (value);\r
                        \r
                        if (iflush)\r
                                FlushCore ();\r
@@ -423,7 +464,7 @@ namespace System.IO {
                {\r
                        // Debug.Assert (buffer == null);\r
 \r
-                       LowLevelWrite (buffer, 0, buffer.Length);\r
+                       await LowLevelWriteAsync (buffer, index, count).ConfigureAwait (false);\r
 \r
                        if (iflush)\r
                                await FlushCoreAsync ().ConfigureAwait (false);\r
@@ -432,16 +473,33 @@ namespace System.IO {
                public override Task WriteAsync (string value)\r
                {\r
                        CheckState ();\r
+\r
+                       if (value == null)\r
+                               return TaskConstants.Finished;\r
+\r
                        DecoupledTask res;                      \r
-                       async_task = res = new DecoupledTask(base.WriteAsync (value));\r
+                       async_task = res = new DecoupledTask (WriteAsyncCore (value, false));\r
                        return res.Task;\r
                }\r
 \r
+               async Task WriteAsyncCore (string value, bool appendNewLine)\r
+               {\r
+                       // Debug.Assert (value == null);\r
+\r
+                       await LowLevelWriteAsync (value).ConfigureAwait (false);\r
+                       if (appendNewLine)\r
+                               await LowLevelWriteAsync (CoreNewLine, 0, CoreNewLine.Length).ConfigureAwait (false);\r
+                       \r
+                       if (iflush)\r
+                               await FlushCoreAsync ().ConfigureAwait (false);\r
+               }               \r
+\r
                public override Task WriteLineAsync ()\r
                {\r
                        CheckState ();\r
-                       DecoupledTask res;                      \r
-                       async_task = res = new DecoupledTask (base.WriteLineAsync ());\r
+\r
+                       DecoupledTask res;\r
+                       async_task = res = new DecoupledTask (WriteAsyncCore (CoreNewLine, 0, CoreNewLine.Length));\r
                        return res.Task;\r
                }\r
 \r
@@ -449,23 +507,56 @@ namespace System.IO {
                {\r
                        CheckState ();\r
                        DecoupledTask res;\r
-                       async_task = res = new DecoupledTask (base.WriteLineAsync (value));\r
+                       async_task = res = new DecoupledTask (WriteLineAsyncCore (value));\r
                        return res.Task;\r
                }\r
 \r
+               async Task WriteLineAsyncCore (char value)\r
+               {\r
+                       await WriteAsyncCore (value).ConfigureAwait (false);\r
+                       await LowLevelWriteAsync (CoreNewLine, 0, CoreNewLine.Length).ConfigureAwait (false);\r
+                       \r
+                       if (iflush)\r
+                               await FlushCoreAsync ().ConfigureAwait (false);\r
+               }               \r
+\r
                public override Task WriteLineAsync (char[] buffer, int index, int count)\r
                {\r
+                       if (buffer == null)\r
+                               throw new ArgumentNullException ("buffer");\r
+                       if (index < 0)\r
+                               throw new ArgumentOutOfRangeException ("index", "< 0");\r
+                       if (count < 0)\r
+                               throw new ArgumentOutOfRangeException ("count", "< 0");\r
+                       // re-ordered to avoid possible integer overflow\r
+                       if (index > buffer.Length - count)\r
+                               throw new ArgumentException ("index + count > buffer.Length");\r
+\r
                        CheckState ();\r
                        DecoupledTask res;\r
-                       async_task = res = new DecoupledTask (base.WriteLineAsync (buffer, index, count));\r
+                       async_task = res = new DecoupledTask (WriteLineAsyncCore (buffer, index, count));\r
                        return res.Task;\r
                }\r
 \r
+               async Task WriteLineAsyncCore (char[] buffer, int index, int count)\r
+               {\r
+                       // Debug.Assert (buffer == null);\r
+\r
+                       await LowLevelWriteAsync (buffer, index, count).ConfigureAwait (false);\r
+                       await LowLevelWriteAsync (CoreNewLine, 0, CoreNewLine.Length).ConfigureAwait (false);\r
+                       \r
+                       if (iflush)\r
+                               await FlushCoreAsync ().ConfigureAwait (false);\r
+               }               \r
+\r
                public override Task WriteLineAsync (string value)\r
                {\r
+                       if (value == null)\r
+                               return WriteLineAsync ();\r
+\r
                        CheckState ();\r
                        DecoupledTask res;                      \r
-                       async_task = res = new DecoupledTask (base.WriteLineAsync (value));\r
+                       async_task = res = new DecoupledTask (WriteAsyncCore (value, true));\r
                        return res.Task;\r
                }\r
 #endif\r
index b0e6747bedfb9c6b0fbc0b6d5adfe86683fbcb3a..f9222cf88f210eceb921f7255b4bf33418e01f58 100644 (file)
@@ -351,7 +351,7 @@ namespace System.Reflection.Emit {
                                throw new InvalidOperationException ("Method '" + Name + "' does not have a method body.");
                        }
                        if (ilgen != null)
-                               ilgen.label_fixup ();
+                               ilgen.label_fixup (this);
                }
                
                internal void GenerateDebugInfo (ISymbolWriter symbolWriter)
index 5805c00c31df77d87aeacf23ed517c1f777c0fc4..b4915cced0454f49d01a199c18d40c1de134a084 100644 (file)
@@ -138,7 +138,7 @@ namespace System.Reflection.Emit {
                                if (ilgen == null || ilgen.ILOffset == 0)
                                        throw new InvalidOperationException ("Method '" + name + "' does not have a method body.");
 
-                               ilgen.label_fixup ();
+                               ilgen.label_fixup (this);
 
                                // Have to create all DynamicMethods referenced by this one
                                try {
index 1c9c3f4c3d16840e8c7dc1fd7d48788961204aa6..b939ab6cffeba64c1c1cd0188b2dbf493841631d 100644 (file)
@@ -988,11 +988,11 @@ namespace System.Reflection.Emit {
                        throw new NotImplementedException ();
                }
 
-               internal void label_fixup ()
+               internal void label_fixup (MethodBase mb)
                {
                        for (int i = 0; i < num_fixups; ++i) {
                                if (labels [fixups [i].label_idx].addr < 0)
-                                       throw new ArgumentException ("Label not marked");
+                                       throw new ArgumentException (string.Format ("Label #{0} is not marked in method `{1}'", fixups [i].label_idx + 1, mb.Name));
                                // Diff is the offset from the end of the jump instruction to the address of the label
                                int diff = labels [fixups [i].label_idx].addr - (fixups [i].pos + fixups [i].offset);
                                if (fixups [i].offset == 1) {
index f898bce399eb886a6b859be14904151e1e607c7a..2ea94ea525373b6bf179a3b623cfb462e071a136 100644 (file)
@@ -354,7 +354,7 @@ namespace System.Reflection.Emit
                                                                                            DeclaringType.FullName, Name));
                        }
                        if (ilgen != null)
-                               ilgen.label_fixup ();
+                               ilgen.label_fixup (this);
                }
                
                internal void GenerateDebugInfo (ISymbolWriter symbolWriter)
index f46c01a226d083de05a8f7cb9a741f2511e56347..f069ecbcc908ed1f440cc64ac4e9d5673a222028 100644 (file)
@@ -322,15 +322,10 @@ namespace System.Reflection {
                        return attrs;
                }
 
-               static bool ShouldPrintFullName (Type type) {
-                       return type.IsClass && (!type.IsPointer ||
-                               (!type.GetElementType ().IsPrimitive && !type.GetElementType ().IsNested));
-               }
-
                public override string ToString () {
                        StringBuilder sb = new StringBuilder ();
                        Type retType = ReturnType;
-                       if (ShouldPrintFullName (retType))
+                       if (Type.ShouldPrintFullName (retType))
                                sb.Append (retType.ToString ());
                        else
                                sb.Append (retType.Name);
@@ -347,21 +342,10 @@ namespace System.Reflection {
                                sb.Append ("]");
                        }
                        sb.Append ("(");
-                       ParameterInfo[] p = GetParametersInternal ();
-                       for (int i = 0; i < p.Length; ++i) {
-                               if (i > 0)
-                                       sb.Append (", ");
-                               Type pt = p[i].ParameterType;
-                               bool byref = pt.IsByRef;
-                               if (byref)
-                                       pt = pt.GetElementType ();
-                               if (ShouldPrintFullName (pt))
-                                       sb.Append (pt.ToString ());
-                               else
-                                       sb.Append (pt.Name);
-                               if (byref)
-                                       sb.Append (" ByRef");
-                       }
+
+                       var p = GetParametersInternal ();
+                       ParameterInfo.FormatParameters (sb, p);
+
                        if ((CallingConvention & CallingConventions.VarArgs) != 0) {
                                if (p.Length > 0)
                                        sb.Append (", ");
@@ -464,6 +448,7 @@ namespace System.Reflection {
 #endif
        }
        
+       [Serializable()]
        [StructLayout (LayoutKind.Sequential)]
        internal class MonoCMethod : ConstructorInfo, ISerializable
        {
index 9760c197006acd4dc2517510a8ed403b93e708a4..4b9962e3eed43be436c014652a2743c5c559d99b 100644 (file)
@@ -1,13 +1,14 @@
 //
-// System.Reflection/MonoProperty.cs
-// The class used to represent Properties from the mono runtime.
+// MonoProperty.cs: The class used to represent Properties from the mono runtime.
 //
-// Author:
+// Authors:
 //   Paolo Molaro (lupus@ximian.com)
 //   Patrik Torstensson (patrik.torstensson@labs2.com)
+//   Marek Safar (marek.safar@gmail.com)
 //
 // (C) 2001 Ximian, Inc.  http://www.ximian.com
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin, Inc (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -35,6 +36,7 @@ using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 using System.Runtime.Serialization;
 using System.Security;
+using System.Text;
 
 namespace System.Reflection {
        
@@ -177,24 +179,25 @@ namespace System.Reflection {
                                return null;
                }
 
-               public override ParameterInfo[] GetIndexParameters()
+               public override ParameterInfo[] GetIndexParameters ()
                {
                        CachePropertyInfo (PInfo.GetMethod | PInfo.SetMethod);
-                       ParameterInfo[] res;
+                       ParameterInfo[] src;
+                       int length;
                        if (info.get_method != null) {
-                               res = info.get_method.GetParameters ();
+                               src = info.get_method.GetParametersInternal ();
+                               length = src.Length;
                        } else if (info.set_method != null) {
-                               ParameterInfo[] src = info.set_method.GetParametersInternal ();
-                               res = new ParameterInfo [src.Length - 1];
-                               Array.Copy (src, res, res.Length);
+                               src = info.set_method.GetParametersInternal ();
+                               length = src.Length - 1;
                        } else
                                return EmptyArray<ParameterInfo>.Value;
 
-                       for (int i = 0; i < res.Length; ++i) {
-                               ParameterInfo pinfo = res [i];
-                               res [i] = new ParameterInfo (pinfo, this);
+                       var dest = new ParameterInfo [length];
+                       for (int i = 0; i < length; ++i) {
+                               dest [i] = new ParameterInfo (src [i], this);
                        }
-                       return res;     
+                       return dest;    
                }
                
                public override MethodInfo GetSetMethod (bool nonPublic)
@@ -363,8 +366,27 @@ namespace System.Reflection {
                        method.Invoke (obj, invokeAttr, binder, parms, culture);
                }
 
-               public override string ToString () {
-                       return PropertyType.ToString () + " " + Name;
+               public override string ToString ()
+               {
+                       var sb = new StringBuilder ();
+
+                       Type retType = PropertyType;
+                       if (Type.ShouldPrintFullName (retType))
+                               sb.Append (retType.ToString ());
+                       else
+                               sb.Append (retType.Name);
+
+                       sb.Append (" ");
+                       sb.Append (Name);
+
+                       var pi = GetIndexParameters ();
+                       if (pi.Length > 0) {
+                               sb.Append (" [");
+                               ParameterInfo.FormatParameters (sb, pi);
+                               sb.Append ("]");
+                       }
+
+                       return sb.ToString ();
                }
 
                public override Type[] GetOptionalCustomModifiers () {
index f62ef54f19ee6a715e08c3f441353515b7efa93c..471a9a25b62fae2bad941fd47a6f52f448cec10d 100644 (file)
@@ -1,9 +1,12 @@
 // System.Reflection.ParameterInfo
 //
-// Sean MacIsaac (macisaac@ximian.com)
+// Authors:
+//   Sean MacIsaac (macisaac@ximian.com)
+//   Marek Safar (marek.safar@gmail.com)
 //
 // (C) 2001 Ximian, Inc.
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin, Inc (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,6 +34,7 @@ using System.Reflection.Emit;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 using System.Collections.Generic;
+using System.Text;
 
 namespace System.Reflection
 {
@@ -124,6 +128,27 @@ namespace System.Reflection
                        return result;
                }
 
+               internal static void FormatParameters (StringBuilder sb, ParameterInfo[] p)
+               {
+                       for (int i = 0; i < p.Length; ++i) {
+                               if (i > 0)
+                                       sb.Append (", ");
+
+                               Type pt = p[i].ParameterType;
+                               bool byref = pt.IsByRef;
+                               if (byref)
+                                       pt = pt.GetElementType ();
+
+                               if (Type.ShouldPrintFullName (pt))
+                                       sb.Append (pt.ToString ());
+                               else
+                                       sb.Append (pt.Name);
+
+                               if (byref)
+                                       sb.Append (" ByRef");
+                       }
+               }
+
                public virtual Type ParameterType {
                        get {return ClassImpl;}
                }
index 0d475e2d03a8398e1030bccdfdafd264ff618fc7..b1af3ff9e624b5d7e5dcc0d1c850a232388169b4 100644 (file)
@@ -173,7 +173,7 @@ namespace System.Runtime.CompilerServices
 
                public bool TryGetValue (TKey key, out TValue value)
                {
-                       if (key == default (TKey))
+                       if (key == null)
                                throw new ArgumentNullException ("Null key", "key");
 
                        value = default (TValue);
@@ -204,8 +204,6 @@ namespace System.Runtime.CompilerServices
 
                public TValue GetValue (TKey key, CreateValueCallback createValueCallback)
                {
-                       if (key == default (TKey))
-                               throw new ArgumentNullException ("Null key", "key");
                        if (createValueCallback == null)
                                throw new ArgumentNullException ("Null create delegate", "createValueCallback");
 
index 9bed9aaabc7190a1799eaa39d42bc20a203660b4..ab2c8cadd674d00725363363a557cc11f5d910d2 100644 (file)
@@ -52,10 +52,12 @@ namespace System.Runtime.CompilerServices
 
                public void GetResult ()
                {
-                       if (task.Status != TaskStatus.RanToCompletion) {
+                       if (!task.IsCompleted)
+                               task.WaitCore (Timeout.Infinite, CancellationToken.None);
+
+                       if (task.Status != TaskStatus.RanToCompletion)
                                // Merge current and dispatched stack traces if there is any
                                ExceptionDispatchInfo.Capture (HandleUnexpectedTaskResult (task)).Throw ();
-                       }
                }
 
                internal static Exception HandleUnexpectedTaskResult (Task task)
@@ -66,7 +68,7 @@ namespace System.Runtime.CompilerServices
                        case TaskStatus.Faulted:
                                return task.Exception.InnerException;
                        default:
-                               return new InvalidOperationException ("The task has not finished yet");
+                               throw new ArgumentException ("Should never be reached");
                        }
                }
 
index bd1b0d4401f8e31fccf8a27c791a618f97e02e68..f12db5fe57814cf91ada45c557aa4c5aa1b581fa 100644 (file)
@@ -29,6 +29,7 @@
 
 #if NET_4_5
 
+using System.Threading;
 using System.Threading.Tasks;
 using System.Runtime.ExceptionServices;
 
@@ -51,6 +52,9 @@ namespace System.Runtime.CompilerServices
 
                public TResult GetResult ()
                {
+                       if (!task.IsCompleted)
+                               task.WaitCore (Timeout.Infinite, CancellationToken.None);
+
                        if (task.Status != TaskStatus.RanToCompletion)
                                ExceptionDispatchInfo.Capture (TaskAwaiter.HandleUnexpectedTaskResult (task)).Throw ();
 
index cc1b639697fc967fcb8ecae8e07432b282e25a59..93765269524e191aabaf47bf62750d2f264a59c7 100644 (file)
@@ -46,34 +46,40 @@ namespace System.Runtime.CompilerServices
 
                        public void OnCompleted (Action continuation)
                        {
-                               if (continuation == null)
-                                       throw new ArgumentNullException ("continuation");
-
-                               if (TaskScheduler.Current == TaskScheduler.Default) {
-                                       //
-                                       // Pass continuation as an argument to avoid allocating
-                                       // hoisting class
-                                       //
-                                       ThreadPool.QueueUserWorkItem (l => ((Action) l) (), continuation);
-                               } else {
-                                       new Task (continuation).Start (TaskScheduler.Current);
-                               }
+                               OnCompleted (continuation, false);
                        }
-                       
+
                        public void UnsafeOnCompleted (Action continuation)
+                       {
+                               OnCompleted (continuation, true);
+                       }
+
+                       void OnCompleted (Action continuation, bool isUnsafe)
                        {
                                if (continuation == null)
                                        throw new ArgumentNullException ("continuation");
 
+                               var ctx = SynchronizationContext.Current;
+                               if (ctx != null) {
+                                       ctx.Post (l => ((Action) l) (), continuation);
+                                       return;
+                               }
+
                                if (TaskScheduler.Current == TaskScheduler.Default) {
                                        //
-                                       // Pass the continuation as an argument to avoid allocating
+                                       // Pass continuation as an argument to avoid allocating
                                        // hoisting class
                                        //
-                                       ThreadPool.UnsafeQueueUserWorkItem (l => ((Action) l) (), continuation);
-                               } else {
-                                       new Task (continuation).Start (TaskScheduler.Current);
+                                       WaitCallback callBack = l => ((Action) l) ();
+                                       if (isUnsafe) {
+                                               ThreadPool.UnsafeQueueUserWorkItem (callBack, continuation);
+                                       } else {
+                                               ThreadPool.QueueUserWorkItem (callBack, continuation);
+                                       }
+                                       return;
                                }
+
+                               new Task (continuation).Start (TaskScheduler.Current);
                        }
 
                        public void GetResult ()
index 746e1f6f35ff8d0a775da5d01d9facfa45f59f15..a3134933a312865392cb309f979a53957438d7f3 100644 (file)
@@ -705,11 +705,16 @@ namespace System.Runtime.InteropServices
 
                public static byte ReadByte (IntPtr ptr)
                {
-                       return ReadByte (ptr, 0);
+                       unsafe {
+                               return *(byte*)ptr;
+                       }
                }
 
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               public extern static byte ReadByte (IntPtr ptr, int ofs);
+               public static byte ReadByte (IntPtr ptr, int ofs) {
+                       unsafe {
+                               return *((byte*)ptr + ofs);
+                       }
+               }
 
                [MonoTODO]
                [SuppressUnmanagedCodeSecurity]
@@ -718,13 +723,32 @@ namespace System.Runtime.InteropServices
                        throw new NotImplementedException ();
                }
 
-               public static short ReadInt16 (IntPtr ptr)
+               public unsafe static short ReadInt16 (IntPtr ptr)
                {
-                       return ReadInt16 (ptr, 0);
+                       byte *addr = (byte *) ptr;
+                       
+                       // The mono JIT can't inline this due to the hight number of calls
+                       // return ReadInt16 (ptr, 0);
+                       
+                       if (((uint)addr & 1) == 0) 
+                               return *(short*)addr;
+
+                       short s;
+                       String.memcpy ((byte*)&s, (byte*)ptr, 2);
+                       return s;
                }
 
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               public extern static short ReadInt16 (IntPtr ptr, int ofs);
+               public unsafe static short ReadInt16 (IntPtr ptr, int ofs)
+               {
+                       byte *addr = ((byte *) ptr) + ofs;
+
+                       if (((uint) addr & 1) == 0)
+                               return *(short*)addr;
+
+                       short s;
+                       String.memcpy ((byte*)&s, addr, 2);
+                       return s;
+               }
 
                [MonoTODO]
                [SuppressUnmanagedCodeSecurity]
@@ -734,14 +758,31 @@ namespace System.Runtime.InteropServices
                }
 
                [ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-               public static int ReadInt32 (IntPtr ptr)
+               public unsafe static int ReadInt32 (IntPtr ptr)
                {
-                       return ReadInt32 (ptr, 0);
+                       byte *addr = (byte *) ptr;
+                       
+                       if (((uint)addr & 3) == 0) 
+                               return *(int*)addr;
+
+                       int s;
+                       String.memcpy ((byte*)&s, addr, 4);
+                       return s;
                }
 
                [ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               public extern static int ReadInt32 (IntPtr ptr, int ofs);
+               public unsafe static int ReadInt32 (IntPtr ptr, int ofs)
+               {
+                       byte *addr = ((byte *) ptr) + ofs;
+                       
+                       if ((((int) addr) & 3) == 0)
+                               return *(int*)addr;
+                       else {
+                               int s;
+                               String.memcpy ((byte*)&s, addr, 4);
+                               return s;
+                       }
+               }
 
                [ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
                [MonoTODO]
@@ -752,13 +793,31 @@ namespace System.Runtime.InteropServices
                }
 
                [ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-               public static long ReadInt64 (IntPtr ptr)
+               public unsafe static long ReadInt64 (IntPtr ptr)
                {
-                       return ReadInt64 (ptr, 0);
+                       byte *addr = (byte *) ptr;
+                               
+                       // The real alignment might be 4 on some platforms, but this is just an optimization,
+                       // so it doesn't matter.
+                       if (((uint) addr & 7) == 0)
+                               return *(long*)ptr;
+
+                       long s;
+                       String.memcpy ((byte*)&s, addr, 8);
+                       return s;
                }
 
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               public extern static long ReadInt64 (IntPtr ptr, int ofs);
+               public unsafe static long ReadInt64 (IntPtr ptr, int ofs)
+               {
+                       byte *addr = ((byte *) ptr) + ofs;
+
+                       if (((uint) addr & 7) == 0)
+                               return *(long*)addr;
+                       
+                       long s;
+                       String.memcpy ((byte*)&s, addr, 8);
+                       return s;
+               }
 
                [ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
                [MonoTODO]
@@ -771,12 +830,20 @@ namespace System.Runtime.InteropServices
                [ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
                public static IntPtr ReadIntPtr (IntPtr ptr)
                {
-                       return ReadIntPtr (ptr, 0);
+                       if (IntPtr.Size == 4)
+                               return (IntPtr)ReadInt32 (ptr);
+                       else
+                               return (IntPtr)ReadInt64 (ptr);
                }
                
                [ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               public extern static IntPtr ReadIntPtr (IntPtr ptr, int ofs);
+               public static IntPtr ReadIntPtr (IntPtr ptr, int ofs)
+               {
+                       if (IntPtr.Size == 4)
+                               return (IntPtr)ReadInt32 (ptr, ofs);
+                       else
+                               return (IntPtr)ReadInt64 (ptr, ofs);
+               }
 
                [ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
                [MonoTODO]
@@ -1009,11 +1076,16 @@ namespace System.Runtime.InteropServices
 
                public static void WriteByte (IntPtr ptr, byte val)
                {
-                       WriteByte (ptr, 0, val);
+                       unsafe {
+                               *(byte*)ptr = val;
+                       }
                }
 
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               public extern static void WriteByte (IntPtr ptr, int ofs, byte val);
+               public static void WriteByte (IntPtr ptr, int ofs, byte val) {
+                       unsafe {
+                               *(byte*)(IntPtr.Add (ptr, ofs)) = val;
+                       }
+               }
 
                [MonoTODO]
                [SuppressUnmanagedCodeSecurity]
@@ -1022,13 +1094,26 @@ namespace System.Runtime.InteropServices
                        throw new NotImplementedException ();
                }
 
-               public static void WriteInt16 (IntPtr ptr, short val)
+               public static unsafe void WriteInt16 (IntPtr ptr, short val)
                {
-                       WriteInt16 (ptr, 0, val);
+                       byte *addr = (byte *) ptr;
+                       
+                       if (((uint)addr & 1) == 0)
+                               *(short*)addr = val;
+                       else
+                               String.memcpy (addr, (byte*)&val, 2);
                }
 
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               public extern static void WriteInt16 (IntPtr ptr, int ofs, short val);
+               public static unsafe void WriteInt16 (IntPtr ptr, int ofs, short val)
+               {
+                       byte *addr = ((byte *) ptr) + ofs;
+
+                       if (((uint)addr & 1) == 0)
+                               *(short*)addr = val;
+                       else {
+                               String.memcpy (addr, (byte*)&val, 2);
+                       }
+               }
 
                [MonoTODO]
                [SuppressUnmanagedCodeSecurity]
@@ -1039,12 +1124,13 @@ namespace System.Runtime.InteropServices
 
                public static void WriteInt16 (IntPtr ptr, char val)
                {
-                       WriteInt16 (ptr, 0, val);
+                       WriteInt16 (ptr, 0, (short)val);
                }
 
-               [MonoTODO]
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               public extern static void WriteInt16 (IntPtr ptr, int ofs, char val);
+               public static void WriteInt16 (IntPtr ptr, int ofs, char val)
+               {
+                       WriteInt16 (ptr, ofs, (short)val);
+               }
 
                [MonoTODO]
                public static void WriteInt16([In, Out] object ptr, int ofs, char val)
@@ -1052,13 +1138,27 @@ namespace System.Runtime.InteropServices
                        throw new NotImplementedException ();
                }
 
-               public static void WriteInt32 (IntPtr ptr, int val)
+               public static unsafe void WriteInt32 (IntPtr ptr, int val)
                {
-                       WriteInt32 (ptr, 0, val);
+                       byte *addr = (byte *) ptr;
+                       
+                       if (((uint)addr & 3) == 0) 
+                               *(int*)addr = val;
+                       else {
+                               String.memcpy (addr, (byte*)&val, 4);
+                       }
                }
 
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               public extern static void WriteInt32 (IntPtr ptr, int ofs, int val);
+               public unsafe static void WriteInt32 (IntPtr ptr, int ofs, int val)
+               {
+                       byte *addr = ((byte *) ptr) + ofs;
+
+                       if (((uint)addr & 3) == 0) 
+                               *(int*)addr = val;
+                       else {
+                               String.memcpy (addr, (byte*)&val, 4);
+                       }
+               }
 
                [MonoTODO]
                [SuppressUnmanagedCodeSecurity]
@@ -1067,13 +1167,29 @@ namespace System.Runtime.InteropServices
                        throw new NotImplementedException ();
                }
 
-               public static void WriteInt64 (IntPtr ptr, long val)
+               public static unsafe void WriteInt64 (IntPtr ptr, long val)
                {
-                       WriteInt64 (ptr, 0, val);
+                       byte *addr = (byte *) ptr;
+                       
+                       // The real alignment might be 4 on some platforms, but this is just an optimization,
+                       // so it doesn't matter.
+                       if (((uint)addr & 7) == 0) 
+                               *(long*)addr = val;
+                       else 
+                               String.memcpy (addr, (byte*)&val, 8);
                }
 
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               public extern static void WriteInt64 (IntPtr ptr, int ofs, long val);
+               public static unsafe void WriteInt64 (IntPtr ptr, int ofs, long val)
+               {
+                       byte *addr = ((byte *) ptr) + ofs;
+
+                       // The real alignment might be 4 on some platforms, but this is just an optimization,
+                       // so it doesn't matter.
+                       if (((uint)addr & 7) == 0) 
+                               *(long*)addr = val;
+                       else 
+                               String.memcpy (addr, (byte*)&val, 8);
+               }
 
                [MonoTODO]
                [SuppressUnmanagedCodeSecurity]
@@ -1084,11 +1200,19 @@ namespace System.Runtime.InteropServices
 
                public static void WriteIntPtr (IntPtr ptr, IntPtr val)
                {
-                       WriteIntPtr (ptr, 0, val);
+                       if (IntPtr.Size == 4)
+                               WriteInt32 (ptr, (int)val);
+                       else
+                               WriteInt64 (ptr, (long)val);
                }
 
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               public extern static void WriteIntPtr (IntPtr ptr, int ofs, IntPtr val);
+               public static void WriteIntPtr (IntPtr ptr, int ofs, IntPtr val)
+               {
+                       if (IntPtr.Size == 4)
+                               WriteInt32 (ptr, ofs, (int)val);
+                       else
+                               WriteInt64 (ptr, ofs, (long)val);
+               }
 
                [MonoTODO]
                public static void WriteIntPtr([In, Out, MarshalAs(UnmanagedType.AsAny)] object ptr, int ofs, IntPtr val)
index 4d05e06ac4e6c55fdafb8d188b43b0fdab79b76e..32bf463ec4deeae42495f5c5f2ae381b83d0c02d 100755 (executable)
@@ -165,7 +165,21 @@ namespace System.Security.Cryptography {
                        case "tripledes":
                        case "3des":
                                return new TripleDESCryptoServiceProvider ();
-                       default:
+                       case "x509chain":
+                               name = "System.Security.Cryptography.X509Certificates.X509Chain, System";
+                               break;
+                       case "aes":
+                               name = "System.Security.Cryptography.AesManaged, System.Core";
+                               break;
+                       }
+
+                       try {
+                               // last resort, the request type might be available (if care is taken for the type not to be linked 
+                               // away) and that can allow some 3rd party code to work (e.g. extra algorithms) and make a few more
+                               // unit tests happy
+                               return Activator.CreateInstance (Type.GetType (name));
+                       }
+                       catch {
                                // method doesn't throw any exception
                                return null;
                        }
index 7f561f62c4507c3087c4c10cc1c1138d20112041..3d72d23a7bdd8f080f86f4fea135004791588510 100644 (file)
@@ -63,7 +63,7 @@ namespace System.Security.Cryptography {
                // least in the unit tests).
 
                public DSACryptoServiceProvider ()
-                       : this (1024, null)
+                       : this (1024)
                {
                }
 
@@ -73,11 +73,19 @@ namespace System.Security.Cryptography {
                }
 
                public DSACryptoServiceProvider (int dwKeySize)
-                       : this (dwKeySize, null)
                {
+                       Common (dwKeySize, false);
                }
 
                public DSACryptoServiceProvider (int dwKeySize, CspParameters parameters)
+               {
+                       bool has_parameters = parameters != null;
+                       Common (dwKeySize, has_parameters);
+                       if (has_parameters)
+                               Common (parameters);
+               }
+
+               void Common (int dwKeySize, bool parameters) 
                {
                        LegalKeySizesValue = new KeySizes [1];
                        LegalKeySizesValue [0] = new KeySizes (512, 1024, 64);
@@ -87,21 +95,24 @@ namespace System.Security.Cryptography {
                        dsa = new DSAManaged (dwKeySize);
                        dsa.KeyGenerated += new DSAManaged.KeyGeneratedEventHandler (OnKeyGenerated);
 
-                       persistKey = (parameters != null);
-                       if (parameters == null) {
-                               parameters = new CspParameters (PROV_DSS_DH);
-                               if (useMachineKeyStore)
-                                       parameters.Flags |= CspProviderFlags.UseMachineKeyStore;
-                               store = new KeyPairPersistence (parameters);
-                               // no need to load - it cannot exists
-                       }
-                       else {
-                               store = new KeyPairPersistence (parameters);
-                               store.Load ();
-                               if (store.KeyValue != null) {
-                                       persisted = true;
-                                       this.FromXmlString (store.KeyValue);
-                               }
+                       persistKey = parameters;
+                       if (parameters)
+                               return;
+
+                       var p = new CspParameters (PROV_DSS_DH);
+                       if (useMachineKeyStore)
+                               p.Flags |= CspProviderFlags.UseMachineKeyStore;
+                       store = new KeyPairPersistence (p);
+                       // no need to load - it cannot exists
+               }
+
+               void Common (CspParameters parameters)
+               {
+                       store = new KeyPairPersistence (parameters);
+                       store.Load ();
+                       if (store.KeyValue != null) {
+                               persisted = true;
+                               this.FromXmlString (store.KeyValue);
                        }
                }
 
index 6f926b7cfb7a3309172e801ffa2a557a08b48c25..6a7284a036e9e4a2f60d4de8ce7bb9d8b3dff591 100644 (file)
@@ -3,10 +3,11 @@
 //
 // Authors:
 //     Thomas Neidhart (tome@sbox.tugraz.at)
-//     Sebastien Pouliot (sebastien@ximian.com)
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,6 +32,8 @@
 using System.Globalization;
 using System.Runtime.InteropServices;
 
+using Mono.Security.Cryptography;
+
 namespace System.Security.Cryptography {
 
        [ComVisible (true)]
@@ -52,14 +55,10 @@ namespace System.Security.Cryptography {
                        if (strName == null)
                                throw new ArgumentNullException ("strName");
 
-                       try {
-                               // just to test, we don't need the object
-                               SHA1.Create (strName);
-                       }
-                       catch (InvalidCastException) {
+                       var instance = PKCS1.CreateFromName (strName) as SHA1;
+                       if (instance == null)
                                throw new CryptographicUnexpectedOperationException (
                                        Locale.GetText ("DSA requires SHA1"));
-                       }
                }
 
                public override void SetKey (AsymmetricAlgorithm key)
index 1eaa37e2d2c828e297b017c6c6b76d24a8a07c4c..d4e775316d98c54d2614d9c1036f6d5278c5b61f 100644 (file)
@@ -3,10 +3,11 @@
 //
 // Authors:
 //     Thomas Neidhart (tome@sbox.tugraz.at)
-//     Sebastien Pouliot (sebastien@ximian.com)
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,6 +32,8 @@
 using System.Globalization;
 using System.Runtime.InteropServices;
 
+using Mono.Security.Cryptography;
+
 namespace System.Security.Cryptography {
 
        [ComVisible (true)]
@@ -62,14 +65,10 @@ namespace System.Security.Cryptography {
                        if (strName == null)
                                throw new ArgumentNullException ("strName");
 
-                       try {
-                               // just to test, we don't need the object
-                               SHA1.Create (strName);
-                       }
-                       catch (InvalidCastException) {
+                       var instance = PKCS1.CreateFromName (strName) as SHA1;
+                       if (instance == null)
                                throw new CryptographicUnexpectedOperationException (
                                        Locale.GetText ("DSA requires SHA1"));
-                       }
                }
 
                public override void SetKey (AsymmetricAlgorithm key)
index e2c20e29e1cd2fb33a287d65c6b4251b6e304d6b..e83eb67e69e857bd494e65119123410ebb77159e 100644 (file)
@@ -2,10 +2,11 @@
 // HMAC.cs: Generic HMAC inplementation
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005, 2007 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -167,6 +168,15 @@ namespace System.Security.Cryptography {
                        Array.Clear (buf, 0, buf.Length);
                }
 
+#if FULL_AOT_RUNTIME
+               // Allow using HMAC without bringing (most of) the whole crypto stack (using CryptoConfig)
+               // or even without bringing all the hash algorithms (using a common switch)
+               internal void SetHash (string name, HashAlgorithm instance)
+               {
+                       _hashName = name; 
+                       _algo = instance;
+               }
+#endif
                // static methods
 
                public static new HMAC Create () 
index f7414bf379bf6268e32ec0b077b8869fdf280d47..0f0ea842cf7469391b0ae67a075417e005cdb859 100644 (file)
@@ -2,10 +2,11 @@
 // HMACMD5.cs: HMAC implementation using MD5
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -50,7 +51,11 @@ namespace System.Security.Cryptography {
 
                public HMACMD5 (byte[] key) : base ()
                {
+#if FULL_AOT_RUNTIME
+                       SetHash ("MD5", new MD5CryptoServiceProvider ());
+#else
                        HashName = "MD5";
+#endif
                        HashSizeValue = 128;
                        Key = key;
                }
index 2ccc52ef35b4a3f9a37d4cbac21a8fbb41d7e1ff..38bf12b7a9d63f7bb39820604dc228974120d848 100644 (file)
@@ -2,10 +2,11 @@
 // HMACRIPEMD160.cs: HMAC implementation using RIPEMD160
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -43,7 +44,11 @@ namespace System.Security.Cryptography {
 
                public HMACRIPEMD160 (byte[] key) : base () 
                {
+#if FULL_AOT_RUNTIME
+                       SetHash ("RIPEMD160", new RIPEMD160Managed ());
+#else
                        HashName = "RIPEMD160";
+#endif
                        HashSizeValue = 160;
                        Key = key;
                }
index 2b476ac3577b3dcd7fcdf000769bd45f74c09f1a..baf644a6ab12166bc9feb55f1f6c6e4060653784 100644 (file)
@@ -2,10 +2,11 @@
 // HMACSHA1.cs: Handles HMAC with SHA-1
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -57,7 +58,11 @@ namespace System.Security.Cryptography {
 
                public HMACSHA1 (byte[] key)
                {
+#if FULL_AOT_RUNTIME
+                       SetHash ("SHA1", new SHA1Managed ());
+#else
                        HashName = "SHA1";
+#endif
                        HashSizeValue = 160;
                        Key = key;
                }
index 1bbe86b8aac0870ca41581a8f60d38de2bb2ce12..14c208d1fcf0f7d1464ffe8890f1c35cbe1ab438 100644 (file)
@@ -2,10 +2,11 @@
 // HMACSHA256.cs: HMAC implementation using SHA256
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -43,7 +44,11 @@ namespace System.Security.Cryptography {
 
                public HMACSHA256 (byte[] key) : base () 
                {
+#if FULL_AOT_RUNTIME
+                       SetHash ("SHA256", new SHA256Managed ());
+#else
                        HashName = "SHA256";
+#endif
                        HashSizeValue = 256;
                        Key = key;
                }
index a88377c04595788dfc6c1fef37f18e6bdc7a8ff7..a25b0e71f4e5a40693492b5d3ed513ec948bbccd 100644 (file)
@@ -2,10 +2,11 @@
 // HMACSHA384.cs: HMAC implementation using SHA384
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005, 2007 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -36,24 +37,31 @@ namespace System.Security.Cryptography {
        [ComVisible (true)]
        public class HMACSHA384 : HMAC {
 
-               static bool legacy_mode;
                private bool legacy;
 
+#if !FULL_AOT_RUNTIME
+               static bool legacy_mode;
+
                static HMACSHA384 ()
                {
                        legacy_mode = (Environment.GetEnvironmentVariable ("legacyHMACMode") == "1");
                }
+#endif
 
                public HMACSHA384 () 
                        : this (KeyBuilder.Key (8))
                {
-                       ProduceLegacyHmacValues = legacy_mode;
                }
 
                public HMACSHA384 (byte[] key)
                {
+#if FULL_AOT_RUNTIME
+                       BlockSizeValue = 128;
+                       SetHash ("SHA384", new SHA384Managed ());
+#else
                        ProduceLegacyHmacValues = legacy_mode;
                        HashName = "SHA384";
+#endif
                        HashSizeValue = 384;
                        Key = key;
                }
index eb40da4a94ffb56b547cfa5b53fff3b00d811a4e..2f7c16632a16a937da97cbd62ed905fa4977a761 100644 (file)
@@ -2,10 +2,11 @@
 // HMACSHA512.cs: HMAC implementation using SHA512
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005, 2007 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -36,24 +37,31 @@ namespace System.Security.Cryptography {
        [ComVisible (true)]
        public class HMACSHA512 : HMAC {
 
-               static bool legacy_mode;
                private bool legacy;
 
+#if !FULL_AOT_RUNTIME
+               static bool legacy_mode;
+
                static HMACSHA512 ()
                {
                        legacy_mode = (Environment.GetEnvironmentVariable ("legacyHMACMode") == "1");
                }
+#endif
 
                public HMACSHA512 ()
                        : this (KeyBuilder.Key (8))
                {
-                       ProduceLegacyHmacValues = legacy_mode;
                }
 
                public HMACSHA512 (byte[] key)
                {
+#if FULL_AOT_RUNTIME
+                       BlockSizeValue = 128;
+                       SetHash ("SHA512", new SHA512Managed ());
+#else
                        ProduceLegacyHmacValues = legacy_mode;
                        HashName = "SHA512";
+#endif
                        HashSizeValue = 512;
                        Key = key;
                }
index 270735f28b6b8675abc86f5f89f969f0d0d7b037..cd18c941dfd9f8461d06672b95d0cfbd911cda34 100644 (file)
@@ -2,10 +2,11 @@
 // MACTripleDES.cs: Handles MAC with TripleDES
 //
 // Author:
-//     Sebastien Pouliot (sebastien@ximian.com)
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -48,14 +49,14 @@ namespace System.Security.Cryptography {
        
                public MACTripleDES ()
                {
-                       Setup ("TripleDES", null);
+                       Setup (null, null);
                }
        
                public MACTripleDES (byte[] rgbKey)
                {
                        if (rgbKey == null)
                                throw new ArgumentNullException ("rgbKey");
-                       Setup ("TripleDES", rgbKey);
+                       Setup (null, rgbKey);
                }
        
                public MACTripleDES (string strTripleDES, byte[] rgbKey) 
@@ -63,14 +64,14 @@ namespace System.Security.Cryptography {
                        if (rgbKey == null)
                                throw new ArgumentNullException ("rgbKey");
                        if (strTripleDES == null)
-                               Setup ("TripleDES", rgbKey);
+                               Setup (null, rgbKey);
                        else
-                               Setup (strTripleDES, rgbKey);
+                               Setup (TripleDES.Create (strTripleDES), rgbKey);
                }
        
-               private void Setup (string strTripleDES, byte[] rgbKey) 
+               private void Setup (TripleDES tripleDES, byte[] rgbKey) 
                {
-                       tdes = TripleDES.Create (strTripleDES);
+                       tdes = tripleDES ?? TripleDES.Create ();
                        // default padding (as using in Fx 1.0 and 1.1)
                        tdes.Padding = PaddingMode.Zeros;
                        // if rgbKey is null we keep the randomly generated key
index 4c14453e4ed6944d6155154b44c73c2589bace7b..03cbfe1a8fb0ae6b1377cb755d925db8f9705028 100644 (file)
@@ -52,6 +52,7 @@ namespace System.Security.Cryptography {
                private RSAManaged rsa;
        
                public RSACryptoServiceProvider ()
+                       : this (1024)
                {
                        // Here it's not clear if we need to generate a keypair
                        // (note: MS implementation generates a keypair in this case).
@@ -61,29 +62,31 @@ namespace System.Security.Cryptography {
                        // So we'll generate the keypair only when (and if) it's being
                        // used (or exported). This should save us a lot of time (at 
                        // least in the unit tests).
-                       Common (1024, null);
                }
        
                public RSACryptoServiceProvider (CspParameters parameters) 
+                       : this (1024, parameters)
                {
-                       Common (1024, parameters);
                        // no keypair generation done at this stage
                }
        
                public RSACryptoServiceProvider (int dwKeySize) 
                {
                        // Here it's clear that we need to generate a new keypair
-                       Common (dwKeySize, null);
+                       Common (dwKeySize, false);
                        // no keypair generation done at this stage
                }
        
                public RSACryptoServiceProvider (int dwKeySize, CspParameters parameters) 
                {
-                       Common (dwKeySize, parameters);
+                       bool has_parameters = parameters != null;
+                       Common (dwKeySize, has_parameters);
+                       if (has_parameters)
+                               Common (parameters);
                        // no keypair generation done at this stage
                }
        
-               private void Common (int dwKeySize, CspParameters p
+               void Common (int dwKeySize, bool parameters
                {
                        // Microsoft RSA CSP can do between 384 and 16384 bits keypair
                        LegalKeySizesValue = new KeySizes [1];
@@ -93,26 +96,29 @@ namespace System.Security.Cryptography {
                        rsa = new RSAManaged (KeySize);
                        rsa.KeyGenerated += new RSAManaged.KeyGeneratedEventHandler (OnKeyGenerated);
 
-                       persistKey = (p != null);
-                       if (p == null) {
-                               p = new CspParameters (PROV_RSA_FULL);
-                               if (useMachineKeyStore)
-                                       p.Flags |= CspProviderFlags.UseMachineKeyStore;
-                               store = new KeyPairPersistence (p);
-                               // no need to load - it cannot exists
-                       }
-                       else {
-                               store = new KeyPairPersistence (p);
-                               bool exists = store.Load ();
-                               bool required = (p.Flags & CspProviderFlags.UseExistingKey) != 0;
+                       persistKey = parameters;
+                       if (parameters)
+                               return;
+
+                       // no need to load - it cannot exists
+                       var p = new CspParameters (PROV_RSA_FULL);
+                       if (useMachineKeyStore)
+                               p.Flags |= CspProviderFlags.UseMachineKeyStore;
+                       store = new KeyPairPersistence (p);
+               }
+
+               void Common (CspParameters p)
+               {
+                       store = new KeyPairPersistence (p);
+                       bool exists = store.Load ();
+                       bool required = (p.Flags & CspProviderFlags.UseExistingKey) != 0;
 
-                               if (required && !exists)
-                                       throw new CryptographicException ("Keyset does not exist");
+                       if (required && !exists)
+                               throw new CryptographicException ("Keyset does not exist");
 
-                               if (store.KeyValue != null) {
-                                       persisted = true;
-                                       this.FromXmlString (store.KeyValue);
-                               }
+                       if (store.KeyValue != null) {
+                               persisted = true;
+                               FromXmlString (store.KeyValue);
                        }
                }
 
index 1433045febb5bc81d002651de140174563522e60..63624523f3cb1b7097943598c402aefe9b7124a8 100644 (file)
@@ -77,7 +77,7 @@ namespace System.Security.Cryptography {
                        if (rgbSignature == null)
                                throw new ArgumentNullException ("rgbSignature");
 
-                       return PKCS1.Verify_v15 (rsa, HashAlgorithm.Create (hashName), rgbHash, rgbSignature);
+                       return PKCS1.Verify_v15 (rsa, hashName, rgbHash, rgbSignature);
                }
        }
 }
index bb6fdf64298125f49651cbc52d3cbc4599d093cb..96b40a2ec8c741d77689e79d6f34d6de5a7b24ad 100644 (file)
@@ -36,7 +36,7 @@ namespace System.Security.Cryptography {
        public class RSAPKCS1SignatureFormatter : AsymmetricSignatureFormatter {
        
                private RSA rsa;
-               private HashAlgorithm hash;
+               private string hash;
        
                public RSAPKCS1SignatureFormatter ()
                {
@@ -65,7 +65,9 @@ namespace System.Security.Cryptography {
        
                public override void SetHashAlgorithm (string strName) 
                {
-                       hash = HashAlgorithm.Create (strName);
+                       if (strName == null)
+                               throw new ArgumentNullException ("strName");
+                       hash = strName;
                }
        
                public override void SetKey (AsymmetricAlgorithm key) 
index 0f0f05a54d15c8e71edf6515982097ca6b984752..b862ed03cc5cce91512f2a1ed49908c06aa334f5 100644 (file)
@@ -6,6 +6,7 @@
 //
 // (C) 2004 Novell (http://www.novell.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -32,6 +33,81 @@ using System.Runtime.InteropServices;
 
 namespace System.Security.Cryptography {
 
+       static class Base64Helper {
+
+               private const int inputBlockSize = 3;
+               private const int outputBlockSize = 4;
+
+               internal static void TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
+               {
+                       byte[] lookup = Base64Constants.EncodeTable;
+                       
+                       int b1 = inputBuffer [inputOffset];
+                       int b2 = inputBuffer [inputOffset + 1];
+                       int b3 = inputBuffer [inputOffset + 2];
+                       
+                       outputBuffer [outputOffset] = lookup [b1 >> 2];
+                       outputBuffer [outputOffset+1] = lookup [((b1 << 4) & 0x30) | (b2 >> 4)];
+                       outputBuffer [outputOffset+2] = lookup [((b2 << 2) & 0x3c) | (b3 >> 6)];
+                       outputBuffer [outputOffset+3] = lookup [b3 & 0x3f];
+               }
+
+               // Mono System.Convert depends on the ability to process multiple blocks                
+               internal static byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount)
+               {
+                       int blockLen = inputBlockSize;
+                       int outLen = outputBlockSize;
+                       int fullBlocks = inputCount / blockLen;
+                       int tail = inputCount % blockLen;
+                       
+                       byte[] res = new byte [(inputCount != 0)
+                                              ? ((inputCount + 2) / blockLen) * outLen
+                                              : 0];
+                       
+                       int outputOffset = 0;
+                       
+                       for (int i = 0; i < fullBlocks; i++) {
+                               TransformBlock (inputBuffer, inputOffset, blockLen, res, outputOffset);
+                               inputOffset += blockLen;
+                               outputOffset += outLen;
+                       }
+                       
+                       byte[] lookup = Base64Constants.EncodeTable;
+                       int b1,b2;
+                       
+                       // When fewer than 24 input bits are available
+                       // in an input group, zero bits are added
+                       // (on the right) to form an integral number of
+                       // 6-bit groups.
+                       switch (tail) {
+                       case 0:
+                               break;
+                       case 1:
+                               b1 = inputBuffer [inputOffset];
+                               res [outputOffset] = lookup [b1 >> 2];
+                               res [outputOffset+1] = lookup [(b1 << 4) & 0x30];
+                               
+                               // padding
+                               res [outputOffset+2] = (byte)'=';
+                               res [outputOffset+3] = (byte)'=';
+                               break;
+                               
+                       case 2:
+                               b1 = inputBuffer [inputOffset];
+                               b2 = inputBuffer [inputOffset + 1];
+                               res [outputOffset] = lookup [b1 >> 2];
+                               res [outputOffset+1] = lookup [((b1 << 4) & 0x30) | (b2 >> 4)];
+                               res [outputOffset+2] = lookup [(b2 << 2) & 0x3c];
+                               
+                               // one-byte padding
+                               res [outputOffset+3] = (byte)'=';
+                               break;
+                       }
+                       
+                       return res;
+               }
+       }
+
        [ComVisible (true)]
        public class ToBase64Transform : ICryptoTransform {
 
@@ -119,24 +195,10 @@ namespace System.Security.Cryptography {
 //                     if (inputCount != this.InputBlockSize)
 //                             throw new CryptographicException (Locale.GetText ("Invalid input length"));
 
-                       InternalTransformBlock (inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset);
+                       Base64Helper.TransformBlock (inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset);
                        return this.OutputBlockSize;
                }
 
-               internal static void InternalTransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
-               {
-                       byte[] lookup = Base64Constants.EncodeTable;
-
-                       int b1 = inputBuffer [inputOffset];
-                       int b2 = inputBuffer [inputOffset + 1];
-                       int b3 = inputBuffer [inputOffset + 2];
-
-                       outputBuffer [outputOffset] = lookup [b1 >> 2];
-                       outputBuffer [outputOffset+1] = lookup [((b1 << 4) & 0x30) | (b2 >> 4)];
-                       outputBuffer [outputOffset+2] = lookup [((b2 << 2) & 0x3c) | (b3 >> 6)];
-                       outputBuffer [outputOffset+3] = lookup [b3 & 0x3f];
-               }
-
                public byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount)
                {
                        if (m_disposed)
@@ -150,62 +212,7 @@ namespace System.Security.Cryptography {
                        if (inputCount > this.InputBlockSize)
                                throw new ArgumentOutOfRangeException (Locale.GetText ("Invalid input length"));
                        
-                       return InternalTransformFinalBlock (inputBuffer, inputOffset, inputCount);
-               }
-               
-               // Mono System.Convert depends on the ability to process multiple blocks                
-               internal static byte[] InternalTransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount)
-               {
-                       int blockLen = inputBlockSize;
-                       int outLen = outputBlockSize;
-                       int fullBlocks = inputCount / blockLen;
-                       int tail = inputCount % blockLen;
-
-                       byte[] res = new byte [(inputCount != 0)
-                                               ? ((inputCount + 2) / blockLen) * outLen
-                                               : 0];
-
-                       int outputOffset = 0;
-
-                       for (int i = 0; i < fullBlocks; i++) {
-                               InternalTransformBlock (inputBuffer, inputOffset, blockLen, res, outputOffset);
-                               inputOffset += blockLen;
-                               outputOffset += outLen;
-                       }
-
-                       byte[] lookup = Base64Constants.EncodeTable;
-                       int b1,b2;
-
-                       // When fewer than 24 input bits are available
-                       // in an input group, zero bits are added
-                       // (on the right) to form an integral number of
-                       // 6-bit groups.
-                       switch (tail) {
-                       case 0:
-                               break;
-                       case 1:
-                               b1 = inputBuffer [inputOffset];
-                               res [outputOffset] = lookup [b1 >> 2];
-                               res [outputOffset+1] = lookup [(b1 << 4) & 0x30];
-
-                               // padding
-                               res [outputOffset+2] = (byte)'=';
-                               res [outputOffset+3] = (byte)'=';
-                               break;
-
-                       case 2:
-                               b1 = inputBuffer [inputOffset];
-                               b2 = inputBuffer [inputOffset + 1];
-                               res [outputOffset] = lookup [b1 >> 2];
-                               res [outputOffset+1] = lookup [((b1 << 4) & 0x30) | (b2 >> 4)];
-                               res [outputOffset+2] = lookup [(b2 << 2) & 0x3c];
-
-                               // one-byte padding
-                               res [outputOffset+3] = (byte)'=';
-                               break;
-                       }
-
-                       return res;
+                       return Base64Helper.TransformFinalBlock (inputBuffer, inputOffset, inputCount);
                }
        }
 }
index 34314d04388ebd654a6c4fb5d26b083076c84a79..329b6fe3378802efab1294626766d697820dfc02 100644 (file)
@@ -147,9 +147,8 @@ namespace System.Security {
                // Constructors
 
                public SecurityException ()
-                       : base (Locale.GetText ("A security error has been detected."))
+                       : this (Locale.GetText ("A security error has been detected."))
                {
-                       base.HResult = unchecked ((int)0x8013150A);
                }
 
                public SecurityException (string message) 
@@ -237,7 +236,7 @@ namespace System.Security {
                {
                        base.GetObjectData (info, context);
                        try {
-                               info.AddValue ("PermissionState", PermissionState);
+                               info.AddValue ("PermissionState", permissionState);
                        }
                        catch (SecurityException) {
                                // serialize only if permitted to do so
index cf59c6138454b12d90b5eff711adf58a757da315..62aa14fddc4c24f58a2cd2ba249805979417c1a1 100644 (file)
@@ -6,7 +6,7 @@
 //    Jérémie Laval <jeremie dot laval at xamarin dot com>
 //
 // Copyright (c) 2008 Jérémie "Garuma" Laval
-// Copyright 2011 Xamarin Inc (http://www.xamarin.com).
+// Copyright 2011-2013 Xamarin Inc (http://www.xamarin.com).
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -46,8 +46,6 @@ namespace System.Threading.Tasks
                // and for Parent property.
                [System.ThreadStatic]
                static Task current;
-               [System.ThreadStatic]
-               static Action<Task> childWorkAdder;
                
                // parent is the outer task in which this task is created
                readonly Task parent;
@@ -65,6 +63,7 @@ namespace System.Threading.Tasks
                internal TaskScheduler       scheduler;
 
                TaskExceptionSlot exSlot;
+               ManualResetEvent wait_handle;
 
                TaskStatus          status;
 
@@ -215,7 +214,6 @@ namespace System.Threading.Tasks
                internal void RunSynchronouslyCore (TaskScheduler scheduler)
                {
                        SetupScheduler (scheduler);
-                       var saveStatus = status;
                        Status = TaskStatus.WaitingToRun;
 
                        try {
@@ -225,8 +223,7 @@ namespace System.Threading.Tasks
                                throw new TaskSchedulerException (inner);
                        }
 
-                       Status = saveStatus;
-                       Start (scheduler);
+                       Schedule ();
                        Wait ();
                }
                #endregion
@@ -347,7 +344,7 @@ namespace System.Threading.Tasks
                                continuation.Execute ();
                }
 
-               void RemoveContinuation (IContinuation continuation)
+               internal void RemoveContinuation (IContinuation continuation)
                {
                        continuations.Remove (continuation);
                }
@@ -370,18 +367,7 @@ namespace System.Threading.Tasks
                internal void Schedule ()
                {
                        Status = TaskStatus.WaitingToRun;
-                       
-                       // If worker is null it means it is a local one, revert to the old behavior
-                       // If TaskScheduler.Current is not being used, the scheduler was explicitly provided, so we must use that
-                       if (scheduler != TaskScheduler.Current || childWorkAdder == null || HasFlag (creationOptions, TaskCreationOptions.PreferFairness)) {
-                               scheduler.QueueTask (this);
-                       } else {
-                               /* Like the semantic of the ABP paper describe it, we add ourselves to the bottom 
-                                * of our Parent Task's ThreadWorker deque. It's ok to do that since we are in
-                                * the correct Thread during the creation
-                                */
-                               childWorkAdder (this);
-                       }
+                       scheduler.QueueTask (this);
                }
                
                void ThreadStart ()
@@ -536,6 +522,9 @@ namespace System.Threading.Tasks
                                        Status = TaskStatus.WaitingForChildrenToComplete;
                        }
 
+                       if (wait_handle != null)
+                               wait_handle.Set ();
+
                        // Tell parent that we are finished
                        if (parent != null && HasFlag (creationOptions, TaskCreationOptions.AttachedToParent) &&
 #if NET_4_5
@@ -592,6 +581,10 @@ namespace System.Threading.Tasks
                internal void CancelReal ()
                {
                        Status = TaskStatus.Canceled;
+
+                       if (wait_handle != null)
+                               wait_handle.Set ();
+
                        ProcessCompleteDelegates ();
                }
 
@@ -605,6 +598,10 @@ namespace System.Threading.Tasks
                        ExceptionSlot.Exception = e;
                        Thread.MemoryBarrier ();
                        Status = TaskStatus.Faulted;
+
+                       if (wait_handle != null)
+                               wait_handle.Set ();
+
                        ProcessCompleteDelegates ();
                }
 
@@ -642,25 +639,7 @@ namespace System.Threading.Tasks
                        if (millisecondsTimeout < -1)
                                throw new ArgumentOutOfRangeException ("millisecondsTimeout");
 
-                       bool result = true;
-
-                       if (!IsCompleted) {
-                               // If the task is ready to be run and we were supposed to wait on it indefinitely without cancellation, just run it
-                               if (Status == TaskStatus.WaitingToRun && millisecondsTimeout == Timeout.Infinite && scheduler != null && !cancellationToken.CanBeCanceled)
-                                       scheduler.RunInline (this, true);
-
-                               if (!IsCompleted) {
-                                       var continuation = new ManualResetContinuation ();
-                                       try {
-                                               ContinueWith (continuation);
-                                               result = continuation.Event.Wait (millisecondsTimeout, cancellationToken);
-                                       } finally {
-                                               if (!result)
-                                                       RemoveContinuation (continuation);
-                                               continuation.Dispose ();
-                                       }
-                               }
-                       }
+                       bool result = WaitCore (millisecondsTimeout, cancellationToken);
 
                        if (IsCanceled)
                                throw new AggregateException (new TaskCanceledException (this));
@@ -671,6 +650,32 @@ namespace System.Threading.Tasks
 
                        return result;
                }
+
+               internal bool WaitCore (int millisecondsTimeout, CancellationToken cancellationToken)
+               {
+                       if (IsCompleted)
+                               return true;
+
+                       // If the task is ready to be run and we were supposed to wait on it indefinitely without cancellation, just run it
+                       if (Status == TaskStatus.WaitingToRun && millisecondsTimeout == Timeout.Infinite && scheduler != null && !cancellationToken.CanBeCanceled)
+                               scheduler.RunInline (this, true);
+
+                       bool result = true;
+
+                       if (!IsCompleted) {
+                               var continuation = new ManualResetContinuation ();
+                               try {
+                                       ContinueWith (continuation);
+                                       result = continuation.Event.Wait (millisecondsTimeout, cancellationToken);
+                               } finally {
+                                       if (!result)
+                                               RemoveContinuation (continuation);
+                                       continuation.Dispose ();
+                               }
+                       }
+
+                       return result;
+               }
                
                public static void WaitAll (params Task[] tasks)
                {
@@ -821,7 +826,7 @@ namespace System.Threading.Tasks
                #region Dispose
                public void Dispose ()
                {
-                       Dispose (true);
+                       Dispose (true);                 
                }
                
                protected virtual void Dispose (bool disposing)
@@ -836,6 +841,8 @@ namespace System.Threading.Tasks
                                state = null;
                                if (cancellationRegistration != null)
                                        cancellationRegistration.Value.Dispose ();
+                               if (wait_handle != null)
+                                       wait_handle.Dispose ();
                        }
                }
                #endregion
@@ -951,7 +958,7 @@ namespace System.Threading.Tasks
                                throw new ArgumentOutOfRangeException ("millisecondsDelay");
 
                        var task = new Task (TaskActionInvoker.Delay, millisecondsDelay, cancellationToken, TaskCreationOptions.None, null, TaskConstants.Finished);
-                       task.SetupScheduler (TaskScheduler.Current);
+                       task.SetupScheduler (TaskScheduler.Default);
                        
                        if (millisecondsDelay != Timeout.Infinite)
                                task.scheduler.QueueTask (task);
@@ -1285,7 +1292,13 @@ namespace System.Threading.Tasks
 
                WaitHandle IAsyncResult.AsyncWaitHandle {
                        get {
-                               return null;
+                               if (invoker == null)
+                                       throw new ObjectDisposedException (GetType ().ToString ());
+
+                               if (wait_handle == null)
+                                       Interlocked.CompareExchange (ref wait_handle, new ManualResetEvent (IsCompleted), null);
+
+                               return wait_handle;
                        }
                }
                
index a48c5cdd5c275b9681459399f00d3869a4e505ae..8189df744b867defe928bf5a56d04dd12c905f34 100644 (file)
@@ -256,12 +256,13 @@ namespace System.Threading.Tasks
        {
                readonly Task<T> owner;
                readonly IList<T> tasks;
-               AtomicBooleanValue executed = new AtomicBooleanValue ();
+               AtomicBooleanValue executed;
 
                public WhenAnyContinuation (Task<T> owner, IList<T> tasks)
                {
                        this.owner = owner;
                        this.tasks = tasks;
+                       executed = new AtomicBooleanValue ();
                }
 
                public void Execute ()
@@ -269,13 +270,19 @@ namespace System.Threading.Tasks
                        if (!executed.TryRelaxedSet ())
                                return;
 
+                       bool owner_notified = false;
                        for (int i = 0; i < tasks.Count; ++i) {
                                var task = tasks[i];
-                               if (!task.IsCompleted)
+                               if (!task.IsCompleted) {
+                                       task.RemoveContinuation (this);
+                                       continue;
+                               }
+
+                               if (owner_notified)
                                        continue;
 
                                owner.TrySetResult (task);
-                               return;
+                               owner_notified = true;
                        }
                }
        }
index 3b63c4231d6ae2446f4f3c5af56fe0d6f57e0f8f..3a75238f4dfe390f68e1987546f77a826f7db304 100644 (file)
@@ -54,7 +54,7 @@ namespace System.Threading
 
                        this.maxCount = maxCount;
                        this.currCount = initialCount;
-                       this.handle = new ManualResetEvent (initialCount == 0);
+                       this.handle = new ManualResetEvent (initialCount > 0);
                }
 
                public void Dispose ()
index 8fd3dfd96b6764b70d651f14aafa97e8b42d36d0..f286d5925ca382f7afd8a7f0bf10ecf789ddfd8d 100644 (file)
@@ -910,7 +910,8 @@ namespace System.Threading {
                            (ThreadState & ThreadState.Unstarted) == 0)
                                throw new ThreadStateException ("Thread was in an invalid state for the operation being executed.");
 
-                       if ((ApartmentState)Internal.apartment_state != ApartmentState.Unknown)
+                       if ((ApartmentState)Internal.apartment_state != ApartmentState.Unknown && 
+                           (ApartmentState)Internal.apartment_state != state)
                                return false;
 
                        Internal.apartment_state = (byte)state;
index 1e76495c7409dbe0d7cdb3eaccbd10434059aca1..4d3f1c086cf7b3dba9775fb2093cb141097604e8 100644 (file)
@@ -115,6 +115,12 @@ namespace System.Threading {
                                                                                long millisecondsTimeOutInterval,
                                                                                bool executeOnlyOnce)
                {
+                       if (waitObject == null)
+                               throw new ArgumentNullException ("waitObject");
+
+                       if (callBack == null)
+                               throw new ArgumentNullException ("callBack");
+                       
                        if (millisecondsTimeOutInterval < -1)
                                throw new ArgumentOutOfRangeException ("timeout", "timeout < -1");
 
index 22786f6588110e200e7f0d68be9cecc9bdcab734..63358776056a619725b9684e8ad5935200d1efc2 100644 (file)
@@ -311,13 +311,10 @@ namespace System.Threading
                                return idx;
                        }
 
-                       static WaitCallback TimerCaller = new WaitCallback (TimerCB);
                        static void TimerCB (object o)
                        {
                                Timer timer = (Timer) o;
-                               try {
-                                       timer.callback (timer.state);
-                               } catch {}
+                               timer.callback (timer.state);
                        }
 
                        void SchedulerThread ()
@@ -340,7 +337,7 @@ namespace System.Threading
                                                        list.RemoveAt (i);
                                                        count--;
                                                        i--;
-                                                       ThreadPool.UnsafeQueueUserWorkItem (TimerCaller, timer);
+                                                       ThreadPool.UnsafeQueueUserWorkItem (TimerCB, timer);
                                                        long period = timer.period_ms;
                                                        long due_time = timer.due_time_ms;
                                                        bool no_more = (period == -1 || ((period == 0 || period == Timeout.Infinite) && due_time != Timeout.Infinite));
index 240e0e215262803f4f0b2b8bc6351f59a5325ede..145319acdd0c38f3eaf999bc11e18e51fe28b3b4 100644 (file)
@@ -1,6 +1,11 @@
+//
 // AggregateException.cs
 //
+// Authors:
+//   Marek Safar (marek.safar@gmail.com)
+//
 // Copyright (c) 2008 Jérémie "Garuma" Laval
+// Copyright (C) 2013 Xamarin Inc (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -30,7 +35,6 @@ using System.Runtime.Serialization;
 
 namespace System
 {
-
        [System.SerializableAttribute]
        [System.Diagnostics.DebuggerDisplay ("Count = {InnerExceptions.Count}")]
        public class AggregateException : Exception
@@ -103,15 +107,15 @@ namespace System
                
                public void Handle (Func<Exception, bool> predicate)
                {
+                       if (predicate == null)
+                               throw new ArgumentNullException ("predicate");
+
                        List<Exception> failed = new List<Exception> ();
                        foreach (var e in innerExceptions) {
-                               try {
-                                       if (!predicate (e))
-                                               failed.Add (e);
-                               } catch {
-                                       throw new AggregateException (failed);
-                               }
+                               if (!predicate (e))
+                                       failed.Add (e);
                        }
+
                        if (failed.Count > 0)
                                throw new AggregateException (failed);
                }
index 99304d33dbc9e6b9cb983dfbff795f5d69bffcc9..5ebd4db216e38dbe783e4d6174a92d63f10acb41 100644 (file)
@@ -195,6 +195,9 @@ namespace System {
 
                public Evidence Evidence {
                        get {
+#if MONOTOUCH
+                               return null;
+#else
                                // if the host (runtime) hasn't provided it's own evidence...
                                if (_evidence == null) {
                                        // ... we will provide our own
@@ -215,6 +218,7 @@ namespace System {
                                        }
                                }
                                return new Evidence ((Evidence)_evidence);      // return a copy
+#endif
                        }
                }
 
index db82bdcf924154678b2d96f359d323b04c80f515..91654019f146e6f8dde8272b6ca8848ad29a540c 100644 (file)
@@ -105,14 +105,16 @@ namespace System
                                T value;
                                GetGenericValueImpl (i, out value);
                                if (item == null){
-                                       if (value == null)
+                                       if (value == null) {
                                                return true;
+                                       }
 
                                        continue;
                                }
-                               
-                               if (item.Equals (value))
+
+                               if (item.Equals (value)) {
                                        return true;
+                               }
                        }
 
                        return false;
@@ -2808,8 +2810,14 @@ namespace System
                                return;
                        
                        T [] a = new T [newSize];
-                       if (length != 0)
-                               FastCopy (arr, 0, a, 0, Math.Min (newSize, length));
+                       int tocopy = Math.Min (newSize, length);
+
+                       if (tocopy < 9) {
+                               for (int i = 0; i < tocopy; ++i)
+                                       UnsafeStore (a, i, UnsafeLoad (arr, i));
+                       } else {
+                               FastCopy (arr, 0, a, 0, tocopy);
+                       }
                        array = a;
                }
                
index d030979b7b254a7370594b72b8e1f1be936fdfe0..9fab011f165d9736f294281c85a56b66e652f295 100644 (file)
@@ -35,31 +35,18 @@ namespace System
        static
        class BitConverter
        {
-               static readonly bool SwappedWordsInDouble = DoubleWordsAreSwapped ();
                public static readonly bool IsLittleEndian = AmILittleEndian ();
 
                static unsafe bool AmILittleEndian ()
                {
                        // binary representations of 1.0:
-                       // big endian: 3f f0 00 00 00 00 00 00
-                       // little endian: 00 00 00 00 00 00 f0 3f
-                       // arm fpa little endian: 00 00 f0 3f 00 00 00 00
+                       // big endian:            3f f0 00 00 00 00 00 00
+                       // little endian:         00 00 00 00 00 00 f0 3f
                        double d = 1.0;
                        byte *b = (byte*)&d;
                        return (b [0] == 0);
                }
 
-               static unsafe bool DoubleWordsAreSwapped ()
-               {
-                       // binary representations of 1.0:
-                       // big endian: 3f f0 00 00 00 00 00 00
-                       // little endian: 00 00 00 00 00 00 f0 3f
-                       // arm fpa little endian: 00 00 f0 3f 00 00 00 00
-                       double d = 1.0;
-                       byte *b = (byte*)&d;
-                       return b [2] == 0xf0;
-               }
-
                public unsafe static long DoubleToInt64Bits (double value)
                {
                        return *(long *) &value;
@@ -70,11 +57,6 @@ namespace System
                        return *(double *) &value;
                }
 
-               internal static double InternalInt64BitsToDouble (long value)
-               {
-                       return SwappableToDouble (GetBytes (value), 0);
-               }
-               
                unsafe static byte[] GetBytes (byte *ptr, int count)
                {
                        byte [] ret = new byte [count];
@@ -136,21 +118,7 @@ namespace System
 
                unsafe public static byte[] GetBytes (double value)
                {
-                       if (SwappedWordsInDouble) {
-                               byte[] data = new byte [8];
-                               byte *p = (byte*)&value;
-                               data [0] = p [4];
-                               data [1] = p [5];
-                               data [2] = p [6];
-                               data [3] = p [7];
-                               data [4] = p [0];
-                               data [5] = p [1];
-                               data [6] = p [2];
-                               data [7] = p [3];
-                               return data;
-                       } else {
-                               return GetBytes ((byte *) &value, 8);
-                       }
+                       return GetBytes ((byte *) &value, 8);
                }
 
                unsafe static void PutBytes (byte *dst, byte[] src, int start_index, int count)
@@ -268,102 +236,11 @@ namespace System
                {
                        double ret;
 
-                       if (SwappedWordsInDouble) {
-                               byte* p = (byte*)&ret;
-                               if (value == null)
-                                       throw new ArgumentNullException ("value");
-
-                               if (startIndex < 0 || (startIndex > value.Length - 1))
-                                       throw new ArgumentOutOfRangeException ("startIndex", "Index was"
-                                               + " out of range. Must be non-negative and less than the"
-                                               + " size of the collection.");
-
-                               // avoid integer overflow (with large pos/neg start_index values)
-                               if (value.Length - 8 < startIndex)
-                                       throw new ArgumentException ("Destination array is not long"
-                                               + " enough to copy all the items in the collection."
-                                               + " Check array index and length.");
-
-                               p [0] = value [startIndex + 4];
-                               p [1] = value [startIndex + 5];
-                               p [2] = value [startIndex + 6];
-                               p [3] = value [startIndex + 7];
-                               p [4] = value [startIndex + 0];
-                               p [5] = value [startIndex + 1];
-                               p [6] = value [startIndex + 2];
-                               p [7] = value [startIndex + 3];
-
-                               return ret;
-                       }
-
                        PutBytes ((byte *) &ret, value, startIndex, 8);
 
                        return ret;
                }
 
-               unsafe internal static double SwappableToDouble (byte[] value, int startIndex)
-               {
-                       double ret;
-
-                       if (SwappedWordsInDouble) {
-                               byte* p = (byte*)&ret;
-                               if (value == null)
-                                       throw new ArgumentNullException ("value");
-
-                               if (startIndex < 0 || (startIndex > value.Length - 1))
-                                       throw new ArgumentOutOfRangeException ("startIndex", "Index was"
-                                               + " out of range. Must be non-negative and less than the"
-                                               + " size of the collection.");
-
-                               // avoid integer overflow (with large pos/neg start_index values)
-                               if (value.Length - 8 < startIndex)
-                                       throw new ArgumentException ("Destination array is not long"
-                                               + " enough to copy all the items in the collection."
-                                               + " Check array index and length.");
-
-                               p [0] = value [startIndex + 4];
-                               p [1] = value [startIndex + 5];
-                               p [2] = value [startIndex + 6];
-                               p [3] = value [startIndex + 7];
-                               p [4] = value [startIndex + 0];
-                               p [5] = value [startIndex + 1];
-                               p [6] = value [startIndex + 2];
-                               p [7] = value [startIndex + 3];
-
-                               return ret;
-                       } else if (!IsLittleEndian) {
-                               byte* p = (byte*)&ret;
-                               if (value == null)
-                                       throw new ArgumentNullException ("value");
-
-                               if (startIndex < 0 || (startIndex > value.Length - 1))
-                                       throw new ArgumentOutOfRangeException ("startIndex", "Index was"
-                                               + " out of range. Must be non-negative and less than the"
-                                               + " size of the collection.");
-
-                               // avoid integer overflow (with large pos/neg start_index values)
-                               if (value.Length - 8 < startIndex)
-                                       throw new ArgumentException ("Destination array is not long"
-                                               + " enough to copy all the items in the collection."
-                                               + " Check array index and length.");
-
-                               p [0] = value [startIndex + 7];
-                               p [1] = value [startIndex + 6];
-                               p [2] = value [startIndex + 5];
-                               p [3] = value [startIndex + 4];
-                               p [4] = value [startIndex + 3];
-                               p [5] = value [startIndex + 2];
-                               p [6] = value [startIndex + 1];
-                               p [7] = value [startIndex + 0];
-
-                               return ret;
-                       }
-
-                       PutBytes ((byte *) &ret, value, startIndex, 8);
-
-                       return ret;
-               }
-               
                public static string ToString (byte[] value)
                {
                        if (value == null)
index bfe6929b50032d6f7dc51d2ce922ff1de8462f84..696df9abdd581cd45240712b22e61ef741e8fdbc 100644 (file)
@@ -7,7 +7,7 @@
 //
 // (C) Ximian, Inc.  http://www.ximian.com
 // (C) 2004,2005 Novell, Inc. (http://www.novell.com)
-//
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -39,7 +39,7 @@ using System.Text;
 
 namespace System
 {
-       public static class Console
+       public static partial class Console
        {
 #if !NET_2_1
                private class WindowsConsole
@@ -94,12 +94,6 @@ namespace System
                private static TextWriter stderr;
                private static TextReader stdin;
 
-#if NET_4_5 && !MOBILE
-               static TextWriter console_stdout;
-               static TextWriter console_stderr;
-               static TextReader console_stdin;
-#endif
-
                static Console ()
                {
 #if NET_2_1
@@ -158,9 +152,11 @@ namespace System
                                stdin = new CStreamReader (OpenStandardInput (0), inputEncoding);
                        } else {
 #endif
+// FULL_AOT_RUNTIME is used (instead of MONOTOUCH) since we only want this code when running on 
+// iOS (simulator or devices) and *not* when running tools (e.g. btouch #12179) that needs to use 
+// the mscorlib.dll shipped with Xamarin.iOS
 #if FULL_AOT_RUNTIME
-                               Type nslogwriter = Type.GetType ("MonoTouch.Foundation.NSLogWriter, monotouch, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
-                               stdout = (TextWriter) Activator.CreateInstance (nslogwriter);
+                               stdout = new NSLogWriter ();
 #else
                                stdout = new UnexceptionalStreamWriter (OpenStandardOutput (0), outputEncoding);
                                ((StreamWriter)stdout).AutoFlush = true;
@@ -168,7 +164,7 @@ namespace System
                                stdout = TextWriter.Synchronized (stdout, true);
 
 #if FULL_AOT_RUNTIME
-                               stderr = (TextWriter) Activator.CreateInstance (nslogwriter);
+                               stderr = new NSLogWriter ();
 #else
                                stderr = new UnexceptionalStreamWriter (OpenStandardError (0), outputEncoding); 
                                ((StreamWriter)stderr).AutoFlush = true;
@@ -181,12 +177,6 @@ namespace System
                        }
 #endif
 
-#if NET_4_5 && !MOBILE
-                       console_stderr = stderr;
-                       console_stdout = stdout;
-                       console_stdin = stdin;
-#endif
-
 #if MONODROID
                        if (LogcatTextWriter.IsRunningOnAndroid ()) {
                                stdout = TextWriter.Synchronized (new LogcatTextWriter ("mono-stdout", stdout));
@@ -674,19 +664,19 @@ namespace System
 #if NET_4_5
                public static bool IsErrorRedirected {
                        get {
-                               return stderr != console_stderr || ConsoleDriver.IsErrorRedirected;
+                               return ConsoleDriver.IsErrorRedirected;
                        }
                }
 
                public static bool IsOutputRedirected {
                        get {
-                               return stdout != console_stdout || ConsoleDriver.IsOutputRedirected;
+                               return ConsoleDriver.IsOutputRedirected;
                        }
                }
 
                public static bool IsInputRedirected {
                        get {
-                               return stdin != console_stdin || ConsoleDriver.IsInputRedirected;
+                               return ConsoleDriver.IsInputRedirected;
                        }
                }
 #endif
diff --git a/mcs/class/corlib/System/Console.iOS.cs b/mcs/class/corlib/System/Console.iOS.cs
new file mode 100644 (file)
index 0000000..17983c5
--- /dev/null
@@ -0,0 +1,91 @@
+//
+// Helper for Console to allow indirect access to `stdout` using NSLog
+//
+// Authors:
+//     Sebastien Pouliot  <sebastien@xamarin.com>
+//
+// Copyright 2012-2013 Xamarin Inc. All rights reserved.
+//
+
+#if FULL_AOT_RUNTIME
+
+using System;
+using System.IO;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace System {
+
+       public static partial class Console {
+
+               class NSLogWriter : TextWriter {
+                       
+                       [DllImport ("__Internal", CharSet=CharSet.Unicode)]
+                       extern static void monotouch_log (string s);
+                       
+                       StringBuilder sb;
+                       
+                       public NSLogWriter ()
+                       {
+                               sb = new StringBuilder ();
+                       }
+                       
+                       public override System.Text.Encoding Encoding {
+                               get { return System.Text.Encoding.UTF8; }
+                       }
+                       
+                       public override void Flush ()
+                       {
+                               try {
+                                       monotouch_log (sb.ToString ());
+                                       sb.Length = 0;
+                               }
+                               catch (Exception) {
+                               }
+                       }
+                       
+                       // minimum to override - see http://msdn.microsoft.com/en-us/library/system.io.textwriter.aspx
+                       public override void Write (char value)
+                       {
+                               try {
+                                       sb.Append (value);
+                               }
+                               catch (Exception) {
+                               }
+                       }
+                       
+                       // optimization (to avoid concatening chars)
+                       public override void Write (string value)
+                       {
+                               try {
+                                       sb.Append (value);
+                                       if (value != null && value.Length >= CoreNewLine.Length && EndsWithNewLine (value))
+                                               Flush ();
+                               }
+                               catch (Exception) {
+                               }
+                       }
+                       
+                       bool EndsWithNewLine (string value)
+                       {
+                               for (int i = 0, v = value.Length - CoreNewLine.Length; i < CoreNewLine.Length; ++i, ++v) {
+                                       if (value [v] != CoreNewLine [i])
+                                               return false;
+                               }
+                               
+                               return true;
+                       }
+                       
+                       public override void WriteLine ()
+                       {
+                               try {
+                                       Flush ();
+                               }
+                               catch (Exception) {
+                               }
+                       }
+               }
+       }
+}
+
+#endif
\ No newline at end of file
index 8a2d99a5ee89878dfb2e16a6c0faae26a2308145..ae3b87120a745779d12f2d70e9725148f0215ae2 100644 (file)
@@ -168,7 +168,7 @@ namespace System {
                                throw new ArgumentOutOfRangeException ("offsetIn + length > array.Length");
 
                        // note: normally ToBase64Transform doesn't support multiple block processing
-                       byte[] outArr = ToBase64Transform.InternalTransformFinalBlock (inArray, offsetIn, length);
+                       byte[] outArr = Base64Helper.TransformFinalBlock (inArray, offsetIn, length);
                        
                        char[] cOutArr = new ASCIIEncoding ().GetChars (outArr);
                        
@@ -200,7 +200,7 @@ namespace System {
                                throw new ArgumentOutOfRangeException ("offset + length > array.Length");
                        
                        // note: normally ToBase64Transform doesn't support multiple block processing
-                       byte[] outArr = ToBase64Transform.InternalTransformFinalBlock (inArray, offset, length);
+                       byte[] outArr = Base64Helper.TransformFinalBlock (inArray, offset, length);
                        
                        return (new ASCIIEncoding ().GetString (outArr));
                }
@@ -230,7 +230,7 @@ namespace System {
                        if (options == Base64FormattingOptions.InsertLineBreaks)
                                return ToBase64StringBuilderWithLine (inArray, offset, length).ToString ();
                        else
-                               return Encoding.ASCII.GetString (ToBase64Transform.InternalTransformFinalBlock (inArray, offset, length));
+                               return Encoding.ASCII.GetString (Base64Helper.TransformFinalBlock (inArray, offset, length));
                }
 
                [ComVisible (false)]
@@ -256,7 +256,7 @@ namespace System {
                                sb.CopyTo (0, outArray, offsetOut, sb.Length);
                                return sb.Length;
                        } else {
-                               byte[] outArr = ToBase64Transform.InternalTransformFinalBlock (inArray, offsetIn, length);
+                               byte[] outArr = Base64Helper.TransformFinalBlock (inArray, offsetIn, length);
                        
                                char[] cOutArr = Encoding.ASCII.GetChars (outArr);
                        
@@ -278,7 +278,7 @@ namespace System {
                        int remainder;
                        int full = Math.DivRem (length, MaxBytesPerLine, out remainder);
                        for (int i = 0; i < full; i ++) {
-                               byte[] data = ToBase64Transform.InternalTransformFinalBlock (inArray, offset, MaxBytesPerLine);
+                               byte[] data = Base64Helper.TransformFinalBlock (inArray, offset, MaxBytesPerLine);
                                sb.AppendLine (Encoding.ASCII.GetString (data));
                                offset += MaxBytesPerLine;
                        }
@@ -287,7 +287,7 @@ namespace System {
                                int nll = Environment.NewLine.Length;
                                sb.Remove (sb.Length - nll, nll);
                        } else {
-                               byte[] data = ToBase64Transform.InternalTransformFinalBlock (inArray, offset, remainder);
+                               byte[] data = Base64Helper.TransformFinalBlock (inArray, offset, remainder);
                                sb.Append (Encoding.ASCII.GetString (data));
                        }
                        return sb;
index 086f35059acee6b698876d9e787eff1844bb7ff9..6185ae95621eff2b617da03ab1c601b6b522006c 100644 (file)
@@ -2003,10 +2003,9 @@ namespace System
                        if (format == null || format == String.Empty)
                                format = "G";
 
-                       bool useutc = false, use_invariant = false;
-
                        if (format.Length == 1) {
                                char fchar = format [0];
+                               bool use_invariant, useutc;
                                format = DateTimeUtils.GetStandardPattern (fchar, dfi, out useutc, out use_invariant);
                                if (fchar == 'U')
                                        return DateTimeUtils.ToString (ToUniversalTime (), format, dfi);
@@ -2014,6 +2013,9 @@ namespace System
 
                                if (format == null)
                                        throw new FormatException ("format is not one of the format specifier characters defined for DateTimeFormatInfo");
+
+                               if (use_invariant)
+                                       dfi = DateTimeFormatInfo.InvariantInfo;
                        }
 
                        // Don't convert UTC value. It just adds 'Z' for 
index 3def45668ade3752711a5dbc9e42987f04844e48..61bbe7a5db6a6d584aecfba759efba264e021f00 100644 (file)
@@ -184,13 +184,6 @@ namespace System {
                        // Add + 10 for cases like mmmm dddd
                        StringBuilder result = new StringBuilder (format.Length + 10);
 
-                       // For some cases, the output should not use culture dependent calendar
-                       DateTimeFormatInfo inv = DateTimeFormatInfo.InvariantInfo;
-                       if (format == inv.RFC1123Pattern)
-                               dfi = inv;
-                       else if (format == inv.UniversalSortableDateTimePattern)
-                               dfi = inv;
-
                        int i = 0;
                        bool saw_day_specifier = false;
 
index 7610e43dcba91223566c8c34a4e9a3b4a517e163..aa4301d01619b26f80c2b177722f16f625e3eee1 100644 (file)
@@ -429,10 +429,8 @@ namespace System
                        return MemberwiseClone ();
                }
 
-               public override bool Equals (object obj)
+               internal bool Compare (Delegate d)
                {
-                       Delegate d = obj as Delegate;
-                       
                        if (d == null)
                                return false;
                        
@@ -451,6 +449,11 @@ namespace System
                        return false;
                }
 
+               public override bool Equals (object obj)
+               {
+                       return Compare (obj as Delegate);
+               }
+
                public override int GetHashCode ()
                {
                        return method.GetHashCode () ^ (m_target != null ? m_target.GetHashCode () : 0);
@@ -565,7 +568,7 @@ namespace System
 
                internal bool IsTransparentProxy ()
                {
-#if MONOTOUCH
+#if DISABLE_REMOTING
                        return false;
 #else
                        return RemotingServices.IsTransparentProxy (m_target);
index 9018c9fc0bd6f66d751ea787016da6f6a634d5b5..c16e604d977e84bbfc257b129bb7956267fc3bdd 100644 (file)
@@ -663,7 +663,7 @@ namespace System
 
                public override string ToString ()
                {
-                       return ToString ("G");
+                       return Format (GetType (), Value, "G");
                }
 
                [Obsolete("Provider is ignored, just use ToString")]
@@ -763,24 +763,24 @@ namespace System
                private static string FormatSpecifier_X (Type enumType, object value, bool upper)
                {
                        switch (Type.GetTypeCode (enumType)) {
-                               case TypeCode.SByte:
-                                       return ((sbyte)value).ToString (upper ? "X2" : "x2");
-                               case TypeCode.Byte:
-                                       return ((byte)value).ToString (upper ? "X2" : "x2");
-                               case TypeCode.Int16:
-                                       return ((short)value).ToString (upper ? "X4" : "x4");
-                               case TypeCode.UInt16:
-                                       return ((ushort)value).ToString (upper ? "X4" : "x4");
-                               case TypeCode.Int32:
-                                       return ((int)value).ToString (upper ? "X8" : "x8");
-                               case TypeCode.UInt32:
-                                       return ((uint)value).ToString (upper ? "X8" : "x8");
-                               case TypeCode.Int64:
-                                       return ((long)value).ToString (upper ? "X16" : "x16");
-                               case TypeCode.UInt64:
-                                       return ((ulong)value).ToString (upper ? "X16" : "x16");
-                               default:
-                                       throw new Exception ("Invalid type code for enumeration.");
+                       case TypeCode.SByte:
+                               return NumberFormatter.NumberToString (upper ? "X2" : "x2", ((sbyte)value), null);
+                       case TypeCode.Byte:
+                               return NumberFormatter.NumberToString (upper ? "X2" : "x2", ((byte)value), null);
+                       case TypeCode.Int16:
+                               return NumberFormatter.NumberToString (upper ? "X4" : "x4", ((short)value), null);
+                       case TypeCode.UInt16:
+                               return NumberFormatter.NumberToString (upper ? "X4" : "x4", ((ushort)value), null);
+                       case TypeCode.Int32:
+                               return NumberFormatter.NumberToString (upper ? "X8" : "x8", ((int)value), null);
+                       case TypeCode.UInt32:
+                               return NumberFormatter.NumberToString (upper ? "X8" : "x8", ((uint)value), null);
+                       case TypeCode.Int64:
+                               return NumberFormatter.NumberToString (upper ? "X16" : "x16", ((long)value), null);
+                       case TypeCode.UInt64:
+                               return NumberFormatter.NumberToString (upper ? "X16" : "x16", ((ulong)value), null);
+                       default:
+                               throw new Exception ("Invalid type code for enumeration.");
                        }
                }
 
index b65e3b106964eae061f23d359a90f40f4fe516c4..d49cc8608631106776f3cbee57a76fadf0819a10 100644 (file)
@@ -461,31 +461,32 @@ namespace System {
 
                        int number = 0;
                        int nDigits = 0;
-                       bool decimalPointFound = false;
+                       int decimalPointPos = -1;
                        int digitValue;
                        char hexDigit;
-                       int exponent = 0;
                                
                        // Number stuff
-                       do {
+                       while (pos < s.Length) {
 
                                if (!ValidDigit (s [pos], AllowHexSpecifier)) {
                                        if (AllowThousands &&
                                            (FindOther (ref pos, s, nfi.NumberGroupSeparator)
                                                || FindOther (ref pos, s, nfi.CurrencyGroupSeparator)))
                                            continue;
-                                       else
-                                       if (!decimalPointFound && AllowDecimalPoint &&
+
+                                       if (AllowDecimalPoint && decimalPointPos < 0 &&
                                            (FindOther (ref pos, s, nfi.NumberDecimalSeparator)
                                                || FindOther (ref pos, s, nfi.CurrencyDecimalSeparator))) {
-                                           decimalPointFound = true;
+                                               decimalPointPos = nDigits;
                                            continue;
                                        }
 
                                        break;
                                }
+
+                               nDigits++;
+
                                if (AllowHexSpecifier) {
-                                       nDigits++;
                                        hexDigit = s [pos++];
                                        if (Char.IsDigit (hexDigit))
                                                digitValue = (int) (hexDigit - '0');
@@ -503,36 +504,20 @@ namespace System {
                                        } else {
                                                number = (int)checked (unumber * 16u + (uint)digitValue);
                                        }
+
+                                       continue;
                                }
-                               else if (decimalPointFound) {
-                                       nDigits++;
-                                       // Allows decimal point as long as it's only 
-                                       // followed by zeroes.
-                                       if (s [pos++] != '0') {
-                                               if (!tryParse)
-                                                       exc = new OverflowException ("Value too large or too " +
-                                                                       "small.");
-                                               return false;
-                                       }
-                               }
-                               else {
-                                       nDigits++;
-
-                                       try {
-                                               // Calculations done as negative
-                                               // (abs (MinValue) > abs (MaxValue))
-                                               number = checked (
-                                                       number * 10 - 
-                                                       (int) (s [pos++] - '0')
-                                                       );
-                                       } catch (OverflowException) {
-                                               if (!tryParse)
-                                                       exc = new OverflowException ("Value too large or too " +
-                                                                       "small.");
-                                               return false;
-                                       }
+
+                               try {
+                                       // Calculations done as negative
+                                       // (abs (MinValue) > abs (MaxValue))
+                                       number = checked (number * 10 - (int) (s [pos++] - '0'));
+                               } catch (OverflowException) {
+                                       if (!tryParse)
+                                               exc = new OverflowException ("Value too large or too small.");
+                                       return false;
                                }
-                       } while (pos < s.Length);
+                       }
 
                        // Post number stuff
                        if (nDigits == 0) {
@@ -541,6 +526,7 @@ namespace System {
                                return false;
                        }
 
+                       int exponent = 0;
                        if (AllowExponent)
                                if (FindExponent (ref pos, s, ref exponent, tryParse, ref exc) && exc != null)
                                        return false;
@@ -599,11 +585,28 @@ namespace System {
                                        number = checked (-number);
                        }
 
-                       // result *= 10^exponent
-                       if (exponent > 0) {
+                       if (decimalPointPos >= 0)
+                               exponent = exponent - nDigits + decimalPointPos;
+                       
+                       if (exponent < 0) {
+                               //
+                               // Any non-zero values after decimal point are not allowed
+                               //
+                               int remainder;
+                               number = Math.DivRem (number, (int) Math.Pow (10, -exponent), out remainder);
+                               if (remainder != 0) {
+                                       if (!tryParse)
+                                               exc = new OverflowException ("Value too large or too small.");
+                                       return false;
+                               }
+                       } else if (exponent > 0) {
+                               //
+                               // result *= 10^exponent
+                               //
                                // Reduce the risk of throwing an overflow exc
+                               //
                                double res = checked (Math.Pow (10, exponent) * number);
-                               if (res < Int32.MinValue || res > Int32.MaxValue) {
+                               if (res < MinValue || res > MaxValue) {
                                        if (!tryParse)
                                                exc = new OverflowException ("Value too large or too small.");
                                        return false;
index b96cfdb7f8a3625db7aaeecacb459e176f08c753..5b1019fdfd7b62416e9acb01822add98ab3b2e79 100644 (file)
@@ -293,31 +293,32 @@ namespace System {
                        
                        long number = 0;
                        int nDigits = 0;
-                       bool decimalPointFound = false;
+                       int decimalPointPos = -1;
                        int digitValue;
                        char hexDigit;
-                       int exponent = 0;
                                
                        // Number stuff
-                       do {
+                       while (pos < s.Length) {
 
                                if (!Int32.ValidDigit (s [pos], AllowHexSpecifier)) {
                                        if (AllowThousands &&
                                            (Int32.FindOther (ref pos, s, nfi.NumberGroupSeparator)
                                                || Int32.FindOther (ref pos, s, nfi.CurrencyGroupSeparator)))
                                            continue;
-                                       else
-                                       if (!decimalPointFound && AllowDecimalPoint &&
+
+                                       if (AllowDecimalPoint && decimalPointPos < 0 &&
                                            (Int32.FindOther (ref pos, s, nfi.NumberDecimalSeparator)
                                                || Int32.FindOther (ref pos, s, nfi.CurrencyDecimalSeparator))) {
-                                           decimalPointFound = true;
+                                           decimalPointPos = nDigits;
                                            continue;
                                        }
 
                                        break;
                                }
+
+                               nDigits++;
+
                                if (AllowHexSpecifier) {
-                                       nDigits++;
                                        hexDigit = s [pos++];
                                        if (Char.IsDigit (hexDigit))
                                                digitValue = (int) (hexDigit - '0');
@@ -336,36 +337,20 @@ namespace System {
                                                        exc = e;
                                                return false;
                                        }
-                               }
-                               else if (decimalPointFound) {
-                                       nDigits++;
-                                       // Allows decimal point as long as it's only 
-                                       // followed by zeroes.
-                                       if (s [pos++] != '0') {
-                                               if (!tryParse)
-                                                       exc = new OverflowException ("Value too large or too " +
-                                                                       "small.");
-                                               return false;
-                                       }
-                               }
-                               else {
-                                       nDigits++;
 
-                                       try {
-                                               // Calculations done as negative
-                                               // (abs (MinValue) > abs (MaxValue))
-                                               number = checked (
-                                                       number * 10 - 
-                                                       (long) (s [pos++] - '0')
-                                                       );
-                                       } catch (OverflowException) {
-                                               if (!tryParse)
-                                                       exc = new OverflowException ("Value too large or too " +
-                                                                       "small.");
-                                               return false;
-                                       }
+                                       continue;
                                }
-                       } while (pos < s.Length);
+
+                               try {
+                                       // Calculations done as negative
+                                       // (abs (MinValue) > abs (MaxValue))
+                                       number = checked (number * 10 - (long) (s [pos++] - '0'));
+                               } catch (OverflowException) {
+                                       if (!tryParse)
+                                               exc = new OverflowException ("Value too large or too small.");
+                                       return false;
+                               }                               
+                       }
 
                        // Post number stuff
                        if (nDigits == 0) {
@@ -374,6 +359,7 @@ namespace System {
                                return false;
                        }
 
+                       int exponent = 0;
                        if (AllowExponent)
                                if (Int32.FindExponent (ref pos, s, ref exponent, tryParse, ref exc) && exc != null)
                                        return false;
@@ -431,17 +417,34 @@ namespace System {
                                }
                        }
 
-                       // result *= 10^exponent
-                       if (exponent > 0) {
+                       if (decimalPointPos >= 0)
+                               exponent = exponent - nDigits + decimalPointPos;
+                       
+                       if (exponent < 0) {
+                               //
+                               // Any non-zero values after decimal point are not allowed
+                               //
+                               long remainder;
+                               number = Math.DivRem (number, (long) Math.Pow (10, -exponent), out remainder);
+                               if (remainder != 0) {
+                                       if (!tryParse)
+                                               exc = new OverflowException ("Value too large or too small.");
+                                       return false;
+                               }
+                       } else if (exponent > 0) {
+                               //
+                               // result *= 10^exponent
+                               //
                                // Reduce the risk of throwing an overflow exc
+                               //
                                double res = checked (Math.Pow (10, exponent) * number);
-                               if (res < Int32.MinValue || res > Int32.MaxValue) {
+                               if (res < MinValue || res > MaxValue) {
                                        if (!tryParse)
                                                exc = new OverflowException ("Value too large or too small.");
                                        return false;
                                }
 
-                               number = (long) res;
+                               number = (long)res;
                        }
 
                        result = number;
index 1b36f47d372556da378adc0b7f3946659d67d0d6..20c06387df145cf27b2ec5500c4ee79f3266d83e 100644 (file)
@@ -148,9 +148,9 @@ namespace System
                public string ToString (string format)
                {
                        if (Size == 4)
-                               return ((int) m_value).ToString (format);
+                               return ((int) m_value).ToString (format, null);
                        else
-                               return ((long) m_value).ToString (format);
+                               return ((long) m_value).ToString (format, null);
                }
 
                [ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
@@ -224,6 +224,12 @@ namespace System
                {
                        return (IntPtr) (unchecked (((byte *) pointer) - offset));
                }
+#else
+               /* Needed by Marshal.cs */
+               internal static IntPtr Add (IntPtr pointer, int offset)
+               {
+                       return (IntPtr) (unchecked (((byte *) pointer) + offset));
+               }
 #endif
        }
 }
index fe8be2651186ae32e9e7222d31287f2edd7a701e..ab7583652c2fd5cf6a75f28c27d4c4a79dd53722 100644 (file)
@@ -87,15 +87,20 @@ namespace System
                        MulticastDelegate d = obj as MulticastDelegate;
                        if (d == null)
                                return false;
-                       
-                       if (this.prev == null) {
-                               if (d.prev == null)
-                                       return true;
-                               else
-                                       return false;
-                       }
 
-                       return this.prev.Equals (d.prev);
+                       MulticastDelegate this_prev = this.prev;
+                       MulticastDelegate obj_prev = d.prev;
+
+                       do {
+                               if (this_prev == null)
+                                       return obj_prev == null;
+
+                               if (!this_prev.Compare (obj_prev))
+                                       return false;
+                               
+                               this_prev = this_prev.prev;
+                               obj_prev = obj_prev.prev;
+                       } while (true);
                }
 
                //
@@ -157,6 +162,7 @@ namespace System
                                clone = clone.prev;
                        }
 
+                       clone.SetMulticastInvoke ();
                        clone.prev = (MulticastDelegate)this.Clone ();
 
                        for (clone = clone.prev, orig = this.prev; orig != null; orig = orig.prev) {
index 8cda5e437f9a01cd5cbeb8df538d6b36b1c63830..4f948aaf38bdb485bf3d395827b4862a255256a5 100644 (file)
@@ -1956,19 +1956,19 @@ namespace System
                                int[] lens = new int [3];
                                int index = 0;
                                int lastPos = 0;
-                               char literal = '\0';
+                               bool quoted = false;
+
                                for (int i = 0; i < format.Length; i++) {
                                        char c = format [i];
 
-                                       if (c == literal || (literal == '\0' && (c == '\"' || c == '\''))) {
-                                               if (literal == '\0')
-                                                       literal = c;
-                                               else
-                                                       literal = '\0';
+                                       if (c == '\"' || c == '\'') {
+                                               if (i == 0 || format [i - 1] != '\\')
+                                                       quoted = !quoted;
+
                                                continue;
                                        }
 
-                                       if (literal == '\0' && format [i] == ';' && (i == 0 || format [i - 1] != '\\')) {
+                                       if (c == ';' && !quoted && (i == 0 || format [i - 1] != '\\')) {
                                                lens [index++] = i - lastPos;
                                                lastPos = i + 1;
                                                if (index == 3)
index 937b9214582ab5fdb3638cbe1c8a80dd9a31b47d..4c8ea8d7481cd4f1a3b6d8f140f2aff79fe1d7f2 100644 (file)
@@ -1278,11 +1278,11 @@ namespace System
                {
                        if (value == null)
                                throw new ArgumentNullException ("value");
-                       if (value.length == 0)
+                       if (value.Length == 0)
                                return 0;
                        if (this.length == 0)
                                return -1;
-                       return CultureInfo.CurrentCulture.CompareInfo.IndexOf (this, value, 0, length, CompareOptions.Ordinal);
+                       return CultureInfo.CurrentCulture.CompareInfo.IndexOf (this, value, 0, length, CompareOptions.None);
                }
 
                public int IndexOf (String value, int startIndex)
@@ -1516,7 +1516,10 @@ namespace System
 
                public bool Contains (String value)
                {
-                       return IndexOf (value) != -1;
+                       if (value == null)
+                               throw new ArgumentNullException ("value");
+
+                       return IndexOfOrdinalUnchecked (value, 0, Length) != -1;
                }
 
                public static bool IsNullOrEmpty (String value)
@@ -3081,6 +3084,43 @@ namespace System
                        memcpy4 (dest, src, size);
                }
 
+               /* Used by the runtime */
+               internal static unsafe void bzero (byte *dest, int len) {
+                       memset (dest, 0, len);
+               }
+
+               internal static unsafe void bzero_aligned_1 (byte *dest, int len) {
+                       ((byte*)dest) [0] = 0;
+               }
+
+               internal static unsafe void bzero_aligned_2 (byte *dest, int len) {
+                       ((short*)dest) [0] = 0;
+               }
+
+               internal static unsafe void bzero_aligned_4 (byte *dest, int len) {
+                       ((int*)dest) [0] = 0;
+               }
+
+               internal static unsafe void bzero_aligned_8 (byte *dest, int len) {
+                       ((long*)dest) [0] = 0;
+               }
+
+               internal static unsafe void memcpy_aligned_1 (byte *dest, byte *src, int size) {
+                       ((byte*)dest) [0] = ((byte*)src) [0];
+               }                       
+
+               internal static unsafe void memcpy_aligned_2 (byte *dest, byte *src, int size) {
+                       ((short*)dest) [0] = ((short*)src) [0];
+               }                       
+
+               internal static unsafe void memcpy_aligned_4 (byte *dest, byte *src, int size) {
+                       ((int*)dest) [0] = ((int*)src) [0];
+               }                       
+
+               internal static unsafe void memcpy_aligned_8 (byte *dest, byte *src, int size) {
+                       ((long*)dest) [0] = ((long*)src) [0];
+               }                       
+
                internal static unsafe void CharCopy (char *dest, char *src, int count) {
                        // Same rules as for memcpy, but with the premise that 
                        // chars can only be aligned to even addresses if their
index 67d8c897a12863abd274674bef533a07b58c5494..e448a889d0e7337d4e1034b17842bc263e9655ff 100644 (file)
@@ -439,7 +439,7 @@ namespace System
                {
                        result = TimeSpan.Zero;
 
-                       if (formats == null || formats.Length == 0)
+                       if (input == null || formats == null || formats.Length == 0)
                                return false;
 
                        Parser p = new Parser (input, formatProvider);
index a45c3948878e5cf5c9cfc0ff2d04c3bc7ef6a8e3..1b6a28b7541ad9945bba7dfa3b227d7419e0211c 100644 (file)
@@ -1431,6 +1431,12 @@ namespace System {
                        return FullName;
                }
 
+               internal static bool ShouldPrintFullName (Type type)
+               {
+                       return type.IsGenericType || (type.IsClass && (!type.IsPointer ||
+                               (!type.GetElementType ().IsPrimitive && !type.GetElementType ().IsNested)));
+               }
+
                internal virtual Type InternalResolve ()
                {
                        return UnderlyingSystemType;
index 819970e7568bd022de145bd34f5a6681938966be..7772d870e615e703e7c9e1ad88045ee77cf9ee29 100644 (file)
@@ -271,32 +271,33 @@ namespace System
 
                        uint number = 0;
                        int nDigits = 0;
-                       bool decimalPointFound = false;
+                       int decimalPointPos = -1;
                        uint digitValue;
                        char hexDigit;
-                       int exponent = 0;
 
                        // Number stuff
                        // Just the same as Int32, but this one adds instead of substract
-                       do {
+                       while (pos < s.Length) {
 
                                if (!Int32.ValidDigit (s [pos], AllowHexSpecifier)) {
                                        if (AllowThousands &&
                                            (Int32.FindOther (ref pos, s, nfi.NumberGroupSeparator)
                                                || Int32.FindOther (ref pos, s, nfi.CurrencyGroupSeparator)))
                                                continue;
-                                       else
-                                               if (!decimalPointFound && AllowDecimalPoint &&
+                                       
+                                       if (AllowDecimalPoint && decimalPointPos < 0 &&
                                            (Int32.FindOther (ref pos, s, nfi.NumberDecimalSeparator)
                                                || Int32.FindOther (ref pos, s, nfi.CurrencyDecimalSeparator))) {
-                                                       decimalPointFound = true;
+                                                       decimalPointPos = nDigits;
                                                        continue;
                                                }
 
                                        break;
                                }
+
+                               nDigits++;
+
                                if (AllowHexSpecifier) {
-                                       nDigits++;
                                        hexDigit = s [pos++];
                                        if (Char.IsDigit (hexDigit))
                                                digitValue = (uint) (hexDigit - '0');
@@ -313,30 +314,18 @@ namespace System
                                                number = (uint) l;
                                        } else
                                                number = checked (number * 16 + digitValue);
+
+                                       continue;
                                }
-                               else if (decimalPointFound) {
-                                       nDigits++;
-                                       // Allows decimal point as long as it's only 
-                                       // followed by zeroes.
-                                       if (s [pos++] != '0') {
-                                               if (!tryParse)
-                                                       exc = new OverflowException (Locale.GetText ("Value too large or too small."));
-                                               return false;
-                                       }
-                               }
-                               else {
-                                       nDigits++;
 
-                                       try {
-                                               number = checked (number * 10 + (uint) (s [pos++] - '0'));
-                                       }
-                                       catch (OverflowException) {
-                                               if (!tryParse)
-                                                       exc = new OverflowException (Locale.GetText ("Value too large or too small."));
-                                               return false;
-                                       }
+                               try {
+                                       number = checked (number * 10 + (uint) (s [pos++] - '0'));
+                               } catch (OverflowException) {
+                                       if (!tryParse)
+                                               exc = new OverflowException (Locale.GetText ("Value too large or too small."));
+                                       return false;
                                }
-                       } while (pos < s.Length);
+                       }
 
                        // Post number stuff
                        if (nDigits == 0) {
@@ -345,6 +334,7 @@ namespace System
                                return false;
                        }
 
+                       int exponent = 0;
                        if (AllowExponent)
                                if (Int32.FindExponent (ref pos, s, ref exponent, tryParse, ref exc) && exc != null)
                                        return false;
@@ -400,21 +390,37 @@ namespace System
                                return false;
                        }
 
-                       // result *= 10^exponent
-                       if (exponent > 0) {
+                       if (decimalPointPos >= 0)
+                               exponent = exponent - nDigits + decimalPointPos;
+                       
+                       if (exponent < 0) {
+                               //
+                               // Any non-zero values after decimal point are not allowed
+                               //
+                               long remainder;
+                               number = (uint) Math.DivRem (number, (int) Math.Pow (10, -exponent), out remainder);
+                               if (remainder != 0) {
+                                       if (!tryParse)
+                                               exc = new OverflowException ("Value too large or too small.");
+                                       return false;
+                               }
+                       } else if (exponent > 0) {
+                               //
+                               // result *= 10^exponent
+                               //
                                // Reduce the risk of throwing an overflow exc
+                               //
                                double res = checked (Math.Pow (10, exponent) * number);
-                               if (res < Int32.MinValue || res > Int32.MaxValue) {
+                               if (res < MinValue || res > MaxValue) {
                                        if (!tryParse)
                                                exc = new OverflowException ("Value too large or too small.");
                                        return false;
                                }
 
-                               number = (uint) res;
+                               number = (uint)res;
                        }
 
                        result = number;
-
                        return true;
                }
 
index 922e763e0a681de5135eaf98269bb3b0af27a12f..464e23998c1b9b68b17f129d9a1009c881bea08c 100644 (file)
@@ -294,32 +294,33 @@ namespace System
 
                        ulong number = 0;
                        int nDigits = 0;
-                       bool decimalPointFound = false;
+                       int decimalPointPos = -1;
                        ulong digitValue;
                        char hexDigit;
-                       int exponent = 0;
 
                        // Number stuff
                        // Just the same as Int32, but this one adds instead of substract
-                       do {
+                       while (pos < s.Length) {
 
                                if (!Int32.ValidDigit (s [pos], AllowHexSpecifier)) {
                                        if (AllowThousands &&
                                            (Int32.FindOther (ref pos, s, nfi.NumberGroupSeparator)
                                                || Int32.FindOther (ref pos, s, nfi.CurrencyGroupSeparator)))
                                                continue;
-                                       else
-                                               if (!decimalPointFound && AllowDecimalPoint && 
+                                       
+                                       if (AllowDecimalPoint && decimalPointPos < 0 &&
                                            (Int32.FindOther (ref pos, s, nfi.NumberDecimalSeparator)
                                                || Int32.FindOther (ref pos, s, nfi.CurrencyDecimalSeparator))) {
-                                                       decimalPointFound = true;
+                                                       decimalPointPos = nDigits;
                                                        continue;
                                                }
 
                                        break;
                                }
+
+                               nDigits++;
+
                                if (AllowHexSpecifier) {
-                                       nDigits++;
                                        hexDigit = s [pos++];
                                        if (Char.IsDigit (hexDigit))
                                                digitValue = (ulong) (hexDigit - '0');
@@ -338,30 +339,18 @@ namespace System
                                                        return false;
                                        } else
                                                number = checked (number * 16 + digitValue);
+
+                                       continue;
                                }
-                               else if (decimalPointFound) {
-                                       nDigits++;
-                                       // Allows decimal point as long as it's only 
-                                       // followed by zeroes.
-                                       if (s [pos++] != '0') {
-                                               if (!tryParse)
-                                                       exc = new OverflowException (Locale.GetText ("Value too large or too small."));
-                                               return false;
-                                       }
-                               }
-                               else {
-                                       nDigits++;
 
-                                       try {
-                                               number = checked (number * 10 + (ulong) (s [pos++] - '0'));
-                                       }
-                                       catch (OverflowException) {
-                                               if (!tryParse)
-                                                       exc = new OverflowException (Locale.GetText ("Value too large or too small."));
-                                               return false;
-                                       }
+                               try {
+                                       number = checked (number * 10 + (ulong) (s [pos++] - '0'));
+                               } catch (OverflowException) {
+                                       if (!tryParse)
+                                               exc = new OverflowException (Locale.GetText ("Value too large or too small."));
+                                       return false;
                                }
-                       } while (pos < s.Length);
+                       }
 
                        // Post number stuff
                        if (nDigits == 0) {
@@ -370,6 +359,7 @@ namespace System
                                return false;
                        }
 
+                       int exponent = 0;
                        if (AllowExponent)
                                if (Int32.FindExponent (ref pos, s, ref exponent, tryParse, ref exc) && exc != null)
                                        return false;
@@ -425,17 +415,34 @@ namespace System
                                return false;
                        }
 
-                       // result *= 10^exponent
-                       if (exponent > 0) {
+                       if (decimalPointPos >= 0)
+                               exponent = exponent - nDigits + decimalPointPos;
+                       
+                       if (exponent < 0) {
+                               //
+                               // Any non-zero values after decimal point are not allowed
+                               //
+                               long remainder;
+                               number = (ulong) Math.DivRem ((long) number, (long) Math.Pow (10, -exponent), out remainder);
+                               if (remainder != 0) {
+                                       if (!tryParse)
+                                               exc = new OverflowException ("Value too large or too small.");
+                                       return false;
+                               }
+                       } else if (exponent > 0) {
+                               //
+                               // result *= 10^exponent
+                               //
                                // Reduce the risk of throwing an overflow exc
+                               //
                                double res = checked (Math.Pow (10, exponent) * number);
-                               if (res < Int32.MinValue || res > Int32.MaxValue) {
+                               if (res < MinValue || res > MaxValue) {
                                        if (!tryParse)
                                                exc = new OverflowException ("Value too large or too small.");
                                        return false;
                                }
 
-                               number = (ulong) res;
+                               number = (ulong)res;
                        }
 
                        result = number;
index b531d1725f59f34e35104740d76c30af3669fb15..3cc7b18dfb8c1bbc02016ba4254fb2e24759db9c 100644 (file)
@@ -205,6 +205,62 @@ namespace System
                        }
                }
 
+               public static object GetValueAt(int vt, IntPtr addr)
+               {
+                       object obj = null;
+                       switch ((VarEnum)vt)
+                       {
+                       case VarEnum.VT_I1:
+                               obj = (sbyte)Marshal.ReadByte(addr);
+                               break;
+                       case VarEnum.VT_UI1:
+                               obj = Marshal.ReadByte(addr);
+                               break;
+                       case VarEnum.VT_I2:
+                               obj = Marshal.ReadInt16(addr);
+                               break;
+                       case VarEnum.VT_UI2:
+                               obj = (ushort)Marshal.ReadInt16(addr);
+                               break;
+                       case VarEnum.VT_I4:
+                               obj = Marshal.ReadInt32(addr);
+                               break;
+                       case VarEnum.VT_UI4:
+                               obj = (uint)Marshal.ReadInt32(addr);
+                               break;
+                       case VarEnum.VT_I8:
+                               obj = Marshal.ReadInt64(addr);
+                               break;
+                       case VarEnum.VT_UI8:
+                               obj = (ulong)Marshal.ReadInt64(addr);
+                               break;
+                       case VarEnum.VT_R4:
+                               obj = Marshal.PtrToStructure(addr, typeof(float));
+                               break;
+                       case VarEnum.VT_R8:
+                               obj = Marshal.PtrToStructure(addr, typeof(double));
+                               break;
+                       case VarEnum.VT_BOOL:
+                               obj = !(Marshal.ReadInt16(addr) == 0);
+                               break;
+                       case VarEnum.VT_BSTR:
+                               obj = Marshal.PtrToStringBSTR(Marshal.ReadIntPtr(addr));
+                               break;
+// GetObjectForIUnknown is excluded from Marshal using FULL_AOT_RUNTIME
+#if !MONOTOUCH
+                       case VarEnum.VT_UNKNOWN:
+                       case VarEnum.VT_DISPATCH:
+                       {
+                               IntPtr ifaceaddr = Marshal.ReadIntPtr(addr);
+                               if (ifaceaddr != IntPtr.Zero)
+                                       obj = Marshal.GetObjectForIUnknown(ifaceaddr);
+                               break;
+                       }
+#endif
+                       }
+                       return obj;
+               }
+
                public object GetValue() {
                        object obj = null;
                        switch ((VarEnum)vt)
@@ -252,6 +308,13 @@ namespace System
                                        obj = Marshal.GetObjectForIUnknown(pdispVal);
                                break;
 #endif
+                       default:
+                               if (((VarEnum)vt & VarEnum.VT_BYREF) == VarEnum.VT_BYREF &&
+                                       pdispVal != IntPtr.Zero)
+                               {
+                                       obj = GetValueAt(vt & ~(short)VarEnum.VT_BYREF, pdispVal);
+                               }
+                               break;
                        }
                        return obj;
                }
diff --git a/mcs/class/corlib/Test/System.Collections/StructuralComparisonsTest.cs b/mcs/class/corlib/Test/System.Collections/StructuralComparisonsTest.cs
new file mode 100644 (file)
index 0000000..38c9ace
--- /dev/null
@@ -0,0 +1,55 @@
+//
+// StructuralComparisonsTest.cs
+//
+// Authors:
+//     Marek Safar  <marek.safar@gmail.com>
+//
+// Copyright (C) 2013 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_0
+
+using System.Collections;
+using NUnit.Framework;
+
+namespace MonoTests.System.Collections
+{
+       [TestFixture]
+       public class StructuralComparisonsTest
+       {
+               [Test]
+               public void EqualsTest ()
+               {
+                       int[] a1 = new[] { 9, 1, 3, 4 };
+                       int[] a2 = new[] { 9, 1, 3, 4 };
+
+                       Assert.IsTrue (StructuralComparisons.StructuralEqualityComparer.Equals (a1, a2), "#1");
+                       Assert.IsFalse (StructuralComparisons.StructuralEqualityComparer.Equals (null, a2), "#2");
+                       Assert.IsFalse (StructuralComparisons.StructuralEqualityComparer.Equals (a1, null), "#3");
+                       Assert.IsTrue (StructuralComparisons.StructuralEqualityComparer.Equals (null, null), "#4");
+                       Assert.IsTrue (StructuralComparisons.StructuralEqualityComparer.Equals (4, 4), "#5");
+                       Assert.IsFalse (StructuralComparisons.StructuralEqualityComparer.Equals (4, 5), "#6");
+               }
+       }
+}
+
+#endif
\ No newline at end of file
index d84de5b2a070a1a4bcfe256a81b02e3580ad180b..4a6ac7db8a086cc2b23c5206f3044aabf1d2d212 100644 (file)
@@ -568,6 +568,8 @@ namespace MonoTests.System.Globalization
                {
                        Assert.AreEqual (31748, new CultureInfo ("zh-Hant").LCID);
                        Assert.AreEqual (31748, CultureInfo.GetCultureInfo ("zh-Hant").LCID);
+                       Assert.AreEqual (31748, new CultureInfo ("zh-CHT").LCID);
+                       Assert.AreEqual (31748, new CultureInfo ("zh-CHT").Parent.LCID);
                }
                
                [Test]
index 0c6a8e247cb1b598d9ed6a5cfe279bcfb51ceaed..d3d388f6703af8d8e67d163e1b08b6f5de09c8e3 100644 (file)
@@ -121,6 +121,14 @@ namespace MonoTests.System.Globalization
                {
                        var dfi = new CultureInfo ("cs-CZ").DateTimeFormat;
                        Assert.AreEqual ("ledna", dfi.MonthGenitiveNames[0], "#1");
+                       Assert.AreEqual ("1.", dfi.AbbreviatedMonthGenitiveNames[0], "#2");
+               }
+
+               [Test]
+               public void QuoteInValue ()
+               {
+                       var culture = new CultureInfo("mt-MT");
+                       Assert.AreEqual ("dddd, d' ta\\' 'MMMM yyyy", culture.DateTimeFormat.LongDatePattern);
                }
 
 #if !TARGET_JVM
index b21057561e57f33a284f107c28d1c3f115584ad8..b0b1a041da8b987aa66b86e335d5b7556ceee114 100644 (file)
@@ -61,6 +61,8 @@ namespace MonoTests.System.Globalization
                }
                
                [Test]
+               // This can fail on systems where CultureInfo.CurrentCulture==null
+               [Category ("NotWorking")]
                public void CurrentRegion ()
                {
                        Assert.IsNotNull (RegionInfo.CurrentRegion, "CurrentRegion");
index 716a01390020af7ea1615c39497129e8b751d843..dd17fc3c95fba962daaf16b132d173ddd093c7d4 100644 (file)
 //\r
 \r
 using System;\r
+using System.Collections.Generic;\r
 using System.Diagnostics;\r
 using System.Globalization;\r
 using System.IO;\r
 using System.Text;\r
 using System.Threading;\r
 \r
+#if !MONOTOUCH\r
+using Mono.Unix;\r
+#endif\r
 using NUnit.Framework;\r
 \r
 namespace MonoTests.System.IO\r
@@ -43,7 +47,53 @@ public class DirectoryTest
                if (Directory.Exists (TempFolder))\r
                        Directory.Delete (TempFolder, true);\r
        }\r
+#if !MONOTOUCH\r
+       [Test] //BXC #12461\r
+       public void EnumerateFilesListSymlinks ()\r
+       {\r
+               if (!RunningOnUnix)\r
+                       return;\r
 \r
+               var afile = Path.Combine (TempFolder, "afile.src");\r
+               var bfile = Path.Combine (TempFolder, "bfile.src");\r
+               var cdir = Path.Combine (TempFolder, "cdir.src");\r
+\r
+               File.AppendAllText (afile, "hello");\r
+               var info = new UnixFileInfo (afile);\r
+               info.CreateSymbolicLink (bfile);\r
+               Directory.CreateDirectory (cdir);\r
+\r
+               var files0 = Directory.GetFiles (TempFolder, "*.src");\r
+               Array.Sort (files0);\r
+               Assert.AreEqual (2, files0.Length, "#1");\r
+               Assert.AreEqual (afile, files0 [0], "#2");\r
+               Assert.AreEqual (bfile, files0 [1], "#3");\r
+\r
+#if NET_4_0\r
+               var files1 = new List<string> (Directory.EnumerateFiles (TempFolder, "*.src")).ToArray ();\r
+               Array.Sort (files1);\r
+               Assert.AreEqual (2, files1.Length, "#1.b");\r
+               Assert.AreEqual (afile, files1 [0], "#2.b");\r
+               Assert.AreEqual (bfile, files1 [1], "#3.b");\r
+#endif\r
+\r
+               var files2 = Directory.GetFileSystemEntries (TempFolder, "*.src");\r
+               Array.Sort (files2);\r
+               Assert.AreEqual (3, files2.Length, "#1.c");\r
+               Assert.AreEqual (afile, files2 [0], "#2.c");\r
+               Assert.AreEqual (bfile, files2 [1], "#3.c");\r
+               Assert.AreEqual (cdir, files2 [2], "#4.c");\r
+\r
+#if NET_4_0\r
+               var files3 = new List<string> (Directory.EnumerateFileSystemEntries (TempFolder, "*.src")).ToArray ();\r
+               Array.Sort (files3);\r
+               Assert.AreEqual (3, files3.Length, "#1.d");\r
+               Assert.AreEqual (afile, files3 [0], "#2.d");\r
+               Assert.AreEqual (bfile, files3 [1], "#3.d");\r
+               Assert.AreEqual (cdir, files3 [2], "#4.d");\r
+#endif\r
+       }\r
+#endif\r
        [Test]\r
        public void CreateDirectory ()\r
        {\r
index a56c4f820c0f32c3622484ce75a828e201c37db7..51d352d0dd8a944b63eed2820537967feb06acad 100644 (file)
@@ -15,6 +15,7 @@ using System;
 using System.IO;
 using System.Runtime.InteropServices;
 using System.Text;
+using System.Threading;
 
 namespace MonoTests.System.IO
 {
@@ -1515,6 +1516,35 @@ namespace MonoTests.System.IO
                        stream.EndWrite (stream.BeginWrite (new byte[8], 0, 8, null, null));
                }
 
+               static IAsyncResult DoBeginWrite(Stream stream, ManualResetEvent mre, byte[] RandomBuffer)
+               {
+                       return stream.BeginWrite (RandomBuffer, 0, RandomBuffer.Length, ar => {
+                               stream.EndWrite (ar);
+
+                               // we don't supply an ManualResetEvent so this will throw an NRE on the second run
+                               // which nunit-console will ignore (but other test runners don't like that)
+                               if (mre == null)
+                                       return;
+
+                               DoBeginWrite (stream, null, RandomBuffer).AsyncWaitHandle.WaitOne ();
+                               mre.Set ();
+                       }, null);
+               }
+
+               [Test]
+               public void BeginWrite_Recursive ()
+               {
+                       string path = TempFolder + Path.DirectorySeparatorChar + "temp";
+                       DeleteFile (path);
+       
+                       using (FileStream stream = new FileStream (path, FileMode.OpenOrCreate, FileAccess.Write)) {
+                               var mre = new ManualResetEvent (false); 
+                               var RandomBuffer = new byte[1024];                      
+                               DoBeginWrite (stream, mre, RandomBuffer);
+                               Assert.IsTrue (mre.WaitOne (5000), "#1");
+                       }
+               }
+
                [Test]
                [Category("TargetJvmNotSupported")] // File locking not supported for TARGET_JVM
                [ExpectedException (typeof (ObjectDisposedException))]
index 582ed7a9dd649f28012e4080d394410496408a2a..661cffc18c61370723ed9b5137ce483534128833 100644 (file)
@@ -1076,6 +1076,28 @@ namespace MonoTests.System.IO
                Assert.AreEqual (1, ms.Length);
        }
 
+       [Test]
+       public void WriteAsync ()
+       {
+               var m = new MockStream(true, false, true);
+               var w = new StreamWriter (m);
+
+               var t = w.WriteAsync ("v");
+               Assert.IsTrue (t.Wait (1000), "#1");
+
+               t = w.WriteAsync ((string) null);
+               Assert.IsTrue (t.Wait (1000), "#2");
+
+               t = w.WriteLineAsync ("line");
+               Assert.IsTrue (t.Wait (1000), "#3");
+
+               t = w.WriteLineAsync ((string) null);
+               Assert.IsTrue (t.Wait (1000), "#4");
+
+               t = w.WriteLineAsync ('c');
+               Assert.IsTrue (t.Wait (1000), "#5");
+       }
+
 #endif
 
        // TODO - Write - test errors, functionality tested in TestFlush.
index 064cd9c76c93cb63e71c559192c754897bc45551..a0859fff295a4f6148d59578ecc3de09599e994c 100644 (file)
@@ -771,6 +771,18 @@ namespace MonoTests.System.Reflection
                }
 #endif
 
+
+               public int? Bug12856 ()
+               {
+                       return null;
+               }
+
+               [Test] //Bug #12856
+               public void MethodToStringShouldPrintFullNameOfGenericStructs ()
+               {
+                       var m = GetType ().GetMethod ("Bug12856");
+                       Assert.AreEqual ("System.Nullable`1[System.Int32] Bug12856()", m.ToString (), "#1");
+               }
        }
        
 #if NET_2_0
index 54368c6cd45df8b8e18fefc43b3b4cb40848f0f5..3bee7e8c55fadcca660a076085fd52fe1f53bab7 100644 (file)
@@ -402,7 +402,7 @@ namespace MonoTests.System.Reflection
                        }
                }
 #endif
-#if NET_2_0
+
                public class A<T>
                {
                        public string Property {
@@ -438,8 +438,13 @@ namespace MonoTests.System.Reflection
                        PropertyInfo property = type.GetProperty ("Property");
                        Assert.AreEqual (typeof (string).FullName, property.GetValue (instance, null));
                }
-#endif
 
+               [Test]
+               public void ToStringTest ()
+               {
+                       var pa = typeof (TestC).GetProperty ("Item");
+                       Assert.AreEqual ("Int32 Item [System.Double[]]", pa.ToString ());
+               }
 
                static bool HasAttribute (object [] attrs, Type attributeType)
                {
index 3c8c88e15adde16944fd25a76efdbf9fb36feacd..52409b4f188f443b82bd0054cf54c07334341f05 100644 (file)
@@ -58,21 +58,6 @@ namespace MonoTests.System.Runtime.CompilerServices
                        }
                }
 
-               [Test]
-               public void GetResultNotCompleted ()
-               {
-                       TaskAwaiter awaiter;
-
-                       var task = new Task (() => { });
-                       awaiter = task.GetAwaiter ();
-
-                       try {
-                               awaiter.GetResult ();
-                               Assert.Fail ();
-                       } catch (InvalidOperationException) {
-                       }
-               }
-
                [Test]
                public void GetResultCanceled ()
                {
index 6ea7651e07918275347808ed9184e8478650e246..0980b4ac3aec500ba49d190bcf911e3b1ccda47f 100644 (file)
@@ -88,21 +88,6 @@ namespace MonoTests.System.Runtime.CompilerServices
                        }
                }
 
-               [Test]
-               public void GetResultNotCompleted ()
-               {
-                       TaskAwaiter<int> awaiter;
-
-                       task = new Task<int> (() => 1);
-                       awaiter = task.GetAwaiter ();
-
-                       try {
-                               awaiter.GetResult ();
-                               Assert.Fail ();
-                       } catch (InvalidOperationException) {
-                       }
-               }
-
                [Test]
                public void GetResultCanceled ()
                {
index 0a3289f6d24e1d57e85de0221f781b1028a2caec..cc53f6a8d99a221337ae91ef80686c61ed619ceb 100644 (file)
@@ -91,13 +91,21 @@ namespace MonoTests.System.Runtime.CompilerServices
                }
 
                YieldAwaitable.YieldAwaiter a;
+               SynchronizationContext sc;
 
                [SetUp]
                public void Setup ()
                {
+                       sc = SynchronizationContext.Current;
                        a = new YieldAwaitable ().GetAwaiter ();
                }
 
+               [TearDown]
+               public void TearDown ()
+               {
+                       SynchronizationContext.SetSynchronizationContext (sc);
+               }
+
                [Test]
                public void IsCompleted ()
                {
@@ -120,6 +128,8 @@ namespace MonoTests.System.Runtime.CompilerServices
                public void OnCompleted_2 ()
                {
                        TaskScheduler scheduler = null;
+                       SynchronizationContext.SetSynchronizationContext (null);
+
                        var mre = new ManualResetEvent (false);
 
                        a.OnCompleted (() => {
@@ -136,6 +146,7 @@ namespace MonoTests.System.Runtime.CompilerServices
                {
                        var scheduler = new MyScheduler ();
                        TaskScheduler ran_scheduler = null;
+                       SynchronizationContext.SetSynchronizationContext (null);                        
 
                        var t = Task.Factory.StartNew (() => {
                                var mre = new ManualResetEvent (false);
@@ -160,20 +171,13 @@ namespace MonoTests.System.Runtime.CompilerServices
                        var mre = new ManualResetEvent (false);
 
                        var context = new MyContext ();
-                       var old = SynchronizationContext.Current;                       
-                       try {
-                               SynchronizationContext.SetSynchronizationContext (context);
-                               a.OnCompleted (() => {
-                                       context_ran = SynchronizationContext.Current;
-                                       mre.Set ();
-                               });
-
-                               Assert.IsTrue (mre.WaitOne (1000), "#1");
-
-                       } finally {
-                               SynchronizationContext.SetSynchronizationContext (old);
-                       }
+                       SynchronizationContext.SetSynchronizationContext (context);
+                       a.OnCompleted (() => {
+                               context_ran = SynchronizationContext.Current;
+                               mre.Set ();
+                       });
 
+                       Assert.IsTrue (mre.WaitOne (1000), "#1");
                        Assert.IsNull (context_ran, "#2");
                }
        }
index bb401e4c6d8095c29cf0de6abedb5d36f0c21c1a..e0fa0691844f3ed6b7753e3be6861ece7893165f 100644 (file)
@@ -258,6 +258,61 @@ namespace MonoTests.System.Runtime.InteropServices
                        Assert.AreEqual (19, s.Length, "#2");
                }
 
+               [Test]
+               public void ReadIntByte ()
+               {
+                       IntPtr ptr = Marshal.AllocHGlobal (4);
+                       try {
+                               Marshal.WriteByte (ptr, 0, 0x1);
+                               Marshal.WriteByte (ptr, 1, 0x2);
+                               Assert.AreEqual (0x1, Marshal.ReadByte (ptr));
+                               Assert.AreEqual (0x1, Marshal.ReadByte (ptr, 0));
+                               Assert.AreEqual (0x2, Marshal.ReadByte (ptr, 1));
+                       } finally {
+                               Marshal.FreeHGlobal (ptr);
+                       }
+               }
+
+               [Test]
+               public void ReadInt16 ()
+               {
+                       IntPtr ptr = Marshal.AllocHGlobal (64);
+                       try {
+                               Marshal.WriteInt16 (ptr, 0, 0x1234);
+                               Marshal.WriteInt16 (ptr, 2, 0x4567);
+                               Marshal.WriteInt16 (ptr, 5, 0x4567);
+                               Assert.AreEqual (0x1234, Marshal.ReadInt16 (ptr));
+                               Assert.AreEqual (0x1234, Marshal.ReadInt16 (ptr, 0));
+                               Assert.AreEqual (0x4567, Marshal.ReadInt16 (ptr, 2));
+#if NET_4_5
+                               Assert.AreEqual (0x4567, Marshal.ReadInt16 ((ptr + 5)));
+#endif
+                               Assert.AreEqual (0x4567, Marshal.ReadInt16 (ptr, 5));
+                       } finally {
+                               Marshal.FreeHGlobal (ptr);
+                       }
+               }
+
+               [Test]
+               public void ReadInt32 ()
+               {
+                       IntPtr ptr = Marshal.AllocHGlobal (64);
+                       try {
+                               Marshal.WriteInt32 (ptr, 0, 0x12345678);
+                               Marshal.WriteInt32 (ptr, 4, 0x77654321);
+                               Marshal.WriteInt32 (ptr, 10, 0x77654321);
+                               Assert.AreEqual (0x12345678, Marshal.ReadInt32 (ptr));
+                               Assert.AreEqual (0x12345678, Marshal.ReadInt32 (ptr, 0));
+                               Assert.AreEqual (0x77654321, Marshal.ReadInt32 (ptr, 4));
+#if NET_4_5
+                               Assert.AreEqual (0x77654321, Marshal.ReadInt32 ((ptr + 10)));
+#endif
+                               Assert.AreEqual (0x77654321, Marshal.ReadInt32 (ptr, 10));
+                       } finally {
+                               Marshal.FreeHGlobal (ptr);
+                       }
+               }
+
                [Test]
                public void ReadInt32_Endian ()
                {
@@ -278,6 +333,21 @@ namespace MonoTests.System.Runtime.InteropServices
                        }
                }
 
+               [Test]
+               public void ReadInt64 ()
+               {
+                       IntPtr ptr = Marshal.AllocHGlobal (16);
+                       try {
+                               Marshal.WriteInt64 (ptr, 0, 0x12345678ABCDEFL);
+                               Marshal.WriteInt64 (ptr, 8, 0x87654321ABCDEFL);
+                               Assert.AreEqual (0x12345678ABCDEFL, Marshal.ReadInt64 (ptr));
+                               Assert.AreEqual (0x12345678ABCDEFL, Marshal.ReadInt64 (ptr, 0));
+                               Assert.AreEqual (0x87654321ABCDEFL, Marshal.ReadInt64 (ptr, 8));
+                       } finally {
+                               Marshal.FreeHGlobal (ptr);
+                       }
+               }
+
                [Test]
                [Category ("MobileNotWorking")]
                public void BSTR_Roundtrip ()
@@ -691,6 +761,18 @@ namespace MonoTests.System.Runtime.InteropServices
                                Marshal.FreeHGlobal (p);
                        }
                }
+
+               [StructLayout (LayoutKind.Sequential)]
+               public struct SimpleStruct2 {
+                       public int a;
+                       public int b;
+               }
+
+               [Test]
+               public void PtrToStructureNull ()
+               {
+                       Assert.IsNull (Marshal.PtrToStructure (IntPtr.Zero, typeof (SimpleStruct2)));
+               }
                
 #if NET_2_0
                [Test]
index 4c84824c912b1a374e9f52263533836562f02f65..d3a1e2de3c4df48af34024155eb0582a0a96284e 100644 (file)
@@ -213,6 +213,9 @@ namespace MonoTests.System.Security.Principal {
                }
 
                [Test]
+#if __IOS__
+               [Ignore ("https://bugzilla.xamarin.com/show_bug.cgi?id=12789")]
+#endif
                public void SerializeRoundTrip () 
                {
                        WindowsIdentity wi = WindowsIdentity.GetCurrent ();
index 3cb0c34773562b231ea05aea6697e17bc90f8da4..d9811306fba9c568247bbfbbf888c2c5c636b4fd 100644 (file)
@@ -67,6 +67,25 @@ namespace MonoTests.System.Threading.Tasks
                        }
                }
 
+               class NonInlineableScheduler : TaskScheduler
+               {
+                       protected override IEnumerable<Task> GetScheduledTasks ()
+                       {
+                               throw new NotImplementedException ();
+                       }
+
+                       protected override void QueueTask (Task task)
+                       {
+                               if (!base.TryExecuteTask (task))
+                                       throw new ApplicationException ();
+                       }
+
+                       protected override bool TryExecuteTaskInline (Task task, bool taskWasPreviouslyQueued)
+                       {
+                               return false;
+                       }
+               }
+
 
                Task[] tasks;
                const int max = 6;
@@ -1043,6 +1062,14 @@ namespace MonoTests.System.Threading.Tasks
                        Assert.IsTrue (r2);
                }
 
+               [Test]
+               public void AsyncWaitHandleSet ()
+               {
+                       var task = new TaskFactory ().StartNew (() => { });
+                       var ar = (IAsyncResult)task;
+                       ar.AsyncWaitHandle.WaitOne ();
+               }
+
 #if NET_4_5
                [Test]
                public void Delay_Invalid ()
@@ -1630,6 +1657,16 @@ namespace MonoTests.System.Threading.Tasks
                        Assert.AreEqual ('d', d.Result, "#3r");
                }
 
+               [Test]
+               public void ContinueWith_CustomScheduleRejected ()
+               {
+                       var scheduler = new NonInlineableScheduler ();
+                       var t = Task.Factory.StartNew (delegate { }).
+                               ContinueWith (r => {}, CancellationToken.None, TaskContinuationOptions.ExecuteSynchronously, scheduler);
+                       
+                       Assert.IsTrue (t.Wait (5000));
+               }
+
                [Test]
                public void FromResult ()
                {
diff --git a/mcs/class/corlib/Test/System.Threading/ThreadPoolTest.cs b/mcs/class/corlib/Test/System.Threading/ThreadPoolTest.cs
new file mode 100644 (file)
index 0000000..951e41e
--- /dev/null
@@ -0,0 +1,54 @@
+//
+// ThreadPoolTest.cs
+//
+// Authors:
+//     Marek Safar  <marek.safar@gmail.com>
+//
+// Copyright (C) 2013 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+//
+//
+
+using System;
+using System.Threading;
+using NUnit.Framework;
+
+namespace MonoTests.System.Threading
+{
+       [TestFixture]
+       public class ThreadPoolTests
+       {
+               [Test]
+               public void RegisterWaitForSingleObject_InvalidArguments ()
+               {
+                       try {
+                               ThreadPool.RegisterWaitForSingleObject (null, delegate {}, new object (), 100, false);
+                               Assert.Fail ("#1");
+                       } catch (ArgumentNullException) {
+                       }
+
+                       try {
+                               ThreadPool.RegisterWaitForSingleObject (new Mutex (), null, new object (), 100, false);
+                               Assert.Fail ("#2");
+                       } catch (ArgumentNullException) {
+                       }                       
+               }       
+       }
+}
\ No newline at end of file
index 1c22314ccf171386036ecac4363a6a126ac9a471..0870fc0021e08915c89fe24e5bb2799f9769e150 100644 (file)
@@ -1122,6 +1122,60 @@ namespace MonoTests.System.Threading
                        Assert.IsTrue (exception_occured, "Thread1 Started Invalid Exception Occured");
                }
 
+               [Test]
+               public void TestSetApartmentStateSameState ()
+               {
+                       Thread t1 = new Thread (new ThreadStart (Start));
+                       t1.SetApartmentState (ApartmentState.STA);
+                       Assert.AreEqual (ApartmentState.STA, t1.ApartmentState, "Thread1 Set Once");
+
+                       t1.SetApartmentState (ApartmentState.STA);
+                       Assert.AreEqual (ApartmentState.STA, t1.ApartmentState, "Thread1 Set twice");
+               }
+
+               [Test]
+               [ExpectedException(typeof(InvalidOperationException))]
+               public void TestSetApartmentStateDiffState ()
+               {
+                       Thread t1 = new Thread (new ThreadStart (Start));
+                       t1.SetApartmentState (ApartmentState.STA);
+                       Assert.AreEqual (ApartmentState.STA, t1.ApartmentState, "Thread1 Set Once");
+
+                       t1.SetApartmentState (ApartmentState.MTA);
+               }
+
+               [Test]
+               public void TestTrySetApartmentState ()
+               {
+                       Thread t1 = new Thread (new ThreadStart (Start));
+                       t1.SetApartmentState (ApartmentState.STA);
+                       Assert.AreEqual (ApartmentState.STA, t1.ApartmentState, "#1");
+
+                       bool result = t1.TrySetApartmentState (ApartmentState.MTA);
+                       Assert.IsFalse (result, "#2");
+
+                       result = t1.TrySetApartmentState (ApartmentState.STA);
+                       Assert.IsTrue (result, "#3");
+               }
+
+               [Test]
+               public void TestTrySetApartmentStateRunning ()
+               {
+                       Thread t1 = new Thread (new ThreadStart (Start));
+                       t1.SetApartmentState (ApartmentState.STA);
+                       Assert.AreEqual (ApartmentState.STA, t1.ApartmentState, "#1");
+
+                       t1.Start ();
+
+                       try {
+                               t1.TrySetApartmentState (ApartmentState.STA);
+                               Assert.Fail ();
+                       } catch (ThreadStateException) {
+                       }
+
+                       t1.Join ();
+               }
+
                [Test]
                public void Volatile () {
                        double v3 = 55667;
index 67737cbef0f7dbd51622aea789f61b762c849aad..dc6d4e50dac2c0961c4ee17f1878b5efabd2aed1 100644 (file)
@@ -197,9 +197,13 @@ namespace MonoTests.System.Threading {
                        
                }
 
+#if !MONOTOUCH
                [Test]
                public void TestDisposeOnCallback ()
                {
+                       // this test is bad, as the provided `state` (t1) is null and will throw an NRE inside the callback
+                       // that was ignored before 238785a3e3d510528228fc551625975bc508c2f3 and most unit test runner won't
+                       // report it since the NRE will not happen on the main thread (but Touch.Unit will)
                        Timer t1 = null;
                        t1 = new Timer (new TimerCallback (CallbackTestDisposeOnCallback), t1, 0, 10);
                        Thread.Sleep (200);
@@ -211,7 +215,8 @@ namespace MonoTests.System.Threading {
                {
                        ((Timer) foo).Dispose ();
                }
-               
+#endif
+
                private void Callback (object foo)
                {
                        Bucket b = foo as Bucket;
index 480e1c2642c33c77f743e21d800d4f883827febd..bc91e12686bfc676fed7a542996db41763bfebc6 100644 (file)
@@ -84,6 +84,30 @@ namespace MonoTests.System
                        Throws (typeof (ArgumentNullException), () => new AggregateException ((Exception[])null));
                }
 
+               [Test]
+               [ExpectedException (typeof (ArgumentNullException))]
+               public void Handle_Invalid ()
+               {
+                       e.Handle (null);
+               }
+
+               [Test]
+               public void Handle_AllHandled ()
+               {
+                       e.Handle (l => true);
+               }
+
+               [Test]
+               public void Handle_Unhandled ()
+               {
+                       try {
+                               e.Handle (l => l is AggregateException);
+                               Assert.Fail ();
+                       } catch (AggregateException e) {
+                               Assert.AreEqual (1, e.InnerExceptions.Count);
+                       }
+               }
+
                static void Throws (Type t, Action action)
                {
                        Exception e = null;
index 54ba7cef2a80f9ca3c9048507b379763915e68e6..1d88666538f50e9ec25e0f6acd9a61fd6a1d4ac3 100644 (file)
@@ -3261,6 +3261,74 @@ namespace MonoTests.System
                }
 #endif
 
+               public class StuffToPick
+               {
+                       public StuffToPick () {}
+                       public void Method () {}
+                       public int Property { get; set; }
+                       public event Action Event;
+                       public int Field;
+                       public void GenericMethod<T> () {}
+               }
+
+               public class StuffToPick<T>
+               {
+                       public StuffToPick () {}
+                       public void Method () {}
+                       public int Property { get; set; }
+                       public event Action Event;
+                       public int Field;
+                       public void GenericMethod<T> () {}
+               }
+
+               static void TestSerialization (CrossDomainTester tester, object o)
+               {
+                       Assert.AreSame (o, tester.ReturnArg0 (o), "serializing_type_" + o.GetType ());
+               }
+
+               [Test] //BXC #12611
+               public void ReflectionObjectsAreSerializableTest ()
+               {
+                       ad = CreateTestDomain (tempDir, true);
+                       CrossDomainTester tester = CreateCrossDomainTester (ad);
+
+                       TestSerialization (tester, typeof (StuffToPick));
+                       TestSerialization (tester, typeof (StuffToPick).GetConstructor(new Type [0]));
+                       TestSerialization (tester, typeof (StuffToPick).GetMethod ("Method"));
+                       TestSerialization (tester, typeof (StuffToPick).GetProperty ("Property"));
+                       TestSerialization (tester, typeof (StuffToPick).GetEvent ("Event"));
+                       TestSerialization (tester, typeof (StuffToPick).GetField ("Field"));
+                       TestSerialization (tester, typeof (StuffToPick).GetMethod ("GenericMethod"));
+
+                       TestSerialization (tester, typeof (StuffToPick<>));
+                       TestSerialization (tester, typeof (StuffToPick<>).GetConstructor(new Type [0]));
+                       TestSerialization (tester, typeof (StuffToPick<>).GetMethod ("Method"));
+                       TestSerialization (tester, typeof (StuffToPick<>).GetProperty ("Property"));
+                       TestSerialization (tester, typeof (StuffToPick<>).GetEvent ("Event"));
+                       TestSerialization (tester, typeof (StuffToPick<>).GetField ("Field"));
+                       TestSerialization (tester, typeof (StuffToPick<>).GetMethod ("GenericMethod"));
+
+                       TestSerialization (tester, typeof (StuffToPick<int>));
+                       TestSerialization (tester, typeof (StuffToPick<int>).GetConstructor(new Type [0]));
+                       TestSerialization (tester, typeof (StuffToPick<int>).GetMethod ("Method"));
+                       TestSerialization (tester, typeof (StuffToPick<int>).GetProperty ("Property"));
+                       TestSerialization (tester, typeof (StuffToPick<int>).GetEvent ("Event"));
+                       TestSerialization (tester, typeof (StuffToPick<int>).GetField ("Field"));
+                       TestSerialization (tester, typeof (StuffToPick<int>).GetMethod ("GenericMethod"));
+               }
+
+               [Test] //BXC #12611
+               [Category ("NotWorking")] // Serialization can't handle generic methods
+               public void GenericReflectionObjectsAreSerializableTest ()
+               {
+                       ad = CreateTestDomain (tempDir, true);
+                       CrossDomainTester tester = CreateCrossDomainTester (ad);
+
+                       TestSerialization (tester, typeof (StuffToPick).GetMethod ("GenericMethod").MakeGenericMethod (typeof (int)));
+                       TestSerialization (tester, typeof (StuffToPick<>).GetMethod ("GenericMethod").MakeGenericMethod (typeof (int)));
+                       TestSerialization (tester, typeof (StuffToPick<int>).GetMethod ("GenericMethod").MakeGenericMethod (typeof (int)));
+               }
+
                private static AppDomain CreateTestDomain (string baseDirectory, bool assemblyResolver)
                {
                        AppDomainSetup setup = new AppDomainSetup ();
@@ -3395,6 +3463,11 @@ namespace MonoTests.System
                                        return true;
                                }
                        }
+
+                       public object ReturnArg0 (object obj)
+                       {
+                               return obj;
+                       }
                }
 
                [Serializable ()]
index 25562126ee9f151c50c4eb67f945b54662408ba3..98a0d1aa26639fa1fbe83e8c8bad415863e711d6 100644 (file)
@@ -331,6 +331,21 @@ public class ConsoleTest
        }
 
 #if !MOBILE
+
+#if NET_4_5
+       [Test]
+       public void RedirectedTest ()
+       {
+               if (Console.IsErrorRedirected) {
+                       // Assert.Inconclusive ();
+                       return;
+               }
+
+               Console.SetError (TextWriter.Null);
+               Assert.IsFalse (Console.IsErrorRedirected);
+       }
+#endif
+
        // Bug 678357
        [Test]
        public void EncodingTest ()
index 05fd44ea5283dcbb951c7e0367255f842af2f313..72da88876a39560a6346d53f6c8fbd9e59639fec 100644 (file)
@@ -2265,6 +2265,10 @@ namespace MonoTests.System
                        Assert.AreEqual ("2000-01-01T00:00:00.0000000Z", DateTime.SpecifyKind (new DateTime (2000, 1, 1), DateTimeKind.Utc).ToString ("o"), "#2");
                        Assert.AreEqual ("2000-01-01T00:00:00.0000000+09:00".Length, DateTime.SpecifyKind (
                                new DateTime (2000, 1, 1), DateTimeKind.Local).ToString ("o").Length, "#3");
+
+                       var culture = new CultureInfo ("ps-AF");
+                       Assert.AreEqual ("1976-06-19T00:00:00.0000000", new DateTime(1976, 6, 19).ToString ("O", culture), "#4");
+                       Assert.AreEqual ("1976-06-19T00:00:00.0000000", new DateTime(1976, 6, 19).ToString ("o", culture), "#5");
                }
 
                [Test]
index b70be0c4239cca85d68dd33dc72a414aaa592317..4339edce397aa1eefbc4b5ce519e857081382055 100644 (file)
@@ -1129,6 +1129,13 @@ namespace MonoTests.System
                        }
                }
 */
+
+               [Test]
+               public void ParseCultureSeparator ()
+               {
+                       Assert.AreEqual (2.2m, decimal.Parse ("2.2", new CultureInfo("es-MX")));
+               }
+
                [Test]
                [Category ("TargetJvmNotWorking")]
                public void TryParse ()
index edd94252d1266fc950897c7b6ac2fe444746eb7d..5859f1d6f408a85035381c29b6434e42db38e058 100644 (file)
@@ -258,6 +258,15 @@ namespace MonoTests.System
                        }
                }
 
+               [Test]
+               public void Parse_Infinity ()
+               {
+                       double value;
+                       IFormatProvider german = new CultureInfo ("de-DE");
+                       var res = double.Parse ("+unendlich", NumberStyles.Float, german);
+                       Assert.AreEqual (double.PositiveInfinity, res);
+               }
+
                [Test]
                public void TestToString ()
                {
index 60c756a903431d66a9a99774520b7b700833cad2..b631a0fa1535c43b21a5ceaccc8b7fcc940eec90 100644 (file)
@@ -274,6 +274,10 @@ public class Int32Test
                Assert.AreEqual (2000000, Int32.Parse ("2E6", NumberStyles.AllowExponent), "A#4");
                Assert.AreEqual (200, Int32.Parse ("2E+2", NumberStyles.AllowExponent), "A#5");
                Assert.AreEqual (2, Int32.Parse ("2", NumberStyles.AllowExponent), "A#6");
+               Assert.AreEqual (21, Int32.Parse ("2.1E1", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#7");
+               Assert.AreEqual (520, Int32.Parse (".52E3", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#8");
+               Assert.AreEqual (32500000, Int32.Parse ("32.5E6", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#9");
+               Assert.AreEqual (890, Int32.Parse ("8.9000E2", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#10");
 
                try {
                        Int32.Parse ("2E");
@@ -323,6 +327,12 @@ public class Int32Test
                        Assert.Fail ("B#8");
                } catch (FormatException) {
                }
+
+               try {
+                       Int32.Parse ("2.09E1",  NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent);
+                       Assert.Fail ("B#9");
+               } catch (OverflowException) {
+               }               
        }
 
        [Test]
@@ -381,6 +391,8 @@ public class Int32Test
                Assert.AreEqual (true, Int32.TryParse ("ffffffff", NumberStyles.HexNumber, Nfi, out result));
                Assert.AreEqual (-1, result);
                Assert.AreEqual (false, Int32.TryParse ("100000000", NumberStyles.HexNumber, Nfi, out result));
+               Assert.IsFalse (int.TryParse ("-", NumberStyles.AllowLeadingSign, Nfi, out result));
+               Assert.IsFalse (int.TryParse (Nfi.CurrencySymbol + "-", NumberStyles.AllowLeadingSign | NumberStyles.AllowCurrencySymbol, Nfi, out result));
        }
 
        [Test]  
index b1b6b079b40e13beb8f68e50c98b76e32af8576e..3943969c65a7aaeec85d1ffc71d4d3b71355e8c0 100644 (file)
@@ -330,6 +330,10 @@ public class Int64Test
                Assert.AreEqual (2000000, long.Parse ("2E6", NumberStyles.AllowExponent), "A#4");
                Assert.AreEqual (200, long.Parse ("2E+2", NumberStyles.AllowExponent), "A#5");
                Assert.AreEqual (2, long.Parse ("2", NumberStyles.AllowExponent), "A#6");
+               Assert.AreEqual (21, long.Parse ("2.1E1", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#7");
+               Assert.AreEqual (520, long.Parse (".52E3", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#8");
+               Assert.AreEqual (32500000, long.Parse ("32.5E6", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#9");
+               Assert.AreEqual (890, long.Parse ("8.9000E2", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#10");            
 
                try {
                        long.Parse ("2E");
@@ -379,8 +383,74 @@ public class Int64Test
                        Assert.Fail ("B#8");
                } catch (FormatException) {
                }
+
+               try {
+                       long.Parse ("2.09E1",  NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent);
+                       Assert.Fail ("B#9");
+               } catch (OverflowException) {
+               }
        }
 
+       [Test]
+       public void TestTryParse()
+       {
+               long result;
+
+               Assert.AreEqual (true, long.TryParse (MyString1, out result));
+               Assert.AreEqual (MyInt64_1, result);
+               Assert.AreEqual (true, long.TryParse (MyString2, out result));
+               Assert.AreEqual (MyInt64_2, result);
+               Assert.AreEqual (true, long.TryParse (MyString3, out result));
+               Assert.AreEqual (MyInt64_3, result);
+
+               Assert.AreEqual (true, long.TryParse ("1", out result));
+               Assert.AreEqual (1, result);
+               Assert.AreEqual (true, long.TryParse (" 1", out result));
+               Assert.AreEqual (1, result);
+               Assert.AreEqual (true, long.TryParse ("     1", out result));
+               Assert.AreEqual (1, result);
+               Assert.AreEqual (true, long.TryParse ("1    ", out result));
+               Assert.AreEqual (1, result);
+               Assert.AreEqual (true, long.TryParse ("+1", out result));
+               Assert.AreEqual (1, result);
+               Assert.AreEqual (true, long.TryParse ("-1", out result));
+               Assert.AreEqual (-1, result);
+               Assert.AreEqual (true, long.TryParse ("  -1", out result));
+               Assert.AreEqual (-1, result);
+               Assert.AreEqual (true, long.TryParse ("  -1  ", out result));
+               Assert.AreEqual (-1, result);
+               Assert.AreEqual (true, long.TryParse ("  -1  ", out result));
+               Assert.AreEqual (-1, result);
+
+               result = 1;
+               Assert.AreEqual (false, long.TryParse (null, out result));
+               Assert.AreEqual (0, result);
+
+               Assert.AreEqual (false, long.TryParse ("not-a-number", out result));
+
+               double OverInt = (double)long.MaxValue + 1;
+               Assert.AreEqual (false, long.TryParse (OverInt.ToString (), out result));
+               Assert.AreEqual (false, long.TryParse (OverInt.ToString (), NumberStyles.None, CultureInfo.InvariantCulture, out result));
+
+               Assert.AreEqual (false, long.TryParse ("$42", NumberStyles.Integer, null, out result));
+               Assert.AreEqual (false, long.TryParse ("%42", NumberStyles.Integer, Nfi, out result));
+               Assert.AreEqual (false, long.TryParse ("$42", NumberStyles.Integer, Nfi, out result));
+               Assert.AreEqual (false, long.TryParse (" - 1 ", out result));
+               Assert.AreEqual (false, long.TryParse (" - ", out result));
+               Assert.AreEqual (true, long.TryParse ("100000000", NumberStyles.HexNumber, Nfi, out result));
+               Assert.AreEqual (true, long.TryParse ("10000000000", out result));
+               Assert.AreEqual (true, long.TryParse ("-10000000000", out result));
+               Assert.AreEqual (true, long.TryParse ("7fffffff", NumberStyles.HexNumber, Nfi, out result));
+               Assert.AreEqual (int.MaxValue, result);
+               Assert.AreEqual (true, long.TryParse ("80000000", NumberStyles.HexNumber, Nfi, out result));
+               Assert.AreEqual (2147483648, result);
+               Assert.AreEqual (true, long.TryParse ("ffffffff", NumberStyles.HexNumber, Nfi, out result));
+               Assert.AreEqual (uint.MaxValue, result);
+               Assert.AreEqual (true, long.TryParse ("100000000", NumberStyles.HexNumber, Nfi, out result));
+               Assert.IsFalse (long.TryParse ("-", NumberStyles.AllowLeadingSign, Nfi, out result));
+               Assert.IsFalse (long.TryParse (Nfi.CurrencySymbol + "-", NumberStyles.AllowLeadingSign | NumberStyles.AllowCurrencySymbol, Nfi, out result));
+       }       
+
        [Test]
     public void TestToString() 
     {
index 4004ceaa2589b154cec692083b2af0ea7bcfee5f..21df8695667057fbfc7318277b0052e91dd54156 100644 (file)
@@ -98,5 +98,35 @@ public class MulticastDelegateTest {
                res = del1( ref val );\r
                Assert.AreEqual("abbcbbd", val , "#A05");\r
        }\r
+\r
+       [Test] //Bug #12536\r
+       public void TestCombineBothDirections ()\r
+       {\r
+               MyDelegate dela = new MyDelegate( MethodA );\r
+               MyDelegate delb = new MyDelegate( MethodB );\r
+               MyDelegate delc = new MyDelegate( MethodC );\r
+               MyDelegate deld = new MyDelegate( MethodD );\r
+\r
+               string val;\r
+               char res;\r
+\r
+               MyDelegate a = dela + delb;\r
+               val = "";\r
+               res = a (ref val);\r
+               Assert.AreEqual ("ab", val, "#1");\r
+               Assert.AreEqual ('b', res, "#2");\r
+\r
+               MyDelegate b = delc + deld;\r
+               val = "";\r
+               res = b (ref val);\r
+               Assert.AreEqual ("cd", val, "#3");\r
+               Assert.AreEqual ('d', res, "#4");\r
+\r
+               MyDelegate c = a + b;\r
+               val = "";\r
+               res = c (ref val);\r
+               Assert.AreEqual ("abcd", val, "#5");\r
+               Assert.AreEqual ('d', res, "#6");\r
+       }\r
 }\r
 }\r
index 4aaa735e6631332a3d3a0f4b71b492bc68375a2a..5969c4be8b4c7ee99dc1d402dc1133b7556110cf 100644 (file)
@@ -4367,5 +4367,15 @@ namespace MonoTests.System
                {
                        Assert.AreEqual ("", 0.0.ToString ("X99", _nfi) , "#01");
                }
+
+               [Test]
+               public void Test18000 ()
+               {
+                       string formatString = "p 00.0000\\';n 0000.00\\';0.#\\'";
+
+                       Assert.AreEqual ("p 08.3266'", 8.32663472.ToString (formatString, CultureInfo.InvariantCulture), "#1");
+                       Assert.AreEqual ("n 0001.13'", (-1.1345343).ToString (formatString, CultureInfo.InvariantCulture), "#2");
+                       Assert.AreEqual ("0'", 0.0.ToString (formatString, CultureInfo.InvariantCulture), "#3");
+               }
        }
 }
index ffa822b6aee77c2aeed275d59cd5888868fa3233..489070c6ad6cabf463912e720d2c2c1fe871a51e 100644 (file)
@@ -2274,7 +2274,25 @@ public class StringTest
                Assert.IsTrue ("ABC".Contains ("ABC"));
                Assert.IsTrue ("ABC".Contains ("AB"));
                Assert.IsTrue (!"ABC".Contains ("AD"));
-               Assert.IsTrue (!"encyclop�dia".Contains("encyclopaedia"));
+               Assert.IsTrue (!"encyclopædia".Contains("encyclopaedia"));
+       }
+
+       [Test]
+       public void IndexOfIsCultureAwareWhileContainsIsNot ()
+       {
+               string a = "encyclopædia";
+               string b = "encyclopaedia";
+               Assert.IsFalse (a.Contains (b), "#1");
+               Assert.IsTrue (a.Contains ("æ"), "#1.1");
+               Assert.IsFalse (b.Contains ("æ"), "#1.2");
+               Assert.AreEqual (0, a.IndexOf (b), "#2");
+               Assert.AreEqual (8, a.IndexOf ('æ'), "#3");
+               Assert.AreEqual (-1, b.IndexOf ('æ'), "#4");
+               Assert.AreEqual (8, a.IndexOf ("æ"), "#5");
+               Assert.AreEqual (8, b.IndexOf ("æ"), "#6");
+
+               Assert.AreEqual (0, CultureInfo.CurrentCulture.CompareInfo.IndexOf (a, b, 0, a.Length, CompareOptions.None), "#7");
+               Assert.AreEqual (-1, CultureInfo.CurrentCulture.CompareInfo.IndexOf (a, b, 0, a.Length, CompareOptions.Ordinal), "#8");
        }
 
        [Test]
index 02d7e715107a07d09706995d03d965e8200a65c4..fdbd60607dbe4a98c4c5312cde18142b44282d97 100644 (file)
@@ -1322,6 +1322,8 @@ public class TimeSpanTest {
                TryParseExactHelper ("10:12", new string [0], true, "dontcare");
                TryParseExactHelper ("10:12", new string [] { String.Empty }, true, "dontcare");
                TryParseExactHelper ("10:12", new string [] { null }, true, "dontcare");
+
+               TryParseExactHelper (null, new string [] { null }, true, "dontcare");
        }
 
        void TryParseExactHelper (string input, string [] formats, bool error, string expected, IFormatProvider formatProvider = null,
index 24396d72484c3aaea7f35c6788e60daa206d71a3..6a730d2c737077283d0b59d656995aaa7166a91c 100644 (file)
@@ -214,6 +214,10 @@ public class UInt32Test
                Assert.AreEqual (2000000, uint.Parse ("2E6", NumberStyles.AllowExponent), "A#4");
                Assert.AreEqual (200, uint.Parse ("2E+2", NumberStyles.AllowExponent), "A#5");
                Assert.AreEqual (2, uint.Parse ("2", NumberStyles.AllowExponent), "A#6");
+               Assert.AreEqual (21, uint.Parse ("2.1E1", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#7");
+               Assert.AreEqual (520, uint.Parse (".52E3", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#8");
+               Assert.AreEqual (32500000, uint.Parse ("32.5E6", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#9");
+               Assert.AreEqual (890, uint.Parse ("8.9000E2", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#10");            
 
                try {
                        uint.Parse ("2E");
@@ -263,8 +267,70 @@ public class UInt32Test
                        Assert.Fail ("B#8");
                } catch (FormatException) {
                }
+
+               try {
+                       uint.Parse ("2.09E1",  NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent);
+                       Assert.Fail ("B#9");
+               } catch (OverflowException) {
+               }
        }
 
+       [Test]
+       public void TestTryParse()
+       {
+               uint result;
+
+               Assert.AreEqual (true, UInt32.TryParse (MyString1, out result));
+               Assert.AreEqual (MyUInt32_1, result);
+               Assert.AreEqual (true, UInt32.TryParse (MyString2, out result));
+               Assert.AreEqual (MyUInt32_2, result);
+               Assert.AreEqual (true, UInt32.TryParse (MyString3, out result));
+               Assert.AreEqual (MyUInt32_3, result);
+
+               Assert.AreEqual (true, UInt32.TryParse ("1", out result));
+               Assert.AreEqual (1, result);
+               Assert.AreEqual (true, UInt32.TryParse (" 1", out result));
+               Assert.AreEqual (1, result);
+               Assert.AreEqual (true, UInt32.TryParse ("     1", out result));
+               Assert.AreEqual (1, result);
+               Assert.AreEqual (true, UInt32.TryParse ("1    ", out result));
+               Assert.AreEqual (1, result);
+               Assert.AreEqual (true, UInt32.TryParse ("+1", out result));
+               Assert.AreEqual (1, result);
+               Assert.AreEqual (false, UInt32.TryParse ("-1", out result));
+               Assert.AreEqual (false, UInt32.TryParse ("  -1", out result));
+               Assert.AreEqual (false, UInt32.TryParse ("  -1  ", out result));
+               Assert.AreEqual (false, UInt32.TryParse ("  -1  ", out result));
+
+               result = 1;
+               Assert.AreEqual (false, UInt32.TryParse (null, out result));
+               Assert.AreEqual (0, result);
+
+               Assert.AreEqual (false, UInt32.TryParse ("not-a-number", out result));
+
+               double OverInt = (double)UInt32.MaxValue + 1;
+               Assert.AreEqual (false, UInt32.TryParse (OverInt.ToString (), out result));
+               Assert.AreEqual (false, UInt32.TryParse (OverInt.ToString (), NumberStyles.None, CultureInfo.InvariantCulture, out result));
+
+               Assert.AreEqual (false, UInt32.TryParse ("$42", NumberStyles.Integer, null, out result));
+               Assert.AreEqual (false, UInt32.TryParse ("%42", NumberStyles.Integer, Nfi, out result));
+               Assert.AreEqual (false, UInt32.TryParse ("$42", NumberStyles.Integer, Nfi, out result));
+               Assert.AreEqual (false, UInt32.TryParse (" - 1 ", out result));
+               Assert.AreEqual (false, UInt32.TryParse (" - ", out result));
+               Assert.AreEqual (true, UInt32.TryParse ("100000000", NumberStyles.HexNumber, Nfi, out result));
+               Assert.AreEqual (false, UInt32.TryParse ("10000000000", out result));
+               Assert.AreEqual (false, UInt32.TryParse ("-10000000000", out result));
+               Assert.AreEqual (true, UInt32.TryParse ("7fffffff", NumberStyles.HexNumber, Nfi, out result));
+               Assert.AreEqual (Int32.MaxValue, result);
+               Assert.AreEqual (true, UInt32.TryParse ("80000000", NumberStyles.HexNumber, Nfi, out result));
+               Assert.AreEqual (Int32.MaxValue + (uint)1, result);
+               Assert.AreEqual (true, UInt32.TryParse ("ffffffff", NumberStyles.HexNumber, Nfi, out result));
+               Assert.AreEqual (uint.MaxValue, result);
+               Assert.AreEqual (true, UInt32.TryParse ("100000000", NumberStyles.HexNumber, Nfi, out result));
+               Assert.IsFalse (uint.TryParse ("-", NumberStyles.AllowLeadingSign, Nfi, out result));
+               Assert.IsFalse (uint.TryParse (Nfi.CurrencySymbol + "-", NumberStyles.AllowLeadingSign | NumberStyles.AllowCurrencySymbol, Nfi, out result));
+       }       
+
        [Test]
        public void TestToString()
        {
index 335d216a4fc2b0b67666bf14c6188d79b154b352..dda949c4022e60f899aa78fa0f417d912497ee0c 100644 (file)
@@ -203,6 +203,10 @@ public class UInt64Test
                Assert.AreEqual (2000000, ulong.Parse ("2E6", NumberStyles.AllowExponent), "A#4");
                Assert.AreEqual (200, ulong.Parse ("2E+2", NumberStyles.AllowExponent), "A#5");
                Assert.AreEqual (2, ulong.Parse ("2", NumberStyles.AllowExponent), "A#6");
+               Assert.AreEqual (21, ulong.Parse ("2.1E1", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#7");
+               Assert.AreEqual (520, ulong.Parse (".52E3", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#8");
+               Assert.AreEqual (32500000, ulong.Parse ("32.5E6", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#9");
+               Assert.AreEqual (890, ulong.Parse ("8.9000E2", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent), "A#10");           
 
                try {
                        ulong.Parse ("2E");
@@ -252,8 +256,70 @@ public class UInt64Test
                        Assert.Fail ("B#8");
                } catch (FormatException) {
                }
+
+               try {
+                       ulong.Parse ("2.09E1",  NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent);
+                       Assert.Fail ("B#9");
+               } catch (OverflowException) {
+               }
        }
 
+       [Test]
+       public void TestTryParse()
+       {
+               ulong result;
+
+               Assert.AreEqual (true, ulong.TryParse (MyString1, out result));
+               Assert.AreEqual (MyUInt64_1, result);
+               Assert.AreEqual (true, ulong.TryParse (MyString2, out result));
+               Assert.AreEqual (MyUInt64_2, result);
+               Assert.AreEqual (true, ulong.TryParse (MyString3, out result));
+               Assert.AreEqual (MyUInt64_3, result);
+
+               Assert.AreEqual (true, ulong.TryParse ("1", out result));
+               Assert.AreEqual (1, result);
+               Assert.AreEqual (true, ulong.TryParse (" 1", out result));
+               Assert.AreEqual (1, result);
+               Assert.AreEqual (true, ulong.TryParse ("     1", out result));
+               Assert.AreEqual (1, result);
+               Assert.AreEqual (true, ulong.TryParse ("1    ", out result));
+               Assert.AreEqual (1, result);
+               Assert.AreEqual (true, ulong.TryParse ("+1", out result));
+               Assert.AreEqual (1, result);
+               Assert.AreEqual (false, ulong.TryParse ("-1", out result));
+               Assert.AreEqual (false, ulong.TryParse ("  -1", out result));
+               Assert.AreEqual (false, ulong.TryParse ("  -1  ", out result));
+               Assert.AreEqual (false, ulong.TryParse ("  -1  ", out result));
+
+               result = 1;
+               Assert.AreEqual (false, ulong.TryParse (null, out result));
+               Assert.AreEqual (0, result);
+
+               Assert.AreEqual (false, ulong.TryParse ("not-a-number", out result));
+
+               double OverInt = (double)ulong.MaxValue + 1;
+               Assert.AreEqual (false, ulong.TryParse (OverInt.ToString (), out result));
+               Assert.AreEqual (false, ulong.TryParse (OverInt.ToString (), NumberStyles.None, CultureInfo.InvariantCulture, out result));
+
+               Assert.AreEqual (false, ulong.TryParse ("$42", NumberStyles.Integer, null, out result));
+               Assert.AreEqual (false, ulong.TryParse ("%42", NumberStyles.Integer, Nfi, out result));
+               Assert.AreEqual (false, ulong.TryParse ("$42", NumberStyles.Integer, Nfi, out result));
+               Assert.AreEqual (false, ulong.TryParse (" - 1 ", out result));
+               Assert.AreEqual (false, ulong.TryParse (" - ", out result));
+               Assert.AreEqual (true, ulong.TryParse ("100000000", NumberStyles.HexNumber, Nfi, out result));
+               Assert.AreEqual (true, ulong.TryParse ("10000000000", out result));
+               Assert.AreEqual (false, ulong.TryParse ("-10000000000", out result));
+               Assert.AreEqual (true, ulong.TryParse ("7fffffff", NumberStyles.HexNumber, Nfi, out result));
+               Assert.AreEqual (int.MaxValue, result);
+               Assert.AreEqual (true, ulong.TryParse ("80000000", NumberStyles.HexNumber, Nfi, out result));
+               Assert.AreEqual (2147483648, result);
+               Assert.AreEqual (true, ulong.TryParse ("ffffffff", NumberStyles.HexNumber, Nfi, out result));
+               Assert.AreEqual (uint.MaxValue, result);
+               Assert.AreEqual (true, ulong.TryParse ("100000000", NumberStyles.HexNumber, Nfi, out result));
+               Assert.IsFalse (ulong.TryParse ("-", NumberStyles.AllowLeadingSign, Nfi, out result));
+               Assert.IsFalse (ulong.TryParse (Nfi.CurrencySymbol + "-", NumberStyles.AllowLeadingSign | NumberStyles.AllowCurrencySymbol, Nfi, out result));
+       }       
+
        [Test]
        public void TestToString()
        {
index 201243d51498851d0ed57cecadb200d3139bcf59..e0656b22c4c70642e47f24d33574838c31c68d00 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B8B2866D-592F-4888-A1CB-697AD0F3CADE}</ProjectGuid>\r
+    <ProjectGuid>{2BD930A2-88A9-4AD0-ADE7-1531552DF896}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>612,618,1699</NoWarn>\r
     <OutputPath>bin\Debug\corlib-build</OutputPath>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\ConfidenceFactor.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\PrimalityTests.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math\BigInteger.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\ARC4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoTools.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS8.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RC4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RSAManaged.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\SymmetricTransform.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\PKCS12.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X501Name.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Certificate.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CertificateCollection.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Chain.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509ChainStatusFlags.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CRL.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extensions.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Store.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509StoreManager.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Stores.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X520Attributes.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1Convert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\BitConverterLE.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\PKCS7.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\StrongName.cs" />\r
     <Compile Include="..\System.Core\System.Security.Cryptography\Aes.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.AdjustmentRule.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.Android.cs" />\r
     <Compile Include="Mono.Interop\ComInteropProxy.cs" />\r
     <Compile Include="Mono.Interop\IDispatch.cs" />\r
     <Compile Include="Mono.Interop\IUnknown.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime\ConfidenceFactor.cs" />\r
-    <Compile Include="Mono.Math.Prime\PrimalityTests.cs" />\r
-    <Compile Include="Mono.Math\BigInteger.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoConvert.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoTools.cs" />\r
     <Compile Include="Mono.Security.Cryptography\DSAManaged.cs" />\r
     <Compile Include="Mono.Security.Cryptography\HMACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
     <Compile Include="Mono.Security.Cryptography\MACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS1.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS8.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\RSAManaged.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\SymmetricTransform.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
-    <Compile Include="Mono.Security.X509\PKCS12.cs" />\r
-    <Compile Include="Mono.Security.X509\X501Name.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Certificate.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CertificateCollection.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Chain.cs" />\r
-    <Compile Include="Mono.Security.X509\X509ChainStatusFlags.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CRL.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extension.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extensions.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Store.cs" />\r
-    <Compile Include="Mono.Security.X509\X509StoreManager.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Stores.cs" />\r
-    <Compile Include="Mono.Security.X509\X520Attributes.cs" />\r
-    <Compile Include="Mono.Security\ASN1.cs" />\r
-    <Compile Include="Mono.Security\ASN1Convert.cs" />\r
-    <Compile Include="Mono.Security\BitConverterLE.cs" />\r
-    <Compile Include="Mono.Security\PKCS7.cs" />\r
-    <Compile Include="Mono.Security\StrongName.cs" />\r
     <Compile Include="Mono.Security\StrongNameManager.cs" />\r
     <Compile Include="Mono.Security\Uri.cs" />\r
     <Compile Include="Mono.Xml\SecurityParser.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentOrderedList.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentQueue.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentStack.cs" />\r
+    <Compile Include="System.Collections.Concurrent\EnumerablePartitionerOptions.cs" />\r
     <Compile Include="System.Collections.Concurrent\IProducerConsumerCollection.cs" />\r
     <Compile Include="System.Collections.Concurrent\OrderablePartitioner.cs" />\r
     <Compile Include="System.Collections.Concurrent\Partitioner.cs" />\r
     <Compile Include="System.Collections.ObjectModel\Collection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\KeyedCollection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\ReadOnlyCollection.cs" />\r
+    <Compile Include="System.Collections.ObjectModel\ReadOnlyDictionary.cs" />\r
     <Compile Include="System.Collections\ArrayList.cs" />\r
     <Compile Include="System.Collections\BitArray.cs" />\r
     <Compile Include="System.Collections\CaseInsensitiveComparer.cs" />\r
     <Compile Include="System.Collections\Comparer.cs" />\r
     <Compile Include="System.Collections\DictionaryBase.cs" />\r
     <Compile Include="System.Collections\DictionaryEntry.cs" />\r
+    <Compile Include="System.Collections\HashPrimeNumbers.cs" />\r
     <Compile Include="System.Collections\Hashtable.cs" />\r
     <Compile Include="System.Collections\ICollection.cs" />\r
     <Compile Include="System.Collections\IComparer.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailedEventArgs.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailureKind.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractInvariantMethodAttribute.cs" />\r
+    <Compile Include="System.Diagnostics.Contracts\ContractOptionAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractPublicPropertyNameAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractReferenceAssemblyAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractRuntimeIgnoredAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyAlgorithmIdAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCompanyAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyConfigurationAttribute.cs" />\r
+    <Compile Include="System.Reflection\AssemblyContentType.cs" />\r
     <Compile Include="System.Reflection\AssemblyCopyrightAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCultureAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyDefaultAliasAttribute.cs" />\r
     <Compile Include="System.Reflection\ReflectionTypeLoadException.cs" />\r
     <Compile Include="System.Reflection\ResourceAttributes.cs" />\r
     <Compile Include="System.Reflection\ResourceLocation.cs" />\r
+    <Compile Include="System.Reflection\RuntimeReflectionExtensions.cs" />\r
     <Compile Include="System.Reflection\StrongNameKeyPair.cs" />\r
     <Compile Include="System.Reflection\TargetException.cs" />\r
     <Compile Include="System.Reflection\TargetInvocationException.cs" />\r
     <Compile Include="System.Threading\ManualResetEventSlim.cs" />\r
     <Compile Include="System.Threading\Monitor.cs" />\r
     <Compile Include="System.Threading\Mutex.cs" />\r
+    <Compile Include="System.Threading\NamedDataSlot.cs" />\r
     <Compile Include="System.Threading\NativeEventCalls.cs" />\r
     <Compile Include="System.Threading\NativeOverlapped.cs" />\r
     <Compile Include="System.Threading\Overlapped.cs" />\r
     <Compile Include="System\CLSCompliantAttribute.cs" />\r
     <Compile Include="System\Comparison.cs" />\r
     <Compile Include="System\Console.cs" />\r
+    <Compile Include="System\Console.iOS.cs" />\r
     <Compile Include="System\ConsoleCancelEventArgs.cs" />\r
     <Compile Include="System\ConsoleCancelEventHandler.cs" />\r
     <Compile Include="System\ConsoleColor.cs" />\r
     <Compile Include="System\PlatformID.cs" />\r
     <Compile Include="System\PlatformNotSupportedException.cs" />\r
     <Compile Include="System\Predicate.cs" />\r
+    <Compile Include="System\Progress.cs" />\r
     <Compile Include="System\Random.cs" />\r
     <Compile Include="System\RankException.cs" />\r
     <Compile Include="System\ResolveEventArgs.cs" />\r
     <Compile Include="System\Version.cs" />\r
     <Compile Include="System\Void.cs" />\r
     <Compile Include="System\WeakReference.cs" />\r
+    <Compile Include="System\WeakReference_T.cs" />\r
     <Compile Include="System\WindowsConsoleDriver.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
index b3d625e12d6112f7147b27417bd6526071cf0b5b..d03ca9fef24c4deb3d2a11d46e4c4cf80c094a85 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{928D664D-8277-47B3-AB06-538D932143FE}</ProjectGuid>\r
+    <ProjectGuid>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>612,618,1699</NoWarn>\r
     <OutputPath>bin\Debug\corlib-net_2_0</OutputPath>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\ConfidenceFactor.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\PrimalityTests.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math\BigInteger.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\ARC4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoTools.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS8.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RC4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RSAManaged.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\SymmetricTransform.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\PKCS12.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X501Name.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Certificate.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CertificateCollection.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Chain.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509ChainStatusFlags.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CRL.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extensions.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Store.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509StoreManager.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Stores.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X520Attributes.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1Convert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\BitConverterLE.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\PKCS7.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\StrongName.cs" />\r
     <Compile Include="..\System.Core\System.Security.Cryptography\Aes.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.AdjustmentRule.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.Android.cs" />\r
     <Compile Include="Mono.Interop\ComInteropProxy.cs" />\r
     <Compile Include="Mono.Interop\IDispatch.cs" />\r
     <Compile Include="Mono.Interop\IUnknown.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime\ConfidenceFactor.cs" />\r
-    <Compile Include="Mono.Math.Prime\PrimalityTests.cs" />\r
-    <Compile Include="Mono.Math\BigInteger.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoConvert.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoTools.cs" />\r
     <Compile Include="Mono.Security.Cryptography\DSAManaged.cs" />\r
     <Compile Include="Mono.Security.Cryptography\HMACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
     <Compile Include="Mono.Security.Cryptography\MACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS1.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS8.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\RSAManaged.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\SymmetricTransform.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
-    <Compile Include="Mono.Security.X509\PKCS12.cs" />\r
-    <Compile Include="Mono.Security.X509\X501Name.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Certificate.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CertificateCollection.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Chain.cs" />\r
-    <Compile Include="Mono.Security.X509\X509ChainStatusFlags.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CRL.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extension.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extensions.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Store.cs" />\r
-    <Compile Include="Mono.Security.X509\X509StoreManager.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Stores.cs" />\r
-    <Compile Include="Mono.Security.X509\X520Attributes.cs" />\r
-    <Compile Include="Mono.Security\ASN1.cs" />\r
-    <Compile Include="Mono.Security\ASN1Convert.cs" />\r
-    <Compile Include="Mono.Security\BitConverterLE.cs" />\r
-    <Compile Include="Mono.Security\PKCS7.cs" />\r
-    <Compile Include="Mono.Security\StrongName.cs" />\r
     <Compile Include="Mono.Security\StrongNameManager.cs" />\r
     <Compile Include="Mono.Security\Uri.cs" />\r
     <Compile Include="Mono.Xml\SecurityParser.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentOrderedList.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentQueue.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentStack.cs" />\r
+    <Compile Include="System.Collections.Concurrent\EnumerablePartitionerOptions.cs" />\r
     <Compile Include="System.Collections.Concurrent\IProducerConsumerCollection.cs" />\r
     <Compile Include="System.Collections.Concurrent\OrderablePartitioner.cs" />\r
     <Compile Include="System.Collections.Concurrent\Partitioner.cs" />\r
     <Compile Include="System.Collections.ObjectModel\Collection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\KeyedCollection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\ReadOnlyCollection.cs" />\r
+    <Compile Include="System.Collections.ObjectModel\ReadOnlyDictionary.cs" />\r
     <Compile Include="System.Collections\ArrayList.cs" />\r
     <Compile Include="System.Collections\BitArray.cs" />\r
     <Compile Include="System.Collections\CaseInsensitiveComparer.cs" />\r
     <Compile Include="System.Collections\Comparer.cs" />\r
     <Compile Include="System.Collections\DictionaryBase.cs" />\r
     <Compile Include="System.Collections\DictionaryEntry.cs" />\r
+    <Compile Include="System.Collections\HashPrimeNumbers.cs" />\r
     <Compile Include="System.Collections\Hashtable.cs" />\r
     <Compile Include="System.Collections\ICollection.cs" />\r
     <Compile Include="System.Collections\IComparer.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailedEventArgs.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailureKind.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractInvariantMethodAttribute.cs" />\r
+    <Compile Include="System.Diagnostics.Contracts\ContractOptionAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractPublicPropertyNameAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractReferenceAssemblyAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractRuntimeIgnoredAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyAlgorithmIdAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCompanyAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyConfigurationAttribute.cs" />\r
+    <Compile Include="System.Reflection\AssemblyContentType.cs" />\r
     <Compile Include="System.Reflection\AssemblyCopyrightAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCultureAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyDefaultAliasAttribute.cs" />\r
     <Compile Include="System.Reflection\ReflectionTypeLoadException.cs" />\r
     <Compile Include="System.Reflection\ResourceAttributes.cs" />\r
     <Compile Include="System.Reflection\ResourceLocation.cs" />\r
+    <Compile Include="System.Reflection\RuntimeReflectionExtensions.cs" />\r
     <Compile Include="System.Reflection\StrongNameKeyPair.cs" />\r
     <Compile Include="System.Reflection\TargetException.cs" />\r
     <Compile Include="System.Reflection\TargetInvocationException.cs" />\r
     <Compile Include="System.Threading\ManualResetEventSlim.cs" />\r
     <Compile Include="System.Threading\Monitor.cs" />\r
     <Compile Include="System.Threading\Mutex.cs" />\r
+    <Compile Include="System.Threading\NamedDataSlot.cs" />\r
     <Compile Include="System.Threading\NativeEventCalls.cs" />\r
     <Compile Include="System.Threading\NativeOverlapped.cs" />\r
     <Compile Include="System.Threading\Overlapped.cs" />\r
     <Compile Include="System\CLSCompliantAttribute.cs" />\r
     <Compile Include="System\Comparison.cs" />\r
     <Compile Include="System\Console.cs" />\r
+    <Compile Include="System\Console.iOS.cs" />\r
     <Compile Include="System\ConsoleCancelEventArgs.cs" />\r
     <Compile Include="System\ConsoleCancelEventHandler.cs" />\r
     <Compile Include="System\ConsoleColor.cs" />\r
     <Compile Include="System\PlatformID.cs" />\r
     <Compile Include="System\PlatformNotSupportedException.cs" />\r
     <Compile Include="System\Predicate.cs" />\r
+    <Compile Include="System\Progress.cs" />\r
     <Compile Include="System\Random.cs" />\r
     <Compile Include="System\RankException.cs" />\r
     <Compile Include="System\ResolveEventArgs.cs" />\r
     <Compile Include="System\Version.cs" />\r
     <Compile Include="System\Void.cs" />\r
     <Compile Include="System\WeakReference.cs" />\r
+    <Compile Include="System\WeakReference_T.cs" />\r
     <Compile Include="System\WindowsConsoleDriver.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
index 95c7be346887806e2531bcff350c70b88374b7d8..edc75eb67bb54fe2b20da2d75fd62e2cd68c5a28 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</ProjectGuid>\r
+    <ProjectGuid>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>612,618,1699</NoWarn>\r
     <OutputPath>bin\Debug\corlib-net_4_0</OutputPath>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\ConfidenceFactor.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\PrimalityTests.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math\BigInteger.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\ARC4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoTools.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS8.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RC4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RSAManaged.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\SymmetricTransform.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\PKCS12.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X501Name.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Certificate.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CertificateCollection.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Chain.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509ChainStatusFlags.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CRL.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extensions.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Store.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509StoreManager.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Stores.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X520Attributes.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1Convert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\BitConverterLE.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\PKCS7.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\StrongName.cs" />\r
     <Compile Include="..\System.Core\System.Security.Cryptography\Aes.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.AdjustmentRule.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.Android.cs" />\r
     <Compile Include="Mono.Interop\ComInteropProxy.cs" />\r
     <Compile Include="Mono.Interop\IDispatch.cs" />\r
     <Compile Include="Mono.Interop\IUnknown.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime\ConfidenceFactor.cs" />\r
-    <Compile Include="Mono.Math.Prime\PrimalityTests.cs" />\r
-    <Compile Include="Mono.Math\BigInteger.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoConvert.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoTools.cs" />\r
     <Compile Include="Mono.Security.Cryptography\DSAManaged.cs" />\r
     <Compile Include="Mono.Security.Cryptography\HMACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
     <Compile Include="Mono.Security.Cryptography\MACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS1.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS8.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\RSAManaged.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\SymmetricTransform.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
-    <Compile Include="Mono.Security.X509\PKCS12.cs" />\r
-    <Compile Include="Mono.Security.X509\X501Name.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Certificate.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CertificateCollection.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Chain.cs" />\r
-    <Compile Include="Mono.Security.X509\X509ChainStatusFlags.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CRL.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extension.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extensions.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Store.cs" />\r
-    <Compile Include="Mono.Security.X509\X509StoreManager.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Stores.cs" />\r
-    <Compile Include="Mono.Security.X509\X520Attributes.cs" />\r
-    <Compile Include="Mono.Security\ASN1.cs" />\r
-    <Compile Include="Mono.Security\ASN1Convert.cs" />\r
-    <Compile Include="Mono.Security\BitConverterLE.cs" />\r
-    <Compile Include="Mono.Security\PKCS7.cs" />\r
-    <Compile Include="Mono.Security\StrongName.cs" />\r
     <Compile Include="Mono.Security\StrongNameManager.cs" />\r
     <Compile Include="Mono.Security\Uri.cs" />\r
     <Compile Include="Mono.Xml\SecurityParser.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentOrderedList.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentQueue.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentStack.cs" />\r
+    <Compile Include="System.Collections.Concurrent\EnumerablePartitionerOptions.cs" />\r
     <Compile Include="System.Collections.Concurrent\IProducerConsumerCollection.cs" />\r
     <Compile Include="System.Collections.Concurrent\OrderablePartitioner.cs" />\r
     <Compile Include="System.Collections.Concurrent\Partitioner.cs" />\r
     <Compile Include="System.Collections.ObjectModel\Collection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\KeyedCollection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\ReadOnlyCollection.cs" />\r
+    <Compile Include="System.Collections.ObjectModel\ReadOnlyDictionary.cs" />\r
     <Compile Include="System.Collections\ArrayList.cs" />\r
     <Compile Include="System.Collections\BitArray.cs" />\r
     <Compile Include="System.Collections\CaseInsensitiveComparer.cs" />\r
     <Compile Include="System.Collections\Comparer.cs" />\r
     <Compile Include="System.Collections\DictionaryBase.cs" />\r
     <Compile Include="System.Collections\DictionaryEntry.cs" />\r
+    <Compile Include="System.Collections\HashPrimeNumbers.cs" />\r
     <Compile Include="System.Collections\Hashtable.cs" />\r
     <Compile Include="System.Collections\ICollection.cs" />\r
     <Compile Include="System.Collections\IComparer.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailedEventArgs.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailureKind.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractInvariantMethodAttribute.cs" />\r
+    <Compile Include="System.Diagnostics.Contracts\ContractOptionAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractPublicPropertyNameAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractReferenceAssemblyAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractRuntimeIgnoredAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyAlgorithmIdAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCompanyAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyConfigurationAttribute.cs" />\r
+    <Compile Include="System.Reflection\AssemblyContentType.cs" />\r
     <Compile Include="System.Reflection\AssemblyCopyrightAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCultureAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyDefaultAliasAttribute.cs" />\r
     <Compile Include="System.Reflection\ReflectionTypeLoadException.cs" />\r
     <Compile Include="System.Reflection\ResourceAttributes.cs" />\r
     <Compile Include="System.Reflection\ResourceLocation.cs" />\r
+    <Compile Include="System.Reflection\RuntimeReflectionExtensions.cs" />\r
     <Compile Include="System.Reflection\StrongNameKeyPair.cs" />\r
     <Compile Include="System.Reflection\TargetException.cs" />\r
     <Compile Include="System.Reflection\TargetInvocationException.cs" />\r
     <Compile Include="System.Threading\ManualResetEventSlim.cs" />\r
     <Compile Include="System.Threading\Monitor.cs" />\r
     <Compile Include="System.Threading\Mutex.cs" />\r
+    <Compile Include="System.Threading\NamedDataSlot.cs" />\r
     <Compile Include="System.Threading\NativeEventCalls.cs" />\r
     <Compile Include="System.Threading\NativeOverlapped.cs" />\r
     <Compile Include="System.Threading\Overlapped.cs" />\r
     <Compile Include="System\CLSCompliantAttribute.cs" />\r
     <Compile Include="System\Comparison.cs" />\r
     <Compile Include="System\Console.cs" />\r
+    <Compile Include="System\Console.iOS.cs" />\r
     <Compile Include="System\ConsoleCancelEventArgs.cs" />\r
     <Compile Include="System\ConsoleCancelEventHandler.cs" />\r
     <Compile Include="System\ConsoleColor.cs" />\r
     <Compile Include="System\PlatformID.cs" />\r
     <Compile Include="System\PlatformNotSupportedException.cs" />\r
     <Compile Include="System\Predicate.cs" />\r
+    <Compile Include="System\Progress.cs" />\r
     <Compile Include="System\Random.cs" />\r
     <Compile Include="System\RankException.cs" />\r
     <Compile Include="System\ResolveEventArgs.cs" />\r
     <Compile Include="System\Version.cs" />\r
     <Compile Include="System\Void.cs" />\r
     <Compile Include="System\WeakReference.cs" />\r
+    <Compile Include="System\WeakReference_T.cs" />\r
     <Compile Include="System\WindowsConsoleDriver.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
index d4ac2e61a61c7cdc867597d897653a405c38e1fc..864446e5081831cf3029a97db7a29486664f6b9d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</ProjectGuid>\r
+    <ProjectGuid>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>612,618,1699</NoWarn>\r
     <OutputPath>bin\Debug\corlib-net_4_5</OutputPath>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\ConfidenceFactor.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\PrimalityTests.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math\BigInteger.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\ARC4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoTools.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS8.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RC4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RSAManaged.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\SymmetricTransform.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\PKCS12.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X501Name.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Certificate.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CertificateCollection.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Chain.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509ChainStatusFlags.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CRL.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extensions.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Store.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509StoreManager.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Stores.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X520Attributes.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1Convert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\BitConverterLE.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\PKCS7.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\StrongName.cs" />\r
     <Compile Include="..\System.Core\System.Security.Cryptography\Aes.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.AdjustmentRule.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.Android.cs" />\r
     <Compile Include="Mono.Interop\ComInteropProxy.cs" />\r
     <Compile Include="Mono.Interop\IDispatch.cs" />\r
     <Compile Include="Mono.Interop\IUnknown.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime\ConfidenceFactor.cs" />\r
-    <Compile Include="Mono.Math.Prime\PrimalityTests.cs" />\r
-    <Compile Include="Mono.Math\BigInteger.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoConvert.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoTools.cs" />\r
     <Compile Include="Mono.Security.Cryptography\DSAManaged.cs" />\r
     <Compile Include="Mono.Security.Cryptography\HMACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
     <Compile Include="Mono.Security.Cryptography\MACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS1.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS8.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\RSAManaged.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\SymmetricTransform.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
-    <Compile Include="Mono.Security.X509\PKCS12.cs" />\r
-    <Compile Include="Mono.Security.X509\X501Name.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Certificate.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CertificateCollection.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Chain.cs" />\r
-    <Compile Include="Mono.Security.X509\X509ChainStatusFlags.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CRL.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extension.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extensions.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Store.cs" />\r
-    <Compile Include="Mono.Security.X509\X509StoreManager.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Stores.cs" />\r
-    <Compile Include="Mono.Security.X509\X520Attributes.cs" />\r
-    <Compile Include="Mono.Security\ASN1.cs" />\r
-    <Compile Include="Mono.Security\ASN1Convert.cs" />\r
-    <Compile Include="Mono.Security\BitConverterLE.cs" />\r
-    <Compile Include="Mono.Security\PKCS7.cs" />\r
-    <Compile Include="Mono.Security\StrongName.cs" />\r
     <Compile Include="Mono.Security\StrongNameManager.cs" />\r
     <Compile Include="Mono.Security\Uri.cs" />\r
     <Compile Include="Mono.Xml\SecurityParser.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentOrderedList.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentQueue.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentStack.cs" />\r
+    <Compile Include="System.Collections.Concurrent\EnumerablePartitionerOptions.cs" />\r
     <Compile Include="System.Collections.Concurrent\IProducerConsumerCollection.cs" />\r
     <Compile Include="System.Collections.Concurrent\OrderablePartitioner.cs" />\r
     <Compile Include="System.Collections.Concurrent\Partitioner.cs" />\r
     <Compile Include="System.Collections.ObjectModel\Collection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\KeyedCollection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\ReadOnlyCollection.cs" />\r
+    <Compile Include="System.Collections.ObjectModel\ReadOnlyDictionary.cs" />\r
     <Compile Include="System.Collections\ArrayList.cs" />\r
     <Compile Include="System.Collections\BitArray.cs" />\r
     <Compile Include="System.Collections\CaseInsensitiveComparer.cs" />\r
     <Compile Include="System.Collections\Comparer.cs" />\r
     <Compile Include="System.Collections\DictionaryBase.cs" />\r
     <Compile Include="System.Collections\DictionaryEntry.cs" />\r
+    <Compile Include="System.Collections\HashPrimeNumbers.cs" />\r
     <Compile Include="System.Collections\Hashtable.cs" />\r
     <Compile Include="System.Collections\ICollection.cs" />\r
     <Compile Include="System.Collections\IComparer.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailedEventArgs.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailureKind.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractInvariantMethodAttribute.cs" />\r
+    <Compile Include="System.Diagnostics.Contracts\ContractOptionAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractPublicPropertyNameAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractReferenceAssemblyAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractRuntimeIgnoredAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyAlgorithmIdAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCompanyAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyConfigurationAttribute.cs" />\r
+    <Compile Include="System.Reflection\AssemblyContentType.cs" />\r
     <Compile Include="System.Reflection\AssemblyCopyrightAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCultureAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyDefaultAliasAttribute.cs" />\r
     <Compile Include="System.Reflection\ReflectionTypeLoadException.cs" />\r
     <Compile Include="System.Reflection\ResourceAttributes.cs" />\r
     <Compile Include="System.Reflection\ResourceLocation.cs" />\r
+    <Compile Include="System.Reflection\RuntimeReflectionExtensions.cs" />\r
     <Compile Include="System.Reflection\StrongNameKeyPair.cs" />\r
     <Compile Include="System.Reflection\TargetException.cs" />\r
     <Compile Include="System.Reflection\TargetInvocationException.cs" />\r
     <Compile Include="System.Threading\ManualResetEventSlim.cs" />\r
     <Compile Include="System.Threading\Monitor.cs" />\r
     <Compile Include="System.Threading\Mutex.cs" />\r
+    <Compile Include="System.Threading\NamedDataSlot.cs" />\r
     <Compile Include="System.Threading\NativeEventCalls.cs" />\r
     <Compile Include="System.Threading\NativeOverlapped.cs" />\r
     <Compile Include="System.Threading\Overlapped.cs" />\r
     <Compile Include="System\CLSCompliantAttribute.cs" />\r
     <Compile Include="System\Comparison.cs" />\r
     <Compile Include="System\Console.cs" />\r
+    <Compile Include="System\Console.iOS.cs" />\r
     <Compile Include="System\ConsoleCancelEventArgs.cs" />\r
     <Compile Include="System\ConsoleCancelEventHandler.cs" />\r
     <Compile Include="System\ConsoleColor.cs" />\r
     <Compile Include="System\PlatformID.cs" />\r
     <Compile Include="System\PlatformNotSupportedException.cs" />\r
     <Compile Include="System\Predicate.cs" />\r
+    <Compile Include="System\Progress.cs" />\r
     <Compile Include="System\Random.cs" />\r
     <Compile Include="System\RankException.cs" />\r
     <Compile Include="System\ResolveEventArgs.cs" />\r
     <Compile Include="System\Version.cs" />\r
     <Compile Include="System\Void.cs" />\r
     <Compile Include="System\WeakReference.cs" />\r
+    <Compile Include="System\WeakReference_T.cs" />\r
     <Compile Include="System\WindowsConsoleDriver.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
index 91f9c35d7f389ca3961472899ceba5fbff977227..0a9c5b50e3d88c17a733fa1ab5b546e2287b962e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7416CE6D-7427-453B-B34B-6CB22334BF3D}</ProjectGuid>\r
+    <ProjectGuid>{D7836C01-0BC4-4C5F-BCE7-123D8701D6B0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>612,618,1699,168,219,618,672</NoWarn>\r
     <OutputPath>bin\Debug\corlib-tests-net_2_0</OutputPath>\r
@@ -44,7 +44,6 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="Mono\DataConverter.cs" />\r
     <Compile Include="Test\Microsoft.Win32\RegistryKeyTest.cs" />\r
     <Compile Include="Test\Mono\DataConvertTest.cs" />\r
     <Compile Include="Test\System.Threading\SpinLockTests.cs" />\r
     <Compile Include="Test\System.Threading\ThreadCas.cs" />\r
     <Compile Include="Test\System.Threading\ThreadLocalTests.cs" />\r
+    <Compile Include="Test\System.Threading\ThreadPoolTest.cs" />\r
     <Compile Include="Test\System.Threading\ThreadTest.cs" />\r
     <Compile Include="Test\System.Threading\TimerTest.cs" />\r
     <Compile Include="Test\System.Threading\VolatileTest.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-build.csproj">\r
-      <Project>{78F7614C-D0FE-49BE-9521-D2C7DD8A2C55}</Project>\r
+      <Project>{983EBE35-85B4-4D16-84AE-C3081CAE53EA}</Project>\r
       <Name>Mono.Posix\Mono.Posix-build</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-build.csproj">\r
-      <Project>{8F189E8F-4391-4E28-A66B-7ACB47381FFF}</Project>\r
+      <Project>{7E092751-BD4C-404C-960F-657A8D7DABCF}</Project>\r
       <Name>System.Core\System.Core-build</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
+  <ItemGroup>\r
+    <EmbeddedResource Include="Test/resources/Resources.resources">\r
+      <LogicalName>Resources.resources</LogicalName>\r
+    </EmbeddedResource>\r
+  </ItemGroup>\r
 </Project>
index 9cd53eff1ed48311e2171d431240377e40c541fd..9089bba2a0a111bf81d359d37c03d70d99a518a3 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{18B35F26-A922-43A2-9583-8B807D01751E}</ProjectGuid>\r
+    <ProjectGuid>{3AA3802F-6784-454B-BD51-4FCE18CA90D2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>612,618,1699,168,219,618,672</NoWarn>\r
     <OutputPath>bin\Debug\corlib-tests-net_4_0</OutputPath>\r
@@ -44,7 +44,6 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="Mono\DataConverter.cs" />\r
     <Compile Include="Test\Microsoft.Win32\RegistryKeyTest.cs" />\r
     <Compile Include="Test\Mono\DataConvertTest.cs" />\r
     <Compile Include="Test\System.Threading\SpinLockTests.cs" />\r
     <Compile Include="Test\System.Threading\ThreadCas.cs" />\r
     <Compile Include="Test\System.Threading\ThreadLocalTests.cs" />\r
+    <Compile Include="Test\System.Threading\ThreadPoolTest.cs" />\r
     <Compile Include="Test\System.Threading\ThreadTest.cs" />\r
     <Compile Include="Test\System.Threading\TimerTest.cs" />\r
     <Compile Include="Test\System.Threading\VolatileTest.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
+  <ItemGroup>\r
+    <EmbeddedResource Include="Test/resources/Resources.resources">\r
+      <LogicalName>Resources.resources</LogicalName>\r
+    </EmbeddedResource>\r
+  </ItemGroup>\r
 </Project>
index 208f7f9d64e33758b582ea842a148b851ab21379..9039342c40f1d9a5ec138ac6e936ead93bab6639 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{50D0CA30-64AF-4136-B43D-C43EDDE136C7}</ProjectGuid>\r
+    <ProjectGuid>{93EE601C-8B43-4AE1-B417-7BDCD0FE4C95}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>612,618,1699,168,219,618,672</NoWarn>\r
     <OutputPath>bin\Debug\corlib-tests-net_4_5</OutputPath>\r
@@ -44,7 +44,6 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="Mono\DataConverter.cs" />\r
     <Compile Include="Test\Microsoft.Win32\RegistryKeyTest.cs" />\r
     <Compile Include="Test\Mono\DataConvertTest.cs" />\r
     <Compile Include="Test\System.Threading\SpinLockTests.cs" />\r
     <Compile Include="Test\System.Threading\ThreadCas.cs" />\r
     <Compile Include="Test\System.Threading\ThreadLocalTests.cs" />\r
+    <Compile Include="Test\System.Threading\ThreadPoolTest.cs" />\r
     <Compile Include="Test\System.Threading\ThreadTest.cs" />\r
     <Compile Include="Test\System.Threading\TimerTest.cs" />\r
     <Compile Include="Test\System.Threading\VolatileTest.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
+  <ItemGroup>\r
+    <EmbeddedResource Include="Test/resources/Resources.resources">\r
+      <LogicalName>Resources.resources</LogicalName>\r
+    </EmbeddedResource>\r
+  </ItemGroup>\r
 </Project>
index fa1e193ef43aab8fa398a6434081ea040a29e93c..eb97b08f98072892991c7b3c28781ec31e276945 100644 (file)
@@ -33,47 +33,53 @@ Mono/DataConverter.cs
 Mono.Interop/ComInteropProxy.cs
 Mono.Interop/IDispatch.cs
 Mono.Interop/IUnknown.cs
-Mono.Math/BigInteger.cs
-Mono.Math.Prime/ConfidenceFactor.cs
-Mono.Math.Prime/PrimalityTests.cs
-Mono.Math.Prime.Generator/NextPrimeFinder.cs
-Mono.Math.Prime.Generator/PrimeGeneratorBase.cs
-Mono.Math.Prime.Generator/SequentialSearchPrimeGeneratorBase.cs
-Mono.Security/ASN1.cs
-Mono.Security/ASN1Convert.cs
-Mono.Security/BitConverterLE.cs
-Mono.Security/PKCS7.cs
-Mono.Security/StrongName.cs
+../Mono.Security/Mono.Math/BigInteger.cs
+../Mono.Security/Mono.Math.Prime/ConfidenceFactor.cs
+../Mono.Security/Mono.Math.Prime/PrimalityTests.cs
+../Mono.Security/Mono.Math.Prime.Generator/NextPrimeFinder.cs
+../Mono.Security/Mono.Math.Prime.Generator/PrimeGeneratorBase.cs
+../Mono.Security/Mono.Math.Prime.Generator/SequentialSearchPrimeGeneratorBase.cs
+../Mono.Security/Mono.Security/ASN1.cs
+../Mono.Security/Mono.Security/ASN1Convert.cs
+../Mono.Security/Mono.Security/BitConverterLE.cs
+../Mono.Security/Mono.Security/PKCS7.cs
+../Mono.Security/Mono.Security/StrongName.cs
 Mono.Security/StrongNameManager.cs
 Mono.Security/Uri.cs
-Mono.Security.Authenticode/AuthenticodeBase.cs
-Mono.Security.Authenticode/AuthenticodeDeformatter.cs
-Mono.Security.Cryptography/CryptoConvert.cs
-Mono.Security.Cryptography/CryptoTools.cs
+../Mono.Security/Mono.Security.Authenticode/AuthenticodeBase.cs
+../Mono.Security/Mono.Security.Authenticode/AuthenticodeDeformatter.cs
+../Mono.Security/Mono.Security.Cryptography/ARC4Managed.cs
+../Mono.Security/Mono.Security.Cryptography/CryptoConvert.cs
+../Mono.Security/Mono.Security.Cryptography/CryptoTools.cs
 Mono.Security.Cryptography/DSAManaged.cs
-Mono.Security.Cryptography/KeyPairPersistence.cs
-Mono.Security.Cryptography/PKCS1.cs
-Mono.Security.Cryptography/PKCS8.cs
 Mono.Security.Cryptography/HMACAlgorithm.cs
+../Mono.Security/Mono.Security.Cryptography/KeyPairPersistence.cs
 Mono.Security.Cryptography/MACAlgorithm.cs
-Mono.Security.Cryptography/SymmetricTransform.cs
-Mono.Security.Cryptography/RSAManaged.cs
-Mono.Security.X509/PKCS12.cs
-Mono.Security.X509/X501Name.cs
-Mono.Security.X509/X509Certificate.cs
-Mono.Security.X509/X509CertificateCollection.cs
-Mono.Security.X509/X509Chain.cs
-Mono.Security.X509/X509ChainStatusFlags.cs
-Mono.Security.X509/X509CRL.cs
-Mono.Security.X509/X509Extension.cs
-Mono.Security.X509/X509Extensions.cs
-Mono.Security.X509/X509Store.cs
-Mono.Security.X509/X509Stores.cs
-Mono.Security.X509/X509StoreManager.cs
-Mono.Security.X509/X520Attributes.cs
-Mono.Security.X509.Extensions/BasicConstraintsExtension.cs
-Mono.Security.X509.Extensions/KeyUsageExtension.cs
-Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs
+../Mono.Security/Mono.Security.Cryptography/MD2.cs
+../Mono.Security/Mono.Security.Cryptography/MD2Managed.cs
+../Mono.Security/Mono.Security.Cryptography/MD4.cs
+../Mono.Security/Mono.Security.Cryptography/MD4Managed.cs
+../Mono.Security/Mono.Security.Cryptography/PKCS1.cs
+../Mono.Security/Mono.Security.Cryptography/PKCS8.cs
+../Mono.Security/Mono.Security.Cryptography/RC4.cs
+../Mono.Security/Mono.Security.Cryptography/RSAManaged.cs
+../Mono.Security/Mono.Security.Cryptography/SymmetricTransform.cs
+../Mono.Security/Mono.Security.X509/PKCS12.cs
+../Mono.Security/Mono.Security.X509/X501Name.cs
+../Mono.Security/Mono.Security.X509/X509Certificate.cs
+../Mono.Security/Mono.Security.X509/X509CertificateCollection.cs
+../Mono.Security/Mono.Security.X509/X509Chain.cs
+../Mono.Security/Mono.Security.X509/X509ChainStatusFlags.cs
+../Mono.Security/Mono.Security.X509/X509CRL.cs
+../Mono.Security/Mono.Security.X509/X509Extension.cs
+../Mono.Security/Mono.Security.X509/X509Extensions.cs
+../Mono.Security/Mono.Security.X509/X509Store.cs
+../Mono.Security/Mono.Security.X509/X509Stores.cs
+../Mono.Security/Mono.Security.X509/X509StoreManager.cs
+../Mono.Security/Mono.Security.X509/X520Attributes.cs
+../Mono.Security/Mono.Security.X509.Extensions/BasicConstraintsExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/KeyUsageExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs
 Mono.Xml/SmallXmlParser.cs
 Mono.Xml/SecurityParser.cs
 System/AccessViolationException.cs
@@ -114,6 +120,7 @@ System/CLSCompliantAttribute.cs
 System/CStreamReader.cs
 System/CStreamWriter.cs
 System/Console.cs
+System/Console.iOS.cs
 System/ConsoleCancelEventArgs.cs
 System/ConsoleCancelEventHandler.cs
 System/ConsoleColor.cs
index 97222a4d180eacb34a368dc51b9dae8d6c3980b3..0ac74a6812b2a68db0826ae48e9781eb80bb29ac 100644 (file)
@@ -39,6 +39,7 @@ System.Collections/QueueTest.cs
 System.Collections/ReadOnlyCollectionBaseTest.cs
 System.Collections/SortedListTest.cs
 System.Collections/StackTest.cs
+System.Collections/StructuralComparisonsTest.cs
 System.Collections.Generic/ComparerTest.cs
 System.Collections.Generic/DictionaryTest.cs
 System.Collections.Generic/EqualityComparerTest.cs
@@ -406,6 +407,7 @@ System.Threading/InterlockedTest.cs
 System.Threading/LazyInitializerTest.cs
 System.Threading/WaitHandleTest.cs
 System.Threading/VolatileTest.cs
+System.Threading/ThreadPoolTest.cs
 System/TimeSpanTest.cs
 System/TimeZoneTest.cs
 System/TypeTest.cs
diff --git a/mcs/class/corlib/monotouch_corlib.dll.sources b/mcs/class/corlib/monotouch_corlib.dll.sources
new file mode 100644 (file)
index 0000000..9e173da
--- /dev/null
@@ -0,0 +1 @@
+#include corlib.dll.sources
\ No newline at end of file
index c61e7382c092e097bbcf50d1c2f69c623ca4a54e..795cae98daf8595657b6b85bc56de12c39292787 100644 (file)
@@ -77,6 +77,7 @@ RESOURCE_FILES = \
        $(IMAGES)
 
 EXTRA_DISTFILES = \
+       jay.sh \
        monodoc.dll.config.in   \
        $(RESOURCE_FILES)   \
        Monodoc.Ecma/EcmaUrlParser.jay \
@@ -116,7 +117,9 @@ LIB_MCS_FLAGS = \
        /r:System.Xml.Linq.dll                                            \
        /r:System.Configuration.dll
 
-TEST_MCS_FLAGS = /r:System.Core.dll /r:System.Xml.dll
+CLEAN_FILES += $(the_lib).config
+
+TEST_MCS_FLAGS = /r:System.dll /r:System.Core.dll /r:System.Xml.dll
 
 DOC_SOURCE_DIRS = \
        ../../docs \
@@ -137,8 +140,8 @@ dist-local: Monodoc.Ecma/EcmaUrlParser.cs
 $(the_lib).config: Makefile monodoc.dll.config.in
        sed 's,@monodoc_refdir@,$(mono_libdir)/monodoc,g' monodoc.dll.config.in > $@
 
-Monodoc.Ecma/EcmaUrlParser.cs: Monodoc.Ecma/EcmaUrlParser.jay $(topdir)/jay/skeleton.cs
-       $(topdir)/jay/jay $(JAY_FLAGS) < $(topdir)/jay/skeleton.cs $< > jay-tmp.out && mv jay-tmp.out $@
+Monodoc.Ecma/EcmaUrlParser.cs: Monodoc.Ecma/EcmaUrlParser.jay $(topdir)/jay/skeleton.cs jay.sh
+       $(topdir)/$(thisdir)/jay.sh $(topdir) $< $@ $(JAY_FLAGS)
 
 parser.exe: Monodoc.Ecma/EcmaUrlParser.cs Monodoc.Ecma/EcmaUrlTokenizer.cs Monodoc.Ecma/EcmaUrlParserDriver.cs Monodoc.Ecma/EcmaDesc.cs
        mcs /out:$@ /debug $^
index 0974b07adf18b93b65692a82bdfef90961c809b0..c16645971de2957b1436d9183333da0206bfd930 100644 (file)
@@ -86,11 +86,26 @@ namespace Monodoc.Ecma
                        set;
                }
 
+               /* This property tells if the above collections only correct value
+                * is the number of item in it to represent generic arguments
+                */
+               public bool GenericTypeArgumentsIsNumeric {
+                       get {
+                               return GenericTypeArguments != null && GenericTypeArguments.FirstOrDefault () == null;
+                       }
+               }
+
                public IList<EcmaDesc> GenericMemberArguments {
                        get;
                        set;
                }
 
+               public bool GenericMemberArgumentsIsNumeric {
+                       get {
+                               return GenericMemberArguments != null && GenericMemberArguments.FirstOrDefault () == null;
+                       }
+               }
+
                public IList<EcmaDesc> MemberArguments {
                        get;
                        set;
@@ -304,27 +319,11 @@ namespace Monodoc.Ecma
                {
                        if (args == null || !args.Any ())
                                return string.Empty;
+                       // If we only have the number of generic arguments, use ` notation
+                       if (args.First () == null)
+                               return "`" + args.Count ();
 
-                       IEnumerable<string> argsList = null;
-
-                       // HACK: If we don't have fully specified EcmaDesc for generic arguments
-                       // we use the most common names for the argument length configuration
-                       if (args.Any (a => a == null)) {
-                               var argCount = args.Count ();
-                               switch (argCount) {
-                               case 1:
-                                       argsList = new string[] { "T" };
-                                       break;
-                               case 2:
-                                       argsList = new string[] { "TKey", "TValue" };
-                                       break;
-                               default:
-                                       argsList = Enumerable.Range (1, argCount).Select (i => "T" + i);
-                                       break;
-                               }
-                       } else {
-                               argsList = args.Select (t => FormatNamespace (t) + t.ToCompleteTypeName ());
-                       }
+                       IEnumerable<string> argsList = args.Select (t => FormatNamespace (t) + t.ToCompleteTypeName ());
 
                        return "<" + string.Join (",", argsList) + ">";
                }
index 151192096b1e686dabb49a3160a8692225ae8365..a4d726718a36ab21156b10287fe29a0e1a8a5ad7 100644 (file)
@@ -61,8 +61,9 @@ namespace Monodoc.Ecma
                {
                        int token = xtoken ();
                        //Console.WriteLine ("Current token {0} with value {1}", token, val == null ? "(none)" : val.ToString ());
-                       if (token == Token.ERROR)
-                               Console.WriteLine ("Problem at pos {0} after token {1}", current_pos, current_token);
+                       if (token == Token.ERROR) {
+                               throw new Exception (string.Format ("Error at position {0} parsing url '{0}'",  current_pos, input));
+                       }
                        current_token = token;
                        return token;
                }
@@ -80,8 +81,10 @@ namespace Monodoc.Ecma
                                return Token.COMMA;
                        case '.':
                                return Token.DOT;
+                       case '{':
                        case '<':
                                return Token.OP_GENERICS_LT;
+                       case '}':
                        case '>':
                                return Token.OP_GENERICS_GT;
                        case '`':
index c69aeae8e56aefd5e51e9bafab37401c7d2133b2..04923ad4d90b0e48945a0280edff6c0555e141e0 100644 (file)
@@ -535,5 +535,11 @@ namespace Monodoc
                                yield return indexDirectory;
                        yield return Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData), "monodoc");
                }
+
+               [Obsolete]
+               public string GetTitle (string url)
+               {
+                       return "Mono Documentation";
+               }
        }
 }
index b0d033d1b4e759632962a58f1323558b75868472..4d8a8d27c81087ae90863e7b8f837960482b7deb 100644 (file)
@@ -22,6 +22,9 @@ namespace Monodoc
                [Obsolete ("Use RawGenerator directly")]
                public XmlDocument GetHelpXml (string id)
                {
+                       var rendered = RenderUrl (id, rawGenerator);
+                       if (rendered == null)
+                               return null;
                        var doc = new XmlDocument ();
                        doc.LoadXml (RenderUrl (id, rawGenerator));
                        return doc;
index 1dcc72af1d4e8affb6415774f232c9415cce59dd..c15c6137786a511569b25f0f4e809a630dd4dd10 100644 (file)
@@ -81,12 +81,20 @@ namespace Monodoc.Generators.Html
 
                public string Export (Stream stream, Dictionary<string, string> extraArgs)
                {
-                       return Htmlize (XmlReader.Create (stream), extraArgs);
+                       return Htmlize (XmlReader.Create (WrapStream (new StreamReader (stream), extraArgs)), extraArgs);
                }
 
                public string Export (string input, Dictionary<string, string> extraArgs)
                {
-                       return Htmlize (XmlReader.Create (new StringReader (input)), extraArgs);
+                       return Htmlize (XmlReader.Create (WrapStream (new StringReader (input), extraArgs)), extraArgs);
+               }
+
+               TextReader WrapStream (TextReader initialReader, Dictionary<string, string> renderArgs)
+               {
+                       string show;
+                       if (renderArgs.TryGetValue ("show", out show) && show == "namespace")
+                               return new AvoidCDataTextReader (initialReader);
+                       return initialReader;
                }
                
                static void EnsureTransform ()
@@ -105,6 +113,7 @@ namespace Monodoc.Generators.Html
                public class ExtensionObject
                {
                        bool quiet = true;
+                       Dictionary<string, System.Reflection.Assembly> assemblyCache = new Dictionary<string, System.Reflection.Assembly> ();
 
                        public string Colorize(string code, string lang)
                        {
@@ -208,7 +217,11 @@ namespace Monodoc.Generators.Html
                                        System.Reflection.Assembly assembly = null;
                                
                                        try {
-                                               assembly = System.Reflection.Assembly.LoadWithPartialName(assemblyname);
+                                               if (!assemblyCache.TryGetValue (assemblyname, out assembly)) {
+                                                       assembly = System.Reflection.Assembly.LoadWithPartialName(assemblyname);
+                                                       if (assembly != null)
+                                                               assemblyCache[assemblyname] = assembly;
+                                               }
                                        } catch (Exception) {
                                                // nothing.
                                        }
@@ -264,7 +277,13 @@ namespace Monodoc.Generators.Html
                                        if (assemblyname == string.Empty)
                                                return string.Empty;
 
-                                       var assembly = System.Reflection.Assembly.LoadWithPartialName(assemblyname);
+                                       System.Reflection.Assembly assembly;
+                                       if (!assemblyCache.TryGetValue (assemblyname, out assembly)) {
+                                               assembly = System.Reflection.Assembly.LoadWithPartialName(assemblyname);
+                                               if (assembly != null)
+                                                       assemblyCache[assemblyname] = assembly;
+                                       }
+
                                        if (assembly == null)
                                                return string.Empty;
 
@@ -310,4 +329,81 @@ namespace Monodoc.Generators.Html
                        }
                }
        }
+
+       public class AvoidCDataTextReader : TextReader
+       {
+               static readonly char[] CDataPattern = new[] {
+                       '<', '!', '[', 'C', 'D', 'A', 'T', 'A', '['
+               };
+               static readonly char[] CDataClosingPattern = new[] {
+                       ']', ']', '>'
+               };
+               TextReader wrappedReader;
+               char[] backingArray = new char[9]; // "<![CDATA[".Length
+               int currentIndex = -1;
+               int eofIndex = -1;
+               bool inCData;
+
+               public AvoidCDataTextReader (TextReader wrappedReader)
+               {
+                       this.wrappedReader = wrappedReader;
+               }
+
+               public override int Peek ()
+               {
+                       if (!EnsureBuffer ())
+                               return -1;
+                       return (int)backingArray[currentIndex];
+               }
+
+               public override int Read ()
+               {
+                       if (!EnsureBuffer ())
+                               return -1;
+                       var result = (int)backingArray[currentIndex];
+                       var next = wrappedReader.Read ();
+                       if (next == -1 && eofIndex == -1)
+                               eofIndex = currentIndex;
+                       else
+                               backingArray[currentIndex] = (char)next;
+                       currentIndex = (currentIndex + 1) % backingArray.Length;
+                       return result;
+               }
+
+               void ReadLength (int length)
+               {
+                       for (int i = 0; i < length; i++)
+                               Read ();
+               }
+
+               bool EnsureBuffer ()
+               {
+                       if (currentIndex == -1) {
+                               currentIndex = 0;
+                               var read = wrappedReader.ReadBlock (backingArray, 0, backingArray.Length);
+                               if (read < backingArray.Length)
+                                       eofIndex = read;
+                               return read > 0;
+                       } else if (currentIndex == eofIndex) {
+                               return false;
+                       }
+                       if (!inCData && PatternDetect (CDataPattern)) {
+                               inCData = true;
+                               ReadLength (CDataPattern.Length);
+                               return EnsureBuffer ();
+                       }
+                       if (inCData && PatternDetect (CDataClosingPattern)) {
+                               inCData = false;
+                               ReadLength (CDataClosingPattern.Length);
+                               return EnsureBuffer ();
+                       }
+
+                       return true;
+               }
+
+               bool PatternDetect (char[] pattern)
+               {
+                       return backingArray[currentIndex] == pattern[0] && Enumerable.Range (1, pattern.Length - 1).All (i => backingArray[(currentIndex + i) % backingArray.Length] == pattern[i]);
+               }
+       }
 }
index ba1be8a1b6afd6c32b82570a7345dc6e84685520..360889f6a732e84415f73ff1e1f07d8715cbc90b 100644 (file)
@@ -212,7 +212,10 @@ namespace Monodoc.Providers
                        currentNode = result;
                        result = null;
                        searchNode.Caption = desc.ToCompleteTypeName ();
-                       index = currentNode.ChildNodes.BinarySearch (searchNode, EcmaTypeNodeComparer.Instance);
+                       if (!desc.GenericTypeArgumentsIsNumeric)
+                               index = currentNode.ChildNodes.BinarySearch (searchNode, EcmaTypeNodeComparer.Instance);
+                       else
+                               index = GenericTypeBacktickSearch (currentNode.ChildNodes, desc);
                        if (index >= 0)
                                result = currentNode.ChildNodes[index];
                        if ((desc.DescKind == EcmaDesc.Kind.Type && !desc.IsEtc) || index < 0)
@@ -249,6 +252,48 @@ namespace Monodoc.Providers
                        return result;
                }
 
+               static int GenericTypeBacktickSearch (IList<Node> childNodes, EcmaDesc desc)
+               {
+                       /* Our strategy is to search for the non-generic variant of the type
+                        * (which in most case should fail) and then use the closest index
+                        * to linearily search for the generic variant with the right generic arg number
+                        */
+                       var searchNode = new Node () { Caption = desc.TypeName };
+                       int index = childNodes.BinarySearch (searchNode, EcmaTypeNodeComparer.Instance);
+                       // Place the index in the right start position
+                       if (index < 0)
+                               index = ~index;
+
+                       for (int i = index; i < childNodes.Count; i++) {
+                               var currentNode = childNodes[i];
+                               // Find the index of the generic argument list
+                               int genericIndex = currentNode.Caption.IndexOf ('<');
+                               // If we are not on the same base type name anymore, there is no point
+                               int captionSlice = genericIndex != -1 ? genericIndex : currentNode.Caption.LastIndexOf (' ');
+                               if (string.Compare (searchNode.Caption, 0,
+                                                   currentNode.Caption, 0,
+                                                   Math.Max (captionSlice, searchNode.Caption.Length),
+                                                   StringComparison.Ordinal) != 0)
+                                       break;
+
+                               var numGenerics = CountTypeGenericArguments (currentNode.Caption, genericIndex);
+                               if (numGenerics == desc.GenericTypeArguments.Count) {
+                                       // Simple comparison if we are not looking for an inner type
+                                       if (desc.NestedType == null)
+                                               return i;
+                                       // If more complicated, we fallback to using EcmaUrlParser
+                                       var caption = currentNode.Caption;
+                                       caption = "T:" + caption.Substring (0, caption.LastIndexOf (' ')).Replace ('.', '+');
+                                       EcmaDesc otherDesc;
+                                       var parser = new EcmaUrlParser ();
+                                       if (parser.TryParse (caption, out otherDesc) && desc.NestedType.Equals (otherDesc.NestedType))
+                                               return i;
+                               }
+                       }
+
+                       return -1;
+               }
+
                // This comparer returns the answer straight from caption comparison
                class EcmaGenericNodeComparer : IComparer<Node>
                {
@@ -381,8 +426,11 @@ namespace Monodoc.Providers
                public static int GetNodeLevel (Node node)
                {
                        int i = 0;
-                       for (; !node.Element.StartsWith ("root:/", StringComparison.OrdinalIgnoreCase); i++)
+                       for (; !node.Element.StartsWith ("root:/", StringComparison.OrdinalIgnoreCase); i++) {
                                node = node.Parent;
+                               if (node == null)
+                                       return i - 1;
+                       }
                        return i - 1;
                }
 
@@ -436,6 +484,33 @@ namespace Monodoc.Providers
                        return null;
                }
 
+               public static int CountTypeGenericArguments (string typeDefinition, int startIndex = 0)
+               {
+                       int nestedLevel = 0;
+                       int count = 0;
+                       bool started = false;
+
+                       foreach (char c in typeDefinition.Skip (startIndex)) {
+                               switch (c) {
+                               case '<':
+                                       if (!started)
+                                               count = 1;
+                                       started = true;
+                                       nestedLevel++;
+                                       break;
+                               case ',':
+                                       if (started && nestedLevel == 1)
+                                               count++;
+                                       break;
+                               case '>':
+                                       nestedLevel--;
+                                       break;
+                               }
+                       }
+
+                       return count;
+               }
+
                internal static string MakeOperatorSignature (XElement member, out string memberSignature)
                {
                        string name = (string)member.Attribute ("MemberName");
@@ -484,17 +559,15 @@ namespace Monodoc.Providers
                                var fullName = reader.GetAttribute ("FullName");
                                reader.ReadToFollowing ("AssemblyName");
                                var assemblyName = reader.ReadElementString ();
-                               reader.ReadToFollowing ("summary");
-                               var summary = reader.ReadInnerXml ();
-                               reader.ReadToFollowing ("remarks");
-                               var remarks = reader.ReadInnerXml ();
+                               var summary = reader.ReadToFollowing ("summary") ? XElement.Load (reader.ReadSubtree ()) : new XElement ("summary");
+                               var remarks = reader.ReadToFollowing ("remarks") ? XElement.Load (reader.ReadSubtree ()) : new XElement ("remarks");
 
                                return new XElement ("class",
                                                     new XAttribute ("name", name ?? string.Empty),
                                                     new XAttribute ("fullname", fullName ?? string.Empty),
                                                     new XAttribute ("assembly", assemblyName ?? string.Empty),
-                                                    new XElement ("summary", new XCData (summary)),
-                                                    new XElement ("remarks", new XCData (remarks)));
+                                                    summary,
+                                                    remarks);
                        }
                }
        }
index d136fbfe5e4ee3c604e3085e03f246e03d91d44c..53e54c4310bec6f0a4791fec6603e4be6597bc71 100644 (file)
@@ -77,15 +77,13 @@ namespace Monodoc.Providers
                        using (var reader = XmlReader.Create (nsFile)) {
                                reader.ReadToFollowing ("Namespace");
                                var name = reader.GetAttribute ("Name");
-                               reader.ReadToFollowing ("summary");
-                               var summary = reader.ReadInnerXml ();
-                               reader.ReadToFollowing ("remarks");
-                               var remarks = reader.ReadInnerXml ();
+                               var summary = reader.ReadToFollowing ("summary") ? XElement.Load (reader.ReadSubtree ()) : new XElement ("summary");
+                               var remarks = reader.ReadToFollowing ("remarks") ? XElement.Load (reader.ReadSubtree ()) : new XElement ("remarks");
 
                                return new XElement ("namespace",
                                                     new XAttribute ("ns", name ?? string.Empty),
-                                                    new XElement ("summary", new XCData (summary)),
-                                                    new XElement ("remarks", new XCData (remarks)));
+                                                    summary,
+                                                    remarks);
                        }
                }
 
@@ -276,7 +274,8 @@ namespace Monodoc.Providers
                Node GetNodeTypeParent (Node node)
                {
                        // Type nodes are always at level 2 so we just need to get there
-                       while (node != null && node.Parent != null && !node.Parent.Parent.Element.StartsWith ("root:/", StringComparison.OrdinalIgnoreCase))
+                       while (node != null && node.Parent != null
+                              && !node.Parent.Parent.Element.StartsWith ("root:/", StringComparison.OrdinalIgnoreCase) && node.Parent.Parent.Parent != null)
                                node = node.Parent;
                        return node;
                }
index 11772ee344b7784d70a2b8f181c0a7d900c23da1..243406214ceacb675a0967371c9c25bd60c3d31b 100644 (file)
                <xsl:param name="id" />
                <h2>Syntax</h2>
                <div class="Signature">
-                       <xsl:attribute name="id">
-                         <xsl:copy-of select="$id" />
-                       </xsl:attribute>
+      <xsl:if test="$id != ''">
+        <xsl:attribute name="id">
+          <xsl:copy-of select="$id" />
+        </xsl:attribute>
+      </xsl:if>
                        <xsl:copy-of select="$content" />
                </div>
        </xsl:template>
index bcfeac518475167998e6aeded3b4e3e8a49bec61..e6872f2ca5d902b74b5532e6e869126bf0069c2a 100644 (file)
@@ -111,6 +111,7 @@ namespace MonoTests.Monodoc.Ecma
                        AssertValidUrl ("C:Gendarme.Rules.Concurrency.DecorateThreadsRule.DecorateThreadsRule(System.String)");
                        AssertValidUrl ("C:Gendarme.Framework.Helpers.MethodSignature.MethodSignature(string,string,string[],System.Func<Mono.Cecil.MethodReference,System.Boolean>)");
                        AssertValidUrl ("C:System.Collections.Generic.Dictionary<TKey,TValue>+KeyCollection.KeyCollection(System.Collections.Generic.Dictionary<TKey,TValue>)");
+                       AssertValidUrl ("C:Microsoft.Build.Utilities.TaskItem(System.String,System.Collections.IDictionary)");
                }
 
                [Test]
@@ -175,6 +176,22 @@ namespace MonoTests.Monodoc.Ecma
                        AssertValidUrl ("M:Microsoft.Win32.RegistryKey$System.IDisposable.Dispose");
                }
 
+               [Test]
+               public void AspNetSafeUrlValidTest ()
+               {
+                       AssertValidUrl ("M:MonoTouch.UIKit.UICollectionViewLayoutAttributes.CreateForCell{T}");
+               }
+
+               [Test]
+               public void GenericTypeArgsIsNumericTest ()
+               {
+                       var desc = parser.Parse ("T:System.Collections.Generic.Dictionary`2");
+                       Assert.IsTrue (desc.GenericTypeArgumentsIsNumeric);
+                       Assert.AreEqual (2, desc.GenericTypeArguments.Count);
+                       desc = parser.Parse ("T:System.Collections.Generic.Dictionary<TKey,TValue>");
+                       Assert.IsFalse (desc.GenericTypeArgumentsIsNumeric);
+               }
+
                [Test]
                public void MetaEtcNodeTest ()
                {
@@ -224,6 +241,25 @@ namespace MonoTests.Monodoc.Ecma
                        AssertUrlDesc (ast, "T:System.String<T>");
                }
 
+               [Test]
+               public void TypeWithOneGenericUrlParseTestUsingAspNetStyleUrl ()
+               {
+                       var generics = new[] {
+                               new EcmaDesc {
+                                       DescKind = EcmaDesc.Kind.Type,
+                                       Namespace = string.Empty,
+                                       TypeName = "T"
+                               }
+                       };
+                       var ast = new EcmaDesc () { DescKind = EcmaDesc.Kind.Type,
+                                                   TypeName = "String",
+                                                   Namespace = "System",
+                                                   GenericTypeArguments = generics,
+                       };
+
+                       AssertUrlDesc (ast, "T:System.String{T}");
+               }
+
                [Test]
                public void TypeWithNestedGenericUrlParseTest ()
                {
diff --git a/mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs b/mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs
new file mode 100644 (file)
index 0000000..5ab8e84
--- /dev/null
@@ -0,0 +1,86 @@
+using System;
+using System.IO;
+using System.Linq;
+using System.Xml;
+using System.Collections.Generic;
+
+using NUnit.Framework;
+
+using Monodoc;
+using Monodoc.Generators;
+using Monodoc.Generators.Html;
+
+namespace MonoTests.Monodoc.Generators
+{
+       [TestFixture]
+       public class AvoidCDataTextReaderTest
+       {
+               void AssertSameInputOutput (string expected, string input)
+               {
+                       var processed = new AvoidCDataTextReader (new StringReader (input)).ReadToEnd ();
+                       Assert.AreEqual (expected, processed);
+               }
+
+               [Test]
+               public void NoCDataXmlTest ()
+               {
+                       var input = @"<elements><summary>Addressbook APIs.</summary><remarks /><class name=""ABAddressBook"" fullname=""MonoTouch.AddressBook.ABAddressBook"" assembly=""monotouch""><summary>
+      Provides access to the system Address Book.
+    </summary></class></elements>";
+
+                       AssertSameInputOutput (input, input);
+               }
+
+               [Test]
+               public void WithCDataXmlTest ()
+               {
+                       var input = @"<elements><summary>Addressbook APIs.</summary><remarks /><class name=""ABAddressBook"" fullname=""MonoTouch.AddressBook.ABAddressBook"" assembly=""monotouch""><summary><![CDATA[
+      Provides access to the system Address Book.]]>
+    </summary></class></elements>";
+
+                       AssertSameInputOutput (input.Replace ("<![CDATA[", string.Empty).Replace ("]]>", string.Empty), input);
+               }
+
+               [Test]
+               public void PartialCDataXmlTest ()
+               {
+                       var input = @"<elements><summary>Addressbook APIs.</summary><remarks /><class name=""ABAddressBook"" fullname=""MonoTouch.AddressBook.ABAddressBook"" assembly=""monotouch""><summary><![CDA[
+      Provides access to the system Address Book.]]>
+    </summary></class></elements>";
+
+                       AssertSameInputOutput (input, input);
+               }
+
+               [Test]
+               public void FinishWithPartialCDataXmlTest ()
+               {
+                       var input = @"<elements><summary>Addressbook APIs.</summary><remarks /><class name=""ABAddressBook"" fullname=""MonoTouch.AddressBook.ABAddressBook"" assembly=""monotouch""><summary>
+      Provides access to the system Address Book.
+    </summary></class></elements><![CDA[";
+
+                       AssertSameInputOutput (input, input);
+               }
+
+               [Test]
+               public void FinishWithCDataXmlTest ()
+               {
+                       var input = @"<elements><summary>Addressbook APIs.</summary><remarks /><class name=""ABAddressBook"" fullname=""MonoTouch.AddressBook.ABAddressBook"" assembly=""monotouch""><summary>
+      Provides access to the system Address Book.
+    </summary></class></elements><![CDATA[";
+
+                       AssertSameInputOutput (input.Replace ("<![CDATA[", string.Empty), input);
+               }
+
+               [Test]
+               public void EmptyInputTest ()
+               {
+                       AssertSameInputOutput (string.Empty, string.Empty);
+               }
+
+               [Test]
+               public void LimitedInputTest ()
+               {
+                       AssertSameInputOutput ("foo", "foo");
+               }
+       }
+}
diff --git a/mcs/class/monodoc/Test/Monodoc/EcmaDocTests.cs b/mcs/class/monodoc/Test/Monodoc/EcmaDocTests.cs
new file mode 100644 (file)
index 0000000..9886846
--- /dev/null
@@ -0,0 +1,66 @@
+using System;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Collections.Generic;
+
+using NUnit.Framework;
+
+using Monodoc;
+using Monodoc.Generators;
+
+namespace MonoTests.Monodoc
+{
+       [TestFixture]
+       public class EcmaDocTest
+       {
+               // Because EcmaDoc is internal and we can't use InternalsVisibleTo since test assemblies aren't
+               // signed/strong-named by the build, we have to resort to reflection
+               TDelegate GetTestedMethod<TDelegate> (string methodName)
+               {
+                       var ecmaDoc = Type.GetType ("Monodoc.Providers.EcmaDoc, monodoc, PublicKey=0738eb9f132ed756");
+                       return (TDelegate)(object)Delegate.CreateDelegate (typeof (TDelegate), ecmaDoc.GetMethod (methodName));
+               }
+
+               [Test]
+               public void CountTypeGenericArgumentsTest ()
+               {
+                       var realCountTypeGenericArguments = GetTestedMethod<Func<string, int, int>> ("CountTypeGenericArguments");
+                       // Since we don't use the optional start index parameters, bypass it by wrapping the func
+                       Func<string, int> countTypeGenericArguments = s => realCountTypeGenericArguments (s, 0);
+
+                       Assert.AreEqual (0, countTypeGenericArguments ("T:System.String"), "#0a");
+                       Assert.AreEqual (0, countTypeGenericArguments ("T:String"), "#0b");
+                       Assert.AreEqual (0, countTypeGenericArguments ("String"), "#0c");
+
+                       Assert.AreEqual (1, countTypeGenericArguments ("T:System.Collections.Foo<T>"), "#1a");
+                       Assert.AreEqual (1, countTypeGenericArguments ("T:System.Foo<T>"), "#1b");
+                       Assert.AreEqual (1, countTypeGenericArguments ("T:Foo<T>"), "#1c");
+                       Assert.AreEqual (1, countTypeGenericArguments ("Foo<T>"), "#1d");
+
+                       Assert.AreEqual (2, countTypeGenericArguments ("T:System.Collections.Foo<T, U>"), "#2a");
+                       Assert.AreEqual (2, countTypeGenericArguments ("T:System.Foo<TKey, TValue>"), "#2b");
+                       Assert.AreEqual (2, countTypeGenericArguments ("T:Foo<Something,Else>"), "#2c");
+                       Assert.AreEqual (2, countTypeGenericArguments ("Foo<TDelegate,TArray>"), "#2d");
+
+                       Assert.AreEqual (3, countTypeGenericArguments ("T:System.Collections.Foo<T, U, V>"), "#3a");
+                       Assert.AreEqual (3, countTypeGenericArguments ("T:System.Foo<TKey, TValue, THash>"), "#3b");
+                       Assert.AreEqual (3, countTypeGenericArguments ("T:Foo<Something,Else,Really>"), "#3c");
+                       Assert.AreEqual (3, countTypeGenericArguments ("Foo<TDelegate,TArray,TEvent>"), "#3d");
+               }
+
+               [Test]
+               public void CountTypeGenericArgumentsTest_Nested ()
+               {
+                       var realCountTypeGenericArguments = GetTestedMethod<Func<string, int, int>> ("CountTypeGenericArguments");
+                       // Since we don't use the optional start index parameters, bypass it by wrapping the func
+                       Func<string, int> countTypeGenericArguments = s => realCountTypeGenericArguments (s, 0);
+
+                       Assert.AreEqual (1, countTypeGenericArguments ("T:System.Collections.Foo<T[]>"), "#1a");
+                       Assert.AreEqual (1, countTypeGenericArguments ("T:System.Collections.Foo<IList<T>>"), "#1b");
+                       Assert.AreEqual (2, countTypeGenericArguments ("T:System.Collections.Foo<T, KeyValuePair<T, U>>"), "#2a");
+                       Assert.AreEqual (2, countTypeGenericArguments ("T:System.Collections.Foo<T, KeyValuePair<IProducerConsumerCollection<U>, IEquatable<V>>>"), "#2b");
+                       Assert.AreEqual (3, countTypeGenericArguments ("T:System.Collections.Foo<T, IProducerConsumerCollection<U>, IEquatable<V>>"), "#3a");
+               }
+       }
+}
index 0dd7b2ccc1f6ae680f9a5860f2cc0911b53d9cc1..867c9b793898dfb675e3aa05f15da5df70e6ec4c 100644 (file)
@@ -6,6 +6,11 @@ using System.Collections.Generic;
 using NUnit.Framework;
 
 using Monodoc;
+using Monodoc.Generators;
+using Monodoc.Providers;
+
+// Used by ReachabilityWithCrefsTest
+// using HtmlAgilityPack;
 
 namespace MonoTests.Monodoc
 {
@@ -110,6 +115,113 @@ namespace MonoTests.Monodoc
                        Assert.IsTrue (rootTree.RenderUrl ("T:System.Collections.Concurrent.IProducerConsumerCollection`1", generator, out result), "#1");
                        Assert.IsTrue (rootTree.RenderUrl ("T:System.Collections.Generic.Dictionary`2", generator, out result), "#2");
                        Assert.IsTrue (rootTree.RenderUrl ("T:System.Action`4", generator, out result), "#3");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.EventHandler`1", generator, out result), "#4");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Func`5", generator, out result), "#5a");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Func`4", generator, out result), "#5b");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Func`6", generator, out result), "#5c");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Func`7", generator, out result), "#5d");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Func`3", generator, out result), "#5e");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Func`2", generator, out result), "#5f");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Func`1", generator, out result), "#5g");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Func`8", generator, out result), "#5h");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Func`9", generator, out result), "#5i");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Action`3", generator, out result), "#6a");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Action`2", generator, out result), "#6b");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Action`4", generator, out result), "#6c");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.IComparable`1", generator, out result), "#7");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Lazy`1", generator, out result), "#8");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Tuple`1", generator, out result), "#9a");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Tuple`2", generator, out result), "#9b");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Tuple`3", generator, out result), "#9c");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Tuple`4", generator, out result), "#9d");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Collections.Generic.Dictionary`2+ValueCollection", generator, out result), "#10");
+                       Assert.IsFalse (rootTree.RenderUrl ("T:System.EventHandler`2", generator, out result), "#11");
+                       Assert.IsFalse (rootTree.RenderUrl ("T:System.Lazy`2", generator, out result), "#12");
+               }
+
+               [Test]
+               public void AspNetStyleUrlReachabilityTest ()
+               {
+                       var rootTree = RootTree.LoadTree (Path.GetFullPath (BaseDir), false);
+                       Node result;
+                       var generator = new CheckGenerator ();
+
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Collections.Generic.Dictionary{TKey,TValue}", generator, out result), "#1");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Action{T1,T2}", generator, out result), "#2");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.EventHandler{TEventArgs}", generator, out result), "#3");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Func{T1,T2,T3,TResult}", generator, out result), "#4");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.Collections.Generic.Dictionary{TKey,TValue}+ValueCollection", generator, out result), "#5");
+                       Assert.IsTrue (rootTree.RenderUrl ("T:System.IComparable{T}", generator, out result), "#6");
                }
+
+               [Test]
+               public void PublicUrlOnUnattachedHelpSourceRoot ()
+               {
+                       // Unattached help source have no root:/ URL attributed
+                       var hs = new EcmaHelpSource (Path.Combine (BaseDir, "sources", "netdocs"), false);
+                       var rootTree = RootTree.LoadTree (Path.GetFullPath (BaseDir), false);
+                       hs.RootTree = rootTree;
+                       Assert.IsNull (hs.Tree.RootNode.PublicUrl);
+                       var nsChildUrl = hs.Tree.RootNode.ChildNodes.First ().PublicUrl;
+                       Assert.IsNotNull (nsChildUrl);
+                       StringAssert.StartsWith ("N:", nsChildUrl);
+                       // Verify GetNodeTypeParent
+                       var typeNode = hs.Tree.RootNode.ChildNodes.First ().ChildNodes.First ();
+                       var metaNode = typeNode.ChildNodes.First (cn => cn.Element == "M");
+                       StringAssert.StartsWith (typeNode.PublicUrl, metaNode.PublicUrl);
+               }
+
+               /*
+               [Test, Ignore ("Mono documentation is full of syntax errors so we can't use it reliably for this test")]
+               public void ReachabilityWithCrefsTest ()
+               {
+                       var rootTree = RootTree.LoadTree (Path.GetFullPath (BaseDir), false);
+                       Node result;
+                       var htmlGenerator = new HtmlGenerator (null);
+                       var crefs = new HashSet<string> ();
+                       var generator = new CheckGenerator ();
+                       int errorCount = 0;
+
+                       foreach (var leaf in GetLeaves (rootTree.RootNode)) {
+                               Dictionary<string, string> context;
+                               string internalId = leaf.Tree.HelpSource.GetInternalIdForUrl (leaf.PublicUrl, out result, out context);
+                               if (leaf.Tree.HelpSource.GetDocumentTypeForId (internalId) != DocumentType.EcmaXml)
+                                       continue;
+
+                               string content = null;
+                               if (string.IsNullOrEmpty (content = rootTree.RenderUrl (leaf.PublicUrl, htmlGenerator, out result)) || leaf != result) {
+                                       Console.WriteLine ("Error: {0} with HelpSource {1} ", leaf.PublicUrl, leaf.Tree.HelpSource.Name);
+                                       continue;
+                               }
+
+                               HtmlDocument doc = new HtmlDocument();
+                               try {
+                                       doc.LoadHtml (content);
+                               } catch {
+                                       Console.WriteLine ("Couldn't load a HTML document for URL {0}", leaf.PublicUrl);
+                                       continue;
+                               }
+
+                               foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]")) {
+                                       var newUrl = link.Attributes["href"].Value;
+                                       var hashIndex = newUrl.IndexOf ('#');
+                                       if (hashIndex != -1)
+                                               newUrl = newUrl.Substring (0, hashIndex);
+                                       if (newUrl.Length > 1 && newUrl[1] == ':' && char.IsLetter (newUrl, 0) && char.ToLowerInvariant (newUrl[0]) != 'c')
+                                               crefs.Add (newUrl);
+                               }
+
+                               foreach (var cref in crefs) {
+                                       if (!rootTree.RenderUrl (cref, generator, out result) || result == null) {
+                                               Console.WriteLine ("Error with cref: `{0}'", cref);
+                                               errorCount++;
+                                       }
+                               }
+
+                               crefs.Clear ();
+                       }
+
+                       Assert.AreEqual (0, errorCount, errorCount + " / " + crefs.Count);
+               }*/
        }
 }
diff --git a/mcs/class/monodoc/jay.sh b/mcs/class/monodoc/jay.sh
new file mode 100755 (executable)
index 0000000..5a69401
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+TOPDIR=$1
+INPUT=$2
+OUTPUT=$3
+FLAGS=$4
+
+TEMPFILE=jay-tmp-$RANDOM.out
+
+$TOPDIR/jay/jay $FLAGS < $TOPDIR/jay/skeleton.cs $INPUT > $TEMPFILE && mv $TEMPFILE $OUTPUT
index 350b15091bff76f5e6b5cb2e6f865ec185b2f5b8..bd772bec0c8f8118ae739d093d08c3e3308887d1 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F6C1C101-6969-4BB5-BC74-4EE2CBFEA29E}</ProjectGuid>\r
+    <ProjectGuid>{2A219013-33EF-412C-ACA4-180E3B423624}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>618,612,672,809,1699,169,164,162,168,219,618,612</NoWarn>\r
     <OutputPath>bin\Debug\monodoc-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_0.csproj">\r
-      <Project>{D769AAF9-10ED-4C32-8D87-8D0648E2D001}</Project>\r
+      <Project>{2DE2CFB0-3166-41D9-B0B5-EFBE309DD7B7}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_0.csproj">\r
-      <Project>{802B1060-BD79-4648-A24E-D38F34AE29A0}</Project>\r
+      <Project>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9ec13e9d1d7604b5601080bda649aa04f8251ce5..e09884e01c9a282b66fe20beedfcb43282f7bb91 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DB76C87C-DD25-4563-9DD0-7914A84CC11D}</ProjectGuid>\r
+    <ProjectGuid>{46C0366B-72E7-4482-A6C4-4C8CE8318BDA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>618,612,672,809,1699,169,164,162,168,219,618,612</NoWarn>\r
     <OutputPath>bin\Debug\monodoc-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5.csproj">\r
-      <Project>{C41C7048-6B86-43DB-9F5E-BED7A92CD56E}</Project>\r
+      <Project>{039AD56A-E91B-4803-8328-287F70B61D14}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0082b114a5e847ad70757cfc4a195d2bac989bf5..ff3da0cb55912fb48becf7d655d6a40c1ad7543e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{09121C6C-4740-4706-AFF2-6EA0E3DFA132}</ProjectGuid>\r
+    <ProjectGuid>{1AD08CB1-E56F-4E1F-B040-32A3731A9E87}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>618,612,672,809,1699</NoWarn>\r
     <OutputPath>bin\Debug\monodoc-tests-net_4_0</OutputPath>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="Test\Monodoc.Ecma\EcmaUrlTests.cs" />\r
+    <Compile Include="Test\Monodoc.Generators\AvoidCDataTextReaderTests.cs" />\r
     <Compile Include="Test\Monodoc.Generators\RawGeneratorTests.cs" />\r
+    <Compile Include="Test\Monodoc\EcmaDocTests.cs" />\r
     <Compile Include="Test\Monodoc\HelpSourceTests.cs" />\r
+    <Compile Include="Test\Monodoc\NodeTest.cs" />\r
+    <Compile Include="Test\Monodoc\RootTreeTest.cs" />\r
     <Compile Include="Test\Monodoc\SettingsTest.cs" />\r
     <Compile Include="Test\Monodoc\TreeTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\monodoc\monodoc-net_4_0.csproj">\r
-      <Project>{F6C1C101-6969-4BB5-BC74-4EE2CBFEA29E}</Project>\r
+      <Project>{2A219013-33EF-412C-ACA4-180E3B423624}</Project>\r
       <Name>monodoc\monodoc-net_4_0</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
+      <Name>System\System-net_4_0-2</Name>\r
+    </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 461592a34347784e90072992842c5288b0a7a296..4ec9c69c1ff4efb0883b5af07b432881c43318c7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{20C68AFD-8518-4A78-91B4-747C71CB7589}</ProjectGuid>\r
+    <ProjectGuid>{AAE2ADEF-2160-40D7-B7E4-37C96ADBAC8C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>618,612,672,809,1699</NoWarn>\r
     <OutputPath>bin\Debug\monodoc-tests-net_4_5</OutputPath>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="Test\Monodoc.Ecma\EcmaUrlTests.cs" />\r
+    <Compile Include="Test\Monodoc.Generators\AvoidCDataTextReaderTests.cs" />\r
     <Compile Include="Test\Monodoc.Generators\RawGeneratorTests.cs" />\r
+    <Compile Include="Test\Monodoc\EcmaDocTests.cs" />\r
     <Compile Include="Test\Monodoc\HelpSourceTests.cs" />\r
+    <Compile Include="Test\Monodoc\NodeTest.cs" />\r
+    <Compile Include="Test\Monodoc\RootTreeTest.cs" />\r
     <Compile Include="Test\Monodoc\SettingsTest.cs" />\r
     <Compile Include="Test\Monodoc\TreeTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\monodoc\monodoc-net_4_5.csproj">\r
-      <Project>{DB76C87C-DD25-4563-9DD0-7914A84CC11D}</Project>\r
+      <Project>{46C0366B-72E7-4482-A6C4-4C8CE8318BDA}</Project>\r
       <Name>monodoc\monodoc-net_4_5</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
+      <Name>System\System-net_4_5-2</Name>\r
+    </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e99ffeae1a4ff2d3a472b4efe04795fd78746013..b5af3b71a048f0191190b9b0a7704a9be14dc852 100644 (file)
@@ -1,7 +1,9 @@
 Monodoc/HelpSourceTests.cs
+Monodoc/EcmaDocTests.cs
 Monodoc/TreeTest.cs
 Monodoc.Ecma/EcmaUrlTests.cs
 Monodoc/SettingsTest.cs
 Monodoc.Generators/RawGeneratorTests.cs
 Monodoc/NodeTest.cs
 Monodoc/RootTreeTest.cs
+Monodoc.Generators/AvoidCDataTextReaderTests.cs
index a73a2ce297f7889ebb932795522427acf95781f6..5444595d893f0616df9d74869d703e129c4f7678 100644 (file)
@@ -10,8 +10,7 @@
     <OutputType>Library</OutputType>
     <RootNamespace>System.Reactive</RootNamespace>
     <AssemblyName>ASSEMBLY_NAME_GOES_HERE</AssemblyName>
-    <DefineConstants>NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;SIGNED;NUNIT;MONODROID</DefineConstants>
-    SIGNING_SPEC_GOES_HERE
+    <DefineConstants>NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;HAS_AWAIT;NUNIT;MONODROID;$(SignAssemblySpec)</DefineConstants>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>True</DebugSymbols>
@@ -22,6 +21,7 @@
     <WarningLevel>4</WarningLevel>
     <AndroidLinkMode>None</AndroidLinkMode>
     <ConsolePause>False</ConsolePause>
+    <DefineConstants>DEBUG;NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;HAS_AWAIT;NUNIT;MONODROID;$(SignAssemblySpec)</DefineConstants>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>none</DebugType>
index ba44983eb5d6ffd401767bd3b10ff99985a01f0e..a912db67e6ed2b808db1c163fb27b17d8b1f4302 100644 (file)
@@ -13,8 +13,7 @@
     <IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
     <AssemblyName>ASSEMBLY_NAME_GOES_HERE</AssemblyName>
     <ProductSignAssembly>true</ProductSignAssembly>
-    <DefineConstants>NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;NO_REFLECTION_EMIT;NUNIT;SIGNED</DefineConstants>
-    SIGNING_SPEC_GOES_HERE
+    <DefineConstants>NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;NO_REFLECTION_EMIT;HAS_AWAIT;NUNIT;$(SignAssemblySpec)</DefineConstants>
     <additionalargs>-delaySign</additionalargs>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
@@ -24,7 +23,7 @@
     <OutputPath>bin\Debug</OutputPath>
     <ConsolePause>False</ConsolePause>
     <WarningLevel>4</WarningLevel>
-    <DefineConstants>DEBUG;NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;NO_REFLECTION_EMIT;NUNIT;SIGNED</DefineConstants>
+    <DefineConstants>DEBUG;NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;NO_REFLECTION_EMIT;HAS_AWAIT;NUNIT;$(SignAssemblySpec)</DefineConstants>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>none</DebugType>
index aff44d051b12829c905b4216da3f8cbe3bf0f9a4..328f174f71d4dd87f590ea3c4e8f4841ac7a3a0a 100755 (executable)
        $ csharp -v -v
 
        This will turn on the parser debugging output and will
-       generate a lot of data when parsing its input.
+       generate a lot of data when parsing its input (make sure that
+       your parser has been compiled with the -v flag, see above for 
+       details).
 
        To start with a new completion scheme, type your C# code and
        then hit the tab key to trigger the completion engine.  In the
        We then rebuild our compiler:
 
        (cd mcs/; make cs-parser.jay)
-       (cd tools/csharplib; make install)
+       (cd class/Mono.CSharp; make install)
 
        And re-run csharp:
 
diff --git a/mcs/errors/CS0012-21-lib.il b/mcs/errors/CS0012-21-lib.il
new file mode 100644 (file)
index 0000000..b01f464
--- /dev/null
@@ -0,0 +1,31 @@
+.assembly extern mscorlib
+{
+}
+
+.assembly extern 'CS0012-lib-missing'
+{
+}
+
+.assembly 'CS0012-21-lib'
+{
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+
+.module 'CS0012-21-lib.dll'
+
+
+.class public auto ansi beforefieldinit B
+       extends class ['CS0012-lib-missing']X`1/Y/Z/W<int32>
+{
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    // Code size       7 (0x7)
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void class ['CS0012-lib-missing']X`1/Y/Z/W<int32>::.ctor()
+    IL_0006:  ret
+  }
+
+}
index fccf2d93aa3d1102d3899a2e6e020c1c72acf50e..756d130359a64a00c933e61a0301bee7edac65d2 100644 (file)
@@ -21,7 +21,7 @@ DISTFILES = \
        $(wildcard dlls/second/*.cs)
 
 TEST_SUPPORT_FILES = \
-       CS0012-lib.dll CS0012-2-lib.dll CS0012-3-lib.dll CS0012-4-lib.dll CS0012-5-lib.dll CS0012-6-lib.dll CS0012-9-lib.dll CS0012-10-lib.dll CS0012-11-lib.dll CS0012-12-lib.dll CS0012-13-lib.dll CS0012-14-lib.dll CS0012-15-lib.dll CS0012-16-lib.dll CS0012-17-lib.dll CS0012-18-lib.dll CS0029-26-lib.dll \
+       CS0012-lib.dll CS0012-2-lib.dll CS0012-3-lib.dll CS0012-4-lib.dll CS0012-5-lib.dll CS0012-6-lib.dll CS0012-9-lib.dll CS0012-10-lib.dll CS0012-11-lib.dll CS0012-12-lib.dll CS0012-13-lib.dll CS0012-14-lib.dll CS0012-15-lib.dll CS0012-16-lib.dll CS0012-17-lib.dll CS0012-18-lib.dll CS0012-21-lib.dll CS0029-26-lib.dll \
        CS0103-2-lib.dll CS0118-2-lib.dll CS0122-8-lib.dll CS0122-10-lib.dll CS0122-14-lib.dll CS0122-15-lib.dll CS0122-19-lib.dll CS0122-35-lib.dll CS0122-36-lib.dll CS0143-lib.dll CS0144-3-lib.dll CS0165-19-lib.dll \
        CS0205-3-lib.dll CS0229-3-lib.dll CS0229-4-lib.dll CS0266-25-lib.dll \
        CS0315-2-lib.dll \
diff --git a/mcs/errors/cs0012-19.cs b/mcs/errors/cs0012-19.cs
new file mode 100644 (file)
index 0000000..304229b
--- /dev/null
@@ -0,0 +1,13 @@
+// CS0012: The type `A1' is defined in an assembly that is not referenced. Consider adding a reference to assembly `CS0012-lib-missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
+// Line: 10
+// Compiler options: -r:CS0012-lib.dll
+
+class Test
+{
+       public static void Main ()
+       {
+               var b = new B ();
+               b.Test ();
+               b.Test ();
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0012-20.cs b/mcs/errors/cs0012-20.cs
new file mode 100644 (file)
index 0000000..2747508
--- /dev/null
@@ -0,0 +1,19 @@
+// CS0012: The type `A1' is defined in an assembly that is not referenced. Consider adding a reference to assembly `CS0012-lib-missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
+// Line: 13
+// Compiler options: -r:CS0012-lib.dll
+
+using System.Threading.Tasks;
+
+class Test
+{
+       public static void Main ()
+       {
+               var b = new B ();
+               var t = Task.Factory.StartNew (() => {
+                       b.Test ();
+                       b.Test ();
+               });
+
+               b.Test ();
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0012-21.cs b/mcs/errors/cs0012-21.cs
new file mode 100644 (file)
index 0000000..f313e2a
--- /dev/null
@@ -0,0 +1,11 @@
+// CS0012: The type `X`1.Y.Z.W' is defined in an assembly that is not referenced. Consider adding a reference to assembly `CS0012-lib-missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
+// Line: 9
+// Compiler options: -r:CS0012-21-lib.dll
+
+public class C
+{
+       public static void Main ()
+       {
+               new B ();
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0019-34.cs b/mcs/errors/cs0019-34.cs
deleted file mode 100644 (file)
index de0a2ee..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-// CS0019: Operator `==' cannot be applied to operands of type `int' and `null'
-// Line: 10
-// Compiler options: -langversion:ISO-1 
-
-class C
-{
-       static int Foo { get { return 3; } set {} }
-       
-       static void Main ()
-       {
-               if (Foo == null) {}
-       }
-}
diff --git a/mcs/errors/cs0019-51.cs b/mcs/errors/cs0019-51.cs
deleted file mode 100644 (file)
index 8dd9e93..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-// CS0019: Operator `+' cannot be applied to operands of type `null' and `MyTypeImplicitOnly?'
-// Line: 13
-
-struct MyTypeImplicitOnly
-{
-}
-
-class C
-{
-       static void Main ()
-       {
-               MyTypeImplicitOnly? mt = null;
-               mt = null + mt;
-       }
-}
diff --git a/mcs/errors/cs0019-69.cs b/mcs/errors/cs0019-69.cs
new file mode 100644 (file)
index 0000000..ed5d67e
--- /dev/null
@@ -0,0 +1,24 @@
+// CS0019: Operator `==' cannot be applied to operands of type `S' and `S'
+// Line: 22
+
+struct S
+{
+       public static implicit operator E (S s)
+       {
+               return 0;
+       }
+}
+
+public enum E
+{
+}
+
+class C
+{
+       public static void Main ()
+       {
+               S s;
+               S s2;
+               var x = s == s2;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0019-70.cs b/mcs/errors/cs0019-70.cs
new file mode 100644 (file)
index 0000000..a8a3787
--- /dev/null
@@ -0,0 +1,21 @@
+// CS0019: Operator `&&' cannot be applied to operands of type `S?' and `S?'
+// Line: 20
+
+struct S
+{
+       public static S operator & (S s, S i)
+       {
+               return s;
+       }
+}
+
+class C
+{
+       public static void Main ()
+       {
+               S? s = new S ();
+               S? s2 = null;
+
+               var res = s && s2;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0029-34.cs b/mcs/errors/cs0029-34.cs
new file mode 100644 (file)
index 0000000..6febb9a
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0029: Cannot implicitly convert type `string' to `MyTypeImplicitOnly?'
+// Line: 13
+
+struct MyTypeImplicitOnly
+{
+}
+
+class C
+{
+       static void Main ()
+       {
+               MyTypeImplicitOnly? mt = null;
+               mt = null + mt;
+       }
+}
diff --git a/mcs/errors/cs0034-6.cs b/mcs/errors/cs0034-6.cs
new file mode 100644 (file)
index 0000000..d6ebe8e
--- /dev/null
@@ -0,0 +1,25 @@
+// CS0034: Operator `==' is ambiguous on operands of type `Foo' and `Foo'
+// Line: 23
+
+public struct Foo
+{
+       public static implicit operator int? (Foo f)
+       {
+               return 1;
+       }
+
+       public static implicit operator bool? (Foo f)
+       {
+               return false;
+       }
+}
+
+class C
+{
+       public static void Main ()
+       {
+               Foo f;
+               Foo f2;
+               var v = f == f2;
+       }
+}
\ No newline at end of file
index a774362dfea122dd3bb6f89f0dfccbe73aa8c4db..367cfc7d579693d1bbbfde6238d3cdc87e27ce31 100644 (file)
@@ -17,7 +17,7 @@ class X
        public static void Main ()
        {
                int a = 4, b = 5;
-               X x = (X) -a;
+X x = (X) -a;
                System.Console.WriteLine (x.i);
        }
 }
old mode 100644 (file)
new mode 100755 (executable)
index df639d2..18d4263
@@ -1,17 +1,10 @@
-// CS0118: `Test.SomeDel' is a `type' but a `variable' was expected
-// Line: 14
+// CS0118: `C' is a `type' but a `variable' was expected
+// Line: 8
 
-using System;
-
-namespace Test
+class C
 {
-       public delegate void SomeDel (Action a);
-
-       public class TestClass
+       public static void Main ()
        {
-               public void TestMethod ()
-               {
-                       SomeDel (() => { });
-               }
+               int i = (C) +1;
        }
-}
\ No newline at end of file
+}
diff --git a/mcs/errors/cs0118-12.cs b/mcs/errors/cs0118-12.cs
deleted file mode 100644 (file)
index c8d6203..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-// CS0118: `A.Test' is a `type' but a `variable' was expected
-// Line: 10
-
-class A
-{
-       delegate string Test (string t);
-
-       public static void Main ()
-       {
-               Test ("t");
-       }
-}
diff --git a/mcs/errors/cs0119-2.cs b/mcs/errors/cs0119-2.cs
new file mode 100644 (file)
index 0000000..e3fc7da
--- /dev/null
@@ -0,0 +1,17 @@
+// CS0119: Expression denotes a `type', where a `variable', `value' or `method group' was expected
+// Line: 14
+
+using System;
+
+namespace Test
+{
+       public delegate void SomeDel (Action a);
+
+       public class TestClass
+       {
+               public void TestMethod ()
+               {
+                       SomeDel (() => { });
+               }
+       }
+}
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 2ee3844..7b7f14b
@@ -1,10 +1,12 @@
 // CS0119: Expression denotes a `type', where a `variable', `value' or `method group' was expected
-// Line: 8
+// Line: 10
 
-class C
+class A
 {
+       delegate string Test (string t);
+
        public static void Main ()
        {
-               int i = (C) +1;
+               Test ("t");
        }
 }
diff --git a/mcs/errors/cs0120-19.cs b/mcs/errors/cs0120-19.cs
new file mode 100644 (file)
index 0000000..f7e0fee
--- /dev/null
@@ -0,0 +1,27 @@
+// CS0120: An object reference is required to access non-static member `MainClass.Callback()'
+// Line: 9
+
+using System;
+
+class MainClass : BaseClass
+{
+       public MainClass (string a, Action callback)
+               : base (a, () => Callback ())
+       {
+       }
+
+       private void Callback ()
+       {
+       }
+}
+
+public class BaseClass
+{
+       public BaseClass (string a, int b)
+       {
+       }
+
+       public BaseClass (string a, Action callback)
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0154-5.cs b/mcs/errors/cs0154-5.cs
new file mode 100644 (file)
index 0000000..21f55ce
--- /dev/null
@@ -0,0 +1,19 @@
+// CS0154: The property or indexer `BugReport.MyProperty' cannot be used in this context because it lacks the `get' accessor
+// Line: 16
+
+static class BugReport
+{
+       static float MyProperty {
+               set { }
+       }
+
+       static void MyExtension (this float val)
+       {
+       }
+
+       public static void Main ()
+       {
+               MyProperty.MyExtension ();
+       }
+}
+
diff --git a/mcs/errors/cs0161-4.cs b/mcs/errors/cs0161-4.cs
new file mode 100644 (file)
index 0000000..faeaf57
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0161: `T.Main()': not all code paths return a value
+// Line: 6
+// CSC bug: The error is not reported even if it should as in other unreachable cases
+
+class T {
+       public static int Main ()
+       {
+               switch (1) {
+               case 1:
+                       return 0;
+               default:
+                       break;
+               }
+       }
+}
diff --git a/mcs/errors/cs0162-17.cs b/mcs/errors/cs0162-17.cs
new file mode 100644 (file)
index 0000000..821c741
--- /dev/null
@@ -0,0 +1,12 @@
+// CS0162: Unreachable code detected
+// Line: 10
+// Compiler options: -warnaserror
+
+public class X
+{
+       public static void Main ()
+       {
+               return;
+               1+1;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0185-2.cs b/mcs/errors/cs0185-2.cs
new file mode 100644 (file)
index 0000000..3fa0fff
--- /dev/null
@@ -0,0 +1,18 @@
+// CS0185: `method group' is not a reference type as required by the lock statement
+// Line: 15
+
+class MainClass
+{
+       public static void Main ()
+       {
+               lock (Bar.Buzz) {
+               }
+       }
+}
+
+class Bar
+{
+       internal void Buzz ()
+       {
+       }
+}
\ No newline at end of file
index e678aefccf1c5db62991309b79ad7ae2c940574c..83dfe5e7609225d76ab7baffa370ee82c047f029 100644 (file)
@@ -1,5 +1,5 @@
 // CS0185: `int' is not a reference type as required by the lock statement
-// Line:
+// Line: 7
 
 class X {
        static void Main ()
diff --git a/mcs/errors/cs0266-27.cs b/mcs/errors/cs0266-27.cs
new file mode 100644 (file)
index 0000000..a9c84e7
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0266: Cannot implicitly convert type `E?' to `E'. An explicit conversion exists (are you missing a cast?)
+// Line: 13
+
+enum E
+{
+}
+
+class C
+{
+       public static void Main ()
+       {
+               E e = 0;
+               E r = e + null;
+       }
+}
diff --git a/mcs/errors/cs0266-28.cs b/mcs/errors/cs0266-28.cs
new file mode 100644 (file)
index 0000000..364ae8e
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0266: Cannot implicitly convert type `int?' to `E'. An explicit conversion exists (are you missing a cast?)
+// Line: 13
+
+enum E
+{
+}
+
+class C
+{
+       public static void Main ()
+       {
+               E e = 0;
+               E r = e - null;
+       }
+}
diff --git a/mcs/errors/cs0458-14.cs b/mcs/errors/cs0458-14.cs
new file mode 100644 (file)
index 0000000..865b7ba
--- /dev/null
@@ -0,0 +1,16 @@
+// CS0458: The result of the expression is always `null' of type `int?'
+// Line: 14
+// Compiler options: -warnaserror -warn:2
+
+public enum E
+{
+}
+
+class C
+{
+       public static void Main ()
+       {
+               E? e = null;
+               var res = e - null;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0458-15.cs b/mcs/errors/cs0458-15.cs
new file mode 100644 (file)
index 0000000..1174b41
--- /dev/null
@@ -0,0 +1,26 @@
+// CS0458: The result of the expression is always `null' of type `short?'
+// Line: 24
+// Compiler options: -warnaserror -warn:2
+
+struct S
+{
+       public static short operator + (S s, S i)
+       {
+               return 2;
+       }
+
+       public static int? operator + (S? s, int? i)
+       {
+               return 2;
+       }
+
+}
+
+class C
+{
+       public static void Main ()
+       {
+               S? s = new S ();
+               var x = s + (S?)null;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0458-16.cs b/mcs/errors/cs0458-16.cs
new file mode 100644 (file)
index 0000000..f43cea2
--- /dev/null
@@ -0,0 +1,12 @@
+// CS0458: The result of the expression is always `null' of type `int?'
+// Line: 9
+// Compiler options: -warnaserror -warn:2
+
+public class C
+{
+       public static void Main ()
+       {
+               int? s = null;
+               int? v = s + null;
+       }
+}
diff --git a/mcs/errors/cs0464-4.cs b/mcs/errors/cs0464-4.cs
new file mode 100644 (file)
index 0000000..0fdf607
--- /dev/null
@@ -0,0 +1,12 @@
+// CS0464: The result of comparing type `int?' with null is always `false'
+// Line: 10
+// Compiler options: -warnaserror -warn:2
+
+class C
+{
+       public static void Main ()
+       {
+               int? k = 1;
+               var x = k > null;
+       }
+}
\ No newline at end of file
index b6ae39620265cc6b22e42507f88276f187fbe23d..bea7b5268d8b033b54a6e95b3451e44a141faef6 100644 (file)
@@ -1,4 +1,4 @@
-// CS0464: The result of comparing type `int' with null is always `false'
+// CS0464: The result of comparing type `int?' with null is always `false'
 // Line: 9
 // Compiler options: -warnaserror -warn:2
 
index 5af1c08b0d296c78fcf46233118deb9763812820..9c99b3a446dcf9674e40961b5db21a2b37e57111 100644 (file)
@@ -1,4 +1,4 @@
-// CS0472: The result of comparing value type `int' with null is always `false'
+// CS0472: The result of comparing value type `long' with null is always `false'
 // Line: 9
 // Compiler options: -warnaserror -warn:2
 
diff --git a/mcs/errors/cs0534-10.cs b/mcs/errors/cs0534-10.cs
new file mode 100644 (file)
index 0000000..6af491c
--- /dev/null
@@ -0,0 +1,18 @@
+// CS0534: `C' does not implement inherited abstract member `B.Foo()'
+// Line: 16
+
+class A
+{
+       public virtual void Foo ()
+       {
+       }
+}
+
+abstract class B : A
+{
+       public abstract override void Foo ();
+}
+
+class C : B
+{
+}
\ No newline at end of file
index e2e5e1069b85d6c332b562b9217ef38f96c3aabe..f2150288f187c27f379f6f8f2e1b1b457d952389 100644 (file)
@@ -1,4 +1,4 @@
-// CS0534: `C' does not implement inherited abstract member `A.Foo(string)'
+// CS0534: `C' does not implement inherited abstract member `B.Foo(string)'
 // Line: 13
 
 public abstract class A
index 9b0f8789db0954d00e3632f69abbdd8a801f74d2..104d2dbd0a6da342e6a9ddec48178a237e469a61 100644 (file)
@@ -1,11 +1,11 @@
-// CS0647: Error during emitting `System.Runtime.CompilerServices.MethodImplAttribute' attribute. The reason is `Incorrect argument value.'
+// CS0647: Error during emitting `System.Runtime.CompilerServices.MethodImplAttribute' attribute. The reason is `Incorrect argument value'
 // Line: 8
 
 using System.Runtime.CompilerServices;
 
 class Test
 {
-       [MethodImplAttribute(444)]
+       [MethodImplAttribute(445)]
        public void test ()
        {
        }
diff --git a/mcs/errors/cs0647-20.cs b/mcs/errors/cs0647-20.cs
new file mode 100644 (file)
index 0000000..2b03f1c
--- /dev/null
@@ -0,0 +1,12 @@
+// CS0647: Error during emitting `System.Runtime.CompilerServices.MethodImplAttribute' attribute. The reason is `Incorrect argument value'
+// Line: 8
+
+using System.Runtime.CompilerServices;
+
+class Program
+{
+       [MethodImpl((MethodImplOptions)255)]
+       void Foo()
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0658-3.cs b/mcs/errors/cs0658-3.cs
new file mode 100644 (file)
index 0000000..a53a934
--- /dev/null
@@ -0,0 +1,5 @@
+// CS0658: `value' is invalid attribute target. All attributes in this attribute section will be ignored
+// Line : 5
+// Compiler options: -warnaserror -warn:1
+
+[reply] ["asd"]  
\ No newline at end of file
diff --git a/mcs/errors/cs0761-2.cs b/mcs/errors/cs0761-2.cs
new file mode 100644 (file)
index 0000000..09964af
--- /dev/null
@@ -0,0 +1,11 @@
+// CS0761: Partial method declarations of `C.Foo<U>()' have inconsistent constraints for type parameter `U'
+// Line: 8
+
+partial class C
+{
+       partial void Foo<T> () where T : new ();
+       
+       partial void Foo<U> ()
+       {
+       }
+}
diff --git a/mcs/errors/cs0761.cs b/mcs/errors/cs0761.cs
new file mode 100644 (file)
index 0000000..72b2744
--- /dev/null
@@ -0,0 +1,11 @@
+// CS0761: Partial method declarations of `C.Foo<T>()' have inconsistent constraints for type parameter `T'
+// Line: 8
+
+partial class C
+{
+       partial void Foo<U> ();
+       
+       partial void Foo<T> () where T : class
+       {
+       }
+}
diff --git a/mcs/errors/cs1001-8.cs b/mcs/errors/cs1001-8.cs
new file mode 100644 (file)
index 0000000..2462ee4
--- /dev/null
@@ -0,0 +1,10 @@
+// CS1001: Unexpected symbol `,', expecting identifier
+// Line: 8
+
+static class Converter
+{
+       static Dictionary<Options, string> options = new Dictionary<Options, string> () 
+       {
+               { Options., "I am completed!" },
+       };
+}
\ No newline at end of file
diff --git a/mcs/errors/cs1502-17.cs b/mcs/errors/cs1502-17.cs
new file mode 100644 (file)
index 0000000..e023551
--- /dev/null
@@ -0,0 +1,16 @@
+// CS1502: The best overloaded method match for `Foo.Test(int, string)' has some invalid arguments
+// Line: 14
+
+using System.Runtime.CompilerServices;
+
+public class Foo
+{
+       public void Test (int arg, [CallerMemberName] string s = null)
+       {
+       }
+
+       void X ()
+       {
+               Test ("");
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs1502-18.cs b/mcs/errors/cs1502-18.cs
new file mode 100644 (file)
index 0000000..4e1a0da
--- /dev/null
@@ -0,0 +1,18 @@
+// CS1502: The best overloaded method match for `X.Add(params object[])' has some invalid arguments
+// Line: 8
+
+class X
+{
+       public static void Main ()
+       {
+               Add (Foo (), Foo ());
+       }
+
+       public static void Add (params object[] args)
+       {
+       }
+
+       static void Foo ()
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs1519-5.cs b/mcs/errors/cs1519-5.cs
new file mode 100644 (file)
index 0000000..0ebf406
--- /dev/null
@@ -0,0 +1,7 @@
+// CS1519: Unexpected symbol `}' in class, struct, or interface member declaration
+// Line: 7
+
+public class Foo
+{
+       public f 
+}
\ No newline at end of file
diff --git a/mcs/errors/cs1525-52.cs b/mcs/errors/cs1525-52.cs
new file mode 100644 (file)
index 0000000..d10e856
--- /dev/null
@@ -0,0 +1,12 @@
+// CS1525: Unexpected symbol `}', expecting `by'
+// Line: 10
+
+class C
+{
+       public static void Main ()
+       {
+               var somelist = new List<object>();
+               var query = from item in somelist
+                       group a
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs1525-53.cs b/mcs/errors/cs1525-53.cs
new file mode 100644 (file)
index 0000000..0c248da
--- /dev/null
@@ -0,0 +1,7 @@
+// CS1525: Unexpected symbol `}', expecting `(', `,', `.', `:', `::', `]', or `<'
+// Line: 6
+
+class Foo
+{
+       [DllImport
+}
\ No newline at end of file
diff --git a/mcs/errors/cs1525-54.cs b/mcs/errors/cs1525-54.cs
new file mode 100644 (file)
index 0000000..faf331e
--- /dev/null
@@ -0,0 +1,10 @@
+// CS1525: Unexpected symbol `}'
+// Line: 8
+
+class MainClass
+{
+       public string Test ()
+       {
+               return true ? "Hello" :
+       }
+}
diff --git a/mcs/errors/cs1534-3.cs b/mcs/errors/cs1534-3.cs
new file mode 100644 (file)
index 0000000..6bcf650
--- /dev/null
@@ -0,0 +1,10 @@
+// CS1534: Overloaded binary operator `+' takes two parameters
+// Line: 6
+
+class C
+{
+       public static C operator +()
+       {
+               return null;
+       }
+}
index d7ed5a505f147d8afc027d5d66840a903340f866..a7035ef01951051449f0857d98e2c53cdaafc262 100644 (file)
@@ -1,7 +1,6 @@
 // CS1661: Cannot convert `lambda expression' to delegate type `C.WithOutParam' since there is a parameter mismatch
 // Line: 10
 
-
 class C
 {
        delegate void WithOutParam (out string value);
@@ -9,5 +8,5 @@ class C
        static void Main() 
        {
                WithOutParam o = (string l) => { return; };
-    }
+       }
 }
diff --git a/mcs/errors/cs1661-3.cs b/mcs/errors/cs1661-3.cs
new file mode 100644 (file)
index 0000000..d437e01
--- /dev/null
@@ -0,0 +1,12 @@
+// CS1661: Cannot convert `anonymous method' to delegate type `System.Predicate<T>' since there is a parameter mismatch
+// Line: 8
+
+class Test<T>
+{
+       void test (Test<T> t, System.Predicate<T> p)
+       {
+               test (t, delegate (Test<T> item) {
+                       return false;
+               });
+       }
+}
diff --git a/mcs/errors/cs1705-2.cs b/mcs/errors/cs1705-2.cs
new file mode 100644 (file)
index 0000000..088fee8
--- /dev/null
@@ -0,0 +1,11 @@
+// CS1705: Assembly `CS1705-lib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' references `CS1705-lib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=36f3ae7e947792e3' which has a higher version number than imported assembly `CS1705-lib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=36f3ae7e947792e3'
+// Line: 0
+// Compiler options: -r:CS1705-lib.dll -r:dlls/second/CS1705-lib.dll -keyfile:key.snk
+
+class C
+{
+       public static void Main ()
+       {
+               A.Test (new B ());
+       }
+}
diff --git a/mcs/errors/cs1997-2.cs b/mcs/errors/cs1997-2.cs
new file mode 100644 (file)
index 0000000..9f8c533
--- /dev/null
@@ -0,0 +1,17 @@
+// CS1997: `System.Func<System.Threading.Tasks.Task>': A return keyword must not be followed by an expression when async delegate returns `Task'. Consider using `Task<T>' return type
+// Line: 12
+
+using System;
+using System.Threading.Tasks;
+
+class Test
+{
+       public static void Main()
+       {
+               Func<Task> t = async delegate {
+                       return null;
+               };
+
+               return;
+       }
+}
index 19a567e0ca5c2ea659d14cc67d8fbace0e18e35a..72a8a25b0f8ba8bf55e78ecbd91a2f5dc09ea7a5 100644 (file)
@@ -2463,7 +2463,6 @@ instr                     : INSTR_NONE
                                         case MiscInstr.ldc_r8:\r
                                                fpdata = (byte []) $2;\r
                                                if (!BitConverter.IsLittleEndian) {\r
-                                                       // FIXME: handle the stupid ARM FPA format\r
                                                        System.Array.Reverse (fpdata, 0, 8);\r
                                                }\r
                                                 double d = BitConverter.ToDouble (fpdata, 0);\r
index fe16344ae0dccfeac67792434e9433441d1ded99..26a77a41a05755a1319ffe31e7579251bb23da9b 100644 (file)
@@ -315,8 +315,11 @@ namespace Mono.CSharp {
 
                        var hoisted = localVariable.HoistedVariant;
                        if (hoisted != null && hoisted.Storey != this && hoisted.Storey is StateMachine) {
-                               // TODO: It's too late the field is defined in HoistedLocalVariable ctor
+                               //
+                               // Variable is already hoisted but we need it in storey which can be shared
+                               //
                                hoisted.Storey.hoisted_locals.Remove (hoisted);
+                               hoisted.Storey.Members.Remove (hoisted.Field);
                                hoisted = null;
                        }
 
@@ -569,6 +572,9 @@ namespace Mono.CSharp {
                protected virtual void EmitHoistedParameters (EmitContext ec, List<HoistedParameter> hoisted)
                {
                        foreach (HoistedParameter hp in hoisted) {
+                               if (hp == null)
+                                       continue;
+
                                //
                                // Parameters could be proxied via local fields for value type storey
                                //
@@ -725,6 +731,12 @@ namespace Mono.CSharp {
                        this.field = field;
                }
 
+               public Field Field {
+                       get {
+                               return field;
+                       }
+               }
+
                public AnonymousMethodStorey Storey {
                        get {
                                return storey;
@@ -845,11 +857,7 @@ namespace Mono.CSharp {
 
                #region Properties
 
-               public Field Field {
-                       get {
-                               return field;
-                       }
-               }
+               public bool IsAssigned { get; set; }
 
                public ParameterReference Parameter {
                        get {
@@ -888,12 +896,6 @@ namespace Mono.CSharp {
                        : base (storey, field)
                {
                }
-
-               public Field Field {
-                       get {
-                               return field;
-                       }
-               }
        }
 
        //
@@ -996,12 +998,12 @@ namespace Mono.CSharp {
                                        return delegate_type;
 
                                ec.Report.Error (835, loc, "Cannot convert `{0}' to an expression tree of non-delegate type `{1}'",
-                                       GetSignatureForError (), TypeManager.CSharpName (delegate_type));
+                                       GetSignatureForError (), delegate_type.GetSignatureForError ());
                                return null;
                        }
 
                        ec.Report.Error (1660, loc, "Cannot convert `{0}' to non-delegate type `{1}'",
-                                     GetSignatureForError (), TypeManager.CSharpName (delegate_type));
+                                     GetSignatureForError (), delegate_type.GetSignatureForError ());
                        return null;
                }
 
@@ -1013,7 +1015,7 @@ namespace Mono.CSharp {
                        if (!ec.IsInProbingMode)
                                ec.Report.Error (1661, loc,
                                        "Cannot convert `{0}' to delegate type `{1}' since there is a parameter mismatch",
-                                       GetSignatureForError (), TypeManager.CSharpName (delegate_type));
+                                       GetSignatureForError (), delegate_type.GetSignatureForError ());
 
                        return false;
                }
@@ -1025,7 +1027,7 @@ namespace Mono.CSharp {
                                        return false;
                                
                                ec.Report.Error (1593, loc, "Delegate `{0}' does not take `{1}' arguments",
-                                             TypeManager.CSharpName (delegate_type), Parameters.Count.ToString ());
+                                             delegate_type.GetSignatureForError (), Parameters.Count.ToString ());
                                return false;
                        }
 
@@ -1039,10 +1041,10 @@ namespace Mono.CSharp {
                                                return false;
                                        
                                        if (p_mod == Parameter.Modifier.NONE)
-                                               ec.Report.Error (1677, loc, "Parameter `{0}' should not be declared with the `{1}' keyword",
-                                                             (i + 1).ToString (), Parameter.GetModifierSignature (Parameters.FixedParameters [i].ModFlags));
+                                               ec.Report.Error (1677, Parameters[i].Location, "Parameter `{0}' should not be declared with the `{1}' keyword",
+                                                             (i + 1).ToString (), Parameter.GetModifierSignature (Parameters [i].ModFlags));
                                        else
-                                               ec.Report.Error (1676, loc, "Parameter `{0}' must be declared with the `{1}' keyword",
+                                               ec.Report.Error (1676, Parameters[i].Location, "Parameter `{0}' must be declared with the `{1}' keyword",
                                                              (i+1).ToString (), Parameter.GetModifierSignature (p_mod));
                                        error = true;
                                }
@@ -1052,21 +1054,20 @@ namespace Mono.CSharp {
 
                                TypeSpec type = invoke_pd.Types [i];
                                
-                               // We assume that generic parameters are always inflated
-                               if (TypeManager.IsGenericParameter (type))
-                                       continue;
-                               
-                               if (TypeManager.HasElementType (type) && TypeManager.IsGenericParameter (TypeManager.GetElementType (type)))
+                               //
+                               // Assumes that generic mvar parameters are always inflated
+                               //
+                               if (ImplicitDelegateCreation.ContainsMethodTypeParameter (type))
                                        continue;
                                
                                if (!TypeSpecComparer.IsEqual (invoke_pd.Types [i], Parameters.Types [i])) {
                                        if (ignore_errors)
                                                return false;
                                        
-                                       ec.Report.Error (1678, loc, "Parameter `{0}' is declared as type `{1}' but should be `{2}'",
+                                       ec.Report.Error (1678, Parameters [i].Location, "Parameter `{0}' is declared as type `{1}' but should be `{2}'",
                                                      (i+1).ToString (),
-                                                     TypeManager.CSharpName (Parameters.Types [i]),
-                                                     TypeManager.CSharpName (invoke_pd.Types [i]));
+                                                     Parameters.Types [i].GetSignatureForError (),
+                                                     invoke_pd.Types [i].GetSignatureForError ());
                                        error = true;
                                }
                        }
@@ -1370,7 +1371,7 @@ namespace Mono.CSharp {
                                        return null;
                                }
 
-                               b = b.ConvertToAsyncTask (ec, ec.CurrentMemberDefinition.Parent.PartialContainer, p, return_type, loc);
+                               b = b.ConvertToAsyncTask (ec, ec.CurrentMemberDefinition.Parent.PartialContainer, p, return_type, delegate_type, loc);
                        }
 
                        return CompatibleMethodFactory (return_type ?? InternalType.ErrorType, delegate_type, p, b);
@@ -1656,18 +1657,25 @@ namespace Mono.CSharp {
                                        if (src_block.HasCapturedThis) {
                                                //
                                                // Remove hoisted 'this' request when simple instance method is
-                                               // enough (no hoisted variables only 'this')
+                                               // enough. No hoisted variables only 'this' and don't need to
+                                               // propagate this to value type state machine.
                                                //
-                                               if (src_block.ParametersBlock.StateMachine == null)
+                                               StateMachine sm_parent = null;
+                                               var pb = src_block.ParametersBlock;
+                                               do {
+                                                       sm_parent = pb.StateMachine;
+                                                       pb = pb.Parent == null ? null : pb.Parent.ParametersBlock;
+                                               } while (sm_parent == null && pb != null);
+
+                                               if (sm_parent == null) {
                                                        top_block.RemoveThisReferenceFromChildrenBlock (src_block);
-
-                                               //
-                                               // Special case where parent class is used to emit instance method
-                                               // because currect storey is of value type (async host). We cannot
-                                               // use ldftn on non-boxed instances either to share mutated state
-                                               //
-                                               if (sm != null && sm.Kind == MemberKind.Struct) {
-                                                       parent = sm.Parent.PartialContainer;
+                                               } else if (sm_parent.Kind == MemberKind.Struct) {
+                                                       //
+                                                       // Special case where parent class is used to emit instance method
+                                                       // because currect storey is of value type (async host). We cannot
+                                                       // use ldftn on non-boxed instances either to share mutated state
+                                                       //
+                                                       parent = sm_parent.Parent.PartialContainer;
                                                }
                                        }
 
@@ -1733,6 +1741,7 @@ namespace Mono.CSharp {
                                //
                                method = DoCreateMethodHost (ec);
                                method.Define ();
+                               method.PrepareEmit ();
                        }
 
                        bool is_static = (method.ModFlags & Modifiers.STATIC) != 0;
@@ -1859,7 +1868,7 @@ namespace Mono.CSharp {
 
                public override string GetSignatureForError ()
                {
-                       return TypeManager.CSharpName (type);
+                       return type.GetSignatureForError ();
                }
        }
 
@@ -1998,7 +2007,7 @@ namespace Mono.CSharp {
                        }
 
                        var li_other = LocalVariable.CreateCompilerGenerated (CurrentType, equals_block, loc);
-                       equals_block.AddStatement (new BlockVariableDeclaration (new TypeExpression (li_other.Type, loc), li_other));
+                       equals_block.AddStatement (new BlockVariable (new TypeExpression (li_other.Type, loc), li_other));
                        var other_variable = new LocalVariableReference (li_other, loc);
 
                        MemberAccess system_collections_generic = new MemberAccess (new MemberAccess (
@@ -2081,6 +2090,7 @@ namespace Mono.CSharp {
 
                        equals.Block = equals_block;
                        equals.Define ();
+                       equals.PrepareEmit ();
                        Members.Add (equals);
 
                        //
@@ -2110,7 +2120,7 @@ namespace Mono.CSharp {
                        hashcode_top.AddStatement (new Unchecked (hashcode_block, loc));
 
                        var li_hash = LocalVariable.CreateCompilerGenerated (Compiler.BuiltinTypes.Int, hashcode_top, loc);
-                       hashcode_block.AddStatement (new BlockVariableDeclaration (new TypeExpression (li_hash.Type, loc), li_hash));
+                       hashcode_block.AddStatement (new BlockVariable (new TypeExpression (li_hash.Type, loc), li_hash));
                        LocalVariableReference hash_variable_assign = new LocalVariableReference (li_hash, loc);
                        hashcode_block.AddStatement (new StatementExpression (
                                new SimpleAssign (hash_variable_assign, rs_hashcode)));
@@ -2135,6 +2145,7 @@ namespace Mono.CSharp {
                        hashcode_block.AddStatement (new Return (hash_variable, loc));
                        hashcode.Block = hashcode_top;
                        hashcode.Define ();
+                       hashcode.PrepareEmit ();
                        Members.Add (hashcode);
 
                        //
@@ -2145,6 +2156,7 @@ namespace Mono.CSharp {
                        tostring_block.AddStatement (new Return (string_concat, loc));
                        tostring.Block = tostring_block;
                        tostring.Define ();
+                       tostring.PrepareEmit ();
                        Members.Add (tostring);
 
                        return true;
index 22e28eaf7290267fa3754ecd6666cbd1e2f15cad..facb0eb28c092e4d3f0ecdab9071bd8524306aeb 100644 (file)
@@ -47,9 +47,6 @@ namespace Mono.CSharp
 
                public Argument (Expression expr)
                {
-                       if (expr == null)
-                               throw new ArgumentNullException ();
-
                        this.Expr = expr;
                }
 
@@ -135,7 +132,7 @@ namespace Mono.CSharp
                        if (Expr.eclass == ExprClass.MethodGroup)
                                return Expr.ExprClassName;
 
-                       return TypeManager.CSharpName (Expr.Type);
+                       return Expr.Type.GetSignatureForError ();
                }
 
                public bool ResolveMethodGroup (ResolveContext ec)
@@ -350,7 +347,7 @@ namespace Mono.CSharp
                                        } else if (arg_type.Kind == MemberKind.Void || arg_type == InternalType.Arglist || arg_type.IsPointer) {
                                                rc.Report.Error (1978, a.Expr.Location,
                                                        "An expression of type `{0}' cannot be used as an argument of dynamic operation",
-                                                       TypeManager.CSharpName (arg_type));
+                                                       arg_type.GetSignatureForError ());
                                        }
 
                                        info_flags = new Binary (Binary.Operator.BitwiseOr, info_flags,
index fa0a61b1750a0f24b4fe91c9926baaf8d8e80b60..b2e4e9a20181b84e86a02b000a20ffed083fdd32 100644 (file)
@@ -7,7 +7,7 @@
 //
 // Copyright 2001, 2002, 2003 Ximian, Inc.
 // Copyright 2004-2011 Novell, Inc.
-// Copyright 2011 Xamarin Inc
+// Copyright 2011-2013 Xamarin Inc
 //
 
 
@@ -74,6 +74,9 @@ namespace Mono.CSharp
                Dictionary<ITypeDefinition, Attribute> emitted_forwarders;
                AssemblyAttributesPlaceholder module_target_attrs;
 
+               // Win32 version info values
+               string vi_product, vi_product_version, vi_company, vi_copyright, vi_trademark;
+
                protected AssemblyDefinition (ModuleContainer module, string name)
                {
                        this.module = module;
@@ -288,7 +291,7 @@ namespace Mono.CSharp
                                } else if (emitted_forwarders.ContainsKey (t.MemberDefinition)) {
                                        Report.SymbolRelatedToPreviousError (emitted_forwarders[t.MemberDefinition].Location, null);
                                        Report.Error (739, a.Location, "A duplicate type forward of type `{0}'",
-                                               TypeManager.CSharpName (t));
+                                               t.GetSignatureForError ());
                                        return;
                                }
 
@@ -297,13 +300,13 @@ namespace Mono.CSharp
                                if (t.MemberDefinition.DeclaringAssembly == this) {
                                        Report.SymbolRelatedToPreviousError (t);
                                        Report.Error (729, a.Location, "Cannot forward type `{0}' because it is defined in this assembly",
-                                               TypeManager.CSharpName (t));
+                                               t.GetSignatureForError ());
                                        return;
                                }
 
                                if (t.IsNested) {
                                        Report.Error (730, a.Location, "Cannot forward type `{0}' because it is a nested type",
-                                               TypeManager.CSharpName (t));
+                                               t.GetSignatureForError ());
                                        return;
                                }
 
@@ -347,15 +350,24 @@ namespace Mono.CSharp
                        } else if (a.Type == pa.RuntimeCompatibility) {
                                wrap_non_exception_throws_custom = true;
                        } else if (a.Type == pa.AssemblyFileVersion) {
-                               string value = a.GetString ();
-                               if (string.IsNullOrEmpty (value) || IsValidAssemblyVersion (value, false) == null) {
+                               vi_product_version = a.GetString ();
+                               if (string.IsNullOrEmpty (vi_product_version) || IsValidAssemblyVersion (vi_product_version, false) == null) {
                                        Report.Warning (1607, 1, a.Location, "The version number `{0}' specified for `{1}' is invalid",
-                                               value, a.Name);
+                                               vi_product_version, a.Name);
                                        return;
                                }
+                       } else if (a.Type == pa.AssemblyProduct) {
+                               vi_product = a.GetString ();
+                       } else if (a.Type == pa.AssemblyCompany) {
+                               vi_company = a.GetString ();
+                       } else if (a.Type == pa.AssemblyDescription) {
+                               // TODO: Needs extra api
+                       } else if (a.Type == pa.AssemblyCopyright) {
+                               vi_copyright = a.GetString ();
+                       } else if (a.Type == pa.AssemblyTrademark) {
+                               vi_trademark = a.GetString ();
                        }
 
-
                        SetCustomAttribute (ctor, cdata);
                }
 
@@ -370,7 +382,7 @@ namespace Mono.CSharp
                        // no working SRE API
                        foreach (var entry in Importer.Assemblies) {
                                var a = entry as ImportedAssemblyDefinition;
-                               if (a == null)
+                               if (a == null || a.IsMissing)
                                        continue;
 
                                if (public_key != null && !a.HasStrongName) {
@@ -749,7 +761,7 @@ namespace Mono.CSharp
                        if (Compiler.Settings.Win32ResourceFile != null) {
                                Builder.DefineUnmanagedResource (Compiler.Settings.Win32ResourceFile);
                        } else {
-                               Builder.DefineVersionInfoResource ();
+                               Builder.DefineVersionInfoResource (vi_product, vi_product_version, vi_company, vi_copyright, vi_trademark);
                        }
 
                        if (Compiler.Settings.Win32IconFile != null) {
@@ -1167,15 +1179,27 @@ namespace Mono.CSharp
                                if (loaded.Contains (key))
                                        continue;
 
-                               // A corlib assembly is the first assembly which contains System.Object
-                               if (corlib_assembly == null && HasObjectType (a)) {
-                                       corlib_assembly = a;
-                                       continue;
-                               }
-
                                loaded.Add (key);
                        }
 
+                       if (corlib_assembly == null) {
+                               //
+                               // Requires second pass because HasObjectType can trigger assembly load event
+                               //
+                               for (int i = 0; i < loaded.Count; ++i) {
+                                       var assembly = loaded [i];
+
+                                       //
+                                       // corlib assembly is the first referenced assembly which contains System.Object
+                                       //
+                                       if (HasObjectType (assembly.Item2)) {
+                                               corlib_assembly = assembly.Item2;
+                                               loaded.RemoveAt (i);
+                                               break;
+                                       }
+                               }
+                       }
+
                        foreach (var entry in module.Compiler.Settings.AssemblyReferencesAliases) {
                                a = LoadAssemblyFile (entry.Item2, false);
                                if (a == null)
index cd32b0978662b70ce5e293fa3e677ee81a0fab8c..61cb8e239275e94c9375e11e2958f804567b6f8d 100644 (file)
@@ -804,8 +804,17 @@ namespace Mono.CSharp {
                        // Otherwise, if the selected operator is a predefined operator
                        //
                        Binary b = source as Binary;
-                       if (b == null && source is ReducedExpression)
-                               b = ((ReducedExpression) source).OriginalExpression as Binary;
+                       if (b == null) {
+                               if (source is ReducedExpression)
+                                       b = ((ReducedExpression) source).OriginalExpression as Binary;
+                               else if (source is Nullable.LiftedBinaryOperator) {
+                                       var po = ((Nullable.LiftedBinaryOperator) source);
+                                       if (po.UserOperator == null)
+                                               b = po.Binary;
+                               } else if (source is TypeCast) {
+                                       b = ((TypeCast) source).Child as Binary;
+                               }
+                       }
 
                        if (b != null) {
                                //
index 7742126beda0353d680e283e1c258d2b7f58a024..bb3f0f6608d36a173ebfe814db75b74d7b04af28 100644 (file)
@@ -195,7 +195,9 @@ namespace Mono.CSharp
 
                protected override void DoEmit (EmitContext ec)
                {
-                       GetResultExpression (ec).Emit (ec);
+                       using (ec.With (BuilderContext.Options.OmitDebugInfo, true)) {
+                               GetResultExpression (ec).Emit (ec);
+                       }
                }
 
                public Expression GetResultExpression (EmitContext ec)
@@ -224,34 +226,34 @@ namespace Mono.CSharp
                        var fe_awaiter = new FieldExpr (awaiter, loc);
                        fe_awaiter.InstanceExpression = new CompilerGeneratedThis (ec.CurrentType, loc);
 
-                       //
-                       // awaiter = expr.GetAwaiter ();
-                       //
+                               Label skip_continuation = ec.DefineLabel ();
+
                        using (ec.With (BuilderContext.Options.OmitDebugInfo, true)) {
+                               //
+                               // awaiter = expr.GetAwaiter ();
+                               //
                                fe_awaiter.EmitAssign (ec, expr, false, false);
-                       }
 
-                       Label skip_continuation = ec.DefineLabel ();
+                               Expression completed_expr;
+                               if (IsDynamic) {
+                                       var rc = new ResolveContext (ec.MemberContext);
 
-                       Expression completed_expr;
-                       if (IsDynamic) {
-                               var rc = new ResolveContext (ec.MemberContext);
+                                       Arguments dargs = new Arguments (1);
+                                       dargs.Add (new Argument (fe_awaiter));
+                                       completed_expr = new DynamicMemberBinder ("IsCompleted", dargs, loc).Resolve (rc);
 
-                               Arguments dargs = new Arguments (1);
-                               dargs.Add (new Argument (fe_awaiter));
-                               completed_expr = new DynamicMemberBinder ("IsCompleted", dargs, loc).Resolve (rc);
+                                       dargs = new Arguments (1);
+                                       dargs.Add (new Argument (completed_expr));
+                                       completed_expr = new DynamicConversion (ec.Module.Compiler.BuiltinTypes.Bool, 0, dargs, loc).Resolve (rc);
+                               } else {
+                                       var pe = PropertyExpr.CreatePredefined (awaiter_definition.IsCompleted, loc);
+                                       pe.InstanceExpression = fe_awaiter;
+                                       completed_expr = pe;
+                               }
 
-                               dargs = new Arguments (1);
-                               dargs.Add (new Argument (completed_expr));
-                               completed_expr = new DynamicConversion (ec.Module.Compiler.BuiltinTypes.Bool, 0, dargs, loc).Resolve (rc);
-                       } else {
-                               var pe = PropertyExpr.CreatePredefined (awaiter_definition.IsCompleted, loc);
-                               pe.InstanceExpression = fe_awaiter;
-                               completed_expr = pe;
+                               completed_expr.EmitBranchable (ec, skip_continuation, true);
                        }
 
-                       completed_expr.EmitBranchable (ec, skip_continuation, true);
-
                        base.DoEmit (ec);
 
                        //
@@ -378,6 +380,10 @@ namespace Mono.CSharp
                        }
                }
 
+               public TypeSpec DelegateType {
+                       get; set;
+               }
+
                public override bool IsIterator {
                        get {
                                return false;
@@ -737,7 +743,9 @@ namespace Mono.CSharp
                        var args = new Arguments (2);
                        args.Add (new Argument (awaiter, Argument.AType.Ref));
                        args.Add (new Argument (new CompilerGeneratedThis (CurrentType, Location), Argument.AType.Ref));
-                       mg.EmitCall (ec, args);
+                       using (ec.With (BuilderContext.Options.OmitDebugInfo, true)) {
+                               mg.EmitCall (ec, args);
+                       }
                }
 
                public void EmitInitializer (EmitContext ec)
@@ -813,7 +821,9 @@ namespace Mono.CSharp
                        Arguments args = new Arguments (1);
                        args.Add (new Argument (exceptionVariable));
 
-                       mg.EmitCall (ec, args);
+                       using (ec.With (BuilderContext.Options.OmitDebugInfo, true)) {
+                               mg.EmitCall (ec, args);
+                       }
                }
 
                public void EmitSetResult (EmitContext ec)
@@ -835,7 +845,9 @@ namespace Mono.CSharp
                                args.Add (new Argument (new LocalVariableReference (hoisted_return, Location)));
                        }
 
-                       mg.EmitCall (ec, args);
+                       using (ec.With (BuilderContext.Options.OmitDebugInfo, true)) {
+                               mg.EmitCall (ec, args);
+                       }
                }
 
                protected override TypeSpec[] ResolveBaseTypes (out FullNamedExpression base_class)
index eb998caca39da239e5144a39f5e9bc9a02a34270..d40665d116a18377e4839b61bf73460d39ae8278 100644 (file)
@@ -1,14 +1,14 @@
 //
-// attribute.cs: Attribute Handler
+// attribute.cs: Attributes handling
 //
 // Author: Ravi Pratap (ravi@ximian.com)
-//         Marek Safar (marek.safar@seznam.cz)
+//         Marek Safar (marek.safar@gmail.com)
 //
 // Dual licensed under the terms of the MIT X11 or GNU GPL
 //
 // Copyright 2001-2003 Ximian, Inc (http://www.ximian.com)
 // Copyright 2003-2008 Novell, Inc.
-// Copyright 2011 Xamarin Inc
+// Copyright 2011-2013 Xamarin Inc
 //
 
 using System;
@@ -265,7 +265,7 @@ namespace Mono.CSharp {
                public void Error_AttributeEmitError (string inner)
                {
                        Report.Error (647, Location, "Error during emitting `{0}' attribute. The reason is `{1}'",
-                                     TypeManager.CSharpName (Type), inner);
+                                     Type.GetSignatureForError (), inner);
                }
 
                public void Error_InvalidSecurityParent ()
@@ -368,7 +368,7 @@ namespace Mono.CSharp {
                public string GetSignatureForError ()
                {
                        if (Type != null)
-                               return TypeManager.CSharpName (Type);
+                               return Type.GetSignatureForError ();
 
                        return expression.GetSignatureForError ();
                }
@@ -385,6 +385,19 @@ namespace Mono.CSharp {
                        return HasSecurityAttribute && IsSecurityActionValid ();
                }
 
+               static bool IsValidMethodImplOption (int value)
+               {
+                       //
+                       // Allow to use AggressiveInlining on any runtime/corlib
+                       //
+                       MethodImplOptions all = (MethodImplOptions) 256;
+                       foreach (MethodImplOptions v in System.Enum.GetValues (typeof (MethodImplOptions))) {
+                               all |= v;
+                       }
+
+                       return ((MethodImplOptions) value | all) == all;
+               }
+
                static bool IsValidArgumentType (TypeSpec t)
                {
                        if (t.IsArray) {
@@ -449,7 +462,7 @@ namespace Mono.CSharp {
 
                        ObsoleteAttribute obsolete_attr = Type.GetAttributeObsolete ();
                        if (obsolete_attr != null) {
-                               AttributeTester.Report_ObsoleteMessage (obsolete_attr, TypeManager.CSharpName (Type), Location, Report);
+                               AttributeTester.Report_ObsoleteMessage (obsolete_attr, Type.GetSignatureForError (), Location, Report);
                        }
 
                        ResolveContext rc = null;
@@ -1025,10 +1038,14 @@ namespace Mono.CSharp {
                                                                        if (string.IsNullOrEmpty (value))
                                                                                Error_AttributeEmitError ("DllName cannot be empty or null");
                                                                }
-                                                       } else if (Type == predefined.MethodImpl && pt.BuiltinType == BuiltinTypeSpec.Type.Short &&
-                                                               !System.Enum.IsDefined (typeof (MethodImplOptions), ((Constant) arg_expr).GetValue ().ToString ())) {
-                                                               Error_AttributeEmitError ("Incorrect argument value.");
-                                                               return;
+                                                       } else if (Type == predefined.MethodImpl) {
+                                                               if (pos_args.Count == 1) {
+                                                                       var value = (int) ((Constant) arg_expr).GetValueAsLong ();
+
+                                                                       if (!IsValidMethodImplOption (value)) {
+                                                                               Error_AttributeEmitError ("Incorrect argument value");
+                                                                       }
+                                                               }
                                                        }
                                                }
 
@@ -1650,6 +1667,11 @@ namespace Mono.CSharp {
                public readonly PredefinedDecimalAttribute DecimalConstant;
                public readonly PredefinedAttribute StructLayout;
                public readonly PredefinedAttribute FieldOffset;
+               public readonly PredefinedAttribute AssemblyProduct;
+               public readonly PredefinedAttribute AssemblyCompany;
+               public readonly PredefinedAttribute AssemblyDescription;
+               public readonly PredefinedAttribute AssemblyCopyright;
+               public readonly PredefinedAttribute AssemblyTrademark;
                public readonly PredefinedAttribute CallerMemberNameAttribute;
                public readonly PredefinedAttribute CallerLineNumberAttribute;
                public readonly PredefinedAttribute CallerFilePathAttribute;
@@ -1703,6 +1725,11 @@ namespace Mono.CSharp {
                        DecimalConstant = new PredefinedDecimalAttribute (module, "System.Runtime.CompilerServices", "DecimalConstantAttribute");
                        StructLayout = new PredefinedAttribute (module, "System.Runtime.InteropServices", "StructLayoutAttribute");
                        FieldOffset = new PredefinedAttribute (module, "System.Runtime.InteropServices", "FieldOffsetAttribute");
+                       AssemblyProduct = new PredefinedAttribute (module, "System.Reflection", "AssemblyProductAttribute");
+                       AssemblyCompany = new PredefinedAttribute (module, "System.Reflection", "AssemblyCompanyAttribute");
+                       AssemblyDescription = new PredefinedAttribute (module, "System.Reflection", "AssemblyDescriptionAttribute");
+                       AssemblyCopyright = new PredefinedAttribute (module, "System.Reflection", "AssemblyCopyrightAttribute");
+                       AssemblyTrademark = new PredefinedAttribute (module, "System.Reflection", "AssemblyTrademarkAttribute");
 
                        AsyncStateMachine = new PredefinedStateMachineAttribute (module, "System.Runtime.CompilerServices", "AsyncStateMachineAttribute");
 
@@ -1820,7 +1847,7 @@ namespace Mono.CSharp {
                        //
                        // Handle all parameter-less attributes as optional
                        //
-                       if (!IsDefined)
+                       if (!Define ())
                                return false;
 
                        ctor = (MethodSpec) MemberCache.FindMember (type, MemberFilter.Constructor (ParametersCompiled.EmptyReadOnlyParameters), BindingRestriction.DeclaredOnly);
@@ -1978,7 +2005,7 @@ namespace Mono.CSharp {
                        if (ac != null) {
                                element = GetTransformationFlags (ac.Element);
                                if (element == null)
-                                       return null;
+                                       return new bool[] { false, false };
 
                                bool[] res = new bool[element.Length + 1];
                                res[0] = false;
index 2e453ab724ee715f7561985da524b23d1ec88724..361216652889d2eea740cefa33189a5b8fb9d8d1 100644 (file)
@@ -183,11 +183,11 @@ namespace Mono.CSharp {
                        switch (oper){
                        case Binary.Operator.BitwiseOr:
                                //
-                               // bool? operator &(bool? x, bool? y);
+                               // bool? operator |(bool? x, bool? y);
                                //
                                if ((lt.BuiltinType == BuiltinTypeSpec.Type.Bool && right is NullLiteral) ||
                                        (rt.BuiltinType == BuiltinTypeSpec.Type.Bool && left is NullLiteral)) {
-                                       var b = new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                       var b = new Binary (oper, left, right).ResolveOperator (ec);
 
                                        // false | null => null
                                        // null | false => null
@@ -231,7 +231,7 @@ namespace Mono.CSharp {
                                //
                                if ((lt.BuiltinType == BuiltinTypeSpec.Type.Bool && right is NullLiteral) ||
                                        (rt.BuiltinType == BuiltinTypeSpec.Type.Bool && left is NullLiteral)) {
-                                       var b = new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                       var b = new Binary (oper, left, right).ResolveOperator (ec);
 
                                        // false & null => false
                                        // null & false => false
@@ -495,7 +495,7 @@ namespace Mono.CSharp {
                                if (left is NullLiteral && right is NullLiteral) {
                                        var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                        lifted_int.ResolveAsType (ec);
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                }
 
                                if (!DoBinaryNumericPromotions (ec, ref left, ref right))
@@ -592,7 +592,7 @@ namespace Mono.CSharp {
                                if (left is NullLiteral && right is NullLiteral) {
                                        var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                        lifted_int.ResolveAsType (ec);
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                }
 
                                if (!DoBinaryNumericPromotions (ec, ref left, ref right))
@@ -688,7 +688,7 @@ namespace Mono.CSharp {
                                if (left is NullLiteral && right is NullLiteral) {
                                        var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                        lifted_int.ResolveAsType (ec);
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                }
 
                                if (!DoBinaryNumericPromotions (ec, ref left, ref right))
@@ -788,7 +788,7 @@ namespace Mono.CSharp {
                                if (left is NullLiteral && right is NullLiteral) {
                                        var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                        lifted_int.ResolveAsType (ec);
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                }
 
                                if (!DoBinaryNumericPromotions (ec, ref left, ref right))
@@ -878,7 +878,7 @@ namespace Mono.CSharp {
                                if (left is NullLiteral && right is NullLiteral) {
                                        var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                        lifted_int.ResolveAsType (ec);
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                }
 
                                IntConstant ic = right.ConvertImplicitly (ec.BuiltinTypes.Int) as IntConstant;
@@ -899,7 +899,7 @@ namespace Mono.CSharp {
 
                                // null << value => null
                                if (left is NullLiteral)
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, left, right).ResolveOperator (ec);
 
                                left = left.ConvertImplicitly (ec.BuiltinTypes.Int);
                                if (left.Type.BuiltinType == BuiltinTypeSpec.Type.Int)
@@ -915,7 +915,7 @@ namespace Mono.CSharp {
                                if (left is NullLiteral && right is NullLiteral) {
                                        var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                        lifted_int.ResolveAsType (ec);
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                }
 
                                IntConstant sic = right.ConvertImplicitly (ec.BuiltinTypes.Int) as IntConstant;
@@ -935,7 +935,7 @@ namespace Mono.CSharp {
 
                                // null >> value => null
                                if (left is NullLiteral)
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, left, right).ResolveOperator (ec);
 
                                left = left.ConvertImplicitly (ec.BuiltinTypes.Int);
                                if (left.Type.BuiltinType == BuiltinTypeSpec.Type.Int)
@@ -1037,11 +1037,7 @@ namespace Mono.CSharp {
                                        if (left is NullLiteral) {
                                                var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                                lifted_int.ResolveAsType (ec);
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
-                                       }
-
-                                       if (left is Nullable.LiftedNull) {
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                               return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                        }
                                }
 
@@ -1077,11 +1073,7 @@ namespace Mono.CSharp {
                                        if (left is NullLiteral) {
                                                var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                                lifted_int.ResolveAsType (ec);
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
-                                       }
-
-                                       if (left is Nullable.LiftedNull) {
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                               return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                        }
                                }
 
@@ -1117,11 +1109,7 @@ namespace Mono.CSharp {
                                        if (left is NullLiteral) {
                                                var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                                lifted_int.ResolveAsType (ec);
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
-                                       }
-
-                                       if (left is Nullable.LiftedNull) {
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                               return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                        }
                                }
 
@@ -1157,11 +1145,7 @@ namespace Mono.CSharp {
                                        if (left is NullLiteral) {
                                                var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                                lifted_int.ResolveAsType (ec);
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
-                                       }
-
-                                       if (left is Nullable.LiftedNull) {
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                               return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                        }
                                }
 
index 24a6bf223eb027179039c4739a187b48d87cb54a..fe91d81f86f00bd1753854f99b9a2cf2cc57c91b 100644 (file)
@@ -17,7 +17,6 @@ using System.Collections.Generic;
 using System.Runtime.InteropServices;
 using System.Security;
 using System.Security.Permissions;
-using System.Linq;
 using System.Text;
 using System.Diagnostics;
 using Mono.CompilerServices.SymbolWriter;
@@ -99,9 +98,9 @@ namespace Mono.CSharp
                        get; set;
                }
 
-               public virtual void AddCompilerGeneratedClass (CompilerGeneratedContainer c)
+               public void AddCompilerGeneratedClass (CompilerGeneratedContainer c)
                {
-                       containers.Add (c);
+                       AddTypeContainerMember (c);
                }
 
                public virtual void AddPartial (TypeDefinition next_part)
@@ -188,15 +187,12 @@ namespace Mono.CSharp
 
                        next_part.PartialContainer = existing;
 
-                       if (containers == null)
-                               containers = new List<TypeContainer> ();
-
-                       containers.Add (next_part);
+                       AddTypeContainerMember (next_part);
                }
 
                public virtual void AddTypeContainer (TypeContainer tc)
                {
-                       containers.Add (tc);
+                       AddTypeContainerMember (tc);
 
                        var tparams = tc.MemberName.TypeParameters;
                        if (tparams != null && tc.PartialContainer != null) {
@@ -211,6 +207,11 @@ namespace Mono.CSharp
                        }
                }
 
+               protected virtual void AddTypeContainerMember (TypeContainer tc)
+               {
+                       containers.Add (tc);
+               }
+
                public virtual void CloseContainer ()
                {
                        if (containers != null) {
@@ -357,7 +358,6 @@ namespace Mono.CSharp
 
                public string GetSignatureForMetadata ()
                {
-#if STATIC
                        if (Parent is TypeDefinition) {
                                return Parent.GetSignatureForMetadata () + "+" + TypeNameParser.Escape (MemberName.Basename);
                        }
@@ -365,9 +365,6 @@ namespace Mono.CSharp
                        var sb = new StringBuilder ();
                        CreateMetadataName (sb);
                        return sb.ToString ();
-#else
-                       throw new NotImplementedException ();
-#endif
                }
 
                public virtual void RemoveContainer (TypeContainer cont)
@@ -754,21 +751,17 @@ namespace Mono.CSharp
                {
                        AddNameToContainer (tc, tc.Basename);
 
-                       if (containers == null)
-                               containers = new List<TypeContainer> ();
-
-                       members.Add (tc);
                        base.AddTypeContainer (tc);
                }
 
-               public override void AddCompilerGeneratedClass (CompilerGeneratedContainer c)
+               protected override void AddTypeContainerMember (TypeContainer tc)
                {
-                       members.Add (c);
+                       members.Add (tc);
 
                        if (containers == null)
                                containers = new List<TypeContainer> ();
 
-                       base.AddCompilerGeneratedClass (c);
+                       base.AddTypeContainerMember (tc);
                }
 
                //
@@ -1067,9 +1060,9 @@ namespace Mono.CSharp
                        }
                }
 
-               public virtual void AddBasesForPart (List<FullNamedExpression> bases)
+               public virtual void SetBaseTypes (List<FullNamedExpression> baseTypes)
                {
-                       type_bases = bases;
+                       type_bases = baseTypes;
                }
 
                /// <summary>
@@ -1179,7 +1172,7 @@ namespace Mono.CSharp
                                }
 
                                bool pair_found = false;
-                               for (int ii = i + 1; ii < members.Count; ++ii) {
+                               for (int ii = 0; ii < members.Count; ++ii) {
                                        var o_b = members[ii] as Operator;
                                        if (o_b == null || o_b.OperatorType != matching_type)
                                                continue;
@@ -1260,8 +1253,10 @@ namespace Mono.CSharp
 
                                all_tp_builders = TypeBuilder.DefineGenericParameters (tparam_names);
 
-                               if (CurrentTypeParameters != null)
-                                       CurrentTypeParameters.Define (all_tp_builders, spec, CurrentTypeParametersStartIndex, this);
+                               if (CurrentTypeParameters != null) {
+                                       CurrentTypeParameters.Create (spec, CurrentTypeParametersStartIndex, this);
+                                       CurrentTypeParameters.Define (all_tp_builders);
+                               }
                        }
 
                        return true;
@@ -1422,6 +1417,7 @@ namespace Mono.CSharp
 
                                members.Add (proxy_method);
                                proxy_method.Define ();
+                               proxy_method.PrepareEmit ();
 
                                hoisted_base_call_proxies.Add (method, proxy_method);
                        }
@@ -1519,19 +1515,31 @@ namespace Mono.CSharp
                        }
 
                        if (set_base_type) {
-                               if (base_type != null) {
-                                       spec.BaseType = base_type;
-
-                                       // Set base type after type creation
-                                       TypeBuilder.SetParent (base_type.GetMetaInfo ());
-                               } else {
-                                       TypeBuilder.SetParent (null);
-                               }
+                               SetBaseType ();
                        }
 
                        return true;
                }
 
+               void SetBaseType ()
+               {
+                       if (base_type == null) {
+                               TypeBuilder.SetParent (null);
+                               return;
+                       }
+
+                       if (spec.BaseType == base_type)
+                               return;
+
+                       spec.BaseType = base_type;
+
+                       if (IsPartialPart)
+                               spec.UpdateInflatedInstancesBaseType ();
+
+                       // Set base type after type creation
+                       TypeBuilder.SetParent (base_type.GetMetaInfo ());
+               }
+
                public override void ExpandBaseInterfaces ()
                {
                        if (!IsPartialPart)
@@ -1604,6 +1612,10 @@ namespace Mono.CSharp
                        foreach (var member in members) {
                                var pm = member as IParametersMember;
                                if (pm != null) {
+                                       var mc = member as MethodOrOperator;
+                                       if (mc != null) {
+                                               mc.PrepareEmit ();
+                                       }
 
                                        var p = pm.Parameters;
                                        if (p.IsEmpty)
@@ -1675,19 +1687,6 @@ namespace Mono.CSharp
                        current_type = null;
                }
 
-               void UpdateTypeParameterConstraints (TypeDefinition part)
-               {
-                       for (int i = 0; i < CurrentTypeParameters.Count; i++) {
-                               if (CurrentTypeParameters[i].AddPartialConstraints (part, part.MemberName.TypeParameters[i]))
-                                       continue;
-
-                               Report.SymbolRelatedToPreviousError (Location, "");
-                               Report.Error (265, part.Location,
-                                       "Partial declarations of `{0}' have inconsistent constraints for type parameter `{1}'",
-                                       GetSignatureForError (), CurrentTypeParameters[i].GetSignatureForError ());
-                       }
-               }
-
                public override void RemoveContainer (TypeContainer cont)
                {
                        base.RemoveContainer (cont);
@@ -1712,7 +1711,7 @@ namespace Mono.CSharp
                        }
 
                        if (IsPartialPart) {
-                               PartialContainer.UpdateTypeParameterConstraints (this);
+                               PartialContainer.CurrentTypeParameters.UpdateConstraints (this);
                        }
 
                        return true;
@@ -2092,8 +2091,13 @@ namespace Mono.CSharp
 
                        base.Emit ();
 
-                       for (int i = 0; i < members.Count; i++)
-                               members[i].Emit ();
+                       for (int i = 0; i < members.Count; i++) {
+                               var m = members[i];
+                               if ((m.caching_flags & Flags.CloseTypeCreated) != 0)
+                                       continue;
+
+                               m.Emit ();
+                       }
 
                        EmitIndexerName ();
                        CheckAttributeClsCompliance ();
@@ -2273,7 +2277,7 @@ namespace Mono.CSharp
                        
                        Report.SymbolRelatedToPreviousError (mb.InterfaceType);
                        Report.Error (540, mb.Location, "`{0}': containing type does not implement interface `{1}'",
-                               mb.GetSignatureForError (), TypeManager.CSharpName (mb.InterfaceType));
+                               mb.GetSignatureForError (), mb.InterfaceType.GetSignatureForError ());
                        return false;
                }
 
@@ -2503,7 +2507,7 @@ namespace Mono.CSharp
                /// <summary>
                /// Defines the default constructors 
                /// </summary>
-               protected Constructor DefineDefaultConstructor (bool is_static)
+               protected virtual Constructor DefineDefaultConstructor (bool is_static)
                {
                        // The default instance constructor is public
                        // If the class is abstract, the default constructor is protected
@@ -2584,14 +2588,14 @@ namespace Mono.CSharp
                        visitor.Visit (this);
                }
 
-               public override void AddBasesForPart (List<FullNamedExpression> bases)
+               public override void SetBaseTypes (List<FullNamedExpression> baseTypes)
                {
                        var pmn = MemberName;
                        if (pmn.Name == "Object" && !pmn.IsGeneric && Parent.MemberName.Name == "System" && Parent.MemberName.Left == null)
                                Report.Error (537, Location,
                                        "The class System.Object cannot have a base class or implement an interface.");
 
-                       base.AddBasesForPart (bases);
+                       base.SetBaseTypes (baseTypes);
                }
 
                public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
@@ -3024,7 +3028,7 @@ namespace Mono.CSharp
 
                                        Report.SymbolRelatedToPreviousError (iface);
                                        Report.Warning (3027, 1, Location, "`{0}' is not CLS-compliant because base interface `{1}' is not CLS-compliant",
-                                               GetSignatureForError (), TypeManager.CSharpName (iface));
+                                               GetSignatureForError (), iface.GetSignatureForError ());
                                }
                        }
 
@@ -3259,10 +3263,10 @@ namespace Mono.CSharp
                                Report.SymbolRelatedToPreviousError (base_member);
                                if (this is PropertyBasedMember) {
                                        Report.Error (1715, Location, "`{0}': type must be `{1}' to match overridden member `{2}'",
-                                               GetSignatureForError (), TypeManager.CSharpName (base_member_type), TypeManager.CSharpSignature (base_member));
+                                               GetSignatureForError (), base_member_type.GetSignatureForError (), base_member.GetSignatureForError ());
                                } else {
                                        Report.Error (508, Location, "`{0}': return type must be `{1}' to match overridden member `{2}'",
-                                               GetSignatureForError (), TypeManager.CSharpName (base_member_type), TypeManager.CSharpSignature (base_member));
+                                               GetSignatureForError (), base_member_type.GetSignatureForError (), base_member.GetSignatureForError ());
                                }
                                ok = false;
                        }
@@ -3336,12 +3340,16 @@ namespace Mono.CSharp
                                if (!InterfaceType.IsInterface) {
                                        Report.SymbolRelatedToPreviousError (InterfaceType);
                                        Report.Error (538, Location, "The type `{0}' in explicit interface declaration is not an interface",
-                                               TypeManager.CSharpName (InterfaceType));
+                                               InterfaceType.GetSignatureForError ());
                                } else {
                                        Parent.PartialContainer.VerifyImplements (this);
                                }
 
-                               ModifiersExtensions.Check (Modifiers.AllowedExplicitImplFlags, explicit_mod_flags, 0, Location, Report);
+                               Modifiers allowed_explicit = Modifiers.AllowedExplicitImplFlags;
+                               if (this is Method)
+                                       allowed_explicit |= Modifiers.ASYNC;
+
+                               ModifiersExtensions.Check (allowed_explicit, explicit_mod_flags, 0, Location, Report);
                        }
 
                        return base.Define ();
@@ -3367,15 +3375,15 @@ namespace Mono.CSharp
                                if (this is Indexer)
                                        Report.Error (55, Location,
                                                      "Inconsistent accessibility: parameter type `{0}' is less accessible than indexer `{1}'",
-                                                     TypeManager.CSharpName (t), GetSignatureForError ());
+                                                     t.GetSignatureForError (), GetSignatureForError ());
                                else if (this is Operator)
                                        Report.Error (57, Location,
                                                      "Inconsistent accessibility: parameter type `{0}' is less accessible than operator `{1}'",
-                                                     TypeManager.CSharpName (t), GetSignatureForError ());
+                                                     t.GetSignatureForError (), GetSignatureForError ());
                                else
                                        Report.Error (51, Location,
                                                "Inconsistent accessibility: parameter type `{0}' is less accessible than method `{1}'",
-                                               TypeManager.CSharpName (t), GetSignatureForError ());
+                                               t.GetSignatureForError (), GetSignatureForError ());
                                error = true;
                        }
                        return !error;
@@ -3484,7 +3492,7 @@ namespace Mono.CSharp
                        // replacing predefined names which saves some space and name
                        // is still unique
                        //
-                       return TypeManager.CSharpName (InterfaceType) + "." + name;
+                       return InterfaceType.GetSignatureForError () + "." + name;
                }
 
                public override string GetSignatureForDocumentation ()
@@ -3523,7 +3531,9 @@ namespace Mono.CSharp
                {
                        this.Parent = parent;
                        this.type_expr = type;
-                       ModFlags = ModifiersExtensions.Check (allowed_mod, mod, def_mod, Location, Report);
+
+                       if (name != MemberName.Null)
+                               ModFlags = ModifiersExtensions.Check (allowed_mod, mod, def_mod, Location, Report);
                }
 
                #region Properties
@@ -3582,28 +3592,28 @@ namespace Mono.CSharp
                                if (this is Property)
                                        Report.Error (53, Location,
                                                      "Inconsistent accessibility: property type `" +
-                                                     TypeManager.CSharpName (MemberType) + "' is less " +
+                                                     MemberType.GetSignatureForError () + "' is less " +
                                                      "accessible than property `" + GetSignatureForError () + "'");
                                else if (this is Indexer)
                                        Report.Error (54, Location,
                                                      "Inconsistent accessibility: indexer return type `" +
-                                                     TypeManager.CSharpName (MemberType) + "' is less " +
+                                                     MemberType.GetSignatureForError () + "' is less " +
                                                      "accessible than indexer `" + GetSignatureForError () + "'");
                                else if (this is MethodCore) {
                                        if (this is Operator)
                                                Report.Error (56, Location,
                                                              "Inconsistent accessibility: return type `" +
-                                                             TypeManager.CSharpName (MemberType) + "' is less " +
+                                                             MemberType.GetSignatureForError () + "' is less " +
                                                              "accessible than operator `" + GetSignatureForError () + "'");
                                        else
                                                Report.Error (50, Location,
                                                              "Inconsistent accessibility: return type `" +
-                                                             TypeManager.CSharpName (MemberType) + "' is less " +
+                                                             MemberType.GetSignatureForError () + "' is less " +
                                                              "accessible than method `" + GetSignatureForError () + "'");
                                } else {
                                        Report.Error (52, Location,
                                                      "Inconsistent accessibility: field type `" +
-                                                     TypeManager.CSharpName (MemberType) + "' is less " +
+                                                     MemberType.GetSignatureForError () + "' is less " +
                                                      "accessible than field `" + GetSignatureForError () + "'");
                                }
                        }
index 9bb7066758d4d12a332b04ae472497558b776eed..f190cc941cd1d64ad42cc2b9875e0d86108e379c 100644 (file)
@@ -248,6 +248,21 @@ namespace Mono.CSharp
                        return true;
                }
 
+               public void MarkCallEntry (Location loc)
+               {
+                       if (!EmitAccurateDebugInfo)
+                               return;
+
+                       //
+                       // TODO: This should emit different kind of sequence point to make
+                       // step-over work for statement over multiple lines
+                       //
+                       // Debugging experience for Foo (A () + B ()) where A and B are
+                       // on separate lines is not great
+                       //
+                       Mark (loc);
+               }
+
                public void DefineLocalVariable (string name, LocalBuilder builder)
                {
                        if ((flags & Options.OmitDebugInfo) != 0)
@@ -258,6 +273,9 @@ namespace Mono.CSharp
 
                public void BeginCatchBlock (TypeSpec type)
                {
+                       if (IsAnonymousStoreyMutateRequired)
+                               type = CurrentAnonymousMethod.Storey.Mutator.Mutate (type);
+
                        ig.BeginCatchBlock (type.GetMetaInfo ());
                }
 
@@ -1011,11 +1029,7 @@ namespace Mono.CSharp
                                // Emit explicit sequence point for expressions like Foo.Bar () to help debugger to
                                // break at right place when LHS expression can be stepped-into
                                //
-                               // TODO: The list is probably not comprehensive, need to do more testing
-                               //
-                               if (InstanceExpression is PropertyExpr || InstanceExpression is Invocation || InstanceExpression is IndexerExpr ||
-                                       InstanceExpression is New || InstanceExpression is DelegateInvocation)
-                                       ec.Mark (loc.Value);
+                               ec.MarkCallEntry (loc.Value);
                        }
 
                        //
index a1bb8ec00f48c249eebd4ec1928ab0110c9dce1e..6eb42cddada0a51de2f96f54fe9c35b0b6cd294e 100644 (file)
@@ -109,28 +109,56 @@ namespace Mono.CSharp {
                        this.targs = targs;
                }
                
-               protected override Expression DoResolve (ResolveContext ec)
+               protected override Expression DoResolve (ResolveContext rc)
                {
-                       Expression expr_resolved = expr.Resolve (ec,
-                               ResolveFlags.VariableOrValue | ResolveFlags.Type);
+                       var sn = expr as SimpleName;
+                       const ResolveFlags flags = ResolveFlags.VariableOrValue | ResolveFlags.Type;
+
+                       //
+                       // Resolve the expression with flow analysis turned off, we'll do the definite
+                       // assignment checks later.  This is because we don't know yet what the expression
+                       // will resolve to - it may resolve to a FieldExpr and in this case we must do the
+                       // definite assignment check on the actual field and not on the whole struct.
+                       //
+                       using (rc.Set (ResolveContext.Options.OmitStructFlowAnalysis)) {
+                               if (sn != null) {
+                                       expr = sn.LookupNameExpression (rc, MemberLookupRestrictions.ReadAccess | MemberLookupRestrictions.ExactArity);
+
+                                       //
+                                       // Resolve expression which does have type set as we need expression type
+                                       // with disable flow analysis as we don't know whether left side expression
+                                       // is used as variable or type
+                                       //
+                                       if (expr is VariableReference || expr is ConstantExpr || expr is Linq.TransparentMemberAccess) {
+                                               using (rc.With (ResolveContext.Options.DoFlowAnalysis, false)) {
+                                                       expr = expr.Resolve (rc);
+                                               }
+                                       } else if (expr is TypeParameterExpr) {
+                                               expr.Error_UnexpectedKind (rc, flags, sn.Location);
+                                               expr = null;
+                                       }
+                               } else {
+                                       expr = expr.Resolve (rc, flags);
+                               }
+                       }
 
-                       if (expr_resolved == null)
+                       if (expr == null)
                                return null;
 
-                       TypeSpec expr_type = expr_resolved.Type;
+                       TypeSpec expr_type = expr.Type;
                        if (expr_type.IsPointer || expr_type.Kind == MemberKind.Void || expr_type == InternalType.NullLiteral || expr_type == InternalType.AnonymousMethod) {
-                               expr_resolved.Error_OperatorCannotBeApplied (ec, loc, ".", expr_type);
+                               expr.Error_OperatorCannotBeApplied (rc, loc, ".", expr_type);
                                return null;
                        }
 
                        if (targs != null) {
-                               if (!targs.Resolve (ec))
+                               if (!targs.Resolve (rc))
                                        return null;
                        }
 
                        var results = new List<string> ();
-                       if (expr_resolved is Namespace){
-                               Namespace nexpr = expr_resolved as Namespace;
+                       if (expr is Namespace) {
+                               Namespace nexpr = expr as Namespace;
                                string namespaced_partial;
 
                                if (partial_name == null)
@@ -138,11 +166,11 @@ namespace Mono.CSharp {
                                else
                                        namespaced_partial = nexpr.Name + "." + partial_name;
 
-                               ec.CurrentMemberDefinition.GetCompletionStartingWith (namespaced_partial, results);
+                               rc.CurrentMemberDefinition.GetCompletionStartingWith (namespaced_partial, results);
                                if (partial_name != null)
                                        results = results.Select (l => l.Substring (partial_name.Length)).ToList ();
                        } else {
-                               var r = MemberCache.GetCompletitionMembers (ec, expr_type, partial_name).Select (l => l.Name);
+                               var r = MemberCache.GetCompletitionMembers (rc, expr_type, partial_name).Select (l => l.Name);
                                AppendResults (results, partial_name, r);
                        }
 
index 7d149aae26ce24758c2c19e1f58d12f6e46468d8..eef90b34603c80175df19f75373cc6c0502e6b62 100644 (file)
@@ -100,12 +100,17 @@ namespace Mono.CSharp {
                {
                        if (t.IsGenericParameter) {
                                Report.Error (1959, loc,
-                                       "Type parameter `{0}' cannot be declared const", TypeManager.CSharpName (t));
+                                       "Type parameter `{0}' cannot be declared const", t.GetSignatureForError ());
                        } else {
                                Report.Error (283, loc,
-                                       "The type `{0}' cannot be declared const", TypeManager.CSharpName (t));
+                                       "The type `{0}' cannot be declared const", t.GetSignatureForError ());
                        }
                }
+
+               public override void Accept (StructuralVisitor visitor)
+               {
+                       visitor.Visit (this);
+               }
        }
 
        public class ConstSpec : FieldSpec
index acfb6a751f8e2937b7d6296c8e7cea30b848cd80..397d72c9a4ae7653be65733999a337aaf1567695 100644 (file)
@@ -3,11 +3,11 @@
 //
 // Author:
 //   Miguel de Icaza (miguel@ximian.com)
-//   Marek Safar (marek.safar@seznam.cz)
+//   Marek Safar (marek.safar@gmail.com)
 //
 // Copyright 2001-2003 Ximian, Inc.
 // Copyright 2003-2008 Novell, Inc.
-// Copyright 2011 Xamarin Inc
+// Copyright 2011-2013 Xamarin Inc
 //
 
 using System;
@@ -64,7 +64,7 @@ namespace Mono.CSharp {
                                BuiltinTypeSpec.IsPrimitiveTypeOrDecimal (target) &&
                                BuiltinTypeSpec.IsPrimitiveTypeOrDecimal (type)) {
                                ec.Report.Error (31, loc, "Constant value `{0}' cannot be converted to a `{1}'",
-                                       GetValueAsLiteral (), TypeManager.CSharpName (target));
+                                       GetValueAsLiteral (), target.GetSignatureForError ());
                        } else {
                                base.Error_ValueCannotBeConverted (ec, target, expl);
                        }
@@ -89,7 +89,7 @@ namespace Mono.CSharp {
                        if (this.type == type)
                                return this;
 
-                       if (Convert.ImplicitNumericConversion (this, type) == null
+                       if (!Convert.ImplicitNumericConversionExists (this.type, type)
                                return null;
 
                        bool fail;                      
@@ -100,7 +100,7 @@ namespace Mono.CSharp {
                                // reached, by calling Convert.ImplicitStandardConversionExists
                                //
                                throw new InternalErrorException ("Missing constant conversion between `{0}' and `{1}'",
-                                 TypeManager.CSharpName (Type), TypeManager.CSharpName (type));
+                                Type.GetSignatureForError (), type.GetSignatureForError ());
                        }
 
                        return CreateConstantFromValue (type, constant_value, loc);
@@ -396,7 +396,7 @@ namespace Mono.CSharp {
                        catch
                        {
                                ec.Report.Error (31, loc, "Constant value `{0}' cannot be converted to a `{1}'",
-                                       GetValue ().ToString (), TypeManager.CSharpName (target));
+                                       GetValue ().ToString (), target.GetSignatureForError ());
                        }
                }
 
index c06c1c478a8e849a4c59fb1bcc777f76c1ffa382..f636ffdb0a004740dad6eacb846f872068f3f54b 100644 (file)
@@ -782,7 +782,7 @@ namespace Mono.CSharp
 
                public LocationsBag LocationsBag { get; set; }
                public bool UseJayGlobalArrays { get; set; }
-               public Tokenizer.LocatedToken[] LocatedTokens { get; set; }
+               public LocatedToken[] LocatedTokens { get; set; }
 
                public MD5 GetChecksumAlgorithm ()
                {
index 3c5ebeae4b3cbeb7ec73acdd7fe7c1cd6a122f3e..bfbfe0374955c5e6fc33957e3ecd2527d8594a99 100644 (file)
@@ -479,7 +479,7 @@ namespace Mono.CSharp {
                        }
                        
                        if (expr_type != expr.Type)
-                               return new Nullable.Lifted (conv, unwrap, target_type).Resolve (ec);
+                               return new Nullable.LiftedConversion (conv, unwrap, target_type).Resolve (ec);
 
                        return Nullable.Wrap.Create (conv, target_type);
                }
@@ -1097,14 +1097,16 @@ namespace Mono.CSharp {
                        TypeSpec source_type = source.Type;
                        TypeSpec target_type = target;
                        Expression source_type_expr;
+                       bool nullable_source = false;
 
                        if (source_type.IsNullableType) {
                                // No unwrapping conversion S? -> T for non-reference types
                                if (implicitOnly && !TypeSpec.IsReferenceType (target_type) && !target_type.IsNullableType) {
                                        source_type_expr = source;
                                } else {
-                                       source_type_expr = Nullable.Unwrap.Create (source);
+                                       source_type_expr = Nullable.Unwrap.CreateUnwrapped (source);
                                        source_type = source_type_expr.Type;
+                                       nullable_source = true;
                                }
                        } else {
                                source_type_expr = source;
@@ -1231,26 +1233,48 @@ namespace Mono.CSharp {
                        //
                        if (t_x != target_type) {
                                //
-                               // User operator is of T?, no need to lift it
+                               // User operator is of T?
                                //
-                               if (t_x == target && t_x.IsNullableType)
-                                       return source;
+                               if (t_x.IsNullableType && target.IsNullableType) {
+                                       //
+                                       // User operator return type does not match target type we need
+                                       // yet another conversion. This should happen for promoted numeric
+                                       // types only
+                                       //
+                                       if (t_x != target) {
+                                               var unwrap = Nullable.Unwrap.CreateUnwrapped (source);
 
-                               source = implicitOnly ?
-                                       ImplicitConversionStandard (ec, source, target_type, loc) :
-                                       ExplicitConversionStandard (ec, source, target_type, loc);
+                                               source = implicitOnly ?
+                                                       ImplicitConversionStandard (ec, unwrap, target_type, loc) :
+                                                       ExplicitConversionStandard (ec, unwrap, target_type, loc);
 
-                               if (source == null)
-                                       return null;
+                                               if (source == null)
+                                                       return null;
+
+                                               source = new Nullable.LiftedConversion (source, unwrap, target).Resolve (ec);
+                                       }
+                               } else {
+                                       source = implicitOnly ?
+                                               ImplicitConversionStandard (ec, source, target_type, loc) :
+                                               ExplicitConversionStandard (ec, source, target_type, loc);
+
+                                       if (source == null)
+                                               return null;
+                               }
                        }
 
+
                        //
-                       // Source expression is of nullable type, lift the result in the case it's null and
-                       // not nullable/lifted user operator is used
+                       // Source expression is of nullable type and underlying conversion returns
+                       // only non-nullable type we need to lift it manually
                        //
-                       if (source_type_expr is Nullable.Unwrap && !s_x.IsNullableType && (TypeSpec.IsReferenceType (target) || target_type != target))
-                               source = new Nullable.Lifted (source, source_type_expr, target).Resolve (ec);
-                       else if (target_type != target)
+                       if (nullable_source && !s_x.IsNullableType)
+                               return new Nullable.LiftedConversion (source, source_type_expr, target).Resolve (ec);
+
+                       //
+                       // Target is of nullable type but source type is not, wrap the result expression
+                       //
+                       if (target.IsNullableType && !t_x.IsNullableType)
                                source = Nullable.Wrap.Create (source, target);
 
                        return source;
@@ -1414,6 +1438,9 @@ namespace Mono.CSharp {
                                Expression am = ame.Compatible (ec, target_type);
                                if (am != null)
                                        return am.Resolve (ec);
+
+                               // Avoid CS1503 after CS1661
+                               return ErrorExpression.Instance;
                        }
 
                        if (expr_type == InternalType.Arglist && target_type == ec.Module.PredefinedTypes.ArgIterator.TypeSpec)
@@ -2165,7 +2192,7 @@ namespace Mono.CSharp {
                                        if (e == null)
                                                return null;
 
-                                       return new Nullable.Lifted (e, unwrap, target_type).Resolve (ec);
+                                       return new Nullable.LiftedConversion (e, unwrap, target_type).Resolve (ec);
                                }
                                if (expr_type.BuiltinType == BuiltinTypeSpec.Type.Object) {
                                        return new UnboxCast (expr, target_type);
index 94af264c7166b639ed5a912126fb03c2fa0d78c2..e3220878a1c04851c3afb2184746dfc50217a245 100644 (file)
@@ -54,7 +54,7 @@ namespace Mono.CSharp
                /// </summary>
                Block      current_block;
                
-               BlockVariableDeclaration current_variable;
+               BlockVariable current_variable;
 
                Delegate   current_delegate;
                
@@ -116,6 +116,8 @@ namespace Mono.CSharp
                // Keeps track of global data changes to undo on parser error
                //
                public Undo undo;
+
+               bool? interactive_async;
                
                Stack<Linq.QueryBlock> linq_clause_blocks;
 
@@ -139,6 +141,7 @@ namespace Mono.CSharp
                //
                LocationsBag lbag;
                List<Tuple<Modifiers, Location>> mod_locations;
+               Stack<Location> location_stack;
 %}
 
 %token EOF
@@ -416,7 +419,7 @@ extern_alias_directives
 extern_alias_directive
        : EXTERN_ALIAS IDENTIFIER IDENTIFIER SEMICOLON
          {
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                string s = lt.Value;
                if (s != "alias") {
                        syntax_error (lt.Location, "`alias' expected");
@@ -424,7 +427,7 @@ extern_alias_directive
                        if (lang_version == LanguageVersion.ISO_1)
                                FeatureIsNotAvailable (lt.Location, "external alias");
 
-                       lt = (Tokenizer.LocatedToken) $3;
+                       lt = (LocatedToken) $3;
                        if (lt.Value == QualifiedAliasMember.GlobalAlias) {
                                RootNamespace.Error_GlobalNamespaceRedefined (report, lt.Location);
                        }
@@ -464,7 +467,7 @@ using_namespace
          }
        | USING IDENTIFIER ASSIGN namespace_or_type_expr SEMICOLON
          {
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                if (lang_version != LanguageVersion.ISO_1 && lt.Value == "global") {
                        report.Warning (440, 2, lt.Location,
                         "An alias named `global' will not be used when resolving `global::'. The global namespace will be used instead");
@@ -554,12 +557,12 @@ opt_semicolon_error
 namespace_name
        : IDENTIFIER
          {
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                $$ = new MemberName (lt.Value, lt.Location);
          }
        | namespace_name DOT IDENTIFIER
          {
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                $$ = new MemberName ((MemberName) $1, lt.Value, lt.Location);           
          }
        | error
@@ -666,7 +669,7 @@ attribute_sections
                var sect = (List<Attribute>) $2;
                if (attrs == null)
                        attrs = new Attributes (sect);
-               else
+               else if (sect != null)
                        attrs.AddAttributes (sect);
                $$ = attrs;
          }
@@ -675,6 +678,7 @@ attribute_sections
 attribute_section
        : OPEN_BRACKET
          {
+               PushLocation (GetLocation ($1));
                lexer.parsing_attribute_section = true;
          }
          attribute_section_cont
@@ -699,34 +703,54 @@ attribute_section_cont
                        $$ = new List<Attribute> (0);
                else
                        $$ = $4;
-         
+
+               lbag.InsertLocation ($$, 0, PopLocation ());
+               if ($5 != null) {
+                       lbag.AddLocation ($$, GetLocation ($2), GetLocation ($5), GetLocation ($6));
+               } else {
+                       lbag.AddLocation ($$, GetLocation ($2), GetLocation ($6));
+               }
+
                current_attr_target = null;
                lexer.parsing_attribute_section = false;
          }
        | attribute_list opt_comma CLOSE_BRACKET
          {
                $$ = $1;
+
+               lbag.InsertLocation ($$, 0, PopLocation ());
+               if ($2 != null) {
+                       lbag.AddLocation ($$, GetLocation($2), GetLocation ($3));
+               } else {
+                       lbag.AddLocation ($$, GetLocation($3));
+               }
+         }
+       | IDENTIFIER error
+         {
+               Error_SyntaxError (yyToken);
+
+               var lt = (LocatedToken) $1;
+               var tne = new SimpleName (lt.Value, null, lt.Location);
+
+               $$ = new List<Attribute> () {
+                       new Attribute (null, tne, null, GetLocation ($1), false)
+               };
+         }
+       | error
+         {
+               CheckAttributeTarget (GetTokenName (yyToken), GetLocation ($1)); 
+               $$ = null;
          }
        ;       
 
 attribute_target
        : IDENTIFIER
          {
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                $$ = CheckAttributeTarget (lt.Value, lt.Location);
          }
        | EVENT  { $$ = "event"; }
        | RETURN { $$ = "return"; }
-       | error
-         {
-               if (yyToken == Token.IDENTIFIER) {
-                       Error_SyntaxError (yyToken);
-                       $$ = null;
-               } else {
-                       string name = GetTokenName (yyToken);
-                       $$ = CheckAttributeTarget (name, GetLocation ($1));
-               }
-         }
        ;
 
 attribute_list
@@ -737,7 +761,10 @@ attribute_list
        | attribute_list COMMA attribute
          {
                var attrs = (List<Attribute>) $1;
-               attrs.Add ((Attribute) $3);
+               if (attrs != null) {
+                       attrs.Add ((Attribute) $3);
+                       lbag.AppendTo (attrs, GetLocation ($2));
+               }
 
                $$ = attrs;
          }
@@ -819,6 +846,11 @@ positional_or_named_argument
                $$ = new Argument ((Expression) $1);
          }
        | named_argument
+       | error
+         {
+               Error_SyntaxError (yyToken);
+               $$ = null;
+         }
        ;
 
 named_attribute_argument
@@ -829,14 +861,14 @@ named_attribute_argument
          expression
          {
                --lexer.parsing_block;
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                $$ = new NamedArgument (lt.Value, lt.Location, (Expression) $4);          
                lbag.AddLocation ($$, GetLocation($2));
          }
        ;
        
 named_argument
-       : identifier_inside_body COLON opt_named_modifier expression
+       : identifier_inside_body COLON opt_named_modifier expression_or_error
          {
                if (lang_version <= LanguageVersion.V_3)
                        FeatureIsNotAvailable (GetLocation ($1), "named argument");
@@ -844,7 +876,7 @@ named_argument
                // Avoid boxing in common case (no modifier)
                var arg_mod = $3 == null ? Argument.AType.None : (Argument.AType) $3;
                        
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                $$ = new NamedArgument (lt.Value, lt.Location, (Expression) $4, arg_mod);
                lbag.AddLocation ($$, GetLocation($2));
          }
@@ -890,13 +922,14 @@ class_member_declaration
        | destructor_declaration
        | type_declaration
        | attributes_without_members
+       | incomplete_member
        | error
          {
                report.Error (1519, lexer.Location, "Unexpected symbol `{0}' in class, struct, or interface member declaration",
                        GetSymbolName (yyToken));
                $$ = null;
                lexer.parsing_generic_declaration = false;
-         }
+         }     
        ;
 
 struct_declaration
@@ -953,7 +986,7 @@ constant_declaration
          opt_modifiers
          CONST type IDENTIFIER
          {
-               var lt = (Tokenizer.LocatedToken) $5;
+               var lt = (LocatedToken) $5;
                var mod = (Modifiers) $2;
                current_field = new Const (current_type, (FullNamedExpression) $4, mod, new MemberName (lt.Value, lt.Location), (Attributes) $1);
                current_type.AddMember (current_field);
@@ -1004,7 +1037,7 @@ constant_declarators
 constant_declarator
        : COMMA IDENTIFIER constant_initializer
          {
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                $$ = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) $3);
                lbag.AddLocation ($$, GetLocation ($1));
          }
@@ -1043,7 +1076,7 @@ field_declaration
                if (type.Type != null && type.Type.Kind == MemberKind.Void)
                        report.Error (670, GetLocation ($3), "Fields cannot have void type");
                        
-               var lt = (Tokenizer.LocatedToken) $4;
+               var lt = (LocatedToken) $4;
                current_field = new Field (current_type, type, (Modifiers) $2, new MemberName (lt.Value, lt.Location), (Attributes) $1);
                current_type.AddField (current_field);
                $$ = current_field;
@@ -1068,7 +1101,7 @@ field_declaration
                if (lang_version < LanguageVersion.ISO_2)
                        FeatureIsNotAvailable (GetLocation ($3), "fixed size buffers");
 
-               var lt = (Tokenizer.LocatedToken) $5;
+               var lt = (LocatedToken) $5;
                current_field = new FixedField (current_type, (FullNamedExpression) $4, (Modifiers) $2,
                        new MemberName (lt.Value, lt.Location), (Attributes) $1);
                        
@@ -1131,7 +1164,7 @@ field_declarators
 field_declarator
        : COMMA IDENTIFIER
          {
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                $$ = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null);
                lbag.AddLocation ($$, GetLocation ($1));
          }
@@ -1142,7 +1175,7 @@ field_declarator
          variable_initializer
          {
                --lexer.parsing_block;
-               var lt = (Tokenizer.LocatedToken) $2;     
+               var lt = (LocatedToken) $2;       
                $$ = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (Expression) $5);
                lbag.AddLocation ($$, GetLocation ($1), GetLocation ($3));
          }
@@ -1167,7 +1200,7 @@ fixed_field_declarators
 fixed_field_declarator
        : COMMA IDENTIFIER fixed_field_size
          {
-               var lt = (Tokenizer.LocatedToken) $2;     
+               var lt = (LocatedToken) $2;       
                $$ = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) $3);
                lbag.AddLocation ($$, GetLocation ($1));
          }
@@ -1311,8 +1344,10 @@ method_header
 
                current_type.AddMember (method);
 
-               if ($11 != null)
-                       method.SetConstraints ((List<Constraints>) $11);
+               async_block = (method.ModFlags & Modifiers.ASYNC) != 0;
+
+               if ($12 != null)
+                       method.SetConstraints ((List<Constraints>) $12);
 
                if (doc_support)
                        method.DocComment = Lexer.consume_doc_comment ();
@@ -1475,7 +1510,7 @@ fixed_parameter
          parameter_type
          identifier_inside_body
          {
-               var lt = (Tokenizer.LocatedToken) $4;
+               var lt = (LocatedToken) $4;
                $$ = new Parameter ((FullNamedExpression) $3, lt.Value, (Parameter.Modifier) $2, (Attributes) $1, lt.Location);
          }
        | opt_attributes
@@ -1483,7 +1518,7 @@ fixed_parameter
          parameter_type
          identifier_inside_body OPEN_BRACKET CLOSE_BRACKET
          {
-               var lt = (Tokenizer.LocatedToken) $4;
+               var lt = (LocatedToken) $4;
                report.Error (1552, lt.Location, "Array type specifier, [], must appear before parameter name");
                $$ = new Parameter ((FullNamedExpression) $3, lt.Value, (Parameter.Modifier) $2, (Attributes) $1, lt.Location);
          }
@@ -1540,7 +1575,7 @@ fixed_parameter
                if ((valid_param_mod & ParameterModifierType.DefaultValue) == 0)
                        report.Error (1065, GetLocation ($5), "Optional parameter is not valid in this context");
                
-               var lt = (Tokenizer.LocatedToken) $4;
+               var lt = (LocatedToken) $4;
                $$ = new Parameter ((FullNamedExpression) $3, lt.Value, mod, (Attributes) $1, lt.Location);
                lbag.AddLocation ($$, GetLocation ($5));
                
@@ -1612,14 +1647,14 @@ parameter_modifier
 parameter_array
        : opt_attributes params_modifier type IDENTIFIER
          {
-               var lt = (Tokenizer.LocatedToken) $4;
+               var lt = (LocatedToken) $4;
                $$ = new ParamsParameter ((FullNamedExpression) $3, lt.Value, (Attributes) $1, lt.Location);
          }
        | opt_attributes params_modifier type IDENTIFIER ASSIGN constant_expression
          {
                report.Error (1751, GetLocation ($2), "Cannot specify a default value for a parameter array");
                
-               var lt = (Tokenizer.LocatedToken) $4;
+               var lt = (LocatedToken) $4;
                $$ = new ParamsParameter ((FullNamedExpression) $3, lt.Value, (Attributes) $1, lt.Location);            
          }
        | opt_attributes params_modifier type error
@@ -2031,11 +2066,11 @@ operator_declarator
                                        Operator.GetName (op));
                        }
                } else {
-                       if (p_count > 2) {
+                       if (p_count == 1) {
+                               report.Error (1019, loc, "Overloadable unary operator expected");
+                       } else if (p_count != 2) {
                                report.Error (1534, loc, "Overloaded binary operator `{0}' takes two parameters",
                                        Operator.GetName (op));
-                       } else if (p_count != 2) {
-                               report.Error (1019, loc, "Overloadable unary operator expected");
                        }
                }
                
@@ -2172,7 +2207,7 @@ constructor_declarator
                valid_param_mod = 0;
                current_local_parameters = (ParametersCompiled) $6;
                
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                var mods = (Modifiers) $2;
                var c = new Constructor (current_type, lt.Value, mods, (Attributes) $1, current_local_parameters, lt.Location);
 
@@ -2269,7 +2304,7 @@ destructor_declaration
          }
          IDENTIFIER OPEN_PARENS CLOSE_PARENS method_body
          {
-               var lt = (Tokenizer.LocatedToken) $5;
+               var lt = (LocatedToken) $5;
                if (lt.Value != current_container.MemberName.Name){
                        report.Error (574, lt.Location, "Name of destructor must match name of class");
                } else if (current_container.Kind != MemberKind.Class){
@@ -2387,7 +2422,7 @@ event_declarators
 event_declarator
        : COMMA IDENTIFIER
          {
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                $$ = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null);
                lbag.AddLocation ($$, GetLocation ($1));
          }
@@ -2398,7 +2433,7 @@ event_declarator
          event_variable_initializer
          {
                --lexer.parsing_block;
-               var lt = (Tokenizer.LocatedToken) $2;     
+               var lt = (LocatedToken) $2;       
                $$ = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (Expression) $5);
                lbag.AddLocation ($$, GetLocation ($1), GetLocation ($3));
          }
@@ -2515,6 +2550,23 @@ attributes_without_members
                lexer.putback ('}');
          }
        ;
+
+// For full ast try to recover incomplete ambiguous member
+// declaration in form on class X { public int }
+incomplete_member
+       : opt_attributes opt_modifiers member_type CLOSE_BRACE
+         {
+               report.Error (1519, lexer.Location, "Unexpected symbol `}' in class, struct, or interface member declaration");
+               lexer.putback ('}');
+
+               lexer.parsing_generic_declaration = false;
+               FullNamedExpression type = (FullNamedExpression) $3;
+               current_field = new Field (current_type, type, (Modifiers) $2, MemberName.Null, (Attributes) $1);
+               current_type.AddField (current_field);
+               $$ = current_field;
+         }
+       ;
          
 enum_declaration
        : opt_attributes
@@ -2596,7 +2648,7 @@ enum_member_declarations
 enum_member_declaration
        : opt_attributes IDENTIFIER
          {
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                var em = new EnumMember ((Enum) current_type, new MemberName (lt.Value, lt.Location), (Attributes) $1);
                ((Enum) current_type).AddEnumMember (em);
 
@@ -2619,7 +2671,7 @@ enum_member_declaration
          { 
                --lexer.parsing_block;
                
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                var em = new EnumMember ((Enum) current_type, new MemberName (lt.Value, lt.Location), (Attributes) $1);
                em.Initializer = new ConstInitializer (em, (Expression) $5, GetLocation ($4));
                ((Enum) current_type).AddEnumMember (em);
@@ -2633,7 +2685,7 @@ enum_member_declaration
          {
                Error_SyntaxError (yyToken);
          
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                var em = new EnumMember ((Enum) current_type, new MemberName (lt.Value, lt.Location), (Attributes) $1);
                ((Enum) current_type).AddEnumMember (em);
 
@@ -2707,8 +2759,8 @@ namespace_or_type_expr
        : member_name
        | qualified_alias_member IDENTIFIER opt_type_argument_list
          {
-               var lt1 = (Tokenizer.LocatedToken) $1;
-               var lt2 = (Tokenizer.LocatedToken) $2;
+               var lt1 = (LocatedToken) $1;
+               var lt2 = (LocatedToken) $2;
                
                $$ = new QualifiedAliasMember (lt1.Value, lt2.Value, (TypeArguments) $3, lt1.Location);
                lbag.AddLocation ($$, GetLocation ($2));
@@ -2719,7 +2771,7 @@ member_name
        : simple_name_expr
        | namespace_or_type_expr DOT IDENTIFIER opt_type_argument_list
          {
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                $$ = new MemberAccess ((Expression) $1, lt.Value, (TypeArguments) $4, lt.Location);
                lbag.AddLocation ($$, GetLocation ($2));
          }
@@ -2728,7 +2780,7 @@ member_name
 simple_name_expr
        : IDENTIFIER opt_type_argument_list
          {
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                $$ = new SimpleName (lt.Value, (TypeArguments)$2, lt.Location);
          }
        ;
@@ -2778,7 +2830,7 @@ type_declaration_name
          opt_type_parameter_list
          {
                lexer.parsing_generic_declaration = false;
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                $$ = new MemberName (lt.Value, (TypeParameters)$3, lt.Location);
          }
        ;
@@ -2798,7 +2850,7 @@ method_declaration_name
        | explicit_interface IDENTIFIER opt_type_parameter_list
          {
                lexer.parsing_generic_declaration = false;        
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                $$ = new MemberName (lt.Value, (TypeParameters) $3, (ATypeNameExpression) $1, lt.Location);
          }
        ;
@@ -2819,21 +2871,21 @@ indexer_declaration_name
 explicit_interface
        : IDENTIFIER opt_type_argument_list DOT
          {
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                $$ = new SimpleName (lt.Value, (TypeArguments) $2, lt.Location);
                lbag.AddLocation ($$, GetLocation ($3));
          }
        | qualified_alias_member IDENTIFIER opt_type_argument_list DOT
          {
-               var lt1 = (Tokenizer.LocatedToken) $1;
-               var lt2 = (Tokenizer.LocatedToken) $2;
+               var lt1 = (LocatedToken) $1;
+               var lt2 = (LocatedToken) $2;
 
                $$ = new QualifiedAliasMember (lt1.Value, lt2.Value, (TypeArguments) $3, lt1.Location);
                lbag.AddLocation ($$, GetLocation ($4));
          }
        | explicit_interface IDENTIFIER opt_type_argument_list DOT
          {
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                $$ = new MemberAccess ((ATypeNameExpression) $1, lt.Value, (TypeArguments) $3, lt.Location);
                lbag.AddLocation ($$, GetLocation ($4));
          }
@@ -2870,7 +2922,7 @@ type_parameters
 type_parameter
        : opt_attributes opt_type_parameter_variance IDENTIFIER
          {
-               var lt = (Tokenizer.LocatedToken)$3;
+               var lt = (LocatedToken)$3;
                $$ = new TypeParameter (new MemberName (lt.Value, lt.Location), (Attributes)$1, (Variance) $2);
          }
        | error
@@ -3054,11 +3106,11 @@ primary_expression
 primary_expression_or_type
        : IDENTIFIER opt_type_argument_list
          {
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                $$ = new SimpleName (lt.Value, (TypeArguments)$2, lt.Location);   
          }
        | IDENTIFIER GENERATE_COMPLETION {
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
               $$ = new CompletionSimpleName (MemberName.MakeName (lt.Value, null), lt.Location);
          }
        | member_access
@@ -3111,26 +3163,26 @@ parenthesized_expression
 member_access
        : primary_expression DOT identifier_inside_body opt_type_argument_list
          {
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                $$ = new MemberAccess ((Expression) $1, lt.Value, (TypeArguments) $4, lt.Location);
                lbag.AddLocation ($$, GetLocation ($2));
          }
        | builtin_types DOT identifier_inside_body opt_type_argument_list
          {
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                $$ = new MemberAccess ((Expression) $1, lt.Value, (TypeArguments) $4, lt.Location);
                lbag.AddLocation ($$, GetLocation ($2));
          }
        | BASE DOT identifier_inside_body opt_type_argument_list
          {
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                $$ = new MemberAccess (new BaseThis (GetLocation ($1)), lt.Value, (TypeArguments) $4, lt.Location);
                lbag.AddLocation ($$, GetLocation ($2));
          }
        | qualified_alias_member identifier_inside_body opt_type_argument_list
          {
-               var lt1 = (Tokenizer.LocatedToken) $1;
-               var lt2 = (Tokenizer.LocatedToken) $2;
+               var lt1 = (LocatedToken) $1;
+               var lt2 = (LocatedToken) $2;
 
                $$ = new QualifiedAliasMember (lt1.Value, lt2.Value, (TypeArguments) $3, lt1.Location);
                lbag.AddLocation ($$, GetLocation ($2));
@@ -3139,7 +3191,7 @@ member_access
                $$ = new CompletionMemberAccess ((Expression) $1, null,GetLocation ($3));
          }
        | primary_expression DOT IDENTIFIER GENERATE_COMPLETION {
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                $$ = new CompletionMemberAccess ((Expression) $1, lt.Value, lt.Location);
          }
        | builtin_types DOT GENERATE_COMPLETION
@@ -3147,7 +3199,7 @@ member_access
                $$ = new CompletionMemberAccess ((Expression) $1, null, lexer.Location);
          }
        | builtin_types DOT IDENTIFIER GENERATE_COMPLETION {
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                $$ = new CompletionMemberAccess ((Expression) $1, lt.Value, lt.Location);
          }
        ;
@@ -3226,13 +3278,13 @@ member_initializer_list
 member_initializer
        : IDENTIFIER ASSIGN initializer_value
          {
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                $$ = new ElementInitializer (lt.Value, (Expression)$3, lt.Location);
                lbag.AddLocation ($$, GetLocation ($2));
          }
        | AWAIT ASSIGN initializer_value
          {
-               var lt = (Tokenizer.LocatedToken) Error_AwaitAsIdentifier ($1);
+               var lt = (LocatedToken) Error_AwaitAsIdentifier ($1);
                $$ = new ElementInitializer (lt.Value, (Expression)$3, lt.Location);
                lbag.AddLocation ($$, GetLocation ($2));
          }
@@ -3258,7 +3310,7 @@ member_initializer
          {
                report.Error (1920, GetLocation ($1), "An element initializer cannot be empty");
                $$ = null;
-         }       
+         }
        ;
 
 initializer_value
@@ -3374,22 +3426,18 @@ element_access
        ;
 
 expression_list
-       : expression
+       : expression_or_error
          {
                var list = new List<Expression> (4);
                list.Add ((Expression) $1);
                $$ = list;
          }
-       | expression_list COMMA expression
+       | expression_list COMMA expression_or_error
          {
                var list = (List<Expression>) $1;
                list.Add ((Expression) $3);
                $$ = list;
          }
-       | expression_list error {
-               Error_SyntaxError (yyToken);
-               $$ = $1;
-         }
        ;
        
 expression_list_arguments
@@ -3565,13 +3613,13 @@ anonymous_type_parameters
 anonymous_type_parameter
        : identifier_inside_body ASSIGN variable_initializer
          {
-               var lt = (Tokenizer.LocatedToken)$1;
+               var lt = (LocatedToken)$1;
                $$ = new AnonymousTypeParameter ((Expression)$3, lt.Value, lt.Location);
                lbag.AddLocation ($$, GetLocation ($2));
          }
        | identifier_inside_body
          {
-               var lt = (Tokenizer.LocatedToken)$1;
+               var lt = (LocatedToken)$1;
                $$ = new AnonymousTypeParameter (new SimpleName (lt.Value, lt.Location),
                        lt.Value, lt.Location);
          }
@@ -3699,27 +3747,27 @@ typeof_type_expression
 unbound_type_name
        : identifier_inside_body generic_dimension
          {  
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
 
                $$ = new SimpleName (lt.Value, (int) $2, lt.Location);
          }
        | qualified_alias_member identifier_inside_body generic_dimension
          {
-               var lt1 = (Tokenizer.LocatedToken) $1;
-               var lt2 = (Tokenizer.LocatedToken) $2;
+               var lt1 = (LocatedToken) $1;
+               var lt2 = (LocatedToken) $2;
 
                $$ = new QualifiedAliasMember (lt1.Value, lt2.Value, (int) $3, lt1.Location);
                lbag.AddLocation ($$, GetLocation ($2));
          }
        | unbound_type_name DOT identifier_inside_body
          {
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                
                $$ = new MemberAccess ((Expression) $1, lt.Value, lt.Location);         
          }
        | unbound_type_name DOT identifier_inside_body generic_dimension
          {
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                
                $$ = new MemberAccess ((Expression) $1, lt.Value, (int) $4, lt.Location);               
          }
@@ -3729,7 +3777,7 @@ unbound_type_name
                if (tne.HasTypeArguments)
                        Error_TypeExpected (GetLocation ($4));
 
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                $$ = new MemberAccess (tne, lt.Value, (int) $4, lt.Location);           
          }
        ;
@@ -3747,7 +3795,7 @@ generic_dimension
 qualified_alias_member
        : IDENTIFIER DOUBLE_COLON
          {
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                if (lang_version == LanguageVersion.ISO_1)
                        FeatureIsNotAvailable (lt.Location, "namespace alias qualifier");
 
@@ -3801,7 +3849,7 @@ unchecked_expression
 pointer_member_access
        : primary_expression OP_PTR IDENTIFIER opt_type_argument_list
          {
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                $$ = new MemberAccess (new Indirection ((Expression) $1, GetLocation ($2)), lt.Value, (TypeArguments) $4, lt.Location);
          }
        ;
@@ -3880,6 +3928,9 @@ unary_expression
                        } else if (current_anonymous_method is AnonymousMethodExpression) {
                                report.Error (4035, GetLocation ($1),
                                        "The `await' operator can only be used when its containing anonymous method is marked with the `async' modifier");
+                       } else if (interactive_async != null) {
+                               current_block.Explicit.RegisterAsyncAwait ();
+                               interactive_async = true;
                        } else {
                                report.Error (4033, GetLocation ($1),
                                        "The `await' operator can only be used when its containing method is marked with the `async' modifier");
@@ -4293,6 +4344,14 @@ conditional_expression
                $$ = new Conditional (new BooleanExpression ((Expression) $1), (Expression) $3, null, GetLocation ($2));
                lbag.AddLocation ($$, GetLocation ($4));
          }
+       | null_coalescing_expression INTERR expression COLON CLOSE_BRACE
+         {
+               Error_SyntaxError (Token.CLOSE_BRACE);
+
+               $$ = new Conditional (new BooleanExpression ((Expression) $1), (Expression) $3, null, GetLocation ($2));
+               lbag.AddLocation ($$, GetLocation ($4));
+               lexer.putback ('}');
+         }
        ;
 
 assignment_expression
@@ -4377,24 +4436,24 @@ lambda_parameter_list
 lambda_parameter
        : parameter_modifier parameter_type identifier_inside_body
          {
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
 
                $$ = new Parameter ((FullNamedExpression) $2, lt.Value, (Parameter.Modifier) $1, null, lt.Location);
          }
        | parameter_type identifier_inside_body
          {
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
 
                $$ = new Parameter ((FullNamedExpression) $1, lt.Value, Parameter.Modifier.NONE, null, lt.Location);
          }
        | IDENTIFIER
          {
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                $$ = new ImplicitLambdaParameter (lt.Value, lt.Location);
          }
        | AWAIT
          {
-               var lt = (Tokenizer.LocatedToken) Error_AwaitAsIdentifier ($1);
+               var lt = (LocatedToken) Error_AwaitAsIdentifier ($1);
                $$ = new ImplicitLambdaParameter (lt.Value, lt.Location);
          }
        ;
@@ -4443,7 +4502,7 @@ expression_or_error
 lambda_expression
        : IDENTIFIER ARROW 
          {
-               var lt = (Tokenizer.LocatedToken) $1;   
+               var lt = (LocatedToken) $1;     
                Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location);
                start_anonymous (true, new ParametersCompiled (p), false, lt.Location);
          }
@@ -4454,7 +4513,7 @@ lambda_expression
          }
        | AWAIT ARROW
          {
-               var lt = (Tokenizer.LocatedToken) Error_AwaitAsIdentifier ($1);
+               var lt = (LocatedToken) Error_AwaitAsIdentifier ($1);
                Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location);
                start_anonymous (true, new ParametersCompiled (p), false, lt.Location);
          }
@@ -4465,7 +4524,7 @@ lambda_expression
          }
        | ASYNC identifier_inside_body ARROW
          {
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location);
                start_anonymous (true, new ParametersCompiled (p), true, lt.Location);
          }
@@ -4725,13 +4784,13 @@ opt_class_base
        : /* empty */
        | COLON type_list
         {
-               current_type.AddBasesForPart ((List<FullNamedExpression>) $2);
+               current_type.SetBaseTypes ((List<FullNamedExpression>) $2);
         }
        | COLON type_list error
          {
                Error_SyntaxError (yyToken);
 
-               current_type.AddBasesForPart ((List<FullNamedExpression>) $2);
+               current_type.SetBaseTypes ((List<FullNamedExpression>) $2);
          }
        ;
 
@@ -4771,7 +4830,7 @@ type_parameter_constraints_clauses
 type_parameter_constraints_clause
        : WHERE IDENTIFIER COLON type_parameter_constraints
          {
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                $$ = new Constraints (new SimpleMemberName (lt.Value, lt.Location), (List<FullNamedExpression>) $4, GetLocation ($1));
                lbag.AddLocation ($$, GetLocation ($3));
          }
@@ -4779,7 +4838,7 @@ type_parameter_constraints_clause
          {
                Error_SyntaxError (yyToken);
          
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                $$ = new Constraints (new SimpleMemberName (lt.Value, lt.Location), null, GetLocation ($1));
          }
        ; 
@@ -5028,7 +5087,7 @@ empty_statement
 labeled_statement
        : identifier_inside_body COLON 
          {
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                LabeledStatement labeled = new LabeledStatement (lt.Value, current_block, lt.Location);
                lbag.AddLocation (labeled, GetLocation ($2));
                current_block.AddLabel (labeled);
@@ -5145,23 +5204,26 @@ identifier_inside_body
 block_variable_declaration
        : variable_type identifier_inside_body
          {
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                var li = new LocalVariable (current_block, lt.Value, lt.Location);
                current_block.AddLocalName (li);
-               current_variable = new BlockVariableDeclaration ((FullNamedExpression) $1, li);
+               current_variable = new BlockVariable ((FullNamedExpression) $1, li);
          }
          opt_local_variable_initializer opt_variable_declarators SEMICOLON
          {
                $$ = current_variable;
                current_variable = null;
-               lbag.AddLocation ($$, GetLocation ($6));
+               if ($4 != null)
+                       lbag.AddLocation ($$, PopLocation (), GetLocation ($6));
+               else
+                       lbag.AddLocation ($$, GetLocation ($6));
          }
        | CONST variable_type identifier_inside_body
          {
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location);
                current_block.AddLocalName (li);
-               current_variable = new BlockConstantDeclaration ((FullNamedExpression) $2, li);
+               current_variable = new BlockConstant ((FullNamedExpression) $2, li);
          }
          const_variable_initializer opt_const_declarators SEMICOLON
          {
@@ -5176,7 +5238,8 @@ opt_local_variable_initializer
        | ASSIGN block_variable_initializer
          {
                current_variable.Initializer = (Expression) $2;
-               // TODO: lbag
+               PushLocation (GetLocation ($1));
+               $$ = current_variable;
          }
        | error
          {
@@ -5213,18 +5276,18 @@ variable_declarators
 variable_declarator
        : COMMA identifier_inside_body
          {
-               var lt = (Tokenizer.LocatedToken) $2;     
+               var lt = (LocatedToken) $2;       
                var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location);
-               var d = new BlockVariableDeclaration.Declarator (li, null);
+               var d = new BlockVariableDeclarator (li, null);
                current_variable.AddDeclarator (d);
                current_block.AddLocalName (li);
                lbag.AddLocation (d, GetLocation ($1));
          }
        | COMMA identifier_inside_body ASSIGN block_variable_initializer
          {
-               var lt = (Tokenizer.LocatedToken) $2;     
+               var lt = (LocatedToken) $2;       
                var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location);
-               var d = new BlockVariableDeclaration.Declarator (li, (Expression) $4);
+               var d = new BlockVariableDeclarator (li, (Expression) $4);
                current_variable.AddDeclarator (d);
                current_block.AddLocalName (li);
                lbag.AddLocation (d, GetLocation ($1), GetLocation ($3));
@@ -5255,9 +5318,9 @@ const_declarators
 const_declarator
        : COMMA identifier_inside_body ASSIGN constant_initializer_expr
          {
-               var lt = (Tokenizer.LocatedToken) $2;     
+               var lt = (LocatedToken) $2;       
                var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location);
-               var d = new BlockVariableDeclaration.Declarator (li, (Expression) $4);
+               var d = new BlockVariableDeclarator (li, (Expression) $4);
                current_variable.AddDeclarator (d);
                current_block.AddLocalName (li);
                lbag.AddLocation (d, GetLocation ($1), GetLocation ($3));
@@ -5308,7 +5371,6 @@ statement_expression
                ExpressionStatement s = $1 as ExpressionStatement;
                if (s == null) {
                        var expr = $1 as Expression;
-                       expr.Error_InvalidExpressionStatement (report);
                        $$ = new StatementErrorExpression (expr);
                } else {
                        $$ = new StatementExpression (s);
@@ -5320,10 +5382,7 @@ interactive_statement_expression
        : expression
          {
                Expression expr = (Expression) $1;
-               ExpressionStatement s;
-
-               s = new OptionalAssign (new SimpleName ("$retval", lexer.Location), expr, lexer.Location);
-               $$ = new StatementExpression (s);
+               $$ = new StatementExpression (new OptionalAssign (expr, lexer.Location));
          }
        | error
          {
@@ -5575,14 +5634,17 @@ opt_for_initializer
 for_initializer
        : variable_type identifier_inside_body
          {
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                var li = new LocalVariable (current_block, lt.Value, lt.Location);
                current_block.AddLocalName (li);
-               current_variable = new BlockVariableDeclaration ((FullNamedExpression) $1, li);
+               current_variable = new BlockVariable ((FullNamedExpression) $1, li);
          }
          opt_local_variable_initializer opt_variable_declarators
          {
                $$ = current_variable;
+               if ($4 != null)
+                       lbag.AddLocation (current_variable, PopLocation ());
+
                current_variable = null;
          }
        | statement_expression_list
@@ -5640,7 +5702,7 @@ foreach_statement
                start_block (GetLocation ($2));
                current_block.IsCompilerGenerated = true;
                
-               var lt = (Tokenizer.LocatedToken) $4;
+               var lt = (LocatedToken) $4;
                var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.ForeachVariable | LocalVariable.Flags.Used, lt.Location);
                current_block.AddLocalName (li);
                
@@ -5655,7 +5717,7 @@ foreach_statement
                start_block (GetLocation ($2));
                current_block.IsCompilerGenerated = true;
                
-               var lt = (Tokenizer.LocatedToken) $4;
+               var lt = (LocatedToken) $4;
                var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.ForeachVariable | LocalVariable.Flags.Used, lt.Location);
                current_block.AddLocalName (li);
                $$ = li;
@@ -5706,7 +5768,7 @@ continue_statement
 goto_statement
        : GOTO identifier_inside_body SEMICOLON 
          {
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                $$ = new Goto (lt.Value, GetLocation ($1));
                lbag.AddStatement ($$, GetLocation ($2), GetLocation ($3));
          }
@@ -5746,6 +5808,11 @@ throw_statement
                $$ = new Throw ((Expression) $2, GetLocation ($1));
                lbag.AddStatement ($$, GetLocation ($3));
          }
+       | THROW expression error
+         {
+               Error_SyntaxError (yyToken);
+               $$ = new Throw ((Expression) $2, GetLocation ($1));
+         }
        | THROW error
          {
                Error_SyntaxError (yyToken);
@@ -5756,7 +5823,7 @@ throw_statement
 yield_statement 
        : identifier_inside_body RETURN opt_expression SEMICOLON
          {
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                string s = lt.Value;
                if (s != "yield"){
                        report.Error (1003, lt.Location, "; expected");
@@ -5774,7 +5841,7 @@ yield_statement
          {
                Error_SyntaxError (yyToken);
 
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                string s = lt.Value;
                if (s != "yield"){
                        report.Error (1003, lt.Location, "; expected");
@@ -5790,7 +5857,7 @@ yield_statement
          }
        | identifier_inside_body BREAK SEMICOLON
          {
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                string s = lt.Value;
                if (s != "yield"){
                        report.Error (1003, lt.Location, "; expected");
@@ -5798,7 +5865,7 @@ yield_statement
                        FeatureIsNotAvailable (lt.Location, "iterators");
                }
                
-               current_block.Explicit.RegisterIteratorYield ();
+               current_block.ParametersBlock.TopBlock.IsIterator = true;
                $$ = new YieldBreak (lt.Location);
                lbag.AddStatement ($$, GetLocation ($2), GetLocation ($3));
          }
@@ -5870,7 +5937,7 @@ catch_clause
                c.TypeExpression = (FullNamedExpression) $3;
 
                if ($4 != null) {
-                       var lt = (Tokenizer.LocatedToken) $4;
+                       var lt = (LocatedToken) $4;
                        c.Variable = new LocalVariable (current_block, lt.Value, lt.Location);
                        current_block.AddLocalName (c.Variable);
                }
@@ -5903,7 +5970,7 @@ catch_clause
                c.TypeExpression = (FullNamedExpression) $3;
 
                if ($4 != null) {
-                       var lt = (Tokenizer.LocatedToken) $4;
+                       var lt = (LocatedToken) $4;
                        c.Variable = new LocalVariable (current_block, lt.Value, lt.Location);
                }
 
@@ -5961,7 +6028,7 @@ fixed_statement
            start_block (GetLocation ($2));
            
                current_block.IsCompilerGenerated = true;
-               var lt = (Tokenizer.LocatedToken) $4;
+               var lt = (LocatedToken) $4;
                var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.FixedVariable | LocalVariable.Flags.Used, lt.Location);
                current_block.AddLocalName (li);
                current_variable = new Fixed.VariableDeclaration ((FullNamedExpression) $3, li);
@@ -5988,7 +6055,7 @@ using_statement
            start_block (GetLocation ($2));
            
                current_block.IsCompilerGenerated = true;
-               var lt = (Tokenizer.LocatedToken) $4;
+               var lt = (LocatedToken) $4;
                var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.UsingVariable | LocalVariable.Flags.Used, lt.Location);
                current_block.AddLocalName (li);
                current_variable = new Using.VariableDeclaration ((FullNamedExpression) $3, li);
@@ -6092,7 +6159,7 @@ first_from_clause
          {
                current_block = new Linq.QueryBlock (current_block, lexer.Location);
          
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                var rv = new Linq.RangeVariable (lt.Value, lt.Location);
                $$ = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$4, rv, GetLocation ($1)));
          }
@@ -6100,7 +6167,7 @@ first_from_clause
          {
                current_block = new Linq.QueryBlock (current_block, lexer.Location);
          
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                var rv = new Linq.RangeVariable (lt.Value, lt.Location);
                $$ = new Linq.QueryExpression (
                        new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, rv, GetLocation ($1)) {
@@ -6115,7 +6182,7 @@ nested_from_clause
          {
                current_block = new Linq.QueryBlock (current_block, lexer.Location);
          
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                var rv = new Linq.RangeVariable (lt.Value, lt.Location);
                $$ = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$4, rv, GetLocation ($1)));
          }
@@ -6123,7 +6190,7 @@ nested_from_clause
          {
                current_block = new Linq.QueryBlock (current_block, lexer.Location);
          
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                var rv = new Linq.RangeVariable (lt.Value, lt.Location);
                $$ = new Linq.QueryExpression (
                        new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, rv, GetLocation ($1)) {
@@ -6140,7 +6207,7 @@ from_clause
          }
          expression_or_error
          {
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                var sn = new Linq.RangeVariable (lt.Value, lt.Location);
                $$ = new Linq.SelectMany ((Linq.QueryBlock)current_block, sn, (Expression)$5, GetLocation ($1));
                
@@ -6155,7 +6222,7 @@ from_clause
          }
          expression_or_error
          {
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                var sn = new Linq.RangeVariable (lt.Value, lt.Location);
 
                $$ = new Linq.SelectMany ((Linq.QueryBlock)current_block, sn, (Expression)$6, GetLocation ($1)) {
@@ -6237,15 +6304,29 @@ select_or_group_clause
          
                current_block = new Linq.QueryBlock (current_block, lexer.Location);
          }
-         BY expression_or_error
+         by_expression
          {
-               $$ = new Linq.GroupBy ((Linq.QueryBlock)current_block, (Expression)$3, linq_clause_blocks.Pop (), (Expression)$6, GetLocation ($1));
-               lbag.AddLocation ($$, GetLocation ($5));
+               var obj = (object[]) $5;
+
+               $$ = new Linq.GroupBy ((Linq.QueryBlock)current_block, (Expression)$3, linq_clause_blocks.Pop (), (Expression)obj[0], GetLocation ($1));
+               lbag.AddLocation ($$, (Location) obj[1]);
                
                current_block.SetEndLocation (lexer.Location);
                current_block = current_block.Parent;
          }
        ;
+
+by_expression
+       : BY expression_or_error
+         {
+               $$ = new object[] { $2, GetLocation ($1) };
+         }
+       | error
+         {
+               Error_SyntaxError (yyToken);
+               $$ = new object[2] { null, Location.Null };
+         }
+       ;
        
 query_body_clauses
        : query_body_clause
@@ -6271,7 +6352,7 @@ let_clause
          }
          expression_or_error
          {
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                var sn = new Linq.RangeVariable (lt.Value, lt.Location);
                $$ = new Linq.Let ((Linq.QueryBlock) current_block, sn, (Expression)$5, GetLocation ($1));
                lbag.AddLocation ($$, GetLocation ($3));
@@ -6330,7 +6411,7 @@ join_clause
                var outer_selector = linq_clause_blocks.Pop ();
                var block = linq_clause_blocks.Pop ();
 
-               var lt = (Tokenizer.LocatedToken) $2;   
+               var lt = (LocatedToken) $2;     
                var sn = new Linq.RangeVariable (lt.Value, lt.Location);
                Linq.RangeVariable into;
                
@@ -6350,7 +6431,7 @@ join_clause
                        
                        ((Linq.QueryBlock)current_block).AddRangeVariable (sn);
                
-                       lt = (Tokenizer.LocatedToken) $12;
+                       lt = (LocatedToken) $12;
                        into = new Linq.RangeVariable (lt.Value, lt.Location);
 
                        $$ = new Linq.GroupJoin (block, sn, (Expression)$5, outer_selector, (Linq.QueryBlock) current_block, into, GetLocation ($1));   
@@ -6392,7 +6473,7 @@ join_clause
                var outer_selector = linq_clause_blocks.Pop ();
                var block = linq_clause_blocks.Pop ();
                
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                var sn = new Linq.RangeVariable (lt.Value, lt.Location);
                Linq.RangeVariable into;
                
@@ -6413,7 +6494,7 @@ join_clause
                
                        ((Linq.QueryBlock)current_block).AddRangeVariable (sn);
                
-                       lt = (Tokenizer.LocatedToken) $13;
+                       lt = (LocatedToken) $13;
                        into = new Linq.RangeVariable (lt.Value, lt.Location); // TODO:
                        
                        $$ = new Linq.GroupJoin (block, sn, (Expression)$6, outer_selector, (Linq.QueryBlock) current_block, into, GetLocation ($1)) {
@@ -6536,7 +6617,7 @@ opt_query_continuation
          query_body
          {
                var current_block = linq_clause_blocks.Pop ();    
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                var rv = new Linq.RangeVariable (lt.Value, lt.Location);
                $$ = new Linq.QueryStartClause ((Linq.QueryBlock)current_block, null, rv, GetLocation ($1)) {
                        next = (Linq.AQueryClause)$4
@@ -6574,27 +6655,30 @@ interactive_parsing
                        mods |= Modifiers.UNSAFE;
 
                current_local_parameters = pars;
-               Method method = new Method (
+               var method = new InteractiveMethod (
                        current_type,
                        new TypeExpression (compiler.BuiltinTypes.Void, Location.Null),
                        mods,
-                       new MemberName ("Host"),
-                       pars,
-                       null /* attributes */);
+                       pars);
                        
                current_type.AddMember (method);                        
-
                oob_stack.Push (method);
+
+               interactive_async = false;
+
                ++lexer.parsing_block;
                start_block (lexer.Location);
          }             
          interactive_statement_list opt_COMPLETE_COMPLETION
          {
                --lexer.parsing_block;
-               Method method = (Method) oob_stack.Pop ();
-
+               var method = (InteractiveMethod) oob_stack.Pop ();
                method.Block = (ToplevelBlock) end_block(lexer.Location);
 
+               if (interactive_async == true) {
+                       method.ChangeToAsync ();
+               }
+
                InteractiveResult = (Class) pop_current_class ();
                current_local_parameters = null;
          } 
@@ -6641,7 +6725,7 @@ doc_cref
          {
                module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)$1;
                module.DocumentationBuilder.ParsedParameters = (List<DocumentationParameter>)$4;
-               var lt = (Tokenizer.LocatedToken) $3;
+               var lt = (LocatedToken) $3;
                $$ = new MemberName (lt.Value);
          }
        | doc_type_declaration_name DOT THIS
@@ -6803,7 +6887,7 @@ object Error_AwaitAsIdentifier (object token)
 {
        if (async_block) {
                report.Error (4003, GetLocation (token), "`await' cannot be used as an identifier within an async method or lambda expression");
-               return new Tokenizer.LocatedToken ("await", GetLocation (token));
+               return new LocatedToken ("await", GetLocation (token));
        }
 
        return token;
@@ -6851,6 +6935,23 @@ void StoreModifierLocation (object token, Location loc)
        mod_locations.Add (Tuple.Create ((Modifiers) token, loc));
 }
 
+[System.Diagnostics.Conditional ("FULL_AST")]
+void PushLocation (Location loc)
+{
+       if (location_stack == null)
+               location_stack = new Stack<Location> ();
+
+       location_stack.Push (loc);
+}
+
+Location PopLocation ()
+{
+       if (location_stack == null)
+               return Location.Null;
+
+       return location_stack.Pop ();
+}
+
 string CheckAttributeTarget (string a, Location l)
 {
        switch (a) {
@@ -6973,7 +7074,7 @@ void FeatureIsNotAvailable (Location loc, string feature)
 
 Location GetLocation (object obj)
 {
-       var lt = obj as Tokenizer.LocatedToken;
+       var lt = obj as LocatedToken;
        if (lt != null)
                return lt.Location;
                
@@ -7050,7 +7151,7 @@ AnonymousMethodExpression end_anonymous (ParametersBlock anon_block)
        retval = current_anonymous_method;
 
        async_block = (bool) oob_stack.Pop ();
-       current_variable = (BlockVariableDeclaration) oob_stack.Pop ();
+       current_variable = (BlockVariable) oob_stack.Pop ();
        current_local_parameters = (ParametersCompiled) oob_stack.Pop ();
        current_anonymous_method = (AnonymousMethodExpression) oob_stack.Pop ();
 
@@ -7159,7 +7260,7 @@ string GetSymbolName (int token)
        case Token.LITERAL:
                return ((Constant)lexer.Value).GetValue ().ToString ();
        case Token.IDENTIFIER:
-               return ((Tokenizer.LocatedToken)lexer.Value).Value;
+               return ((LocatedToken)lexer.Value).Value;
 
        case Token.BOOL:
                return "bool";
index fffe767c63317cb3971823ce2f6ed7a970dbfdaa..37447f6df9b474f548b0f7c708b3f66ef719d6fe 100644 (file)
@@ -21,10 +21,47 @@ using System.Collections;
 
 namespace Mono.CSharp
 {
+       //
+       // This class has to be used by parser only, it reuses token
+       // details once a file is parsed
+       //
+       public class LocatedToken
+       {
+               public int row, column;
+               public string value;
+               public SourceFile file;
+
+               public LocatedToken ()
+               {
+               }
+
+               public LocatedToken (string value, Location loc)
+               {
+                       this.value = value;
+                       file = loc.SourceFile;
+                       row = loc.Row;
+                       column = loc.Column;
+               }
+
+               public override string ToString ()
+               {
+                       return string.Format ("Token '{0}' at {1},{2}", Value, row, column);
+               }
+
+               public Location Location
+               {
+                       get { return new Location (file, row, column); }
+               }
+
+               public string Value
+               {
+                       get { return value; }
+               }
+       }
+
        /// <summary>
        ///    Tokenizer for C# source code. 
        /// </summary>
-
        public class Tokenizer : yyParser.yyInput
        {
                class KeywordEntry<T>
@@ -68,42 +105,6 @@ namespace Mono.CSharp
                        }
                }
 
-               //
-               // This class has to be used by parser only, it reuses token
-               // details after each file parse completion
-               //
-               public class LocatedToken
-               {
-                       public int row, column;
-                       public string value;
-                       public SourceFile file;
-
-                       public LocatedToken ()
-                       {
-                       }
-
-                       public LocatedToken (string value, Location loc)
-                       {
-                               this.value = value;
-                               file = loc.SourceFile;
-                               row = loc.Row;
-                               column = loc.Column;
-                       }
-
-                       public override string ToString ()
-                       {
-                               return string.Format ("Token '{0}' at {1},{2}", Value, row, column);
-                       }
-                       
-                       public Location Location {
-                               get { return new Location (file, row, column); }
-                       }
-
-                       public string Value {
-                               get { return value; }
-                       }
-               }
-
                public class LocatedTokenBuffer
                {
                        readonly LocatedToken[] buffer;
@@ -249,6 +250,9 @@ namespace Mono.CSharp
                public const int EvalCompilationUnitParserCharacter = 0x100001;
                public const int EvalUsingDeclarationsParserCharacter = 0x100002;
                public const int DocumentationXref = 0x100003;
+
+               const int UnicodeLS = 0x2028;
+               const int UnicodePS = 0x2029;
                
                //
                // XML documentation buffer. The save point is used to divide
@@ -1805,18 +1809,25 @@ namespace Mono.CSharp
                                x = reader.Read ();
                        }
                        
-                       if (x == '\r') {
-                               if (peek_char () == '\n') {
-                                       putback_char = -1;
-                               }
+                       if (x <= 13) {
+                               if (x == '\r') {
+                                       if (peek_char () == '\n') {
+                                               putback_char = -1;
+                                       }
 
-                               x = '\n';
-                               advance_line ();
-                       } else if (x == '\n') {
+                                       x = '\n';
+                                       advance_line ();
+                               } else if (x == '\n') {
+                                       advance_line ();
+                               } else {
+                                       col++;
+                               }
+                       } else if (x >= UnicodeLS && x <= UnicodePS) {
                                advance_line ();
                        } else {
                                col++;
                        }
+
                        return x;
                }
 
@@ -1848,7 +1859,7 @@ namespace Mono.CSharp
                                throw new InternalErrorException (string.Format ("Secondary putback [{0}] putting back [{1}] is not allowed", (char)putback_char, (char) c), Location);
                        }
 
-                       if (c == '\n' || col == 0) {
+                       if (c == '\n' || col == 0 || (c >= UnicodeLS && c <= UnicodePS)) {
                                // It won't happen though.
                                line--;
                                ref_line--;
@@ -1930,7 +1941,7 @@ namespace Mono.CSharp
                        int has_identifier_argument = (int)(cmd & PreprocessorDirective.RequiresArgument);
                        int pos = 0;
 
-                       while (c != -1 && c != '\n') {
+                       while (c != -1 && c != '\n' && c != UnicodeLS && c != UnicodePS) {
                                if (c == '\\' && has_identifier_argument >= 0) {
                                        if (has_identifier_argument != 0) {
                                                has_identifier_argument = 1;
@@ -1957,10 +1968,7 @@ namespace Mono.CSharp
                                        // Eat single-line comments
                                        //
                                        get_char ();
-                                       do {
-                                               c = get_char ();
-                                       } while (c != -1 && c != '\n');
-
+                                       ReadToEndOfLine ();
                                        break;
                                }
 
@@ -2022,10 +2030,7 @@ namespace Mono.CSharp
                                //
                                // Eat any remaining characters to continue parsing on next line
                                //
-                               while (c != -1 && c != '\n') {
-                                       c = get_char ();
-                               }
-
+                               ReadToEndOfLine ();
                                return false;
                        }
 
@@ -2034,10 +2039,7 @@ namespace Mono.CSharp
                                //
                                // Eat any remaining characters to continue parsing on next line
                                //
-                               while (c != -1 && c != '\n') {
-                                       c = get_char ();
-                               }
-
+                               ReadToEndOfLine ();
                                return new_line != 0;
                        }
 
@@ -2051,13 +2053,11 @@ namespace Mono.CSharp
                                c = 0;
                        }
 
-                       if (c != '\n' && c != '/' && c != '"') {
+                       if (c != '\n' && c != '/' && c != '"' && c != UnicodeLS && c != UnicodePS) {
                                //
                                // Eat any remaining characters to continue parsing on next line
                                //
-                               while (c != -1 && c != '\n') {
-                                       c = get_char ();
-                               }
+                               ReadToEndOfLine ();
 
                                Report.Error (1578, loc, "Filename, single-line comment or end-of-line expected");
                                return true;
@@ -2073,16 +2073,15 @@ namespace Mono.CSharp
                                }
                        }
 
-                       if (c == '\n') {
+                       if (c == '\n' || c == UnicodeLS || c == UnicodePS) {
+
                        } else if (c == '/') {
                                ReadSingleLineComment ();
                        } else {
                                //
                                // Eat any remaining characters to continue parsing on next line
                                //
-                               while (c != -1 && c != '\n') {
-                                       c = get_char ();
-                               }
+                               ReadToEndOfLine ();
 
                                Error_EndLineExpected ();
                                return true;
@@ -2317,7 +2316,7 @@ namespace Mono.CSharp
                string TokenizeFileName (ref int c)
                {
                        var string_builder = new StringBuilder ();
-                       while (c != -1 && c != '\n') {
+                       while (c != -1 && c != '\n' && c != UnicodeLS && c != UnicodePS) {
                                c = get_char ();
                                if (c == '"') {
                                        c = get_char ();
@@ -2365,25 +2364,28 @@ namespace Mono.CSharp
                                        Report.Warning (1692, 1, Location, "Invalid number");
 
                                        // Read everything till the end of the line or file
-                                       do {
-                                               c = get_char ();
-                                       } while (c != -1 && c != '\n');
+                                       ReadToEndOfLine ();
                                }
                        }
 
                        return number;
                }
 
+               void ReadToEndOfLine ()
+               {
+                       int c;
+                       do {
+                               c = get_char ();
+                       } while (c != -1 && c != '\n' && c != UnicodeLS && c != UnicodePS);
+               }
+
                void ReadSingleLineComment ()
                {
                        if (peek_char () != '/')
                                Report.Warning (1696, 1, Location, "Single-line comment or end-of-line expected");
 
                        // Read everything till the end of the line or file
-                       int c;
-                       do {
-                               c = get_char ();
-                       } while (c != -1 && c != '\n');
+                       ReadToEndOfLine ();
                }
 
                /// <summary>
@@ -2409,7 +2411,7 @@ namespace Mono.CSharp
 
                                                var loc = Location;
 
-                                               if (c == '\n' || c == '/') {
+                                               if (c == '\n' || c == '/' || c == UnicodeLS || c == UnicodePS) {
                                                        if (c == '/')
                                                                ReadSingleLineComment ();
 
@@ -2435,7 +2437,7 @@ namespace Mono.CSharp
                                                                                Report.RegisterWarningRegion (loc).WarningEnable (loc, code, context);
                                                                        }
                                                                }
-                                                       } while (code >= 0 && c != '\n' && c != -1);
+                                                       } while (code >= 0 && c != '\n' && c != -1 && c != UnicodeLS && c != UnicodePS);
                                                }
 
                                                return;
@@ -2445,8 +2447,7 @@ namespace Mono.CSharp
                                Report.Warning (1634, 1, Location, "Expected disable or restore");
 
                                // Eat any remaining characters on the line
-                               while (c != '\n' && c != -1)
-                                       c = get_char ();
+                               ReadToEndOfLine ();
 
                                return;
                        }
@@ -2819,7 +2820,8 @@ namespace Mono.CSharp
                                }
                        case PreprocessorDirective.Define:
                                if (any_token_seen){
-                                       Error_TokensSeen ();
+                                       if (caller_is_taking)
+                                               Error_TokensSeen ();
                                        return caller_is_taking;
                                }
                                PreProcessDefinition (true, arg, caller_is_taking);
@@ -2827,7 +2829,8 @@ namespace Mono.CSharp
 
                        case PreprocessorDirective.Undef:
                                if (any_token_seen){
-                                       Error_TokensSeen ();
+                                       if (caller_is_taking)
+                                               Error_TokensSeen ();
                                        return caller_is_taking;
                                }
                                PreProcessDefinition (false, arg, caller_is_taking);
@@ -2924,7 +2927,7 @@ namespace Mono.CSharp
                                        return Token.LITERAL;
                                }
 
-                               if (c == '\n') {
+                               if (c == '\n' || c == UnicodeLS || c == UnicodePS) {
                                        if (!quoted) {
                                                Report.Error (1010, Location, "Newline in constant");
 
@@ -2940,6 +2943,7 @@ namespace Mono.CSharp
 
                                        advance_line ();
                                } else if (c == '\\' && !quoted) {
+                                       ++col;
                                        int surrogate;
                                        c = escape (c, out surrogate);
                                        if (c == -1)
@@ -3146,6 +3150,8 @@ namespace Mono.CSharp
                                        case '\v':
                                        case '\r':
                                        case '\n':
+                                       case UnicodeLS:
+                                       case UnicodePS:
                                        case '/':
                                                next = peek_token ();
                                                if (next == Token.COMMA || next == Token.CLOSE_BRACKET)
@@ -3176,6 +3182,7 @@ namespace Mono.CSharp
                                                case Token.FOREACH:
                                                case Token.TYPEOF:
                                                case Token.WHILE:
+                                               case Token.SWITCH:
                                                case Token.USING:
                                                case Token.DEFAULT:
                                                case Token.DELEGATE:
@@ -3363,7 +3370,7 @@ namespace Mono.CSharp
                                                        }
                                                }
 
-                                               while ((d = get_char ()) != -1 && d != '\n');
+                                               ReadToEndOfLine ();
 
                                                any_token_seen |= tokens_seen;
                                                tokens_seen = false;
@@ -3401,7 +3408,7 @@ namespace Mono.CSharp
                                                        if (docAppend)
                                                                xml_comment_buffer.Append ((char) d);
                                                        
-                                                       if (d == '\n'){
+                                                       if (d == '\n' || d == UnicodeLS || d == UnicodePS){
                                                                any_token_seen |= tokens_seen;
                                                                tokens_seen = false;
                                                                // 
@@ -3451,6 +3458,8 @@ namespace Mono.CSharp
                                        return is_number (c, false);
 
                                case '\n': // white space
+                               case UnicodeLS:
+                               case UnicodePS:
                                        any_token_seen |= tokens_seen;
                                        tokens_seen = false;
                                        comments_seen = false;
@@ -3487,7 +3496,7 @@ namespace Mono.CSharp
                                                        continue;
                                                }
 
-                                               if (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\v' )
+                                               if (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\v' || c == UnicodeLS || c == UnicodePS)
                                                        continue;
 
                                                if (c == '#') {
@@ -3571,7 +3580,7 @@ namespace Mono.CSharp
                                return Token.LITERAL;
                        }
 
-                       if (c == '\n') {
+                       if (c == '\n' || c == UnicodeLS || c == UnicodePS) {
                                Report.Error (1010, start_location, "Newline in constant");
                                return Token.ERROR;
                        }
@@ -3592,7 +3601,7 @@ namespace Mono.CSharp
 
                                // Try to recover, read until newline or next "'"
                                while ((c = get_char ()) != -1) {
-                                       if (c == '\n' || c == '\'')
+                                       if (c == '\n' || c == '\'' || c == UnicodeLS || c == UnicodePS)
                                                break;
                                }
                        }
index a9a67b2d0d39635d4ee1b68520fd337e99ec940c..e7f27aa7d626a32151675707335df0dc6312ff5f 100644 (file)
@@ -937,7 +937,8 @@ namespace Mono.CSharp {
                        InflatedExpressionType = 1 << 19,
                        InflatedNullableType = 1 << 20,
                        GenericIterateInterface = 1 << 21,
-                       GenericTask = 1 << 22
+                       GenericTask = 1 << 22,
+                       InterfacesImported = 1 << 23,
                }
 
                //
@@ -1274,6 +1275,11 @@ namespace Mono.CSharp {
                void SetIsUsed ();
        }
 
+       public interface IMethodDefinition : IMemberDefinition
+       {
+               MethodBase Metadata { get; }
+       }
+
        public interface IParametersMember : IInterfaceMemberSpec
        {
                AParametersCollection Parameters { get; }
index a73c9f68c75cb81a94973da5046804f9d6c7163e..e371f3be0f44ff79c1498ed1c338d58fa7b7fbe4 100644 (file)
@@ -153,7 +153,7 @@ namespace Mono.CSharp {
                                        Report.SymbolRelatedToPreviousError (partype);
                                        Report.Error (59, Location,
                                                "Inconsistent accessibility: parameter type `{0}' is less accessible than delegate `{1}'",
-                                               TypeManager.CSharpName (partype), GetSignatureForError ());
+                                               partype.GetSignatureForError (), GetSignatureForError ());
                                }
                        }
 
@@ -169,7 +169,7 @@ namespace Mono.CSharp {
                                Report.SymbolRelatedToPreviousError (ret_type);
                                Report.Error (58, Location,
                                                  "Inconsistent accessibility: return type `" +
-                                                 TypeManager.CSharpName (ret_type) + "' is less " +
+                                                 ret_type.GetSignatureForError () + "' is less " +
                                                  "accessible than delegate `" + GetSignatureForError () + "'");
                                return false;
                        }
@@ -297,6 +297,12 @@ namespace Mono.CSharp {
                        if (!Parameters.IsEmpty) {
                                parameters.ResolveDefaultValues (this);
                        }
+
+                       InvokeBuilder.PrepareEmit ();
+                       if (BeginInvokeBuilder != null) {
+                               BeginInvokeBuilder.PrepareEmit ();
+                               EndInvokeBuilder.PrepareEmit ();
+                       }
                }
 
                public override void Emit ()
@@ -522,7 +528,7 @@ namespace Mono.CSharp {
                                TypeSpec e_type = emg.ExtensionExpression.Type;
                                if (TypeSpec.IsValueType (e_type)) {
                                        ec.Report.Error (1113, loc, "Extension method `{0}' of value type `{1}' cannot be used to create delegates",
-                                               delegate_method.GetSignatureForError (), TypeManager.CSharpName (e_type));
+                                               delegate_method.GetSignatureForError (), e_type.GetSignatureForError ());
                                }
                        }
 
@@ -586,8 +592,8 @@ namespace Mono.CSharp {
                        ec.Report.SymbolRelatedToPreviousError (method);
                        if (ec.Module.Compiler.Settings.Version == LanguageVersion.ISO_1) {
                                ec.Report.Error (410, loc, "A method or delegate `{0} {1}' parameters and return type must be same as delegate `{2} {3}' parameters and return type",
-                                       TypeManager.CSharpName (method.ReturnType), member_name,
-                                       TypeManager.CSharpName (invoke_method.ReturnType), Delegate.FullDelegateDesc (invoke_method));
+                                       method.ReturnType.GetSignatureForError (), member_name,
+                                       invoke_method.ReturnType.GetSignatureForError (), Delegate.FullDelegateDesc (invoke_method));
                                return;
                        }
 
@@ -599,7 +605,7 @@ namespace Mono.CSharp {
 
                        ec.Report.Error (407, loc, "A method or delegate `{0} {1}' return type does not match delegate `{2} {3}' return type",
                                return_type.GetSignatureForError (), member_name,
-                               TypeManager.CSharpName (invoke_method.ReturnType), Delegate.FullDelegateDesc (invoke_method));
+                               invoke_method.ReturnType.GetSignatureForError (), Delegate.FullDelegateDesc (invoke_method));
                }
 
                public static bool ImplicitStandardConversionExists (ResolveContext ec, MethodGroupExpr mg, TypeSpec target_type)
@@ -657,7 +663,7 @@ namespace Mono.CSharp {
                //
                // Returns true when type is MVAR or has MVAR reference
                //
-               static bool ContainsMethodTypeParameter (TypeSpec type)
+               public static bool ContainsMethodTypeParameter (TypeSpec type)
                {
                        var tps = type as TypeParameterSpec;
                        if (tps != null)
@@ -851,7 +857,7 @@ namespace Mono.CSharp {
                        //
                        var call = new CallEmitter ();
                        call.InstanceExpression = InstanceExpr;
-                       call.EmitPredefined (ec, method, arguments);
+                       call.EmitPredefined (ec, method, arguments, loc);
                }
 
                public override void EmitStatement (EmitContext ec)
index 352974855a45e981caedb7e13aca99b45ab9c797..45c9719ea6a51b987ade77acc0da32e5fa0b18b5 100644 (file)
@@ -80,7 +80,7 @@ namespace Mono.CSharp
 
                        var session = new ParserSession () {
                                UseJayGlobalArrays = true,
-                               LocatedTokens = new Tokenizer.LocatedToken[15000]
+                               LocatedTokens = new LocatedToken[15000]
                        };
 
                        for (int i = 0; i < sources.Count; ++i) {
index b9d6967dccf4094664ac99cf755867e05638ee41..0246c43a1b67fa9cba25972b19e283fd7558a5b2 100644 (file)
@@ -447,6 +447,7 @@ namespace Mono.CSharp
                                d.CreateContainer ();
                                d.DefineContainer ();
                                d.Define ();
+                               d.PrepareEmit ();
 
                                site.AddTypeContainer (d);
                                del_type = new TypeExpression (d.CurrentType, loc);
index ee025092c4411518faece3de3eb6a921000ffa94..a15f16ca2599b29652b15db152d1d13c0251e290 100644 (file)
@@ -251,7 +251,7 @@ namespace Mono.CSharp {
                public void Error_ConstantCanBeInitializedWithNullOnly (ResolveContext rc, TypeSpec type, Location loc, string name)
                {
                        rc.Report.Error (134, loc, "A constant `{0}' of reference type `{1}' can only be initialized with null",
-                               name, TypeManager.CSharpName (type));
+                               name, type.GetSignatureForError ());
                }
 
                protected virtual void Error_InvalidExpressionStatement (Report report, Location loc)
@@ -282,7 +282,10 @@ namespace Mono.CSharp {
                protected void Error_ValueCannotBeConvertedCore (ResolveContext ec, Location loc, TypeSpec target, bool expl)
                {
                        // The error was already reported as CS1660
-                       if (type == InternalType.AnonymousMethod || type == InternalType.ErrorType)
+                       if (type == InternalType.AnonymousMethod)
+                               return;
+
+                       if (type == InternalType.ErrorType || target == InternalType.ErrorType)
                                return;
 
                        string from_type = type.GetSignatureForError ();
@@ -351,13 +354,15 @@ namespace Mono.CSharp {
                {
                        ec.Report.SymbolRelatedToPreviousError (type);
                        ec.Report.Error (117, loc, "`{0}' does not contain a definition for `{1}'",
-                               TypeManager.CSharpName (type), name);
+                               type.GetSignatureForError (), name);
                }
 
                public virtual void Error_ValueAssignment (ResolveContext rc, Expression rhs)
                {
                        if (rhs == EmptyExpression.LValueMemberAccess || rhs == EmptyExpression.LValueMemberOutAccess) {
                                // Already reported as CS1612
+                       } else if (rhs == EmptyExpression.OutAccess) {
+                               rc.Report.Error (1510, loc, "A ref or out argument must be an assignable variable");
                        } else {
                                rc.Report.Error (131, loc, "The left-hand side of an assignment must be a variable, a property or an indexer");
                        }
@@ -430,8 +435,14 @@ namespace Mono.CSharp {
                /// </remarks>
                public Expression Resolve (ResolveContext ec, ResolveFlags flags)
                {
-                       if (eclass != ExprClass.Unresolved)
+                       if (eclass != ExprClass.Unresolved) {
+                               if ((flags & ExprClassToResolveFlags) == 0) {
+                                       Error_UnexpectedKind (ec, flags, loc);
+                                       return null;
+                               }
+
                                return this;
+                       }
                        
                        Expression e;
                        try {
@@ -492,10 +503,7 @@ namespace Mono.CSharp {
 
                        if (e == null) {
                                if (errors == ec.Report.Errors) {
-                                       if (out_access)
-                                               ec.Report.Error (1510, loc, "A ref or out argument must be an assignable variable");
-                                       else
-                                               Error_ValueAssignment (ec, right_side);
+                                       Error_ValueAssignment (ec, right_side);
                                }
                                return null;
                        }
@@ -509,6 +517,23 @@ namespace Mono.CSharp {
                        return e;
                }
 
+               public Constant ResolveLabelConstant (ResolveContext rc)
+               {
+                       var expr = Resolve (rc);
+                       if (expr == null)
+                               return null;
+
+                       Constant c = expr as Constant;
+                       if (c == null) {
+                               if (c.type != InternalType.ErrorType)
+                                       rc.Report.Error (150, StartLocation, "A constant value is expected");
+
+                               return null;
+                       }
+
+                       return c;
+               }
+
                public virtual void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
                {
                        rc.Module.Compiler.Report.Error (182, loc,
@@ -759,8 +784,18 @@ namespace Mono.CSharp {
                                        }
 
                                        if ((restrictions & MemberLookupRestrictions.InvocableOnly) != 0) {
-                                               if (member is MethodSpec)
+                                               if (member is MethodSpec) {
+                                                       //
+                                                       // Interface members that are hidden by class members are removed from the set. This
+                                                       // step only has an effect if T is a type parameter and T has both an effective base 
+                                                       // class other than object and a non-empty effective interface set
+                                                       //
+                                                       var tps = queried_type as TypeParameterSpec;
+                                                       if (tps != null && tps.HasTypeConstraint)
+                                                               members = RemoveHiddenTypeParameterMethods (members);
+
                                                        return new MethodGroupExpr (members, queried_type, loc);
+                                               }
 
                                                if (!Invocation.IsMemberInvocable (member))
                                                        continue;
@@ -815,6 +850,54 @@ namespace Mono.CSharp {
                        return null;
                }
 
+               static IList<MemberSpec> RemoveHiddenTypeParameterMethods (IList<MemberSpec> members)
+               {
+                       if (members.Count < 2)
+                               return members;
+
+                       //
+                       // If M is a method, then all non-method members declared in an interface declaration
+                       // are removed from the set, and all methods with the same signature as M declared in
+                       // an interface declaration are removed from the set
+                       //
+
+                       bool copied = false;
+                       for (int i = 0; i < members.Count; ++i) {
+                               var method = members[i] as MethodSpec;
+                               if (method == null) {
+                                       if (!copied) {
+                                               copied = true;
+                                               members = new List<MemberSpec> (members);
+                                       } 
+                                       
+                                       members.RemoveAt (i--);
+                                       continue;
+                               }
+
+                               if (!method.DeclaringType.IsInterface)
+                                       continue;
+
+                               for (int ii = 0; ii < members.Count; ++ii) {
+                                       var candidate = members[ii] as MethodSpec;
+                                       if (candidate == null || !candidate.DeclaringType.IsClass)
+                                               continue;
+
+                                       if (!TypeSpecComparer.Override.IsEqual (candidate.Parameters, method.Parameters))
+                                               continue;
+
+                                       if (!copied) {
+                                               copied = true;
+                                               members = new List<MemberSpec> (members);
+                                       }
+
+                                       members.RemoveAt (i--);
+                                       break;
+                               }
+                       }
+
+                       return members;
+               }
+
                protected virtual void Error_NegativeArrayIndex (ResolveContext ec, Location loc)
                {
                        throw new NotImplementedException ();
@@ -1251,8 +1334,20 @@ namespace Mono.CSharp {
                public static Expression Create (Expression child, TypeSpec type)
                {
                        Constant c = child as Constant;
-                       if (c != null)
-                               return new EmptyConstantCast (c, type);
+                       if (c != null) {
+                               var enum_constant = c as EnumConstant;
+                               if (enum_constant != null)
+                                       c = enum_constant.Child;
+
+                               if (!(c is ReducedExpression.ReducedConstantExpression)) {
+                                       if (c.Type == type)
+                                               return c;
+
+                                       var res = c.ConvertImplicitly (type);
+                                       if (res != null)
+                                               return res;
+                               }
+                       }
 
                        EmptyCast e = child as EmptyCast;
                        if (e != null)
@@ -1475,7 +1570,7 @@ namespace Mono.CSharp {
 
                public override string GetSignatureForError()
                {
-                       return TypeManager.CSharpName (Type);
+                       return Type.GetSignatureForError ();
                }
 
                public override object GetValue ()
@@ -1534,7 +1629,7 @@ namespace Mono.CSharp {
                        }
                }
 
-               public override Constant ConvertExplicitly(bool in_checked_context, TypeSpec target_type)
+               public override Constant ConvertExplicitly (bool in_checked_context, TypeSpec target_type)
                {
                        if (Child.Type == target_type)
                                return Child;
@@ -1678,7 +1773,11 @@ namespace Mono.CSharp {
                public override void Emit (EmitContext ec)
                {
                        base.Emit (ec);
+                       Emit (ec, mode);
+               }
 
+               public static void Emit (EmitContext ec, Mode mode)
+               {
                        if (ec.HasSet (EmitContext.Options.CheckedScope)) {
                                switch (mode){
                                case Mode.I1_U1: ec.Emit (OpCodes.Conv_Ovf_U1); break;
@@ -1947,7 +2046,7 @@ namespace Mono.CSharp {
        //
        public class ReducedExpression : Expression
        {
-               sealed class ReducedConstantExpression : EmptyConstantCast
+               public sealed class ReducedConstantExpression : EmptyConstantCast
                {
                        readonly Expression orig_expr;
 
@@ -2359,7 +2458,7 @@ namespace Mono.CSharp {
 
                protected override Expression DoResolve (ResolveContext rc)
                {
-                       var e = SimpleNameResolve (rc, null, false);
+                       var e = SimpleNameResolve (rc, null);
 
                        var fe = e as FieldExpr;
                        if (fe != null) {
@@ -2371,7 +2470,7 @@ namespace Mono.CSharp {
 
                public override Expression DoResolveLValue (ResolveContext ec, Expression right_side)
                {
-                       return SimpleNameResolve (ec, right_side, false);
+                       return SimpleNameResolve (ec, right_side);
                }
 
                protected virtual void Error_TypeOrNamespaceNotFound (IMemberContext ctx)
@@ -2418,15 +2517,15 @@ namespace Mono.CSharp {
                        }
                }
 
-               public override FullNamedExpression ResolveAsTypeOrNamespace (IMemberContext ec)
+               public override FullNamedExpression ResolveAsTypeOrNamespace (IMemberContext mc)
                {
-                       FullNamedExpression fne = ec.LookupNamespaceOrType (Name, Arity, LookupMode.Normal, loc);
+                       FullNamedExpression fne = mc.LookupNamespaceOrType (Name, Arity, LookupMode.Normal, loc);
 
                        if (fne != null) {
                                if (fne.Type != null && Arity > 0) {
                                        if (HasTypeArguments) {
                                                GenericTypeExpr ct = new GenericTypeExpr (fne.Type, targs, loc);
-                                               if (ct.ResolveAsType (ec) == null)
+                                               if (ct.ResolveAsType (mc) == null)
                                                        return null;
 
                                                return ct;
@@ -2442,21 +2541,21 @@ namespace Mono.CSharp {
                                        return fne;
                        }
 
-                       if (Arity == 0 && Name == "dynamic" && ec.Module.Compiler.Settings.Version > LanguageVersion.V_3) {
-                               if (!ec.Module.PredefinedAttributes.Dynamic.IsDefined) {
-                                       ec.Module.Compiler.Report.Error (1980, Location,
+                       if (Arity == 0 && Name == "dynamic" && mc.Module.Compiler.Settings.Version > LanguageVersion.V_3) {
+                               if (!mc.Module.PredefinedAttributes.Dynamic.IsDefined) {
+                                       mc.Module.Compiler.Report.Error (1980, Location,
                                                "Dynamic keyword requires `{0}' to be defined. Are you missing System.Core.dll assembly reference?",
-                                               ec.Module.PredefinedAttributes.Dynamic.GetSignatureForError ());
+                                               mc.Module.PredefinedAttributes.Dynamic.GetSignatureForError ());
                                }
 
                                fne = new DynamicTypeExpr (loc);
-                               fne.ResolveAsType (ec);
+                               fne.ResolveAsType (mc);
                        }
 
                        if (fne != null)
                                return fne;
 
-                       Error_TypeOrNamespaceNotFound (ec);
+                       Error_TypeOrNamespaceNotFound (mc);
                        return null;
                }
 
@@ -2637,7 +2736,10 @@ namespace Mono.CSharp {
                                                        }
 
                                                        if (e is TypeExpr) {
-                                                               e.Error_UnexpectedKind (rc, e, "variable", e.ExprClassName, loc);
+                                                               // TypeExpression does not have correct location
+                                                               if (e is TypeExpression)
+                                                                       e = new TypeExpression (e.Type, loc);
+
                                                                return e;
                                                        }
                                                }
@@ -2659,19 +2761,19 @@ namespace Mono.CSharp {
                        }
                }
                
-               Expression SimpleNameResolve (ResolveContext ec, Expression right_side, bool intermediate)
+               Expression SimpleNameResolve (ResolveContext ec, Expression right_side)
                {
                        Expression e = LookupNameExpression (ec, right_side == null ? MemberLookupRestrictions.ReadAccess : MemberLookupRestrictions.None);
 
                        if (e == null)
                                return null;
 
-                       if (right_side != null) {
-                               if (e is FullNamedExpression && e.eclass != ExprClass.Unresolved) {
-                                       e.Error_UnexpectedKind (ec, e, "variable", e.ExprClassName, loc);
-                                   return null;
-                               }
+                       if (e is FullNamedExpression && e.eclass != ExprClass.Unresolved) {
+                               e.Error_UnexpectedKind (ec, e, "variable", e.ExprClassName, loc);
+                               return e;
+                       }
 
+                       if (right_side != null) {
                                e = e.ResolveLValue (ec, right_side);
                        } else {
                                e = e.Resolve (ec);
@@ -3244,7 +3346,7 @@ namespace Mono.CSharp {
        class ExtensionMethodGroupExpr : MethodGroupExpr, OverloadResolver.IErrorHandler
        {
                ExtensionMethodCandidates candidates;
-               public readonly Expression ExtensionExpression;
+               public Expression ExtensionExpression;
 
                public ExtensionMethodGroupExpr (ExtensionMethodCandidates candidates, Expression extensionExpr, Location loc)
                        : base (candidates.Methods.Cast<MemberSpec>().ToList (), extensionExpr.Type, loc)
@@ -3288,8 +3390,16 @@ namespace Mono.CSharp {
                        if (arguments == null)
                                arguments = new Arguments (1);
 
+                       ExtensionExpression = ExtensionExpression.Resolve (ec);
+                       if (ExtensionExpression == null)
+                               return null;
+
+                       var cand = candidates;
                        arguments.Insert (0, new Argument (ExtensionExpression, Argument.AType.ExtensionType));
                        var res = base.OverloadResolve (ec, ref arguments, ehandler ?? this, restr);
+                       
+                       // Restore candidates in case we are running in probing mode 
+                       candidates = cand;
 
                        // Store resolved argument and restore original arguments
                        if (res == null) {
@@ -3499,7 +3609,7 @@ namespace Mono.CSharp {
                public override void Error_ValueCannotBeConverted (ResolveContext ec, TypeSpec target, bool expl)
                {
                        ec.Report.Error (428, loc, "Cannot convert method group `{0}' to non-delegate type `{1}'. Consider using parentheses to invoke the method",
-                               Name, TypeManager.CSharpName (target));
+                               Name, target.GetSignatureForError ());
                }
 
                public static bool IsExtensionMethodArgument (Expression expr)
@@ -3559,7 +3669,7 @@ namespace Mono.CSharp {
                                                        InstanceExpression = ProbeIdenticalTypeName (ec, InstanceExpression, simple_name);
                                                }
 
-                                               InstanceExpression.Resolve (ec);
+                                               InstanceExpression.Resolve (ec, ResolveFlags.VariableOrValue | ResolveFlags.MethodGroup | ResolveFlags.Type);
                                        }
                                }
 
@@ -3633,7 +3743,7 @@ namespace Mono.CSharp {
                //
                public virtual MethodGroupExpr LookupExtensionMethod (ResolveContext rc)
                {
-                       if (InstanceExpression == null)
+                       if (InstanceExpression == null || InstanceExpression.eclass == ExprClass.Type)
                                return null;
 
                        InstanceExpression = InstanceExpression.Resolve (rc);
@@ -4551,17 +4661,18 @@ namespace Mono.CSharp {
                                // It can be applicable in expanded form (when not doing exact match like for delegates)
                                //
                                if (score != 0 && (p_mod & Parameter.Modifier.PARAMS) != 0 && (restrictions & Restrictions.CovariantDelegate) == 0) {
-                                       if (!params_expanded_form)
+                                       if (!params_expanded_form) {
                                                pt = ((ElementTypeSpec) pt).Element;
+                                       }
 
                                        if (score > 0)
                                                score = IsArgumentCompatible (ec, a, Parameter.Modifier.NONE, pt);
 
-                                       if (score == 0) {
-                                               params_expanded_form = true;
-                                       } else if (score < 0) {
+                                       if (score < 0) {
                                                params_expanded_form = true;
                                                dynamicArgument = true;
+                                       } else if (score == 0 || arg_count > pd.Count) {
+                                               params_expanded_form = true;
                                        }
                                }
 
@@ -4661,7 +4772,7 @@ namespace Mono.CSharp {
                                // is used as argument or delegate conversion
                                //
                                if (!Convert.ImplicitConversionExists (ec, argument.Expr, parameter)) {
-                                       return 2;
+                                       return parameter.IsDelegate && argument.Expr is AnonymousMethodExpression ? 2 : 3;
                                }
                        }
 
@@ -5040,14 +5151,14 @@ namespace Mono.CSharp {
                        string index = (idx + 1).ToString ();
                        if (((mod & Parameter.Modifier.RefOutMask) ^ (a.Modifier & Parameter.Modifier.RefOutMask)) != 0) {
                                if ((mod & Parameter.Modifier.RefOutMask) == 0)
-                                       ec.Report.Error (1615, loc, "Argument `#{0}' does not require `{1}' modifier. Consider removing `{1}' modifier",
+                                       ec.Report.Error (1615, a.Expr.Location, "Argument `#{0}' does not require `{1}' modifier. Consider removing `{1}' modifier",
                                                index, Parameter.GetModifierSignature (a.Modifier));
                                else
-                                       ec.Report.Error (1620, loc, "Argument `#{0}' is missing `{1}' modifier",
+                                       ec.Report.Error (1620, a.Expr.Location, "Argument `#{0}' is missing `{1}' modifier",
                                                index, Parameter.GetModifierSignature (mod));
                        } else {
                                string p1 = a.GetSignatureForError ();
-                               string p2 = TypeManager.CSharpName (paramType);
+                               string p2 = paramType.GetSignatureForError ();
 
                                if (p1 == p2) {
                                        p1 = a.Type.GetSignatureForErrorIncludingAssemblyName ();
index 7a025bb6c347e4a2574a788aa94744c8650aa9ec..1081e0e551e55849bf18118da5bab9b941b87d3d 100644 (file)
@@ -269,7 +269,7 @@ namespace Mono.CSharp {
                        case BuiltinTypeSpec.Type.ULong:
                        case BuiltinTypeSpec.Type.UShort:
                                Report.Warning (3009, 1, Location, "`{0}': base type `{1}' is not CLS-compliant",
-                                       GetSignatureForError (), TypeManager.CSharpName (UnderlyingType));
+                                       GetSignatureForError (), UnderlyingType.GetSignatureForError ());
                                break;
                        }
 
index bb0260575a4a47839914da95df46a96d86cf4227..9607ffd8b7945c0535fe516305dca14b20b2059d 100644 (file)
@@ -131,6 +131,12 @@ namespace Mono.CSharp
                        Location.Initialize (ctx.SourceFiles);
                }
 
+               /// <summary>
+               /// When set evaluator will automatically wait on Task of async methods. When not
+               /// set it's called responsibility to handle Task execution
+               /// </summary>
+               public bool WaitOnTask { get; set; }
+
                /// <summary>
                ///   If true, turns type expressions into valid expressions
                ///   and calls the describe method on it
@@ -429,7 +435,7 @@ namespace Mono.CSharp
                                throw new ArgumentException ("Syntax error on input: partial input");
                        
                        if (result_set == false)
-                               throw new ArgumentException ("The expression did not set a result");
+                               throw new ArgumentException ("The expression failed to resolve");
 
                        return result;
                }
@@ -655,13 +661,49 @@ namespace Mono.CSharp
                                        new TypeExpression (base_class_imported, host.Location)
                                };
 
-                               host.AddBasesForPart (baseclass_list);
-
-                               host.CreateContainer ();
-                               host.DefineContainer ();
-                               host.Define ();
+                               host.SetBaseTypes (baseclass_list);
 
                                expression_method = (Method) host.Members[0];
+
+                               if ((expression_method.ModFlags & Modifiers.ASYNC) != 0) {
+                                       //
+                                       // Host method is async. When WaitOnTask is set we wrap it with wait
+                                       //
+                                       // void AsyncWait (ref object $retval) {
+                                       //      $retval = Host();
+                                       //      ((Task)$retval).Wait();  // When WaitOnTask is set
+                                       // }
+                                       //
+                                       var p = new ParametersCompiled (
+                                               new Parameter (new TypeExpression (module.Compiler.BuiltinTypes.Object, Location.Null), "$retval", Parameter.Modifier.REF, null, Location.Null)
+                                       );
+
+                                       var method = new Method(host, new TypeExpression(module.Compiler.BuiltinTypes.Void, Location.Null),
+                                               Modifiers.PUBLIC | Modifiers.STATIC, new MemberName("AsyncWait"), p, null);
+
+                                       method.Block = new ToplevelBlock(method.Compiler, p, Location.Null);
+                                       method.Block.AddStatement(new StatementExpression (new SimpleAssign(
+                                               new SimpleName(p [0].Name, Location.Null),
+                                               new Invocation(new SimpleName(expression_method.MemberName.Name, Location.Null), new Arguments(0)),
+                                               Location.Null), Location.Null));
+
+                                       if (WaitOnTask) {
+                                               var task = new Cast (expression_method.TypeExpression, new SimpleName (p [0].Name, Location.Null), Location.Null);
+
+                                               method.Block.AddStatement (new StatementExpression (new Invocation (
+                                                               new MemberAccess (task, "Wait", Location.Null),
+                                                       new Arguments (0)), Location.Null));
+                                       }
+
+                                       host.AddMember(method);
+
+                                       expression_method = method;
+                               }
+
+                               host.CreateContainer();
+                               host.DefineContainer();
+                               host.Define();
+
                        } else {
                                expression_method = null;
                        }
@@ -682,6 +724,7 @@ namespace Mono.CSharp
                        }
 
                        if (host != null){
+                               host.PrepareEmit ();
                                host.EmitContainer ();
                        }
                        
@@ -1055,6 +1098,27 @@ namespace Mono.CSharp
 #endif
        }
 
+       class InteractiveMethod : Method
+       {
+               public InteractiveMethod(TypeDefinition parent, FullNamedExpression returnType, Modifiers mod, ParametersCompiled parameters)
+                       : base(parent, returnType, mod, new MemberName("Host"), parameters, null)
+               {
+               }
+
+               public void ChangeToAsync ()
+               {
+                       ModFlags |= Modifiers.ASYNC;
+                       ModFlags &= ~Modifiers.UNSAFE;
+                       type_expr = new TypeExpression(Module.PredefinedTypes.Task.TypeSpec, Location);
+                       parameters = ParametersCompiled.EmptyReadOnlyParameters;
+               }
+
+               public override string GetSignatureForError()
+               {
+                       return "InteractiveHost";
+               }
+       }
+
        class HoistedEvaluatorVariable : HoistedVariable
        {
                public HoistedEvaluatorVariable (Field field)
@@ -1075,11 +1139,17 @@ namespace Mono.CSharp
        ///    the return value for an invocation.
        /// </summary>
        class OptionalAssign : SimpleAssign {
-               public OptionalAssign (Expression t, Expression s, Location loc)
-                       : base (t, s, loc)
+               public OptionalAssign (Expression s, Location loc)
+                       : base (null, s, loc)
                {
                }
 
+               public override Location StartLocation {
+                       get {
+                               return Location.Null;
+                       }
+               }
+
                protected override Expression DoResolve (ResolveContext ec)
                {
                        Expression clone = source.Clone (new CloneContext ());
@@ -1092,7 +1162,7 @@ namespace Mono.CSharp
                        // A useful feature for the REPL: if we can resolve the expression
                        // as a type, Describe the type;
                        //
-                       if (ec.Module.Evaluator.DescribeTypeExpressions){
+                       if (ec.Module.Evaluator.DescribeTypeExpressions && !(ec.CurrentAnonymousMethod is AsyncInitializer)) {
                                var old_printer = ec.Report.SetPrinter (new SessionReportPrinter ());
                                Expression tclone;
                                try {
@@ -1118,8 +1188,29 @@ namespace Mono.CSharp
                        }
 
                        source = clone;
+
+                       var host = (Method) ec.MemberContext.CurrentMemberDefinition;
+
+                       if (host.ParameterInfo.IsEmpty) {
+                               eclass = ExprClass.Value;
+                               type = InternalType.FakeInternalType;
+                               return this;
+                       }
+
+                       target = new SimpleName (host.ParameterInfo[0].Name, Location);
+
                        return base.DoResolve (ec);
                }
+
+               public override void EmitStatement(EmitContext ec)
+               {
+                       if (target == null) {
+                               source.Emit (ec);
+                               return;
+                       }
+
+                       base.EmitStatement(ec);
+               }
        }
 
        public class Undo
index a43e4ab7dc84ee792573907ed88c4e4add0954b9..a127fd7e45e31fe974b59e518ba2d45ba8c9c429 100644 (file)
@@ -80,7 +80,7 @@ namespace Mono.CSharp
                public override void Emit (EmitContext ec)
                {
                        var call = new CallEmitter ();
-                       call.EmitPredefined (ec, oper, arguments);
+                       call.EmitPredefined (ec, oper, arguments, loc);
                }
 
                public override SLE.Expression MakeExpression (BuilderContext ctx)
@@ -1437,10 +1437,10 @@ namespace Mono.CSharp
                {
                        if (result)
                                ec.Report.Warning (183, 1, loc, "The given expression is always of the provided (`{0}') type",
-                                       TypeManager.CSharpName (probe_type_expr));
+                                       probe_type_expr.GetSignatureForError ());
                        else
                                ec.Report.Warning (184, 1, loc, "The given expression is never of the provided (`{0}') type",
-                                       TypeManager.CSharpName (probe_type_expr));
+                                       probe_type_expr.GetSignatureForError ());
 
                        return ReducedExpression.Create (new BoolConstant (ec.BuiltinTypes, result, loc), this);
                }
@@ -1630,7 +1630,7 @@ namespace Mono.CSharp
                                } else {
                                        ec.Report.Error (77, loc,
                                                "The `as' operator cannot be used with a non-nullable value type `{0}'",
-                                               TypeManager.CSharpName (type));
+                                               type.GetSignatureForError ());
                                }
                                return null;
                        }
@@ -1663,7 +1663,7 @@ namespace Mono.CSharp
                        }
 
                        ec.Report.Error (39, loc, "Cannot convert type `{0}' to `{1}' via a built-in conversion",
-                               TypeManager.CSharpName (etype), TypeManager.CSharpName (type));
+                               etype.GetSignatureForError (), type.GetSignatureForError ());
 
                        return null;
                }
@@ -1702,7 +1702,7 @@ namespace Mono.CSharp
                                return null;
 
                        if (type.IsStatic) {
-                               ec.Report.Error (716, loc, "Cannot convert to static type `{0}'", TypeManager.CSharpName (type));
+                               ec.Report.Error (716, loc, "Cannot convert to static type `{0}'", type.GetSignatureForError ());
                                return null;
                        }
 
@@ -1868,6 +1868,8 @@ namespace Mono.CSharp
                {
                        protected readonly TypeSpec left;
                        protected readonly TypeSpec right;
+                       protected readonly TypeSpec left_unwrap;
+                       protected readonly TypeSpec right_unwrap;
                        public readonly Operator OperatorsMask;
                        public TypeSpec ReturnType;
 
@@ -1891,45 +1893,183 @@ namespace Mono.CSharp
                                if ((op_mask & Operator.ValuesOnlyMask) != 0)
                                        throw new InternalErrorException ("Only masked values can be used");
 
+                               if ((op_mask & Operator.NullableMask) != 0) {
+                                       left_unwrap = Nullable.NullableInfo.GetUnderlyingType (ltype);
+                                       right_unwrap = Nullable.NullableInfo.GetUnderlyingType (rtype);
+                               } else {
+                                       left_unwrap = ltype;
+                                       right_unwrap = rtype;
+                               }
+
                                this.left = ltype;
                                this.right = rtype;
                                this.OperatorsMask = op_mask;
                                this.ReturnType = return_type;
                        }
 
-                       public virtual Expression ConvertResult (ResolveContext ec, Binary b)
+                       public bool IsLifted {
+                               get {
+                                       return (OperatorsMask & Operator.NullableMask) != 0;
+                               }
+                       }
+
+                       public virtual Expression ConvertResult (ResolveContext rc, Binary b)
                        {
+                               Constant c;
+
+                               var left_expr = b.left;
+                               var right_expr = b.right;
+
                                b.type = ReturnType;
 
-                               b.left = Convert.ImplicitConversion (ec, b.left, left, b.left.Location);
-                               b.right = Convert.ImplicitConversion (ec, b.right, right, b.right.Location);
+                               if (IsLifted) {
+                                       if (rc.HasSet (ResolveContext.Options.ExpressionTreeConversion)) {
+                                               b.left = Convert.ImplicitConversion (rc, b.left, left, b.left.Location);
+                                               b.right = Convert.ImplicitConversion (rc, b.right, right, b.right.Location);
+                                       }
+
+                                       if (right_expr.IsNull) {
+                                               if ((b.oper & Operator.EqualityMask) != 0) {
+                                                       if (!left_expr.Type.IsNullableType && left_expr.Type == left_unwrap)
+                                                               return b.CreateLiftedValueTypeResult (rc, left_unwrap);
+                                               } else if ((b.oper & Operator.BitwiseMask) != 0) {
+                                                       if (left_unwrap.BuiltinType != BuiltinTypeSpec.Type.Bool)
+                                                               return Nullable.LiftedNull.CreateFromExpression (rc, b);
+                                               } else {
+                                                       b.left = Convert.ImplicitConversion (rc, b.left, left, b.left.Location);
+                                                       b.right = Convert.ImplicitConversion (rc, b.right, right, b.right.Location);
+
+                                                       if ((b.Oper & (Operator.ArithmeticMask | Operator.ShiftMask)) != 0)
+                                                               return Nullable.LiftedNull.CreateFromExpression (rc, b);
+
+                                                       return b.CreateLiftedValueTypeResult (rc, left);
+                                               }
+                                       } else if (left_expr.IsNull) {
+                                               if ((b.oper & Operator.EqualityMask) != 0) {
+                                                       if (!right_expr.Type.IsNullableType && right_expr.Type == right_unwrap)
+                                                               return b.CreateLiftedValueTypeResult (rc, right_unwrap);
+                                               } else if ((b.oper & Operator.BitwiseMask) != 0) {
+                                                       if (right_unwrap.BuiltinType != BuiltinTypeSpec.Type.Bool)
+                                                               return Nullable.LiftedNull.CreateFromExpression (rc, b);
+                                               } else {
+                                                       b.left = Convert.ImplicitConversion (rc, b.left, left, b.left.Location);
+                                                       b.right = Convert.ImplicitConversion (rc, b.right, right, b.right.Location);
+
+                                                       if ((b.Oper & (Operator.ArithmeticMask | Operator.ShiftMask)) != 0)
+                                                               return Nullable.LiftedNull.CreateFromExpression (rc, b);
+
+                                                       return b.CreateLiftedValueTypeResult (rc, right);
+                                               }
+                                       }
+                               }
 
                                //
                                // A user operators does not support multiple user conversions, but decimal type
                                // is considered to be predefined type therefore we apply predefined operators rules
                                // and then look for decimal user-operator implementation
                                //
-                               if (left.BuiltinType == BuiltinTypeSpec.Type.Decimal)
-                                       return b.ResolveUserOperator (ec, b.left, b.right);
+                               if (left.BuiltinType == BuiltinTypeSpec.Type.Decimal) {
+                                       b.left = Convert.ImplicitConversion (rc, b.left, left, b.left.Location);
+                                       b.right = Convert.ImplicitConversion (rc, b.right, right, b.right.Location);
+
+                                       return b.ResolveUserOperator (rc, b.left, b.right);
+                               }
 
-                               var c = b.right as Constant;
+                               c = right_expr as Constant;
                                if (c != null) {
-                                       if (c.IsDefaultValue && (b.oper == Operator.Addition || b.oper == Operator.Subtraction || (b.oper == Operator.BitwiseOr && !(b is Nullable.LiftedBinaryOperator))))
-                                               return ReducedExpression.Create (b.left, b).Resolve (ec);
+                                       if (c.IsDefaultValue) {
+                                               //
+                                               // Optimizes
+                                               // 
+                                               // (expr + 0) to expr
+                                               // (expr - 0) to expr
+                                               // (bool? | false) to bool?
+                                               //
+                                               if (b.oper == Operator.Addition || b.oper == Operator.Subtraction ||
+                                                       (b.oper == Operator.BitwiseOr && left_unwrap.BuiltinType == BuiltinTypeSpec.Type.Bool && c is BoolConstant)) {
+                                                       b.left = Convert.ImplicitConversion (rc, b.left, left, b.left.Location);
+                                                       return ReducedExpression.Create (b.left, b).Resolve (rc);
+                                               }
+                                       } else {
+                                               //
+                                               // Optimizes
+                                               //
+                                               // (bool? & true) to bool?
+                                               //
+                                               if (IsLifted && left_unwrap.BuiltinType == BuiltinTypeSpec.Type.Bool && b.oper == Operator.BitwiseAnd) {
+                                                       return ReducedExpression.Create (b.left, b).Resolve (rc);
+                                               }
+                                       }
+
                                        if ((b.oper == Operator.Multiply || b.oper == Operator.Division) && c.IsOneInteger)
-                                               return ReducedExpression.Create (b.left, b).Resolve (ec);
-                                       return b;
+                                               return ReducedExpression.Create (b.left, b).Resolve (rc);
+
+                                       if ((b.oper & Operator.ShiftMask) != 0 && c is IntConstant) {
+                                               b.right = new IntConstant (rc.BuiltinTypes, ((IntConstant) c).Value & GetShiftMask (left_unwrap), b.right.Location);
+                                       }
                                }
 
                                c = b.left as Constant;
                                if (c != null) {
-                                       if (c.IsDefaultValue && (b.oper == Operator.Addition || (b.oper == Operator.BitwiseOr && !(b is Nullable.LiftedBinaryOperator))))
-                                               return ReducedExpression.Create (b.right, b).Resolve (ec);
+                                       if (c.IsDefaultValue) {
+                                               //
+                                               // Optimizes
+                                               // 
+                                               // (0 + expr) to expr
+                                               // (false | bool?) to bool?
+                                               //
+                                               if (b.oper == Operator.Addition ||
+                                                       (b.oper == Operator.BitwiseOr && right_unwrap.BuiltinType == BuiltinTypeSpec.Type.Bool && c is BoolConstant)) {
+                                                       b.right = Convert.ImplicitConversion (rc, b.right, right, b.right.Location);
+                                                       return ReducedExpression.Create (b.right, b).Resolve (rc);
+                                               }
+                                       } else {
+                                               //
+                                               // Optimizes
+                                               //
+                                               // (true & bool?) to bool?
+                                               //
+                                               if (IsLifted && left_unwrap.BuiltinType == BuiltinTypeSpec.Type.Bool && b.oper == Operator.BitwiseAnd) {
+                                                       return ReducedExpression.Create (b.right, b).Resolve (rc);
+                                               }
+                                       }
+
                                        if (b.oper == Operator.Multiply && c.IsOneInteger)
-                                               return ReducedExpression.Create (b.right, b).Resolve (ec);
-                                       return b;
+                                               return ReducedExpression.Create (b.right, b).Resolve (rc);
+                               }
+
+                               if (IsLifted) {
+                                       var lifted = new Nullable.LiftedBinaryOperator (b);
+
+                                       TypeSpec ltype, rtype;
+                                       if (b.left.Type.IsNullableType) {
+                                               lifted.UnwrapLeft = new Nullable.Unwrap (b.left);
+                                               ltype = left_unwrap;
+                                       } else {
+                                               ltype = left;
+                                       }
+
+                                       if (b.right.Type.IsNullableType) {
+                                               lifted.UnwrapRight = new Nullable.Unwrap (b.right);
+                                               rtype = right_unwrap;
+                                       } else {
+                                               rtype = right;
+                                       }
+
+                                       lifted.Left = b.left.IsNull ?
+                                               b.left :
+                                               Convert.ImplicitConversion (rc, lifted.UnwrapLeft ?? b.left, ltype, b.left.Location);
+
+                                       lifted.Right = b.right.IsNull ?
+                                               b.right :
+                                               Convert.ImplicitConversion (rc, lifted.UnwrapRight ?? b.right, rtype, b.right.Location);
+
+                                       return lifted.Resolve (rc);
                                }
 
+                               b.left = Convert.ImplicitConversion (rc, b.left, left, b.left.Location);
+                               b.right = Convert.ImplicitConversion (rc, b.right, right, b.right.Location);
+
                                return b;
                        }
 
@@ -1953,16 +2093,22 @@ namespace Mono.CSharp
 
                        public PredefinedOperator ResolveBetterOperator (ResolveContext ec, PredefinedOperator best_operator)
                        {
+                               if ((OperatorsMask & Operator.DecomposedMask) != 0)
+                                       return best_operator;
+
+                               if ((best_operator.OperatorsMask & Operator.DecomposedMask) != 0)
+                                       return this;
+
                                int result = 0;
                                if (left != null && best_operator.left != null) {
-                                       result = OverloadResolver.BetterTypeConversion (ec, best_operator.left, left);
+                                       result = OverloadResolver.BetterTypeConversion (ec, best_operator.left_unwrap, left_unwrap);
                                }
 
                                //
                                // When second argument is same as the first one, the result is same
                                //
                                if (right != null && (left != right || best_operator.left != best_operator.right)) {
-                                       result |= OverloadResolver.BetterTypeConversion (ec, best_operator.right, right);
+                                       result |= OverloadResolver.BetterTypeConversion (ec, best_operator.right_unwrap, right_unwrap);
                                }
 
                                if (result == 0 || result > 2)
@@ -2007,44 +2153,6 @@ namespace Mono.CSharp
                        }
                }
 
-               sealed class PredefinedShiftOperator : PredefinedOperator
-               {
-                       public PredefinedShiftOperator (TypeSpec ltype, TypeSpec rtype, Operator op_mask)
-                               : base (ltype, rtype, op_mask)
-                       {
-                       }
-
-                       public override Expression ConvertResult (ResolveContext ec, Binary b)
-                       {
-                               b.left = Convert.ImplicitConversion (ec, b.left, left, b.left.Location);
-
-                               Expression expr_tree_expr = Convert.ImplicitConversion (ec, b.right, right, b.right.Location);
-
-                               int right_mask = left.BuiltinType == BuiltinTypeSpec.Type.Int || left.BuiltinType == BuiltinTypeSpec.Type.UInt ? 0x1f : 0x3f;
-
-                               //
-                               // b = b.left >> b.right & (0x1f|0x3f)
-                               //
-                               b.right = new Binary (Operator.BitwiseAnd,
-                                       b.right, new IntConstant (ec.BuiltinTypes, right_mask, b.right.Location)).Resolve (ec);
-
-                               //
-                               // Expression tree representation does not use & mask
-                               //
-                               b.right = ReducedExpression.Create (b.right, expr_tree_expr).Resolve (ec);
-                               b.type = ReturnType;
-
-                               //
-                               // Optimize shift by 0
-                               //
-                               var c = b.right as Constant;
-                               if (c != null && c.IsDefaultValue)
-                                       return ReducedExpression.Create (b.left, b).Resolve (ec);
-
-                               return b;
-                       }
-               }
-
                sealed class PredefinedEqualityOperator : PredefinedOperator
                {
                        MethodSpec equal_method, inequal_method;
@@ -2198,21 +2306,22 @@ namespace Mono.CSharp
                        LogicalMask             = 1 << 10,
                        AdditionMask    = 1 << 11,
                        SubtractionMask = 1 << 12,
-                       RelationalMask  = 1 << 13
+                       RelationalMask  = 1 << 13,
+
+                       DecomposedMask  = 1 << 19,
+                       NullableMask    = 1 << 20,
                }
 
-               protected enum State
+               enum State : byte
                {
                        None = 0,
                        Compound = 1 << 1,
-                       LeftNullLifted = 1 << 2,
-                       RightNullLifted = 1 << 3
                }
 
                readonly Operator oper;
-               protected Expression left, right;
-               protected State state;
-               Expression enum_conversion;
+               Expression left, right;
+               State state;
+               ConvCast.Mode enum_conversion;
 
                public Binary (Operator oper, Expression left, Expression right, bool isCompound)
                        : this (oper, left, right)
@@ -2255,6 +2364,12 @@ namespace Mono.CSharp
                        }
                }
 
+               public override Location StartLocation {
+                       get {
+                               return left.StartLocation;
+                       }
+               }
+
                #endregion
 
                /// <summary>
@@ -2340,14 +2455,14 @@ namespace Mono.CSharp
                                return;
 
                        string l, r;
-                       l = TypeManager.CSharpName (left.Type);
-                       r = TypeManager.CSharpName (right.Type);
+                       l = left.Type.GetSignatureForError ();
+                       r = right.Type.GetSignatureForError ();
 
                        ec.Report.Error (19, loc, "Operator `{0}' cannot be applied to operands of type `{1}' and `{2}'",
                                oper, l, r);
                }
                
-               protected void Error_OperatorCannotBeApplied (ResolveContext ec, Expression left, Expression right)
+               void Error_OperatorCannotBeApplied (ResolveContext ec, Expression left, Expression right)
                {
                        Error_OperatorCannotBeApplied (ec, left, right, OperName (oper), loc);
                }
@@ -2446,7 +2561,7 @@ namespace Mono.CSharp
                        return left.ContainsEmitWithAwait () || right.ContainsEmitWithAwait ();
                }
 
-               public static void EmitOperatorOpcode (EmitContext ec, Operator oper, TypeSpec l)
+               public static void EmitOperatorOpcode (EmitContext ec, Operator oper, TypeSpec l, Expression right)
                {
                        OpCode opcode;
 
@@ -2503,6 +2618,11 @@ namespace Mono.CSharp
                                break;
 
                        case Operator.RightShift:
+                               if (!(right is IntConstant)) {
+                                       ec.EmitInt (GetShiftMask (l));
+                                       ec.Emit (OpCodes.And);
+                               }
+
                                if (IsUnsigned (l))
                                        opcode = OpCodes.Shr_Un;
                                else
@@ -2510,6 +2630,11 @@ namespace Mono.CSharp
                                break;
                                
                        case Operator.LeftShift:
+                               if (!(right is IntConstant)) {
+                                       ec.EmitInt (GetShiftMask (l));
+                                       ec.Emit (OpCodes.And);
+                               }
+
                                opcode = OpCodes.Shl;
                                break;
 
@@ -2578,6 +2703,11 @@ namespace Mono.CSharp
                        ec.Emit (opcode);
                }
 
+               static int GetShiftMask (TypeSpec type)
+               {
+                       return type.BuiltinType == BuiltinTypeSpec.Type.Int || type.BuiltinType == BuiltinTypeSpec.Type.UInt ? 0x1f : 0x3f;
+               }
+
                static bool IsUnsigned (TypeSpec t)
                {
                        switch (t.BuiltinType) {
@@ -2597,8 +2727,10 @@ namespace Mono.CSharp
                        return t.BuiltinType == BuiltinTypeSpec.Type.Float || t.BuiltinType == BuiltinTypeSpec.Type.Double;
                }
 
-               Expression ResolveOperator (ResolveContext ec)
+               public Expression ResolveOperator (ResolveContext rc)
                {
+                       eclass = ExprClass.Value;
+
                        TypeSpec l = left.Type;
                        TypeSpec r = right.Type;
                        Expression expr;
@@ -2607,54 +2739,106 @@ namespace Mono.CSharp
                        //
                        // Handles predefined primitive types
                        //
-                       if (BuiltinTypeSpec.IsPrimitiveType (l) && BuiltinTypeSpec.IsPrimitiveType (r)) {
+                       if ((BuiltinTypeSpec.IsPrimitiveType (l) || (l.IsNullableType && BuiltinTypeSpec.IsPrimitiveType (Nullable.NullableInfo.GetUnderlyingType (l)))) &&
+                               (BuiltinTypeSpec.IsPrimitiveType (r) || (r.IsNullableType && BuiltinTypeSpec.IsPrimitiveType (Nullable.NullableInfo.GetUnderlyingType (r))))) {
                                if ((oper & Operator.ShiftMask) == 0) {
-                                       if (l.BuiltinType != BuiltinTypeSpec.Type.Bool && !DoBinaryOperatorPromotion (ec))
+                                       if (!DoBinaryOperatorPromotion (rc))
                                                return null;
 
-                                       primitives_only = true;
+                                       primitives_only = BuiltinTypeSpec.IsPrimitiveType (l) && BuiltinTypeSpec.IsPrimitiveType (r);
                                }
                        } else {
                                // Pointers
                                if (l.IsPointer || r.IsPointer)
-                                       return ResolveOperatorPointer (ec, l, r);
+                                       return ResolveOperatorPointer (rc, l, r);
+
+                               // User operators
+                               expr = ResolveUserOperator (rc, left, right);
+                               if (expr != null)
+                                       return expr;
+
 
-                               // Enums
                                bool lenum = l.IsEnum;
                                bool renum = r.IsEnum;
-                               if (lenum || renum) {
-                                       expr = ResolveOperatorEnum (ec, lenum, renum, l, r);
+                               if ((oper & (Operator.ComparisonMask | Operator.BitwiseMask)) != 0) {
+                                       //
+                                       // Enumerations
+                                       //
+                                       if (IsEnumOrNullableEnum (l) || IsEnumOrNullableEnum (r)) {
+                                               expr = ResolveSingleEnumOperators (rc, lenum, renum, l, r);
 
-                                       if (expr != null)
-                                               return expr;
-                               }
+                                               if (expr == null)
+                                                       return null;
 
-                               // Delegates
-                               if ((oper == Operator.Addition || oper == Operator.Subtraction) && (l.IsDelegate || r.IsDelegate)) {
-                                               
-                                       expr = ResolveOperatorDelegate (ec, l, r);
+                                               if ((oper & Operator.BitwiseMask) != 0) {
+                                                       expr = EmptyCast.Create (expr, type);
+                                                       AddEnumResultCast (type);
 
-                                       // TODO: Can this be ambiguous
-                                       if (expr != null)
+                                                       if (oper == Operator.BitwiseAnd && left.Type.IsEnum && right.Type.IsEnum) {
+                                                               expr = OptimizeAndOperation (expr);
+                                                       }
+                                               }
+
+                                               left = ConvertEnumOperandToUnderlyingType (rc, left);
+                                               right = ConvertEnumOperandToUnderlyingType (rc, right);
                                                return expr;
-                               }
+                                       }
+                               } else if ((oper == Operator.Addition || oper == Operator.Subtraction)) {
+                                       if (IsEnumOrNullableEnum (l) || IsEnumOrNullableEnum (r)) {
+                                               //
+                                               // Enumerations
+                                               //
+                                               expr = ResolveEnumOperators (rc, lenum, renum, l, r);
 
-                               // User operators
-                               expr = ResolveUserOperator (ec, left, right);
-                               if (expr != null)
-                                       return expr;
+                                               //
+                                               // We cannot break here there is also Enum + String possible match
+                                               // which is not ambiguous with predefined enum operators
+                                               //
+                                               if (expr != null) {
+                                                       left = ConvertEnumOperandToUnderlyingType (rc, left);
+                                                       right = ConvertEnumOperandToUnderlyingType (rc, right);
 
-                               // Predefined reference types equality
-                               if ((oper & Operator.EqualityMask) != 0) {
-                                       expr = ResolveOperatorEquality (ec, l, r);
-                                       if (expr != null)
-                                               return expr;
+                                                       return expr;
+                                               }
+                                       } else if (l.IsDelegate || r.IsDelegate) {
+                                               //
+                                               // Delegates
+                                               //
+                                               expr = ResolveOperatorDelegate (rc, l, r);
+
+                                               // TODO: Can this be ambiguous
+                                               if (expr != null)
+                                                       return expr;
+                                       }
                                }
                        }
+                       
+                       //
+                       // Equality operators are more complicated
+                       //
+                       if ((oper & Operator.EqualityMask) != 0) {
+                               return ResolveEquality (rc, l, r, primitives_only);
+                       }
+
+                       expr = ResolveOperatorPredefined (rc, rc.BuiltinTypes.OperatorsBinaryStandard, primitives_only);
+                       if (expr != null)
+                               return expr;
+
+                       if (primitives_only)
+                               return null;
+
+                       //
+                       // Lifted operators have lower priority
+                       //
+                       return ResolveOperatorPredefined (rc, rc.Module.OperatorsBinaryLifted, false);
+               }
 
-                       return ResolveOperatorPredefined (ec, ec.BuiltinTypes.OperatorsBinaryStandard, primitives_only, null);
+               static bool IsEnumOrNullableEnum (TypeSpec type)
+               {
+                       return type.IsEnum || (type.IsNullableType && Nullable.NullableInfo.GetUnderlyingType (type).IsEnum);
                }
 
+
                // at least one of 'left' or 'right' is an enumeration constant (EnumConstant or SideEffectConstant or ...)
                // if 'left' is not an enumeration constant, create one from the type of 'right'
                Constant EnumLiftUp (ResolveContext ec, Constant left, Constant right, Location loc)
@@ -2716,9 +2900,10 @@ namespace Mono.CSharp
 
                        // FIXME: consider constants
 
+                       var ltype = lcast != null ? lcast.UnderlyingType : rcast.UnderlyingType;
                        ec.Report.Warning (675, 3, loc,
                                "The operator `|' used on the sign-extended type `{0}'. Consider casting to a smaller unsigned type first",
-                               TypeManager.CSharpName (lcast != null ? lcast.UnderlyingType : rcast.UnderlyingType));
+                               ltype.GetSignatureForError ());
                }
 
                public static PredefinedOperator[] CreatePointerOperatorsTable (BuiltinTypes types)
@@ -2758,8 +2943,9 @@ namespace Mono.CSharp
                public static PredefinedOperator[] CreateStandardOperatorsTable (BuiltinTypes types)
                {
                        TypeSpec bool_type = types.Bool;
-                       return new PredefinedOperator[] {
-                               new PredefinedOperator (types.Int, Operator.ArithmeticMask | Operator.BitwiseMask),
+
+                       return new [] {
+                               new PredefinedOperator (types.Int, Operator.ArithmeticMask | Operator.BitwiseMask | Operator.ShiftMask),
                                new PredefinedOperator (types.UInt, Operator.ArithmeticMask | Operator.BitwiseMask),
                                new PredefinedOperator (types.Long, Operator.ArithmeticMask | Operator.BitwiseMask),
                                new PredefinedOperator (types.ULong, Operator.ArithmeticMask | Operator.BitwiseMask),
@@ -2776,15 +2962,64 @@ namespace Mono.CSharp
                                new PredefinedOperator (types.Decimal, Operator.ComparisonMask, bool_type),
 
                                new PredefinedStringOperator (types.String, Operator.AdditionMask, types.String),
-                               new PredefinedStringOperator (types.String, types.Object, Operator.AdditionMask, types.String),
-                               new PredefinedStringOperator (types.Object, types.String, Operator.AdditionMask, types.String),
+                               // Remaining string operators are in lifted tables
 
                                new PredefinedOperator (bool_type, Operator.BitwiseMask | Operator.LogicalMask | Operator.EqualityMask, bool_type),
 
-                               new PredefinedShiftOperator (types.Int, types.Int, Operator.ShiftMask),
-                               new PredefinedShiftOperator (types.UInt, types.Int, Operator.ShiftMask),
-                               new PredefinedShiftOperator (types.Long, types.Int, Operator.ShiftMask),
-                               new PredefinedShiftOperator (types.ULong, types.Int, Operator.ShiftMask)
+                               new PredefinedOperator (types.UInt, types.Int, Operator.ShiftMask),
+                               new PredefinedOperator (types.Long, types.Int, Operator.ShiftMask),
+                               new PredefinedOperator (types.ULong, types.Int, Operator.ShiftMask)
+                       };
+
+               }
+               public static PredefinedOperator[] CreateStandardLiftedOperatorsTable (ModuleContainer module)
+               {
+                       var nullable = module.PredefinedTypes.Nullable.TypeSpec;
+                       if (nullable == null)
+                               return new PredefinedOperator [0];
+
+                       var types = module.Compiler.BuiltinTypes;
+                       var bool_type = types.Bool;
+
+                       var nullable_bool = nullable.MakeGenericType (module, new[] { bool_type });
+                       var nullable_int = nullable.MakeGenericType (module, new[] { types.Int });
+                       var nullable_uint = nullable.MakeGenericType (module, new[] { types.UInt });
+                       var nullable_long = nullable.MakeGenericType (module, new[] { types.Long });
+                       var nullable_ulong = nullable.MakeGenericType (module, new[] { types.ULong });
+                       var nullable_float = nullable.MakeGenericType (module, new[] { types.Float });
+                       var nullable_double = nullable.MakeGenericType (module, new[] { types.Double });
+                       var nullable_decimal = nullable.MakeGenericType (module, new[] { types.Decimal });
+
+                       return new[] {
+                               new PredefinedOperator (nullable_int, Operator.NullableMask | Operator.ArithmeticMask | Operator.BitwiseMask | Operator.ShiftMask),
+                               new PredefinedOperator (nullable_uint, Operator.NullableMask | Operator.ArithmeticMask | Operator.BitwiseMask),
+                               new PredefinedOperator (nullable_long, Operator.NullableMask | Operator.ArithmeticMask | Operator.BitwiseMask),
+                               new PredefinedOperator (nullable_ulong, Operator.NullableMask | Operator.ArithmeticMask | Operator.BitwiseMask),
+                               new PredefinedOperator (nullable_float, Operator.NullableMask | Operator.ArithmeticMask),
+                               new PredefinedOperator (nullable_double, Operator.NullableMask | Operator.ArithmeticMask),
+                               new PredefinedOperator (nullable_decimal, Operator.NullableMask | Operator.ArithmeticMask),
+
+                               new PredefinedOperator (nullable_int, Operator.NullableMask | Operator.ComparisonMask, bool_type),
+                               new PredefinedOperator (nullable_uint, Operator.NullableMask | Operator.ComparisonMask, bool_type),
+                               new PredefinedOperator (nullable_long, Operator.NullableMask | Operator.ComparisonMask, bool_type),
+                               new PredefinedOperator (nullable_ulong, Operator.NullableMask | Operator.ComparisonMask, bool_type),
+                               new PredefinedOperator (nullable_float, Operator.NullableMask | Operator.ComparisonMask, bool_type),
+                               new PredefinedOperator (nullable_double, Operator.NullableMask | Operator.ComparisonMask, bool_type),
+                               new PredefinedOperator (nullable_decimal, Operator.NullableMask | Operator.ComparisonMask, bool_type),
+
+                               new PredefinedOperator (nullable_bool, Operator.NullableMask | Operator.BitwiseMask, nullable_bool),
+
+                               new PredefinedOperator (nullable_uint, nullable_int, Operator.NullableMask | Operator.ShiftMask),
+                               new PredefinedOperator (nullable_long, nullable_int, Operator.NullableMask | Operator.ShiftMask),
+                               new PredefinedOperator (nullable_ulong, nullable_int, Operator.NullableMask | Operator.ShiftMask),
+
+                               //
+                               // Not strictly lifted but need to be in second group otherwise expressions like
+                               // int + null would resolve to +(object, string) instead of +(int?, int?)
+                               //
+                               new PredefinedStringOperator (types.String, types.Object, Operator.AdditionMask, types.String),
+                               new PredefinedStringOperator (types.Object, types.String, Operator.AdditionMask, types.String),
+
                        };
                }
 
@@ -2792,113 +3027,168 @@ namespace Mono.CSharp
                {
                        TypeSpec bool_type = types.Bool;
 
-                       return new PredefinedOperator[] {
+                       return new[] {
                                new PredefinedEqualityOperator (types.String, bool_type),
                                new PredefinedEqualityOperator (types.Delegate, bool_type),
-                               new PredefinedOperator (bool_type, Operator.EqualityMask, bool_type)
+                               new PredefinedOperator (bool_type, Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (types.Int, Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (types.UInt, Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (types.Long, Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (types.ULong, Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (types.Float, Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (types.Double, Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (types.Decimal, Operator.EqualityMask, bool_type),
+                       };
+               }
+
+               public static PredefinedOperator[] CreateEqualityLiftedOperatorsTable (ModuleContainer module)
+               {
+                       var nullable = module.PredefinedTypes.Nullable.TypeSpec;
+
+                       if (nullable == null)
+                               return new PredefinedOperator [0];
+
+                       var types = module.Compiler.BuiltinTypes;
+                       var bool_type = types.Bool;
+                       var nullable_bool = nullable.MakeGenericType (module, new [] { bool_type });
+                       var nullable_int = nullable.MakeGenericType (module, new[] { types.Int });
+                       var nullable_uint = nullable.MakeGenericType (module, new[] { types.UInt });
+                       var nullable_long = nullable.MakeGenericType (module, new[] { types.Long });
+                       var nullable_ulong = nullable.MakeGenericType (module, new[] { types.ULong });
+                       var nullable_float = nullable.MakeGenericType (module, new[] { types.Float });
+                       var nullable_double = nullable.MakeGenericType (module, new[] { types.Double });
+                       var nullable_decimal = nullable.MakeGenericType (module, new[] { types.Decimal });
+
+                       return new [] {
+                               new PredefinedOperator (nullable_bool, Operator.NullableMask | Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (nullable_int, Operator.NullableMask | Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (nullable_uint, Operator.NullableMask | Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (nullable_long, Operator.NullableMask | Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (nullable_ulong, Operator.NullableMask | Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (nullable_float, Operator.NullableMask | Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (nullable_double, Operator.NullableMask | Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (nullable_decimal, Operator.NullableMask | Operator.EqualityMask, bool_type)
                        };
                }
 
                //
-               // Rules used during binary numeric promotion
+               // 7.2.6.2 Binary numeric promotions
                //
-               static bool DoNumericPromotion (ResolveContext rc, ref Expression prim_expr, ref Expression second_expr, TypeSpec type)
+               bool DoBinaryOperatorPromotion (ResolveContext rc)
                {
-                       Expression temp;
+                       TypeSpec ltype = left.Type;
+                       if (ltype.IsNullableType) {
+                               ltype = Nullable.NullableInfo.GetUnderlyingType (ltype);
+                       }
 
-                       Constant c = prim_expr as Constant;
-                       if (c != null) {
-                               temp = c.ConvertImplicitly (type);
-                               if (temp != null) {
-                                       prim_expr = temp;
-                                       return true;
-                               }
+                       //
+                       // This is numeric promotion code only
+                       //
+                       if (ltype.BuiltinType == BuiltinTypeSpec.Type.Bool)
+                               return true;
+
+                       TypeSpec rtype = right.Type;
+                       if (rtype.IsNullableType) {
+                               rtype = Nullable.NullableInfo.GetUnderlyingType (rtype);
                        }
 
-                       if (type.BuiltinType == BuiltinTypeSpec.Type.UInt) {
-                               switch (prim_expr.Type.BuiltinType) {
-                               case BuiltinTypeSpec.Type.Int:
-                               case BuiltinTypeSpec.Type.Short:
-                               case BuiltinTypeSpec.Type.SByte:
-                               case BuiltinTypeSpec.Type.Long:
-                                       type = rc.BuiltinTypes.Long;
+                       var lb = ltype.BuiltinType;
+                       var rb = rtype.BuiltinType;
+                       TypeSpec type;
+                       Expression expr;
 
-                                       if (type != second_expr.Type) {
-                                               c = second_expr as Constant;
-                                               if (c != null)
-                                                       temp = c.ConvertImplicitly (type);
-                                               else
-                                                       temp = Convert.ImplicitNumericConversion (second_expr, type);
-                                               if (temp == null)
-                                                       return false;
-                                               second_expr = temp;
-                                       }
-                                       break;
+                       if (lb == BuiltinTypeSpec.Type.Decimal || rb == BuiltinTypeSpec.Type.Decimal) {
+                               type = rc.BuiltinTypes.Decimal;
+                       } else if (lb == BuiltinTypeSpec.Type.Double || rb == BuiltinTypeSpec.Type.Double) {
+                               type = rc.BuiltinTypes.Double;
+                       } else if (lb == BuiltinTypeSpec.Type.Float || rb == BuiltinTypeSpec.Type.Float) {
+                               type = rc.BuiltinTypes.Float;
+                       } else if (lb == BuiltinTypeSpec.Type.ULong || rb == BuiltinTypeSpec.Type.ULong) {
+                               type = rc.BuiltinTypes.ULong;
+
+                               if (IsSignedType (lb)) {
+                                       expr = ConvertSignedConstant (left, type);
+                                       if (expr == null)
+                                               return false;
+                                       left = expr;
+                               } else if (IsSignedType (rb)) {
+                                       expr = ConvertSignedConstant (right, type);
+                                       if (expr == null)
+                                               return false;
+                                       right = expr;
                                }
-                       } else if (type.BuiltinType == BuiltinTypeSpec.Type.ULong) {
-                               //
-                               // A compile-time error occurs if the other operand is of type sbyte, short, int, or long
-                               //
-                               switch (type.BuiltinType) {
-                               case BuiltinTypeSpec.Type.Int:
-                               case BuiltinTypeSpec.Type.Long:
-                               case BuiltinTypeSpec.Type.Short:
-                               case BuiltinTypeSpec.Type.SByte:
-                                       return false;
+
+                       } else if (lb == BuiltinTypeSpec.Type.Long || rb == BuiltinTypeSpec.Type.Long) {
+                               type = rc.BuiltinTypes.Long;
+                       } else if (lb == BuiltinTypeSpec.Type.UInt || rb == BuiltinTypeSpec.Type.UInt) {
+                               type = rc.BuiltinTypes.UInt;
+
+                               if (IsSignedType (lb)) {
+                                       expr = ConvertSignedConstant (left, type);
+                                       if (expr == null)
+                                               type = rc.BuiltinTypes.Long;
+                               } else if (IsSignedType (rb)) {
+                                       expr = ConvertSignedConstant (right, type);
+                                       if (expr == null)
+                                               type = rc.BuiltinTypes.Long;
                                }
+                       } else {
+                               type = rc.BuiltinTypes.Int;
                        }
 
-                       temp = Convert.ImplicitNumericConversion (prim_expr, type);
-                       if (temp == null)
-                               return false;
-
-                       prim_expr = temp;
-                       return true;
-               }
+                       if (ltype != type) {
+                               expr = PromoteExpression (rc, left, type);
+                               if (expr == null)
+                                       return false;
 
-               //
-               // 7.2.6.2 Binary numeric promotions
-               //
-               public bool DoBinaryOperatorPromotion (ResolveContext ec)
-               {
-                       TypeSpec ltype = left.Type;
-                       TypeSpec rtype = right.Type;
-                       Expression temp;
+                               left = expr;
+                       }
 
-                       foreach (TypeSpec t in ec.BuiltinTypes.BinaryPromotionsTypes) {
-                               if (t == ltype)
-                                       return t == rtype || DoNumericPromotion (ec, ref right, ref left, t);
+                       if (rtype != type) {
+                               expr = PromoteExpression (rc, right, type);
+                               if (expr == null)
+                                       return false;
 
-                               if (t == rtype)
-                                       return t == ltype || DoNumericPromotion (ec, ref left, ref right, t);
+                               right = expr;
                        }
 
-                       TypeSpec int32 = ec.BuiltinTypes.Int;
-                       if (ltype != int32) {
-                               Constant c = left as Constant;
-                               if (c != null)
-                                       temp = c.ConvertImplicitly (int32);
-                               else
-                                       temp = Convert.ImplicitNumericConversion (left, int32);
+                       return true;
+               }
 
-                               if (temp == null)
-                                       return false;
-                               left = temp;
+               static bool IsSignedType (BuiltinTypeSpec.Type type)
+               {
+                       switch (type) {
+                       case BuiltinTypeSpec.Type.Int:
+                       case BuiltinTypeSpec.Type.Short:
+                       case BuiltinTypeSpec.Type.SByte:
+                       case BuiltinTypeSpec.Type.Long:
+                               return true;
+                       default:
+                               return false;
                        }
+               }
 
-                       if (rtype != int32) {
-                               Constant c = right as Constant;
-                               if (c != null)
-                                       temp = c.ConvertImplicitly (int32);
-                               else
-                                       temp = Convert.ImplicitNumericConversion (right, int32);
+               static Expression ConvertSignedConstant (Expression expr, TypeSpec type)
+               {
+                       var c = expr as Constant;
+                       if (c == null)
+                               return null;
 
-                               if (temp == null)
-                                       return false;
-                               right = temp;
+                       return c.ConvertImplicitly (type);
+               }
+
+               static Expression PromoteExpression (ResolveContext rc, Expression expr, TypeSpec type)
+               {
+                       if (expr.Type.IsNullableType) {
+                               return Convert.ImplicitConversionStandard (rc, expr,
+                                       rc.Module.PredefinedTypes.Nullable.TypeSpec.MakeGenericType (rc, new[] { type }), expr.Location);
                        }
 
-                       return true;
+                       var c = expr as Constant;
+                       if (c != null)
+                               return c.ConvertImplicitly (type);
+
+                       return Convert.ImplicitNumericConversion (expr, type);
                }
 
                protected override Expression DoResolve (ResolveContext ec)
@@ -2931,7 +3221,7 @@ namespace Mono.CSharp
                                // FIXME: resolve right expression as unreachable
                                // right.Resolve (ec);
 
-                               ec.Report.Warning (429, 4, loc, "Unreachable expression code detected");
+                               ec.Report.Warning (429, 4, right.StartLocation, "Unreachable expression code detected");
                                return left;
                        }
 
@@ -2939,7 +3229,6 @@ namespace Mono.CSharp
                        if (right == null)
                                return null;
 
-                       eclass = ExprClass.Value;
                        Constant rc = right as Constant;
 
                        // The conversion rules are ignored in enum context but why
@@ -3038,20 +3327,10 @@ namespace Mono.CSharp
                                return new DynamicExpressionStatement (this, args, loc).Resolve (ec);
                        }
 
-                       if (ec.Module.Compiler.Settings.Version >= LanguageVersion.ISO_2 &&
-                               ((left.Type.IsNullableType && (right is NullLiteral || right.Type.IsNullableType || TypeSpec.IsValueType (right.Type))) ||
-                               (TypeSpec.IsValueType (left.Type) && right is NullLiteral) ||
-                               (right.Type.IsNullableType && (left is NullLiteral || left.Type.IsNullableType || TypeSpec.IsValueType (left.Type))) ||
-                               (TypeSpec.IsValueType (right.Type) && left is NullLiteral))) {
-                               var lifted = new Nullable.LiftedBinaryOperator (oper, left, right);
-                               lifted.state = state;
-                               return lifted.Resolve (ec);
-                       }
-
                        return DoResolveCore (ec, left, right);
                }
 
-               protected Expression DoResolveCore (ResolveContext ec, Expression left_orig, Expression right_orig)
+               Expression DoResolveCore (ResolveContext ec, Expression left_orig, Expression right_orig)
                {
                        Expression expr = ResolveOperator (ec);
                        if (expr == null)
@@ -3068,6 +3347,13 @@ namespace Mono.CSharp
 
                public override SLE.Expression MakeExpression (BuilderContext ctx)
                {
+                       return MakeExpression (ctx, left, right);
+               }
+
+               public SLE.Expression MakeExpression (BuilderContext ctx, Expression left, Expression right)
+               {
+                       Console.WriteLine ("{0} x {1}", left.Type.GetSignatureForError (), right.Type.GetSignatureForError ());
+
                        var le = left.MakeExpression (ctx);
                        var re = right.MakeExpression (ctx);
                        bool is_checked = ctx.HasSet (BuilderContext.Options.CheckedScope);
@@ -3153,15 +3439,14 @@ namespace Mono.CSharp
                        if (method == null)
                                return new EmptyExpression (ec.BuiltinTypes.Decimal);
 
-                       MethodGroupExpr mg = MethodGroupExpr.CreatePredefined (method, ec.BuiltinTypes.Delegate, loc);
-                       Expression expr = new UserOperatorCall (mg.BestCandidate, args, CreateExpressionTree, loc);
+                       Expression expr = new UserOperatorCall (method, args, CreateExpressionTree, loc);
                        return new ClassCast (expr, l);
                }
 
                //
-               // Enumeration operators
+               // Resolves enumeration operators where only single predefined overload exists, handles lifted versions too
                //
-               Expression ResolveOperatorEnum (ResolveContext ec, bool lenum, bool renum, TypeSpec ltype, TypeSpec rtype)
+               Expression ResolveSingleEnumOperators (ResolveContext rc, bool lenum, bool renum, TypeSpec ltype, TypeSpec rtype)
                {
                        //
                        // bool operator == (E x, E y);
@@ -3175,264 +3460,388 @@ namespace Mono.CSharp
                        // E operator | (E x, E y);
                        // E operator ^ (E x, E y);
                        //
-                       // U operator - (E e, E f)
-                       // E operator - (E e, U x)
-                       // E operator - (U x, E e)      // LAMESPEC: Not covered by the specification
-                       //
-                       // E operator + (E e, U x)
-                       // E operator + (U x, E e)
-                       //
-                       Expression ltemp = left;
-                       Expression rtemp = right;
-                       TypeSpec underlying_type;
-                       TypeSpec underlying_type_result;
-                       TypeSpec res_type;
                        Expression expr;
-                       
-                       //
-                       // LAMESPEC: There is never ambiguous conversion between enum operators
-                       // the one which contains more enum parameters always wins even if there
-                       // is an implicit conversion involved
-                       //
-                       if ((oper & (Operator.ComparisonMask | Operator.BitwiseMask)) != 0) {
-                               if (renum) {
-                                       underlying_type = EnumSpec.GetUnderlyingType (rtype);
-                                       expr = Convert.ImplicitConversion (ec, left, rtype, loc);
-                                       if (expr == null)
-                                               return null;
+                       if ((oper & Operator.ComparisonMask) != 0) {
+                               type = rc.BuiltinTypes.Bool;
+                       } else {
+                               if (lenum)
+                                       type = ltype;
+                               else if (renum)
+                                       type = rtype;
+                               else if (ltype.IsNullableType && Nullable.NullableInfo.GetUnderlyingType (ltype).IsEnum)
+                                       type = ltype;
+                               else
+                                       type = rtype;
+                       }
 
-                                       left = expr;
-                                       ltype = expr.Type;
-                               } else if (lenum) {
-                                       underlying_type = EnumSpec.GetUnderlyingType (ltype);
-                                       expr = Convert.ImplicitConversion (ec, right, ltype, loc);
-                                       if (expr == null)
-                                               return null;
+                       if (ltype == rtype) {
+                               if (lenum || renum)
+                                       return this;
+
+                               var lifted = new Nullable.LiftedBinaryOperator (this);
+                               lifted.Left = left;
+                               lifted.Right = right;
+                               return lifted.Resolve (rc);
+                       }
 
+                       if (renum && !ltype.IsNullableType) {
+                               expr = Convert.ImplicitConversion (rc, left, rtype, loc);
+                               if (expr != null) {
+                                       left = expr;
+                                       return this;
+                               }
+                       } else if (lenum && !rtype.IsNullableType) {
+                               expr = Convert.ImplicitConversion (rc, right, ltype, loc);
+                               if (expr != null) {
                                        right = expr;
-                                       rtype = expr.Type;
-                               } else {
-                                       return null;
+                                       return this;
                                }
+                       }
 
-                               if ((oper & Operator.BitwiseMask) != 0) {
-                                       res_type = ltype;
-                                       underlying_type_result = underlying_type;
-                               } else {
-                                       res_type = null;
-                                       underlying_type_result = null;
-                               }
-                       } else if (oper == Operator.Subtraction) {
-                               if (renum) {
-                                       underlying_type = EnumSpec.GetUnderlyingType (rtype);
-                                       if (ltype != rtype) {
-                                               expr = Convert.ImplicitConversion (ec, left, rtype, left.Location);
-                                               if (expr == null) {
-                                                       expr = Convert.ImplicitConversion (ec, left, underlying_type, left.Location);
-                                                       if (expr == null)
-                                                               return null;
-
-                                                       res_type = rtype;
-                                               } else {
-                                                       res_type = underlying_type;
-                                               }
+                       //
+                       // Now try lifted version of predefined operator
+                       //
+                       var nullable_type = rc.Module.PredefinedTypes.Nullable.TypeSpec;
+                       if (nullable_type != null) {
+                               if (renum && !ltype.IsNullableType) {
+                                       var lifted_type = nullable_type.MakeGenericType (rc.Module, new[] { rtype });
 
+                                       expr = Convert.ImplicitConversion (rc, left, lifted_type, loc);
+                                       if (expr != null) {
                                                left = expr;
-                                       } else {
-                                               res_type = underlying_type;
+                                               right = Convert.ImplicitConversion (rc, right, lifted_type, loc);
+                                       }
+
+                                       if ((oper & Operator.BitwiseMask) != 0)
+                                               type = lifted_type;
+
+                                       if (left.IsNull) {
+                                               if ((oper & Operator.BitwiseMask) != 0)
+                                                       return Nullable.LiftedNull.CreateFromExpression (rc, this);
+
+                                               return CreateLiftedValueTypeResult (rc, rtype);
+                                       }
+
+                                       if (expr != null) {
+                                               var lifted = new Nullable.LiftedBinaryOperator (this);
+                                               lifted.Left = expr;
+                                               lifted.Right = right;
+                                               return lifted.Resolve (rc);
                                        }
+                               } else if (lenum && !rtype.IsNullableType) {
+                                       var lifted_type = nullable_type.MakeGenericType (rc.Module, new[] { ltype });
+
+                                       expr = Convert.ImplicitConversion (rc, right, lifted_type, loc);
+                                       if (expr != null) {
+                                               right = expr;
+                                               left = Convert.ImplicitConversion (rc, left, lifted_type, loc);
+                                       }
+
+                                       if ((oper & Operator.BitwiseMask) != 0)
+                                               type = lifted_type;
+
+                                       if (right.IsNull) {
+                                               if ((oper & Operator.BitwiseMask) != 0)
+                                                       return Nullable.LiftedNull.CreateFromExpression (rc, this);
+
+                                               return CreateLiftedValueTypeResult (rc, ltype);
+                                       }
+
+                                       if (expr != null) {
+                                               var lifted = new Nullable.LiftedBinaryOperator (this);
+                                               lifted.Left = left;
+                                               lifted.Right = expr;
+                                               return lifted.Resolve (rc);
+                                       }
+                               } else if (rtype.IsNullableType && Nullable.NullableInfo.GetUnderlyingType (rtype).IsEnum) {
+                                       if (left.IsNull) {
+                                               if (rc.HasSet (ResolveContext.Options.ExpressionTreeConversion))
+                                                       left = Convert.ImplicitConversion (rc, left, rtype, left.Location);
+
+                                               if ((oper & Operator.RelationalMask) != 0)
+                                                       return CreateLiftedValueTypeResult (rc, rtype);
+
+                                               if ((oper & Operator.BitwiseMask) != 0)
+                                                       return Nullable.LiftedNull.CreateFromExpression (rc, this);
 
-                                       underlying_type_result = underlying_type;
-                               } else if (lenum) {
-                                       underlying_type = EnumSpec.GetUnderlyingType (ltype);
-                                       expr = Convert.ImplicitConversion (ec, right, ltype, right.Location);
-                                       if (expr == null || expr is EnumConstant) {
-                                               expr = Convert.ImplicitConversion (ec, right, underlying_type, right.Location);
+                                               // Equality operators are valid between E? and null
+                                               expr = left;
+                                       } else {
+                                               expr = Convert.ImplicitConversion (rc, left, Nullable.NullableInfo.GetUnderlyingType (rtype), loc);
                                                if (expr == null)
                                                        return null;
+                                       }
+
+                                       if (expr != null) {
+                                               var lifted = new Nullable.LiftedBinaryOperator (this);
+                                               lifted.Left = expr;
+                                               lifted.Right = right;
+                                               return lifted.Resolve (rc);
+                                       }
+                               } else if (ltype.IsNullableType && Nullable.NullableInfo.GetUnderlyingType (ltype).IsEnum) {
+                                       if (right.IsNull) {
+                                               if (rc.HasSet (ResolveContext.Options.ExpressionTreeConversion))
+                                                       right = Convert.ImplicitConversion (rc, right, ltype, right.Location);
+
+                                               if ((oper & Operator.RelationalMask) != 0)
+                                                       return CreateLiftedValueTypeResult (rc, ltype);
+
+                                               if ((oper & Operator.BitwiseMask) != 0)
+                                                       return Nullable.LiftedNull.CreateFromExpression (rc, this);
 
-                                               res_type = ltype;
+                                               // Equality operators are valid between E? and null
+                                               expr = right;
                                        } else {
-                                               res_type = underlying_type;
+                                               expr = Convert.ImplicitConversion (rc, right, Nullable.NullableInfo.GetUnderlyingType (ltype), loc);
+                                               if (expr == null)
+                                                       return null;
                                        }
 
-                                       right = expr;
-                                       underlying_type_result = underlying_type;
-                               } else {
-                                       return null;
-                               }
-                       } else if (oper == Operator.Addition) {
-                               if (lenum) {
-                                       underlying_type = EnumSpec.GetUnderlyingType (ltype);
-                                       res_type = ltype;
+                                       if (expr != null) {
+                                               var lifted = new Nullable.LiftedBinaryOperator (this);
+                                               lifted.Left = left;
+                                               lifted.Right = expr;
+                                               return lifted.Resolve (rc);
+                                       }
+                               }
+                       }
+
+                       return null;
+               }
+
+               static Expression ConvertEnumOperandToUnderlyingType (ResolveContext rc, Expression expr)
+               {
+                       TypeSpec underlying_type;
+                       if (expr.Type.IsNullableType) {
+                               var nt = Nullable.NullableInfo.GetUnderlyingType (expr.Type);
+                               if (nt.IsEnum)
+                                       underlying_type = EnumSpec.GetUnderlyingType (nt);
+                               else
+                                       underlying_type = nt;
+                       } else if (expr.Type.IsEnum) {
+                               underlying_type = EnumSpec.GetUnderlyingType (expr.Type);
+                       } else {
+                               underlying_type = expr.Type;
+                       }
+
+                       switch (underlying_type.BuiltinType) {
+                       case BuiltinTypeSpec.Type.SByte:
+                       case BuiltinTypeSpec.Type.Byte:
+                       case BuiltinTypeSpec.Type.Short:
+                       case BuiltinTypeSpec.Type.UShort:
+                               underlying_type = rc.BuiltinTypes.Int;
+                               break;
+                       }
+
+                       if (expr.Type.IsNullableType)
+                               underlying_type = rc.Module.PredefinedTypes.Nullable.TypeSpec.MakeGenericType (rc.Module, new[] { underlying_type });
+
+                       if (expr.Type == underlying_type)
+                               return expr;
+
+                       return EmptyCast.Create (expr, underlying_type);
+               }
+
+               Expression ResolveEnumOperators (ResolveContext rc, bool lenum, bool renum, TypeSpec ltype, TypeSpec rtype)
+               {
+                       //
+                       // U operator - (E e, E f)
+                       // E operator - (E e, U x)  // Internal decomposition operator
+                       // E operator - (U x, E e)      // Internal decomposition operator
+                       //
+                       // E operator + (E e, U x)
+                       // E operator + (U x, E e)
+                       //
+
+                       TypeSpec enum_type;
+
+                       if (lenum)
+                               enum_type = ltype;
+                       else if (renum)
+                               enum_type = rtype;
+                       else if (ltype.IsNullableType && Nullable.NullableInfo.GetUnderlyingType (ltype).IsEnum)
+                               enum_type = ltype;
+                       else
+                               enum_type = rtype;
 
-                                       if (rtype != underlying_type && (state & (State.RightNullLifted | State.LeftNullLifted)) == 0) {
-                                               expr = Convert.ImplicitConversion (ec, right, underlying_type, right.Location);
-                                               if (expr == null)
-                                                       return null;
+                       Expression expr;
+                       if (!enum_type.IsNullableType) {
+                               expr = ResolveOperatorPredefined (rc, rc.Module.GetPredefinedEnumAritmeticOperators (enum_type, false), false);
+                               if (expr != null) {
+                                       if (oper == Operator.Subtraction)
+                                               expr = ConvertEnumSubtractionResult (rc, expr);
+                                       else
+                                               expr = ConvertEnumAdditionalResult (expr, enum_type);
 
-                                               right = expr;
-                                       }
-                               } else {
-                                       underlying_type = EnumSpec.GetUnderlyingType (rtype);
-                                       res_type = rtype;
-                                       if (ltype != underlying_type) {
-                                               expr = Convert.ImplicitConversion (ec, left, underlying_type, left.Location);
-                                               if (expr == null)
-                                                       return null;
+                                       AddEnumResultCast (expr.Type);
 
-                                               left = expr;
-                                       }
+                                       return expr;
                                }
 
-                               underlying_type_result = underlying_type;
-                       } else {
-                               return null;
-                       }
-
-                       // Unwrap the constant correctly, so DoBinaryOperatorPromotion can do the magic
-                       // with constants and expressions
-                       if (left.Type != underlying_type) {
-                               if (left is Constant)
-                                       left = ((Constant) left).ConvertExplicitly (false, underlying_type);
-                               else
-                                       left = EmptyCast.Create (left, underlying_type);
+                               enum_type = rc.Module.PredefinedTypes.Nullable.TypeSpec.MakeGenericType (rc.Module, new[] { enum_type });
                        }
 
-                       if (right.Type != underlying_type) {
-                               if (right is Constant)
-                                       right = ((Constant) right).ConvertExplicitly (false, underlying_type);
+                       expr = ResolveOperatorPredefined (rc, rc.Module.GetPredefinedEnumAritmeticOperators (enum_type, true), false);
+                       if (expr != null) {
+                               if (oper == Operator.Subtraction)
+                                       expr = ConvertEnumSubtractionResult (rc, expr);
                                else
-                                       right = EmptyCast.Create (right, underlying_type);
-                       }
+                                       expr = ConvertEnumAdditionalResult (expr, enum_type);
 
-                       //
-                       // C# specification uses explicit cast syntax which means binary promotion
-                       // should happen, however it seems that csc does not do that
-                       //
-                       if (!DoBinaryOperatorPromotion (ec)) {
-                               left = ltemp;
-                               right = rtemp;
-                               return null;
-                       }
-
-                       if (underlying_type_result != null && left.Type != underlying_type_result) {
-                               enum_conversion = Convert.ExplicitNumericConversion (ec, new EmptyExpression (left.Type), underlying_type_result);
+                               AddEnumResultCast (expr.Type);
                        }
 
-                       expr = ResolveOperatorPredefined (ec, ec.BuiltinTypes.OperatorsBinaryStandard, true, res_type);
-                       if (expr == null)
-                               return null;
+                       return expr;
+               }
 
-                       if (!IsCompound)
-                               return expr;
+               static Expression ConvertEnumAdditionalResult (Expression expr, TypeSpec enumType)
+               {
+                       return EmptyCast.Create (expr, enumType);
+               }
 
+               Expression ConvertEnumSubtractionResult (ResolveContext rc, Expression expr)
+               {
                        //
-                       // Section: 7.16.2
+                       // Enumeration subtraction has different result type based on
+                       // best overload
                        //
+                       TypeSpec result_type;
+                       if (left.Type == right.Type) {
+                               var c = right as EnumConstant;
+                               if (c != null && c.IsZeroInteger) {
+                                       //
+                                       // LAMESPEC: This is quite unexpected for expression E - 0 the return type is
+                                       // E which is not what expressions E - 1 or 0 - E return
+                                       //
+                                       result_type = left.Type;
+                               } else {
+                                       result_type = left.Type.IsNullableType ?
+                                               Nullable.NullableInfo.GetEnumUnderlyingType (rc.Module, left.Type) :
+                                               EnumSpec.GetUnderlyingType (left.Type);
+                               }
+                       } else if (IsEnumOrNullableEnum (left.Type)) {
+                               result_type = left.Type;
+                       } else {
+                               result_type = right.Type;
+                       }
 
-                       //
-                       // If the return type of the selected operator is implicitly convertible to the type of x
-                       //
-                       if (Convert.ImplicitConversionExists (ec, expr, ltype))
-                               return expr;
+                       return EmptyCast.Create (expr, result_type);
+               }
 
-                       //
-                       // Otherwise, if the selected operator is a predefined operator, if the return type of the
-                       // selected operator is explicitly convertible to the type of x, and if y is implicitly
-                       // convertible to the type of x or the operator is a shift operator, then the operation
-                       // is evaluated as x = (T)(x op y), where T is the type of x
-                       //
-                       expr = Convert.ExplicitConversion (ec, expr, ltype, loc);
-                       if (expr == null)
-                               return null;
+               void AddEnumResultCast (TypeSpec type)
+               {
+                       if (type.IsNullableType)
+                               type = Nullable.NullableInfo.GetUnderlyingType (type);
 
-                       if (Convert.ImplicitConversionExists (ec, ltemp, ltype))
-                               return expr;
+                       if (type.IsEnum)
+                               type = EnumSpec.GetUnderlyingType (type);
 
-                       return null;
+                       switch (type.BuiltinType) {
+                       case BuiltinTypeSpec.Type.SByte:
+                               enum_conversion = ConvCast.Mode.I4_I1;
+                               break;
+                       case BuiltinTypeSpec.Type.Byte:
+                               enum_conversion = ConvCast.Mode.I4_U1;
+                               break;
+                       case BuiltinTypeSpec.Type.Short:
+                               enum_conversion = ConvCast.Mode.I4_I2;
+                               break;
+                       case BuiltinTypeSpec.Type.UShort:
+                               enum_conversion = ConvCast.Mode.I4_U2;
+                               break;
+                       }
                }
 
                //
-               // 7.9.6 Reference type equality operators
+               // Equality operators rules
                //
-               Expression ResolveOperatorEquality (ResolveContext ec, TypeSpec l, TypeSpec r)
+               Expression ResolveEquality (ResolveContext ec, TypeSpec l, TypeSpec r, bool primitives_only)
                {
                        Expression result;
                        type = ec.BuiltinTypes.Bool;
+                       bool no_arg_conv = false;
 
-                       //
-                       // a, Both operands are reference-type values or the value null
-                       // b, One operand is a value of type T where T is a type-parameter and
-                       // the other operand is the value null. Furthermore T does not have the
-                       // value type constraint
-                       //
-                       // LAMESPEC: Very confusing details in the specification, basically any
-                       // reference like type-parameter is allowed
-                       //
-                       var tparam_l = l as TypeParameterSpec;
-                       var tparam_r = r as TypeParameterSpec;
-                       if (tparam_l != null) {
-                               if (right is NullLiteral && !tparam_l.HasSpecialStruct) {
-                                       left = new BoxedCast (left, ec.BuiltinTypes.Object);
-                                       return this;
-                               }
+                       if (!primitives_only) {
 
-                               if (!tparam_l.IsReferenceType)
-                                       return null;
+                               //
+                               // a, Both operands are reference-type values or the value null
+                               // b, One operand is a value of type T where T is a type-parameter and
+                               // the other operand is the value null. Furthermore T does not have the
+                               // value type constraint
+                               //
+                               // LAMESPEC: Very confusing details in the specification, basically any
+                               // reference like type-parameter is allowed
+                               //
+                               var tparam_l = l as TypeParameterSpec;
+                               var tparam_r = r as TypeParameterSpec;
+                               if (tparam_l != null) {
+                                       if (right is NullLiteral) {
+                                               if (tparam_l.GetEffectiveBase ().BuiltinType == BuiltinTypeSpec.Type.ValueType)
+                                                       return null;
 
-                               l = tparam_l.GetEffectiveBase ();
-                               left = new BoxedCast (left, l);
-                       } else if (left is NullLiteral && tparam_r == null) {
-                               if (!TypeSpec.IsReferenceType (r) || r.Kind == MemberKind.InternalCompilerType)
-                                       return null;
+                                               left = new BoxedCast (left, ec.BuiltinTypes.Object);
+                                               return this;
+                                       }
 
-                               return this;
-                       }
+                                       if (!tparam_l.IsReferenceType)
+                                               return null;
 
-                       if (tparam_r != null) {
-                               if (left is NullLiteral && !tparam_r.HasSpecialStruct) {
-                                       right = new BoxedCast (right, ec.BuiltinTypes.Object);
-                                       return this;
+                                       l = tparam_l.GetEffectiveBase ();
+                                       left = new BoxedCast (left, l);
+                               } else if (left is NullLiteral && tparam_r == null) {
+                                       if (TypeSpec.IsReferenceType (r))
+                                               return this;
+
+                                       if (r.Kind == MemberKind.InternalCompilerType)
+                                               return null;
                                }
 
-                               if (!tparam_r.IsReferenceType)
-                                       return null;
+                               if (tparam_r != null) {
+                                       if (left is NullLiteral) {
+                                               if (tparam_r.GetEffectiveBase ().BuiltinType == BuiltinTypeSpec.Type.ValueType)
+                                                       return null;
 
-                               r = tparam_r.GetEffectiveBase ();
-                               right = new BoxedCast (right, r);
-                       } else if (right is NullLiteral) {
-                               if (!TypeSpec.IsReferenceType (l) || l.Kind == MemberKind.InternalCompilerType)
-                                       return null;
+                                               right = new BoxedCast (right, ec.BuiltinTypes.Object);
+                                               return this;
+                                       }
 
-                               return this;
-                       }
+                                       if (!tparam_r.IsReferenceType)
+                                               return null;
 
-                       bool no_arg_conv = false;
+                                       r = tparam_r.GetEffectiveBase ();
+                                       right = new BoxedCast (right, r);
+                               } else if (right is NullLiteral) {
+                                       if (TypeSpec.IsReferenceType (l))
+                                               return this;
 
-                       //
-                       // LAMESPEC: method groups can be compared when they convert to other side delegate
-                       //
-                       if (l.IsDelegate) {
-                               if (right.eclass == ExprClass.MethodGroup) {
-                                       result = Convert.ImplicitConversion (ec, right, l, loc);
+                                       if (l.Kind == MemberKind.InternalCompilerType)
+                                               return null;
+                               }
+
+                               //
+                               // LAMESPEC: method groups can be compared when they convert to other side delegate
+                               //
+                               if (l.IsDelegate) {
+                                       if (right.eclass == ExprClass.MethodGroup) {
+                                               result = Convert.ImplicitConversion (ec, right, l, loc);
+                                               if (result == null)
+                                                       return null;
+
+                                               right = result;
+                                               r = l;
+                                       } else if (r.IsDelegate && l != r) {
+                                               return null;
+                                       }
+                               } else if (left.eclass == ExprClass.MethodGroup && r.IsDelegate) {
+                                       result = Convert.ImplicitConversionRequired (ec, left, r, loc);
                                        if (result == null)
                                                return null;
 
-                                       right = result;
-                                       r = l;
-                               } else if (r.IsDelegate && l != r) {
-                                       return null;
+                                       left = result;
+                                       l = r;
+                               } else {
+                                       no_arg_conv = l == r && !l.IsStruct;
                                }
-                       } else if (left.eclass == ExprClass.MethodGroup && r.IsDelegate) {
-                               result = Convert.ImplicitConversionRequired (ec, left, r, loc);
-                               if (result == null)
-                                       return null;
-
-                               left = result;
-                               l = r;
-                       } else {
-                               no_arg_conv = l == r && !l.IsStruct;
                        }
 
                        //
@@ -3450,9 +3859,34 @@ namespace Mono.CSharp
                        // not apply when both operands are of same reference type
                        //
                        if (r.BuiltinType != BuiltinTypeSpec.Type.Object && l.BuiltinType != BuiltinTypeSpec.Type.Object) {
-                               result = ResolveOperatorPredefined (ec, ec.BuiltinTypes.OperatorsBinaryEquality, no_arg_conv, null);
+                               result = ResolveOperatorPredefined (ec, ec.BuiltinTypes.OperatorsBinaryEquality, no_arg_conv);  
                                if (result != null)
                                        return result;
+
+                               //
+                               // Now try lifted version of predefined operators
+                               //
+                               if (no_arg_conv && !l.IsNullableType) {
+                                       //
+                                       // Optimizes cases which won't match
+                                       //
+                               } else {
+                                       result = ResolveOperatorPredefined (ec, ec.Module.OperatorsBinaryEqualityLifted, no_arg_conv);
+                                       if (result != null)
+                                               return result;
+                               }
+
+                               //
+                               // The == and != operators permit one operand to be a value of a nullable
+                               // type and the other to be the null literal, even if no predefined or user-defined
+                               // operator (in unlifted or lifted form) exists for the operation.
+                               //
+                               if ((l.IsNullableType && right.IsNull) || (r.IsNullableType && left.IsNull)) {
+                                       var lifted = new Nullable.LiftedBinaryOperator (this);
+                                       lifted.Left = left;
+                                       lifted.Right = right;
+                                       return lifted.Resolve (ec);
+                               }
                        }
 
                        //
@@ -3520,13 +3954,13 @@ namespace Mono.CSharp
                                return this;
                        }
 
-                       return ResolveOperatorPredefined (ec, ec.BuiltinTypes.OperatorsBinaryUnsafe, false, null);
+                       return ResolveOperatorPredefined (ec, ec.BuiltinTypes.OperatorsBinaryUnsafe, false);
                }
 
                //
                // Build-in operators method overloading
                //
-               protected virtual Expression ResolveOperatorPredefined (ResolveContext ec, PredefinedOperator [] operators, bool primitives_only, TypeSpec enum_type)
+               Expression ResolveOperatorPredefined (ResolveContext ec, PredefinedOperator [] operators, bool primitives_only)
                {
                        PredefinedOperator best_operator = null;
                        TypeSpec l = left.Type;
@@ -3557,7 +3991,7 @@ namespace Mono.CSharp
 
                                if (best_operator == null) {
                                        ec.Report.Error (34, loc, "Operator `{0}' is ambiguous on operands of type `{1}' and `{2}'",
-                                               OperName (oper), TypeManager.CSharpName (l), TypeManager.CSharpName (r));
+                                               OperName (oper), l.GetSignatureForError (), r.GetSignatureForError ());
 
                                        best_operator = po;
                                        break;
@@ -3567,41 +4001,68 @@ namespace Mono.CSharp
                        if (best_operator == null)
                                return null;
 
-                       Expression expr = best_operator.ConvertResult (ec, this);
+                       var expr = best_operator.ConvertResult (ec, this);
 
-                       //
-                       // Optimize &/&& constant expressions with 0 value
-                       //
-                       if (oper == Operator.BitwiseAnd || oper == Operator.LogicalAnd) {
-                               Constant rc = right as Constant;
-                               Constant lc = left as Constant;
-                               if (((lc != null && lc.IsDefaultValue) || (rc != null && rc.IsDefaultValue)) && !(this is Nullable.LiftedBinaryOperator)) {
-                                       //
-                                       // The result is a constant with side-effect
-                                       //
-                                       Constant side_effect = rc == null ?
-                                               new SideEffectConstant (lc, right, loc) :
-                                               new SideEffectConstant (rc, left, loc);
+                       if ((oper == Operator.BitwiseAnd || oper == Operator.LogicalAnd) && !best_operator.IsLifted) {
+                               expr = OptimizeAndOperation (expr);
+                       }
 
-                                       return ReducedExpression.Create (side_effect, expr);
-                               }
+                       return expr;
+               }
+
+               //
+               // Optimize &/&& constant expressions with 0 value
+               //
+               Expression OptimizeAndOperation (Expression expr)
+               {
+                       Constant rc = right as Constant;
+                       Constant lc = left as Constant;
+                       if ((lc != null && lc.IsDefaultValue) || (rc != null && rc.IsDefaultValue)) {
+                               //
+                               // The result is a constant with side-effect
+                               //
+                               Constant side_effect = rc == null ?
+                                       new SideEffectConstant (lc, right, loc) :
+                                       new SideEffectConstant (rc, left, loc);
+
+                               return ReducedExpression.Create (side_effect, expr);
                        }
 
-                       if (enum_type == null)
-                               return expr;
+                       return expr;
+               }
 
-                       //
-                       // HACK: required by enum_conversion
-                       //
-                       expr.Type = enum_type;
-                       return EmptyCast.Create (expr, enum_type);
+               //
+               // Value types can be compared with the null literal because of the lifting
+               // language rules. However the result is always true or false.
+               //
+               public Expression CreateLiftedValueTypeResult (ResolveContext rc, TypeSpec valueType)
+               {
+                       if (rc.HasSet (ResolveContext.Options.ExpressionTreeConversion)) {
+                               type = rc.BuiltinTypes.Bool;
+                               return this;
+                       }
+
+                       // FIXME: Handle side effect constants
+                       Constant c = new BoolConstant (rc.BuiltinTypes, Oper == Operator.Inequality, loc);
+
+                       if ((Oper & Operator.EqualityMask) != 0) {
+                               rc.Report.Warning (472, 2, loc, "The result of comparing value type `{0}' with null is always `{1}'",
+                                       valueType.GetSignatureForError (), c.GetValueAsLiteral ());
+                       } else {
+                               rc.Report.Warning (464, 2, loc, "The result of comparing type `{0}' with null is always `{1}'",
+                                       valueType.GetSignatureForError (), c.GetValueAsLiteral ());
+                       }
+
+                       return c;
                }
 
                //
                // Performs user-operator overloading
                //
-               protected virtual Expression ResolveUserOperator (ResolveContext ec, Expression left, Expression right)
+               Expression ResolveUserOperator (ResolveContext rc, Expression left, Expression right)
                {
+                       Expression oper_expr;
+
                        var op = ConvertBinaryToUserOperator (oper);
                        var l = left.Type;
                        if (l.IsNullableType)
@@ -3623,7 +4084,7 @@ namespace Mono.CSharp
 
                        Arguments args = new Arguments (2);
                        Argument larg = new Argument (left);
-                       args.Add (larg);
+                       args.Add (larg);        
                        Argument rarg = new Argument (right);
                        args.Add (rarg);
 
@@ -3637,50 +4098,198 @@ namespace Mono.CSharp
                                left_operators = right_operators;
                        }
 
-                       var res = new OverloadResolver (left_operators, OverloadResolver.Restrictions.ProbingOnly | 
-                               OverloadResolver.Restrictions.NoBaseMembers | OverloadResolver.Restrictions.BaseMembersIncluded, loc);
+                       const OverloadResolver.Restrictions restr = OverloadResolver.Restrictions.ProbingOnly |
+                               OverloadResolver.Restrictions.NoBaseMembers | OverloadResolver.Restrictions.BaseMembersIncluded;
 
-                       var oper_method = res.ResolveOperator (ec, ref args);
-                       if (oper_method == null)
-                               return null;
+                       var res = new OverloadResolver (left_operators, restr, loc);
 
-                       var llifted = (state & State.LeftNullLifted) != 0;
-                       var rlifted = (state & State.RightNullLifted) != 0;
-                       if ((Oper & Operator.EqualityMask) != 0) {
-                               var parameters = oper_method.Parameters;
-                               // LAMESPEC: No idea why this is not allowed
-                               if ((left is Nullable.Unwrap || right is Nullable.Unwrap) && parameters.Types [0] != parameters.Types [1])
+                       var oper_method = res.ResolveOperator (rc, ref args);
+                       if (oper_method == null) {
+                               //
+                               // Logical && and || cannot be lifted
+                               //
+                               if ((oper & Operator.LogicalMask) != 0)
+                                       return null;
+
+                               //
+                               // Apply lifted user operators only for liftable types. Implicit conversion
+                               // to nullable types is not allowed
+                               //
+                               if (!IsLiftedOperatorApplicable ())
+                                       return null;
+
+                               // TODO: Cache the result in module container
+                               var lifted_methods = CreateLiftedOperators (rc, left_operators);
+                               if (lifted_methods == null)
+                                       return null;
+
+                               res = new OverloadResolver (lifted_methods, restr | OverloadResolver.Restrictions.ProbingOnly, loc);
+
+                               oper_method = res.ResolveOperator (rc, ref args);
+                               if (oper_method == null)
                                        return null;
 
-                               // Binary operation was lifted but we have found a user operator
-                               // which requires value-type argument, we downgrade ourself back to
-                               // binary operation
-                               // LAMESPEC: The user operator is not called (it cannot be we are passing null to struct)
-                               // but compilation succeeds
-                               if ((llifted && !parameters.Types[0].IsStruct) || (rlifted && !parameters.Types[1].IsStruct)) {
-                                       state &= ~(State.LeftNullLifted | State.RightNullLifted);
+                               MethodSpec best_original = null;
+                               foreach (MethodSpec ms in left_operators) {
+                                       if (ms.MemberDefinition == oper_method.MemberDefinition) {
+                                               best_original = ms;
+                                               break;
+                                       }
                                }
-                       }
 
-                       Expression oper_expr;
+                               if (rc.HasSet (ResolveContext.Options.ExpressionTreeConversion)) {
+                                       //
+                                       // Expression trees use lifted notation in this case
+                                       //
+                                       this.left = Convert.ImplicitConversion (rc, left, oper_method.Parameters.Types[0], left.Location);
+                                       this.right = Convert.ImplicitConversion (rc, right, oper_method.Parameters.Types[1], left.Location);
+                               }
+
+                               var ptypes = best_original.Parameters.Types;
+
+                               if (left.IsNull || right.IsNull) {
+                                       //
+                                       // The lifted operator produces the value false if one or both operands are null for
+                                       // relational operators.
+                                       //
+                                       if ((oper & Operator.ComparisonMask) != 0) {
+                                               //
+                                               // CSC BUG: This should be different warning, csc reports CS0458 with bool? which is wrong
+                                               // because return type is actually bool
+                                               //
+                                               // For some reason CSC does not report this warning for equality operators
+                                               //
+                                               return CreateLiftedValueTypeResult (rc, left.IsNull ? ptypes [1] : ptypes [0]);
+                                       }
+
+                                       // The lifted operator produces a null value if one or both operands are null
+                                       //
+                                       if ((oper & (Operator.ArithmeticMask | Operator.ShiftMask | Operator.BitwiseMask)) != 0) {
+                                               type = oper_method.ReturnType;
+                                               return Nullable.LiftedNull.CreateFromExpression (rc, this);
+                                       }
+                               }
+
+                               type = oper_method.ReturnType;
+                               var lifted = new Nullable.LiftedBinaryOperator (this);
+                               lifted.UserOperator = best_original;
+
+                               if (left.Type.IsNullableType && !ptypes[0].IsNullableType) {
+                                       lifted.UnwrapLeft = new Nullable.Unwrap (left);
+                               }
 
-                       // TODO: CreateExpressionTree is allocated every time
+                               if (right.Type.IsNullableType && !ptypes[1].IsNullableType) {
+                                       lifted.UnwrapRight = new Nullable.Unwrap (right);
+                               }
+
+                               lifted.Left = Convert.ImplicitConversion (rc, lifted.UnwrapLeft ?? left, ptypes[0], left.Location);
+                               lifted.Right = Convert.ImplicitConversion (rc, lifted.UnwrapRight ?? right, ptypes[1], right.Location);
+
+                               return lifted.Resolve (rc);
+                       }
+                       
                        if ((oper & Operator.LogicalMask) != 0) {
+                               // TODO: CreateExpressionTree is allocated every time           
                                oper_expr = new ConditionalLogicalOperator (oper_method, args, CreateExpressionTree,
-                                       oper == Operator.LogicalAnd, loc).Resolve (ec);
+                                       oper == Operator.LogicalAnd, loc).Resolve (rc);
                        } else {
                                oper_expr = new UserOperatorCall (oper_method, args, CreateExpressionTree, loc);
                        }
 
-                       if (!llifted)
-                               this.left = larg.Expr;
-
-                       if (!rlifted)
-                               this.right = rarg.Expr;
+                       this.left = larg.Expr;
+                       this.right = rarg.Expr;
 
                        return oper_expr;
                }
 
+               bool IsLiftedOperatorApplicable ()
+               {
+                       if (left.Type.IsNullableType) {
+                               if ((oper & Operator.EqualityMask) != 0)
+                                       return !right.IsNull;
+
+                               return true;
+                       }
+
+                       if (right.Type.IsNullableType) {
+                               if ((oper & Operator.EqualityMask) != 0)
+                                       return !left.IsNull;
+
+                               return true;
+                       }
+
+                       if (TypeSpec.IsValueType (left.Type))
+                               return right.IsNull;
+
+                       if (TypeSpec.IsValueType (right.Type))
+                               return left.IsNull;
+
+                       return false;
+               }
+
+               List<MemberSpec> CreateLiftedOperators (ResolveContext rc, IList<MemberSpec> operators)
+               {
+                       var nullable_type = rc.Module.PredefinedTypes.Nullable.TypeSpec;
+                       if (nullable_type == null)
+                               return null;
+
+                       //
+                       // Lifted operators permit predefined and user-defined operators that operate
+                       // on non-nullable value types to also be used with nullable forms of those types.
+                       // Lifted operators are constructed from predefined and user-defined operators
+                       // that meet certain requirements
+                       //
+                       List<MemberSpec> lifted = null;
+                       foreach (MethodSpec oper in operators) {
+                               TypeSpec rt;
+                               if ((Oper & Operator.ComparisonMask) != 0) {
+                                       //
+                                       // Result type must be of type bool for lifted comparison operators
+                                       //
+                                       rt = oper.ReturnType;
+                                       if (rt.BuiltinType != BuiltinTypeSpec.Type.Bool)
+                                               continue;
+                               } else {
+                                       if (!TypeSpec.IsNonNullableValueType (oper.ReturnType))
+                                               continue;
+
+                                       rt = null;
+                               }
+
+                               var ptypes = oper.Parameters.Types;
+                               if (!TypeSpec.IsNonNullableValueType (ptypes [0]) || !TypeSpec.IsNonNullableValueType (ptypes [1]))
+                                       continue;
+
+                               //
+                               // LAMESPEC: I am not sure why but for equality operators to be lifted
+                               // both types have to match
+                               //
+                               if ((Oper & Operator.EqualityMask) != 0 && ptypes [0] != ptypes [1])
+                                       continue;
+
+                               if (lifted == null)
+                                       lifted = new List<MemberSpec> ();
+
+                               //
+                               // The lifted form is constructed by adding a single ? modifier to each operand and
+                               // result type except for comparison operators where return type is bool
+                               //
+                               if (rt == null)
+                                       rt = nullable_type.MakeGenericType (rc.Module, new[] { oper.ReturnType });
+
+                               var parameters = ParametersCompiled.CreateFullyResolved (
+                                       nullable_type.MakeGenericType (rc.Module, new [] { ptypes[0] }),
+                                       nullable_type.MakeGenericType (rc.Module, new [] { ptypes[1] }));
+
+                               var lifted_op = new MethodSpec (oper.Kind, oper.DeclaringType, oper.MemberDefinition,
+                                       rt, parameters, oper.Modifiers);
+
+                               lifted.Add (lifted_op);
+                       }
+
+                       return lifted;
+               }
+
                //
                // Merge two sets of user operators into one, they are mostly distinguish
                // except when they share base type and it contains an operator
@@ -3713,7 +4322,7 @@ namespace Mono.CSharp
                                } catch (OverflowException) {
                                        ec.Report.Warning (652, 2, loc,
                                                "A comparison between a constant and a variable is useless. The constant is out of the range of the variable type `{0}'",
-                                               TypeManager.CSharpName (type));
+                                               type.GetSignatureForError ());
                                }
                        }
                }
@@ -3880,11 +4489,6 @@ namespace Mono.CSharp
                }
                
                public override void Emit (EmitContext ec)
-               {
-                       EmitOperator (ec, left.Type);
-               }
-
-               protected virtual void EmitOperator (EmitContext ec, TypeSpec l)
                {
                        if (ec.HasSet (BuilderContext.Options.AsyncBody) && right.ContainsEmitWithAwait ()) {
                                left = left.EmitToField (ec);
@@ -3925,16 +4529,22 @@ namespace Mono.CSharp
                                }
                        }
 
+                       EmitOperator (ec, left, right);
+               }
+
+               public void EmitOperator (EmitContext ec, Expression left, Expression right)
+               {
                        left.Emit (ec);
                        right.Emit (ec);
-                       EmitOperatorOpcode (ec, oper, l);
+
+                       EmitOperatorOpcode (ec, oper, left.Type, right);
 
                        //
-                       // Nullable enum could require underlying type cast and we cannot simply wrap binary
-                       // expression because that would wrap lifted binary operation
+                       // Emit result enumerable conversion this way because it's quite complicated get it
+                       // to resolved tree because expression tree cannot see it.
                        //
-                       if (enum_conversion != null)
-                               enum_conversion.Emit (ec);
+                       if (enum_conversion != 0)
+                               ConvCast.Emit (ec, enum_conversion);
                }
 
                public override void EmitSideEffect (EmitContext ec)
@@ -4004,7 +4614,7 @@ namespace Mono.CSharp
                        return CreateExpressionTree (ec, null);
                }
 
-               Expression CreateExpressionTree (ResolveContext ec, Expression method)          
+               public Expression CreateExpressionTree (ResolveContext ec, Expression method)           
                {
                        string method_name;
                        bool lift_arg = false;
@@ -4273,7 +4883,7 @@ namespace Mono.CSharp
                        if (op_true == null || op_false == null) {
                                ec.Report.Error (218, loc,
                                        "The type `{0}' must have operator `true' and operator `false' defined when `{1}' is used as a short circuit operator",
-                                       TypeManager.CSharpName (type), oper.GetSignatureForError ());
+                                       type.GetSignatureForError (), oper.GetSignatureForError ());
                                return null;
                        }
 
@@ -4453,7 +5063,7 @@ namespace Mono.CSharp
                                        if (rtype.BuiltinType == BuiltinTypeSpec.Type.Long || rtype.BuiltinType == BuiltinTypeSpec.Type.ULong)
                                                ec.Emit (OpCodes.Conv_I8);
 
-                                       Binary.EmitOperatorOpcode (ec, Binary.Operator.Multiply, rtype);
+                                       Binary.EmitOperatorOpcode (ec, Binary.Operator.Multiply, rtype, right);
                                }
 
                                if (left_const == null) {
@@ -4462,7 +5072,7 @@ namespace Mono.CSharp
                                        else if (rtype.BuiltinType == BuiltinTypeSpec.Type.ULong)
                                                ec.Emit (OpCodes.Conv_U);
 
-                                       Binary.EmitOperatorOpcode (ec, op, op_type);
+                                       Binary.EmitOperatorOpcode (ec, op, op_type, right);
                                }
                        }
                }
@@ -4684,7 +5294,7 @@ namespace Mono.CSharp
                                } else {
                                        ec.Report.Error (173, true_expr.Location,
                                                "Type of conditional expression cannot be determined because there is no implicit conversion between `{0}' and `{1}'",
-                                               TypeManager.CSharpName (true_type), TypeManager.CSharpName (false_type));
+                                               true_type.GetSignatureForError (), false_type.GetSignatureForError ());
                                        return null;
                                }
                        }                       
@@ -5184,6 +5794,9 @@ namespace Mono.CSharp
 
                void SetAssigned (ResolveContext ec)
                {
+                       if (Parameter.HoistedVariant != null)
+                               Parameter.HoistedVariant.IsAssigned = true;
+
                        if (HasOutModifier && ec.DoFlowAnalysis)
                                ec.CurrentBranching.SetAssigned (VariableInfo);
                }
@@ -5409,7 +6022,7 @@ namespace Mono.CSharp
                                if (member_expr != null)
                                        member_expr = member_expr.Resolve (ec);
                        } else {
-                               member_expr = expr.Resolve (ec, ResolveFlags.VariableOrValue | ResolveFlags.MethodGroup);
+                               member_expr = expr.Resolve (ec);
                        }
 
                        if (member_expr == null)
@@ -5757,7 +6370,7 @@ namespace Mono.CSharp
 
                        if (type.IsPointer) {
                                ec.Report.Error (1919, loc, "Unsafe type `{0}' cannot be used in an object creation expression",
-                                       TypeManager.CSharpName (type));
+                                       type.GetSignatureForError ());
                                return null;
                        }
 
@@ -5780,13 +6393,13 @@ namespace Mono.CSharp
                                if ((tparam.SpecialConstraint & (SpecialConstraint.Struct | SpecialConstraint.Constructor)) == 0 && !TypeSpec.IsValueType (tparam)) {
                                        ec.Report.Error (304, loc,
                                                "Cannot create an instance of the variable type `{0}' because it does not have the new() constraint",
-                                               TypeManager.CSharpName (type));
+                                               type.GetSignatureForError ());
                                }
 
                                if ((arguments != null) && (arguments.Count != 0)) {
                                        ec.Report.Error (417, loc,
                                                "`{0}': cannot provide arguments when creating an instance of a variable type",
-                                               TypeManager.CSharpName (type));
+                                               type.GetSignatureForError ());
                                }
 
                                return this;
@@ -5794,7 +6407,7 @@ namespace Mono.CSharp
 
                        if (type.IsStatic) {
                                ec.Report.SymbolRelatedToPreviousError (type);
-                               ec.Report.Error (712, loc, "Cannot create an instance of the static class `{0}'", TypeManager.CSharpName (type));
+                               ec.Report.Error (712, loc, "Cannot create an instance of the static class `{0}'", type.GetSignatureForError ());
                                return null;
                        }
 
@@ -5806,7 +6419,7 @@ namespace Mono.CSharp
                                }
                                
                                ec.Report.SymbolRelatedToPreviousError (type);
-                               ec.Report.Error (144, loc, "Cannot create an instance of the abstract class or interface `{0}'", TypeManager.CSharpName (type));
+                               ec.Report.Error (144, loc, "Cannot create an instance of the abstract class or interface `{0}'", type.GetSignatureForError ());
                                return null;
                        }
 
@@ -5927,14 +6540,16 @@ namespace Mono.CSharp
                                }
 
                                if (vr != null) {
+                                       ec.MarkCallEntry (loc);
                                        ec.Emit (OpCodes.Call, method);
                                        return false;
                                }
                        }
                        
                        if (type is TypeParameterSpec)
-                               return DoEmitTypeParameter (ec);                        
+                               return DoEmitTypeParameter (ec);
 
+                       ec.MarkCallEntry (loc);
                        ec.Emit (OpCodes.Newobj, method);
                        return true;
                }
@@ -6028,7 +6643,7 @@ namespace Mono.CSharp
        public class ArrayInitializer : Expression
        {
                List<Expression> elements;
-               BlockVariableDeclaration variable;
+               BlockVariable variable;
 
                public ArrayInitializer (List<Expression> init, Location loc)
                {
@@ -6064,7 +6679,7 @@ namespace Mono.CSharp
                        }
                }
 
-               public BlockVariableDeclaration VariableDeclaration {
+               public BlockVariable VariableDeclaration {
                        get {
                                return variable;
                        }
@@ -7794,7 +8409,7 @@ namespace Mono.CSharp
                        if (!ec.IsUnsafe) {
                                ec.Report.Error (233, loc,
                                        "`{0}' does not have a predefined size, therefore sizeof can only be used in an unsafe context (consider using System.Runtime.InteropServices.Marshal.SizeOf)",
-                                       TypeManager.CSharpName (type_queried));
+                                       type_queried.GetSignatureForError ());
                        }
                        
                        type = ec.BuiltinTypes.Int;
@@ -7992,7 +8607,7 @@ namespace Mono.CSharp
 
                                e = e.ResolveLValue (rc, right_side);
                        } else {
-                               e = e.Resolve (rc, ResolveFlags.VariableOrValue | ResolveFlags.Type);
+                               e = e.Resolve (rc, ResolveFlags.VariableOrValue | ResolveFlags.Type | ResolveFlags.MethodGroup);
                        }
 
                        return e;
@@ -9431,6 +10046,7 @@ namespace Mono.CSharp
                public override void Emit (EmitContext ec)
                {
                        source.Emit (ec);
+                       ec.MarkCallEntry (loc);
                        ec.Emit (OpCodes.Call, method);
                }
 
@@ -10073,8 +10689,8 @@ namespace Mono.CSharp
                                                        ec.Report.Error (1922, loc, "A field or property `{0}' cannot be initialized with a collection " +
                                                                "object initializer because type `{1}' does not implement `{2}' interface",
                                                                ec.CurrentInitializerVariable.GetSignatureForError (),
-                                                               TypeManager.CSharpName (ec.CurrentInitializerVariable.Type),
-                                                               TypeManager.CSharpName (ec.BuiltinTypes.IEnumerable));
+                                                               ec.CurrentInitializerVariable.Type.GetSignatureForError (),
+                                                               ec.BuiltinTypes.IEnumerable.GetSignatureForError ());
                                                        return null;
                                                }
                                                is_collection_initialization = true;
@@ -10108,7 +10724,7 @@ namespace Mono.CSharp
                        if (is_collection_initialization) {
                                if (TypeManager.HasElementType (type)) {
                                        ec.Report.Error (1925, loc, "Cannot initialize object of type `{0}' with a collection initializer",
-                                               TypeManager.CSharpName (type));
+                                               type.GetSignatureForError ());
                                }
                        }
 
index 3b0f76d34eeb3ff1ed7afdca188b6ec284617da9..95c561980abe079514c970b633f938c634e139f8 100644 (file)
@@ -42,6 +42,11 @@ namespace Mono.CSharp
                public Expression Initializer { get; private set; }
 
                #endregion
+
+               public virtual FullNamedExpression GetFieldTypeExpression (FieldBase field)
+               {
+                       return new TypeExpression (field.MemberType, Name.Location); 
+               }
        }
 
        //
@@ -408,9 +413,8 @@ namespace Mono.CSharp
                                        "`{0}': Fixed size buffers type must be one of the following: bool, byte, short, int, long, char, sbyte, ushort, uint, ulong, float or double",
                                        GetSignatureForError ());
                        } else if (declarators != null) {
-                               var t = new TypeExpression (MemberType, TypeExpression.Location);
                                foreach (var d in declarators) {
-                                       var f = new FixedField (Parent, t, ModFlags, new MemberName (d.Name.Value, d.Name.Location), OptAttributes);
+                                       var f = new FixedField (Parent, d.GetFieldTypeExpression (this), ModFlags, new MemberName (d.Name.Value, d.Name.Location), OptAttributes);
                                        f.initializer = d.Initializer;
                                        ((ConstInitializer) f.initializer).Name = d.Name.Value;
                                        f.Define ();
@@ -482,7 +486,7 @@ namespace Mono.CSharp
 
                        if (buffer_size > int.MaxValue / type_size) {
                                Report.Error (1664, Location, "Fixed size buffer `{0}' of length `{1}' and type `{2}' exceeded 2^31 limit",
-                                       GetSignatureForError (), buffer_size.ToString (), TypeManager.CSharpName (MemberType));
+                                       GetSignatureForError (), buffer_size.ToString (), MemberType.GetSignatureForError ());
                                return;
                        }
 
@@ -641,8 +645,7 @@ namespace Mono.CSharp
 
                        if (declarators != null) {
                                foreach (var d in declarators) {
-                                       var t = new TypeExpression (MemberType, d.Name.Location);
-                                       var f = new Field (Parent, t, ModFlags, new MemberName (d.Name.Value, d.Name.Location), OptAttributes);
+                                       var f = new Field (Parent, d.GetFieldTypeExpression (this), ModFlags, new MemberName (d.Name.Value, d.Name.Location), OptAttributes);
                                        if (d.Initializer != null)
                                                f.initializer = d.Initializer;
 
@@ -664,7 +667,7 @@ namespace Mono.CSharp
                        if ((ModFlags & Modifiers.VOLATILE) != 0) {
                                if (!CanBeVolatile ()) {
                                        Report.Error (677, Location, "`{0}': A volatile field cannot be of the type `{1}'",
-                                               GetSignatureForError (), TypeManager.CSharpName (MemberType));
+                                               GetSignatureForError (), MemberType.GetSignatureForError ());
                                }
 
                                if ((ModFlags & Modifiers.READONLY) != 0) {
index e71051994e0e07af7d8519fb2fa50c28471bdcd7..4fee5a1f707ac72a1ed102aabc7701f259be7778 100644 (file)
@@ -800,7 +800,7 @@ namespace Mono.CSharp
                }
        }
 
-       public  class FlowBranchingAsync : FlowBranchingBlock
+       public class FlowBranchingAsync : FlowBranchingBlock
        {
                readonly AsyncInitializer async_init;
 
index b8cec0cfff22075ee4378111ccbcc5bb995b6e89..2fa6bb03157cf8d74deadd5af9737279bc88593e 100644 (file)
@@ -312,7 +312,7 @@ namespace Mono.CSharp {
                                if (type.IsSealed || !type.IsClass) {
                                        context.Module.Compiler.Report.Error (701, loc,
                                                "`{0}' is not a valid constraint. A constraint must be an interface, a non-sealed class or a type parameter",
-                                               TypeManager.CSharpName (type));
+                                               type.GetSignatureForError ());
                                        continue;
                                }
 
@@ -489,7 +489,7 @@ namespace Mono.CSharp {
                //
                // If partial type parameters constraints are not null and we don't
                // already have constraints they become our constraints. If we already
-               // have constraints, we must check that they're the same.
+               // have constraints, we must check that they're same.
                //
                public bool AddPartialConstraints (TypeDefinition part, TypeParameter tp)
                {
@@ -511,7 +511,7 @@ namespace Mono.CSharp {
 
                        // Copy constraint from resolved part to partial container
                        spec.SpecialConstraint = tp.spec.SpecialConstraint;
-                       spec.Interfaces = tp.spec.Interfaces;
+                       spec.InterfacesDefined = tp.spec.InterfacesDefined;
                        spec.TypeArguments = tp.spec.TypeArguments;
                        spec.BaseType = tp.spec.BaseType;
                        
@@ -545,15 +545,19 @@ namespace Mono.CSharp {
                // with SRE (by calling `DefineGenericParameters()' on the TypeBuilder /
                // MethodBuilder).
                //
-               public void Define (GenericTypeParameterBuilder type, TypeSpec declaringType, TypeContainer parent)
+               public void Create (TypeSpec declaringType, TypeContainer parent)
                {
                        if (builder != null)
                                throw new InternalErrorException ();
 
                        // Needed to get compiler reference
                        this.Parent = parent;
-                       this.builder = type;
                        spec.DeclaringType = declaringType;
+               }
+
+               public void Define (GenericTypeParameterBuilder type)
+               {
+                       this.builder = type;
                        spec.SetMetaInfo (type);
                }
 
@@ -776,6 +780,8 @@ namespace Mono.CSharp {
                                                                }
                                                        }
                                                }
+                                       } else if (ifaces_defined == null) {
+                                               ifaces_defined = ifaces == null ? TypeSpec.EmptyTypes : ifaces.ToArray ();
                                        }
 
                                        //
@@ -793,9 +799,6 @@ namespace Mono.CSharp {
                                                }
                                        }
 
-                                       if (ifaces_defined == null)
-                                               ifaces_defined = ifaces == null ? TypeSpec.EmptyTypes : ifaces.ToArray ();
-
                                        state |= StateFlags.InterfacesExpanded;
                                }
 
@@ -1377,6 +1380,9 @@ namespace Mono.CSharp {
                                return ac;
                        }
 
+                       if (type.Kind == MemberKind.MissingType)
+                               return type;
+
                        //
                        // When inflating a nested type, inflate its parent first
                        // in case it's using same type parameters (was inflated within the type)
@@ -2176,13 +2182,13 @@ namespace Mono.CSharp {
                        names.AddRange (tparams.names);
                }
 
-               public void Define (GenericTypeParameterBuilder[] buiders, TypeSpec declaringType, int parentOffset, TypeContainer parent)
+               public void Create (TypeSpec declaringType, int parentOffset, TypeContainer parent)
                {
                        types = new TypeParameterSpec[Count];
                        for (int i = 0; i < types.Length; ++i) {
                                var tp = names[i];
 
-                               tp.Define (buiders[i + parentOffset], declaringType, parent);
+                               tp.Create (declaringType, parent);
                                types[i] = tp.Type;
                                types[i].DeclaredPosition = i + parentOffset;
 
@@ -2192,6 +2198,14 @@ namespace Mono.CSharp {
                        }
                }
 
+               public void Define (GenericTypeParameterBuilder[] builders)
+               {
+                       for (int i = 0; i < types.Length; ++i) {
+                               var tp = names[i];
+                               tp.Define (builders [types [i].DeclaredPosition]);
+                       }
+               }
+
                public TypeParameter this[int index] {
                        get {
                                return names [index];
@@ -2231,6 +2245,44 @@ namespace Mono.CSharp {
                        return sb.ToString ();
                }
 
+
+               public void CheckPartialConstraints (Method part)
+               {
+                       var partTypeParameters = part.CurrentTypeParameters;
+
+                       for (int i = 0; i < Count; i++) {
+                               var tp_a = names[i];
+                               var tp_b = partTypeParameters [i];
+                               if (tp_a.Constraints == null) {
+                                       if (tp_b.Constraints == null)
+                                               continue;
+                               } else if (tp_b.Constraints != null && tp_a.Type.HasSameConstraintsDefinition (tp_b.Type)) {
+                                       continue;
+                               }
+
+                               part.Compiler.Report.SymbolRelatedToPreviousError (this[i].CurrentMemberDefinition.Location, "");
+                               part.Compiler.Report.Error (761, part.Location,
+                                       "Partial method declarations of `{0}' have inconsistent constraints for type parameter `{1}'",
+                                       part.GetSignatureForError (), partTypeParameters[i].GetSignatureForError ());
+                       }
+               }
+
+               public void UpdateConstraints (TypeDefinition part)
+               {
+                       var partTypeParameters = part.MemberName.TypeParameters;
+
+                       for (int i = 0; i < Count; i++) {
+                               var tp = names [i];
+                               if (tp.AddPartialConstraints (part, partTypeParameters [i]))
+                                       continue;
+
+                               part.Compiler.Report.SymbolRelatedToPreviousError (this[i].CurrentMemberDefinition);
+                               part.Compiler.Report.Error (265, part.Location,
+                                       "Partial declarations of `{0}' have inconsistent constraints for type parameter `{1}'",
+                                       part.GetSignatureForError (), tp.GetSignatureForError ());
+                       }
+               }
+
                public void VerifyClsCompliance ()
                {
                        foreach (var tp in names) {
@@ -2261,7 +2313,7 @@ namespace Mono.CSharp {
 
                public override string GetSignatureForError ()
                {
-                       return TypeManager.CSharpName (type);
+                       return type.GetSignatureForError ();
                }
 
                public override TypeSpec ResolveAsType (IMemberContext mc)
@@ -2409,7 +2461,7 @@ namespace Mono.CSharp {
                                if (mc != null) {
                                        mc.Module.Compiler.Report.Error (452, loc,
                                                "The type `{0}' must be a reference type in order to use it as type parameter `{1}' in the generic type or method `{2}'",
-                                               TypeManager.CSharpName (atype), tparam.GetSignatureForError (), context.GetSignatureForError ());
+                                               atype.GetSignatureForError (), tparam.GetSignatureForError (), context.GetSignatureForError ());
                                }
 
                                return false;
@@ -2419,7 +2471,7 @@ namespace Mono.CSharp {
                                if (mc != null) {
                                        mc.Module.Compiler.Report.Error (453, loc,
                                                "The type `{0}' must be a non-nullable value type in order to use it as type parameter `{1}' in the generic type or method `{2}'",
-                                               TypeManager.CSharpName (atype), tparam.GetSignatureForError (), context.GetSignatureForError ());
+                                               atype.GetSignatureForError (), tparam.GetSignatureForError (), context.GetSignatureForError ());
                                }
 
                                return false;
@@ -2442,8 +2494,8 @@ namespace Mono.CSharp {
                        //
                        // Check the interfaces constraints
                        //
-                       if (tparam.Interfaces != null) {
-                               foreach (TypeSpec iface in tparam.Interfaces) {
+                       if (tparam.InterfacesDefined != null) {
+                               foreach (TypeSpec iface in tparam.InterfacesDefined) {
                                        if (!CheckConversion (mc, context, atype, tparam, iface, loc)) {
                                                if (mc == null)
                                                        return false;
@@ -2480,7 +2532,7 @@ namespace Mono.CSharp {
                                        mc.Module.Compiler.Report.SymbolRelatedToPreviousError (atype);
                                        mc.Module.Compiler.Report.Error (310, loc,
                                                "The type `{0}' must have a public parameterless constructor in order to use it as parameter `{1}' in the generic type or method `{2}'",
-                                               TypeManager.CSharpName (atype), tparam.GetSignatureForError (), context.GetSignatureForError ());
+                                               atype.GetSignatureForError (), tparam.GetSignatureForError (), context.GetSignatureForError ());
                                }
                                return false;
                        }
index 3c8cf89b2eb3bd02ad339c30b40b69b5823cc164..12894a0cc7506b1fe7a761833534f999d80e744f 100644 (file)
@@ -96,12 +96,16 @@ namespace Mono.CSharp
                        // TODO: Should be just Add
                        GetAssemblyDefinition (assembly);
 
-                       var all_types = assembly.GetTypes ();
-                       ImportTypes (all_types, targetNamespace, true);
-
-                       all_types = assembly.ManifestModule.__GetExportedTypes ();
-                       if (all_types.Length != 0)
-                               ImportForwardedTypes (all_types, targetNamespace);
+                       try {
+                               var all_types = assembly.GetTypes ();
+                               ImportTypes (all_types, targetNamespace, true);
+
+                               all_types = assembly.ManifestModule.__GetExportedTypes ();
+                               if (all_types.Length != 0)
+                                       ImportForwardedTypes (all_types, targetNamespace);
+                       } catch (Exception e) {
+                               throw new InternalErrorException (e, "Failed to import assembly `{0}'", assembly.FullName);
+                       }
                }
 
                public ImportedModuleDefinition ImportModule (Module module, RootNamespace targetNamespace)
index 6fe8770f6fa6b75fcc75eca8ff65110b25d35557..3576f28a7b72c92d5a159fdb0cf163ed0e719a68 100644 (file)
@@ -420,7 +420,7 @@ namespace Mono.CSharp
                                }
                        }
 
-                       IMemberDefinition definition;
+                       IMethodDefinition definition;
                        if (tparams != null) {
                                var gmd = new ImportedGenericMethodDefinition ((MethodInfo) mb, returnType, parameters, tparams, this);
                                foreach (var tp in gmd.TypeParameters) {
@@ -429,10 +429,10 @@ namespace Mono.CSharp
 
                                definition = gmd;
                        } else {
-                               definition = new ImportedParameterMemberDefinition (mb, returnType, parameters, this);
+                               definition = new ImportedMethodDefinition (mb, returnType, parameters, this);
                        }
 
-                       MethodSpec ms = new MethodSpec (kind, declaringType, definition, returnType, mb, parameters, mod);
+                       MethodSpec ms = new MethodSpec (kind, declaringType, definition, returnType, parameters, mod);
                        if (tparams != null)
                                ms.IsGeneric = true;
 
@@ -774,24 +774,34 @@ namespace Mono.CSharp
 
                                        for (int i = nested_hierarchy.Count; i != 0; --i) {
                                                var t = nested_hierarchy [i - 1];
-                                               spec = MemberCache.FindNestedType (spec, t.Name, t.Arity);
+                                               if (t.Kind == MemberKind.MissingType)
+                                                       spec = t;
+                                               else
+                                                       spec = MemberCache.FindNestedType (spec, t.Name, t.Arity);
+
                                                if (t.Arity > 0) {
                                                        spec = spec.MakeGenericType (module, targs.Skip (targs_pos).Take (spec.Arity).ToArray ());
                                                        targs_pos += t.Arity;
                                                }
                                        }
 
-                                       string name = type.Name;
-                                       int index = name.IndexOf ('`');
-                                       if (index > 0)
-                                               name = name.Substring (0, index);
+                                       if (spec.Kind == MemberKind.MissingType) {
+                                               spec = new TypeSpec (MemberKind.MissingType, spec, new ImportedTypeDefinition (type_def, this), type_def, Modifiers.PUBLIC);
+                                               spec.MemberCache = MemberCache.Empty;
+                                       } else {
+                                               if ((type_def.Attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedPrivate && IgnorePrivateMembers)
+                                                       return null;
 
-                                       spec = MemberCache.FindNestedType (spec, name, targs.Length - targs_pos);
-                                       if (spec == null)
-                                               return null;
+                                               string name = type.Name;
+                                               int index = name.IndexOf ('`');
+                                               if (index > 0)
+                                                       name = name.Substring (0, index);
 
-                                       if (spec.Arity > 0) {
-                                               spec = spec.MakeGenericType (module, targs.Skip (targs_pos).ToArray ());
+                                               spec = MemberCache.FindNestedType (spec, name, targs.Length - targs_pos);
+
+                                               if (spec.Arity > 0) {
+                                                       spec = spec.MakeGenericType (module, targs.Skip (targs_pos).ToArray ());
+                                               }
                                        }
                                }
 
@@ -1006,58 +1016,6 @@ namespace Mono.CSharp
                                spec.BaseType = base_type;
                        }
 
-                       MetaType[] ifaces;
-#if STATIC
-                       ifaces = type.__GetDeclaredInterfaces ();
-                       if (ifaces.Length != 0) {
-                               foreach (var iface in ifaces) {
-                                       var it = CreateType (iface);
-                                       if (it == null)
-                                               continue;
-
-                                       spec.AddInterface (it);
-
-                                       // Unfortunately not all languages expand inherited interfaces
-                                       var bifaces = it.Interfaces;
-                                       if (bifaces != null) {
-                                               foreach (var biface in bifaces) {
-                                                       spec.AddInterface (biface);
-                                               }
-                                       }
-                               }
-                       }
-
-                       //
-                       // It's impossible to get declared interfaces only using System.Reflection
-                       // hence we need to mimic the behavior with ikvm-reflection too to keep
-                       // our type look-up logic same
-                       //
-                       if (spec.BaseType != null) {
-                               var bifaces = spec.BaseType.Interfaces;
-                               if (bifaces != null) {
-                                       //
-                                       // Before adding base class interfaces close defined interfaces
-                                       // on type parameter
-                                       //
-                                       var tp = spec as TypeParameterSpec;
-                                       if (tp != null && tp.InterfacesDefined == null) {
-                                               tp.InterfacesDefined = TypeSpec.EmptyTypes;
-                                       }
-
-                                       foreach (var iface in bifaces)
-                                               spec.AddInterface (iface);
-                               }
-                       }
-#else
-                       ifaces = type.GetInterfaces ();
-
-                       if (ifaces.Length > 0) {
-                               foreach (var iface in ifaces) {
-                                       spec.AddInterface (CreateType (iface));
-                               }
-                       }
-#endif
-
                        if (spec.MemberDefinition.TypeParametersCount > 0) {
                                foreach (var tp in spec.MemberDefinition.TypeParameters) {
                                        ImportTypeParameterTypeConstraints (tp, tp.GetMetaInfo ());
@@ -1735,7 +1693,7 @@ namespace Mono.CSharp
        {
                readonly AParametersCollection parameters;
 
-               public ImportedParameterMemberDefinition (MethodBase provider, TypeSpec type, AParametersCollection parameters, MetadataImporter importer)
+               protected ImportedParameterMemberDefinition (MethodBase provider, TypeSpec type, AParametersCollection parameters, MetadataImporter importer)
                        : base (provider, type, importer)
                {
                        this.parameters = parameters;
@@ -1758,7 +1716,21 @@ namespace Mono.CSharp
                #endregion
        }
 
-       class ImportedGenericMethodDefinition : ImportedParameterMemberDefinition, IGenericMethodDefinition
+       class ImportedMethodDefinition : ImportedParameterMemberDefinition, IMethodDefinition
+       {
+               public ImportedMethodDefinition (MethodBase provider, TypeSpec type, AParametersCollection parameters, MetadataImporter importer)
+                       : base (provider, type, parameters, importer)
+               {
+               }
+
+               MethodBase IMethodDefinition.Metadata {
+                       get {
+                               return (MethodBase) provider;
+                       }
+               }
+       }
+
+       class ImportedGenericMethodDefinition : ImportedMethodDefinition, IGenericMethodDefinition
        {
                readonly TypeParameterSpec[] tparams;
 
@@ -1864,6 +1836,63 @@ namespace Mono.CSharp
 
                #endregion
 
+               public void DefineInterfaces (TypeSpec spec)
+               {
+                       var type = (MetaType) provider;
+                       MetaType[] ifaces;
+#if STATIC
+                       ifaces = type.__GetDeclaredInterfaces ();
+                       if (ifaces.Length != 0) {
+                               foreach (var iface in ifaces) {
+                                       var it = importer.CreateType (iface);
+                                       if (it == null)
+                                               continue;
+
+                                       spec.AddInterfaceDefined (it);
+
+                                       // Unfortunately not all languages expand inherited interfaces
+                                       var bifaces = it.Interfaces;
+                                       if (bifaces != null) {
+                                               foreach (var biface in bifaces) {
+                                                       spec.AddInterfaceDefined (biface);
+                                               }
+                                       }
+                               }
+                       }
+                       
+                       //
+                       // It's impossible to get declared interfaces only using System.Reflection
+                       // hence we need to mimic the behavior with ikvm-reflection too to keep
+                       // our type look-up logic same
+                       //
+                       if (spec.BaseType != null) {
+                               var bifaces = spec.BaseType.Interfaces;
+                               if (bifaces != null) {
+                                       //
+                                       // Before adding base class interfaces close defined interfaces
+                                       // on type parameter
+                                       //
+                                       var tp = spec as TypeParameterSpec;
+                                       if (tp != null && tp.InterfacesDefined == null) {
+                                               tp.InterfacesDefined = TypeSpec.EmptyTypes;
+                                       }
+
+                                       foreach (var iface in bifaces)
+                                               spec.AddInterfaceDefined (iface);
+                               }
+                       }
+#else
+                       ifaces = type.GetInterfaces ();
+
+                       if (ifaces.Length > 0) {
+                               foreach (var iface in ifaces) {
+                                       spec.AddInterface (importer.CreateType (iface));
+                               }
+                       }
+#endif
+
+               }
+
                public static void Error_MissingDependency (IMemberContext ctx, List<TypeSpec> types, Location loc)
                {
                        // 
@@ -1872,33 +1901,36 @@ namespace Mono.CSharp
                        // or referenced from the user core in which case compilation error has to
                        // be reported because compiler cannot continue anyway
                        //
+
+                       var report = ctx.Module.Compiler.Report;
+
                        for (int i = 0; i < types.Count; ++i) {
                                var t = types [i];
 
                                //
-                               // Report missing types only once per type
+                               // Report missing types only once
                                //
-                               if (i > 0 && types.IndexOf (t) < i)
+                               if (report.Printer.MissingTypeReported (t.MemberDefinition))
                                        continue;
 
                                string name = t.GetSignatureForError ();
 
                                if (t.MemberDefinition.DeclaringAssembly == ctx.Module.DeclaringAssembly) {
-                                       ctx.Module.Compiler.Report.Error (1683, loc,
+                                       report.Error (1683, loc,
                                                "Reference to type `{0}' claims it is defined in this assembly, but it is not defined in source or any added modules",
                                                name);
                                } else if (t.MemberDefinition.DeclaringAssembly.IsMissing) {
                                        if (t.MemberDefinition.IsTypeForwarder) {
-                                               ctx.Module.Compiler.Report.Error (1070, loc,
+                                               report.Error (1070, loc,
                                                        "The type `{0}' has been forwarded to an assembly that is not referenced. Consider adding a reference to assembly `{1}'",
                                                        name, t.MemberDefinition.DeclaringAssembly.FullName);
                                        } else {
-                                               ctx.Module.Compiler.Report.Error (12, loc,
+                                               report.Error (12, loc,
                                                        "The type `{0}' is defined in an assembly that is not referenced. Consider adding a reference to assembly `{1}'",
                                                        name, t.MemberDefinition.DeclaringAssembly.FullName);
                                        }
                                } else {
-                                       ctx.Module.Compiler.Report.Error (1684, loc,
+                                       report.Error (1684, loc,
                                                "Reference to type `{0}' claims it is defined assembly `{1}', but it could not be found",
                                                name, t.MemberDefinition.DeclaringAssembly.FullName);
                                }
index dcbf10edf722bb4a6bf635406f9e62d75466939f..82ded9174c551a96a680ea7c2495cc9e9087b52c 100644 (file)
@@ -245,7 +245,7 @@ namespace Mono.CSharp
 
                                                for (int i = 0; i < host.hoisted_params.Count; ++i) {
                                                        HoistedParameter hp = host.hoisted_params [i];
-                                                       HoistedParameter hp_cp = host.hoisted_params_copy [i];
+                                                       HoistedParameter hp_cp = host.hoisted_params_copy [i] ?? hp;
 
                                                        FieldExpr from = new FieldExpr (hp_cp.Field, loc);
                                                        from.InstanceExpression = new CompilerGeneratedThis (ec.CurrentType, loc);
@@ -431,6 +431,13 @@ namespace Mono.CSharp
                        get { return hoisted_params; }
                }
 
+               protected override Constructor DefineDefaultConstructor (bool is_static)
+               {
+                       var ctor = base.DefineDefaultConstructor (is_static);
+                       ctor.ModFlags |= Modifiers.DEBUGGER_HIDDEN;
+                       return ctor;
+               }
+
                protected override TypeSpec[] ResolveBaseTypes (out FullNamedExpression base_class)
                {
                        var mtype = Iterator.OriginalIteratorType;
@@ -469,17 +476,26 @@ namespace Mono.CSharp
                        current_field = AddCompilerGeneratedField ("$current", iterator_type_expr);
                        disposing_field = AddCompilerGeneratedField ("$disposing", new TypeExpression (Compiler.BuiltinTypes.Bool, Location));
 
-                       if (hoisted_params != null) {
+                       if (Iterator.IsEnumerable && hoisted_params != null) {
                                //
                                // Iterators are independent, each GetEnumerator call has to
                                // create same enumerator therefore we have to keep original values
                                // around for re-initialization
                                //
-                               // TODO: Do it for assigned/modified parameters only
-                               //
                                hoisted_params_copy = new List<HoistedParameter> (hoisted_params.Count);
                                foreach (HoistedParameter hp in hoisted_params) {
-                                       hoisted_params_copy.Add (new HoistedParameter (hp, "<$>" + hp.Field.Name));
+
+                                       //
+                                       // Don't create field copy for unmodified captured parameters
+                                       //
+                                       HoistedParameter hp_copy;
+                                       if (hp.IsAssigned) {
+                                               hp_copy = new HoistedParameter (hp, "<$>" + hp.Field.Name);
+                                       } else {
+                                               hp_copy = null;
+                                       }
+
+                                       hoisted_params_copy.Add (hp_copy);
                                }
                        }
 
@@ -565,7 +581,8 @@ namespace Mono.CSharp
                protected override void EmitHoistedParameters (EmitContext ec, List<HoistedParameter> hoisted)
                {
                        base.EmitHoistedParameters (ec, hoisted);
-                       base.EmitHoistedParameters (ec, hoisted_params_copy);
+                       if (hoisted_params_copy != null)
+                               base.EmitHoistedParameters (ec, hoisted_params_copy);
                }
        }
 
@@ -1101,7 +1118,7 @@ namespace Mono.CSharp
                                              "The body of `{0}' cannot be an iterator block " +
                                              "because `{1}' is not an iterator interface type",
                                              method.GetSignatureForError (),
-                                             TypeManager.CSharpName (ret));
+                                             ret.GetSignatureForError ());
                                return;
                        }
 
index 9c854a8fe9547612f500c1433cecd4c029fc3174..a1c5ab2f914f4bed7b7938ca2f1f93a4463c3d35 100644 (file)
@@ -130,7 +130,7 @@ namespace Mono.CSharp.Linq
 
                                        if (!Convert.ImplicitConversionExists (rc, a.Expr, source_type)) {
                                                rc.Report.Error (1936, loc, "An implementation of `{0}' query expression pattern for source type `{1}' could not be found",
-                                                       best.Name, TypeManager.CSharpName (a.Type));
+                                                       best.Name, a.Type.GetSignatureForError ());
                                                return true;
                                        }
                                }
index bdbd57a4f7d168e9337bac99e60d757be243f1db..1af2d0c9e379ecb600379156bfe84dbf1ab67bb9 100644 (file)
@@ -61,7 +61,7 @@ namespace Mono.CSharp
 
                        if (TypeSpec.IsValueType (t)) {
                                ec.Report.Error(37, loc, "Cannot convert null to `{0}' because it is a value type",
-                                       TypeManager.CSharpName(t));
+                                       t.GetSignatureForError ());
                                return;
                        }
 
index 85eb26c5a1941b47bff6b5272a38d061284e6aed..10afaa1cc263a97ef0ff931eaaa422d01a822619 100644 (file)
@@ -412,11 +412,28 @@ if (checkpoints.Length <= CheckpointIndex) throw new Exception (String.Format ("
                public class MemberLocations
                {
                        public readonly IList<Tuple<Modifiers, Location>> Modifiers;
-                       Location[] locations;
+                       List<Location> locations;
 
-                       public MemberLocations (IList<Tuple<Modifiers, Location>> mods, Location[] locs)
+                       public MemberLocations (IList<Tuple<Modifiers, Location>> mods)
                        {
                                Modifiers = mods;
+                       }
+
+                       public MemberLocations (IList<Tuple<Modifiers, Location>> mods, Location loc)
+                               : this (mods)
+                       {
+                               AddLocations (loc);
+                       }
+
+                       public MemberLocations (IList<Tuple<Modifiers, Location>> mods, Location[] locs)
+                               : this (mods)
+                       {
+                               AddLocations (locs);
+                       }
+
+                       public MemberLocations (IList<Tuple<Modifiers, Location>> mods, List<Location> locs)
+                               : this (mods)
+                       {
                                locations = locs;
                        }
 
@@ -430,31 +447,50 @@ if (checkpoints.Length <= CheckpointIndex) throw new Exception (String.Format ("
                        
                        public int Count {
                                get {
-                                       return locations.Length;
+                                       return locations.Count;
                                }
                        }
 
                        #endregion
 
+                       public void AddLocations (Location loc)
+                       {
+                               if (locations == null) {
+                                       locations = new List<Location> ();
+                               }
+
+                               locations.Add (loc);
+                       }
+
                        public void AddLocations (params Location[] additional)
                        {
                                if (locations == null) {
-                                       locations = additional;
+                                       locations = new List<Location> (additional);
                                } else {
-                                       int pos = locations.Length;
-                                       Array.Resize (ref locations, pos + additional.Length);
-                                       additional.CopyTo (locations, pos);
+                                       locations.AddRange (additional);
                                }
                        }
                }
 
-               Dictionary<object, Location[]> simple_locs = new Dictionary<object, Location[]> (ReferenceEquality<object>.Default);
+               Dictionary<object, List<Location>> simple_locs = new Dictionary<object, List<Location>> (ReferenceEquality<object>.Default);
                Dictionary<MemberCore, MemberLocations> member_locs = new Dictionary<MemberCore, MemberLocations> (ReferenceEquality<MemberCore>.Default);
 
                [Conditional ("FULL_AST")]
                public void AddLocation (object element, params Location[] locations)
                {
-                       simple_locs.Add (element, locations);
+                       simple_locs.Add (element, new List<Location> (locations));
+               }
+
+               [Conditional ("FULL_AST")]
+               public void InsertLocation (object element, int index, Location location)
+               {
+                       List<Location> found;
+                       if (!simple_locs.TryGetValue (element, out found)) {
+                               found = new List<Location> ();
+                               simple_locs.Add (element, found);
+                       }
+
+                       found.Insert (index, location);
                }
 
                [Conditional ("FULL_AST")]
@@ -463,7 +499,19 @@ if (checkpoints.Length <= CheckpointIndex) throw new Exception (String.Format ("
                        if (locations.Length == 0)
                                throw new ArgumentException ("Statement is missing semicolon location");
 
-                       simple_locs.Add (element, locations);
+                       AddLocation (element, locations);
+               }
+
+               [Conditional ("FULL_AST")]
+               public void AddMember (MemberCore member, IList<Tuple<Modifiers, Location>> modLocations)
+               {
+                       member_locs.Add (member, new MemberLocations (modLocations));
+               }
+
+               [Conditional ("FULL_AST")]
+               public void AddMember (MemberCore member, IList<Tuple<Modifiers, Location>> modLocations, Location location)
+               {
+                       member_locs.Add (member, new MemberLocations (modLocations, location));
                }
 
                [Conditional ("FULL_AST")]
@@ -473,13 +521,21 @@ if (checkpoints.Length <= CheckpointIndex) throw new Exception (String.Format ("
                }
 
                [Conditional ("FULL_AST")]
-               public void AppendTo (object existing, params Location[] locations)
+               public void AddMember (MemberCore member, IList<Tuple<Modifiers, Location>> modLocations, List<Location> locations)
                {
-                       Location[] locs;
-                       if (simple_locs.TryGetValue (existing, out locs)) {
-                               simple_locs [existing] = locs.Concat (locations).ToArray ();
-                               return;
+                       member_locs.Add (member, new MemberLocations (modLocations, locations));
+               }
+
+               [Conditional ("FULL_AST")]
+               public void AppendTo (object element, Location location)
+               {
+                       List<Location> found;
+                       if (!simple_locs.TryGetValue (element, out found)) {
+                               found = new List<Location> ();
+                               simple_locs.Add (element, found);
                        }
+
+                       found.Add (location);
                }
 
                [Conditional ("FULL_AST")]
@@ -492,9 +548,9 @@ if (checkpoints.Length <= CheckpointIndex) throw new Exception (String.Format ("
                        }
                }
 
-               public Location[] GetLocations (object element)
+               public List<Location> GetLocations (object element)
                {
-                       Location[] found;
+                       List<Location> found;
                        simple_locs.TryGetValue (element, out found);
                        return found;
                }
index a3a676980d68964fe36f27cb5db5a57f20d9b01c..36afc59a166294ae4b4c7d46785bcf3d4b0746a5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4882E7A2-D53E-4C00-8D9D-2B89F5B6798D}</ProjectGuid>\r
+    <ProjectGuid>{523E59D0-4059-4E06-95DA-691E167615A7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\mcs-build</OutputPath>\r
     <Compile Include="..\..\external\ikvm\reflect\Reader\*.cs" />\r
     <Compile Include="..\..\external\ikvm\reflect\Writer\*.cs" />\r
     <Compile Include="..\build\common\Consts.cs" />\r
-    <Compile Include="..\class\corlib\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs" />\r
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs" />\r
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\SourceMethodBuilder.cs" />\r
+    <Compile Include="..\class\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\tools\monop\outline.cs" />\r
     <Compile Include="anonymous.cs" />\r
     <Compile Include="argument.cs" />\r
@@ -127,7 +127,7 @@ $(ProjectDir)\..\jay\jay.exe -ct &lt; $(ProjectDir)\..\jay\skeleton.cs $(Project
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-build.csproj">\r
-      <Project>{B8B2866D-592F-4888-A1CB-697AD0F3CADE}</Project>\r
+      <Project>{2BD930A2-88A9-4AD0-ADE7-1531552DF896}</Project>\r
       <Name>corlib\corlib-build</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 93183b40fef60ed7f5c70b4fc61312d4ac92744d..2c761830ec53ae8002640c123e01622398e1b2f6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AD97431A-3538-4597-9C5C-97137A9ECCA1}</ProjectGuid>\r
+    <ProjectGuid>{C43E1948-715C-4711-9442-13652674CE49}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\mcs-net_4_5</OutputPath>\r
     <Compile Include="..\..\external\ikvm\reflect\Reader\*.cs" />\r
     <Compile Include="..\..\external\ikvm\reflect\Writer\*.cs" />\r
     <Compile Include="..\build\common\Consts.cs" />\r
-    <Compile Include="..\class\corlib\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs" />\r
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs" />\r
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\SourceMethodBuilder.cs" />\r
+    <Compile Include="..\class\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\tools\monop\outline.cs" />\r
     <Compile Include="anonymous.cs" />\r
     <Compile Include="argument.cs" />\r
@@ -127,7 +127,7 @@ $(ProjectDir)\..\jay\jay.exe -ct &lt; $(ProjectDir)\..\jay\skeleton.cs $(Project
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 74609d1947ee3bac08d5cf63e13e562eb34942d4..3c7ae4027b61c58327cd5681d22016b6082a005c 100644 (file)
@@ -58,7 +58,7 @@
   <ItemGroup>\r
     <Compile Include="..\build\common\Consts.cs">\r
     </Compile>\r
-    <Compile Include="..\class\corlib\Mono.Security.Cryptography\CryptoConvert.cs">\r
+    <Compile Include="..\class\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs">\r
       <Link>CryptoConvert.cs</Link>\r
     </Compile>\r
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs">\r
index 9ac9cb1c1ad4ebef8b45365433abaeaa7ff092cb..dec804804cb83cf64747d4e8f9807ce2ac2f1151 100644 (file)
@@ -53,7 +53,7 @@ visit.cs
 ../class/Mono.CompilerServices.SymbolWriter/MonoSymbolFile.cs
 ../class/Mono.CompilerServices.SymbolWriter/MonoSymbolTable.cs
 ../class/Mono.CompilerServices.SymbolWriter/SourceMethodBuilder.cs
-../class/corlib/Mono.Security.Cryptography/CryptoConvert.cs
+../class/Mono.Security/Mono.Security.Cryptography/CryptoConvert.cs
 ../build/common/Consts.cs
 ../tools/monop/outline.cs
 
index cad910e01bc896b209a8c150e094a23a5513b660..5da68dc735756cd4a7967f3ccb65a5eb04701cdd 100644 (file)
@@ -795,13 +795,14 @@ namespace Mono.CSharp {
                        while (true) {
                                foreach (var entry in abstract_type.MemberCache.member_hash) {
                                        foreach (var name_entry in entry.Value) {
-                                               if ((name_entry.Modifiers & (Modifiers.ABSTRACT | Modifiers.OVERRIDE)) != Modifiers.ABSTRACT)
+                                               if ((name_entry.Modifiers & Modifiers.ABSTRACT) == 0)
                                                        continue;
 
-                                               if (name_entry.Kind != MemberKind.Method)
+                                               var ms = name_entry as MethodSpec;
+                                               if (ms == null)
                                                        continue;
 
-                                               abstract_methods.Add ((MethodSpec) name_entry);
+                                               abstract_methods.Add (ms);
                                        }
                                }
 
@@ -1445,9 +1446,12 @@ namespace Mono.CSharp {
                                                                        "A partial method declaration and partial method implementation must be both `static' or neither");
                                                        }
 
-                                                       Report.SymbolRelatedToPreviousError (ce);
-                                                       Report.Error (764, member.Location,
-                                                               "A partial method declaration and partial method implementation must be both `unsafe' or neither");
+                                                       if ((method_a.ModFlags & Modifiers.UNSAFE) != (method_b.ModFlags & Modifiers.UNSAFE)) {
+                                                               Report.SymbolRelatedToPreviousError (ce);
+                                                               Report.Error (764, member.Location,
+                                                                       "A partial method declaration and partial method implementation must be both `unsafe' or neither");
+                                                       }
+
                                                        return false;
                                                }
 
index b571c0c5c4c2b15f146c643a2576a60af9a86e53..bda1909d2d6330b9e20e1210212a05926a512bec 100644 (file)
@@ -188,7 +188,7 @@ namespace Mono.CSharp {
                }
        }
 
-       public interface IGenericMethodDefinition : IMemberDefinition
+       public interface IGenericMethodDefinition : IMethodDefinition
        {
                TypeParameterSpec[] TypeParameters { get; }
                int TypeParametersCount { get; }
@@ -198,18 +198,17 @@ namespace Mono.CSharp {
 
        public sealed class MethodSpec : MemberSpec, IParametersMember
        {
-               MethodBase metaInfo, inflatedMetaInfo;
+               MethodBase inflatedMetaInfo;
                AParametersCollection parameters;
                TypeSpec returnType;
 
                TypeSpec[] targs;
                TypeParameterSpec[] constraints;
 
-               public MethodSpec (MemberKind kind, TypeSpec declaringType, IMemberDefinition details, TypeSpec returnType,
-                       MethodBase info, AParametersCollection parameters, Modifiers modifiers)
+               public MethodSpec (MemberKind kind, TypeSpec declaringType, IMethodDefinition details, TypeSpec returnType,
+                       AParametersCollection parameters, Modifiers modifiers)
                        : base (kind, declaringType, details, modifiers)
                {
-                       this.metaInfo = info;
                        this.parameters = parameters;
                        this.returnType = returnType;
                }
@@ -237,6 +236,12 @@ namespace Mono.CSharp {
                        }
                }
 
+               public new IMethodDefinition MemberDefinition {
+                       get {
+                               return (IMethodDefinition) definition;
+                       }
+               }
+
                public IGenericMethodDefinition GenericDefinition {
                        get {
                                return (IGenericMethodDefinition) definition;
@@ -322,21 +327,21 @@ namespace Mono.CSharp {
 
                                        if (DeclaringType.IsTypeBuilder) {
                                                if (IsConstructor)
-                                                       inflatedMetaInfo = TypeBuilder.GetConstructor (dt_meta, (ConstructorInfo) metaInfo);
+                                                       inflatedMetaInfo = TypeBuilder.GetConstructor (dt_meta, (ConstructorInfo) MemberDefinition.Metadata);
                                                else
-                                                       inflatedMetaInfo = TypeBuilder.GetMethod (dt_meta, (MethodInfo) metaInfo);
+                                                       inflatedMetaInfo = TypeBuilder.GetMethod (dt_meta, (MethodInfo) MemberDefinition.Metadata);
                                        } else {
 #if STATIC
                                                // it should not be reached
                                                throw new NotImplementedException ();
 #else
-                                               inflatedMetaInfo = MethodInfo.GetMethodFromHandle (metaInfo.MethodHandle, dt_meta.TypeHandle);
+                                               inflatedMetaInfo = MethodInfo.GetMethodFromHandle (MemberDefinition.Metadata.MethodHandle, dt_meta.TypeHandle);
 #endif
                                        }
 
                                        state &= ~StateFlags.PendingMetaInflate;
                                } else {
-                                       inflatedMetaInfo = metaInfo;
+                                       inflatedMetaInfo = MemberDefinition.Metadata;
                                }
                        }
 
@@ -518,19 +523,10 @@ namespace Mono.CSharp {
 
                        return missing;                 
                }
-
-               public void SetMetaInfo (MethodInfo info)
-               {
-                       if (this.metaInfo != null)
-                               throw new InternalErrorException ("MetaInfo reset");
-
-                       this.metaInfo = info;
-               }
        }
 
-       public abstract class MethodOrOperator : MethodCore, IMethodData
+       public abstract class MethodOrOperator : MethodCore, IMethodData, IMethodDefinition
        {
-               public MethodBuilder MethodBuilder;
                ReturnParameter return_attributes;
                SecurityType declarative_security;
                protected MethodData MethodData;
@@ -583,6 +579,19 @@ namespace Mono.CSharp {
                        }
                }
 
+               MethodBase IMethodDefinition.Metadata {
+                       get {
+                               return MethodData.MethodBuilder;
+                       }
+               }
+
+               // TODO: Remove and use MethodData abstraction
+               public MethodBuilder MethodBuilder {
+                       get {
+                               return MethodData.MethodBuilder;
+                       }
+               }
+
                protected override bool CheckForDuplications ()
                {
                        return Parent.MemberCache.CheckExistingMembersOverloads (this, parameters);
@@ -609,41 +618,34 @@ namespace Mono.CSharp {
                        else
                                kind = MemberKind.Method;
 
+                       string explicit_name;
+
                        if (IsPartialDefinition) {
                                caching_flags &= ~Flags.Excluded_Undetected;
                                caching_flags |= Flags.Excluded;
 
                                // Add to member cache only when a partial method implementation has not been found yet
-                               if ((caching_flags & Flags.PartialDefinitionExists) == 0) {
-//                                     MethodBase mb = new PartialMethodDefinitionInfo (this);
+                               if ((caching_flags & Flags.PartialDefinitionExists) != 0)
+                                       return true;
 
-                                       spec = new MethodSpec (kind, Parent.Definition, this, ReturnType, null, parameters, ModFlags);
-                                       if (MemberName.Arity > 0) {
-                                               spec.IsGeneric = true;
+                               if (IsExplicitImpl)
+                                       return true;
 
-                                               // TODO: Have to move DefineMethod after Define (ideally to Emit)
-                                               throw new NotImplementedException ("Generic partial methods");
-                                       }
+                               explicit_name = null;
+                       } else {
+                               MethodData = new MethodData (this, ModFlags, flags, this, base_method);
 
-                                       Parent.MemberCache.AddMember (spec);
-                               }
+                               if (!MethodData.Define (Parent.PartialContainer, GetFullName (MemberName)))
+                                       return false;
 
-                               return true;
+                               explicit_name = MethodData.MetadataName;
                        }
 
-                       MethodData = new MethodData (
-                               this, ModFlags, flags, this, MethodBuilder, base_method);
-
-                       if (!MethodData.Define (Parent.PartialContainer, GetFullName (MemberName)))
-                               return false;
-                                       
-                       MethodBuilder = MethodData.MethodBuilder;
-
-                       spec = new MethodSpec (kind, Parent.Definition, this, ReturnType, MethodBuilder, parameters, ModFlags);
+                       spec = new MethodSpec (kind, Parent.Definition, this, ReturnType, parameters, ModFlags);
                        if (MemberName.Arity > 0)
                                spec.IsGeneric = true;
-                       
-                       Parent.MemberCache.AddMember (this, MethodBuilder.Name, spec);
+
+                       Parent.MemberCache.AddMember (this, explicit_name, spec);
 
                        return true;
                }
@@ -713,7 +715,8 @@ namespace Mono.CSharp {
                        if (MethodData != null)
                                MethodData.Emit (Parent);
 
-                       Block = null;
+                       if ((ModFlags & Modifiers.PARTIAL) == 0)
+                               Block = null;
                }
 
                protected void Error_ConditionalAttributeIsNotValid ()
@@ -798,9 +801,36 @@ namespace Mono.CSharp {
 
                #endregion
 
+               public virtual void PrepareEmit ()
+               {
+                       var mb = MethodData.DefineMethodBuilder (Parent);
+
+                       if (CurrentTypeParameters != null) {
+                               string[] gnames = new string[CurrentTypeParameters.Count];
+                               for (int i = 0; i < gnames.Length; ++i) {
+                                       gnames[i] = CurrentTypeParameters[i].Name;
+                               }
+
+                               var gen_params = MethodBuilder.DefineGenericParameters (gnames);
+
+                               for (int i = 0; i < CurrentTypeParameters.Count; ++i) {
+                                       var tp = CurrentTypeParameters[i];
+
+                                       tp.Define (gen_params[i]);
+                               }
+                       }
+
+                       //
+                       // Generic method has been already defined to resolve method parameters
+                       // correctly when they use type parameters
+                       //
+                       mb.SetParameters (parameters.GetMetaInfo ());
+                       mb.SetReturnType (ReturnType.GetMetaInfo ());
+               }
+
                public override void WriteDebugSymbol (MonoSymbolFile file)
                {
-                       if (MethodData != null)
+                       if (MethodData != null && !IsPartialDefinition)
                                MethodData.WriteDebugSymbol (file);
                }
        }
@@ -844,7 +874,7 @@ namespace Mono.CSharp {
                        }
                }
 
-#endregion
+               #endregion
 
                public override void Accept (StructuralVisitor visitor)
                {
@@ -972,10 +1002,9 @@ namespace Mono.CSharp {
                void CreateTypeParameters ()
                {
                        var tparams = MemberName.TypeParameters;
-                       string[] snames = new string[MemberName.Arity];
                        var parent_tparams = Parent.TypeParametersAll;
 
-                       for (int i = 0; i < snames.Length; i++) {
+                       for (int i = 0; i < MemberName.Arity; i++) {
                                string type_argument_name = tparams[i].MemberName.Name;
 
                                if (block == null) {
@@ -1000,12 +1029,9 @@ namespace Mono.CSharp {
                                                tparams[i].WarningParentNameConflict (tp);
                                        }
                                }
-
-                               snames[i] = type_argument_name;
                        }
 
-                       GenericTypeParameterBuilder[] gen_params = MethodBuilder.DefineGenericParameters (snames);
-                       tparams.Define (gen_params, null, 0, Parent);
+                       tparams.Create (null, 0, Parent);
                }
 
                protected virtual void DefineTypeParameters ()
@@ -1171,9 +1197,6 @@ namespace Mono.CSharp {
                                        "Introducing `Finalize' method can interfere with destructor invocation. Did you intend to declare a destructor?");
                        }
 
-                       if (partialMethodImplementation != null && IsPartialDefinition)
-                               MethodBuilder = partialMethodImplementation.MethodBuilder;
-
                        if (Compiler.Settings.StdLib && ReturnType.IsSpecialRuntimeType) {
                                Error1599 (Location, ReturnType, Report);
                                return false;
@@ -1208,7 +1231,7 @@ namespace Mono.CSharp {
                                                Report.Error (1983, Location, "The return type of an async method must be void, Task, or Task<T>");
                                        }
 
-                                       block = (ToplevelBlock) block.ConvertToAsyncTask (this, Parent.PartialContainer, parameters, ReturnType, Location);
+                                       block = (ToplevelBlock) block.ConvertToAsyncTask (this, Parent.PartialContainer, parameters, ReturnType, null, Location);
                                        ModFlags |= Modifiers.DEBUGGER_HIDDEN;
                                }
 
@@ -1272,6 +1295,22 @@ namespace Mono.CSharp {
                        return true;
                }
 
+               public override void PrepareEmit ()
+               {
+                       if (IsPartialDefinition) {
+                               //
+                               // Use partial method implementation builder for partial method declaration attributes
+                               //
+                               if (partialMethodImplementation != null) {
+                                       MethodData = partialMethodImplementation.MethodData;
+                               }
+
+                               return;
+                       }
+
+                       base.PrepareEmit ();
+               }
+
                //
                // Emits the code
                // 
@@ -1279,11 +1318,8 @@ namespace Mono.CSharp {
                {
                        try {
                                if (IsPartialDefinition) {
-                                       //
-                                       // Use partial method implementation builder for partial method declaration attributes
-                                       //
-                                       if (partialMethodImplementation != null) {
-                                               MethodBuilder = partialMethodImplementation.MethodBuilder;
+                                       if (partialMethodImplementation != null && CurrentTypeParameters != null) {
+                                               CurrentTypeParameters.CheckPartialConstraints (partialMethodImplementation);
                                        }
 
                                        return;
@@ -1297,6 +1333,7 @@ namespace Mono.CSharp {
                                if (CurrentTypeParameters != null) {
                                        for (int i = 0; i < CurrentTypeParameters.Count; ++i) {
                                                var tp = CurrentTypeParameters [i];
+
                                                tp.CheckGenericConstraints (false);
                                                tp.Emit ();
                                        }
@@ -1312,10 +1349,8 @@ namespace Mono.CSharp {
                                        Module.PredefinedAttributes.Extension.EmitAttribute (MethodBuilder);
 
                                base.Emit ();
-                       } catch {
-                               Console.WriteLine ("Internal compiler error at {0}: exception caught while emitting {1}",
-                                                  Location, MethodBuilder);
-                               throw;
+                       } catch (Exception e) {
+                               throw new InternalErrorException (this, e);
                        }
                }
 
@@ -1329,13 +1364,12 @@ namespace Mono.CSharp {
 
                public static void Error1599 (Location loc, TypeSpec t, Report Report)
                {
-                       Report.Error (1599, loc, "Method or delegate cannot return type `{0}'", TypeManager.CSharpName (t));
+                       Report.Error (1599, loc, "Method or delegate cannot return type `{0}'", t.GetSignatureForError ());
                }
 
                protected override bool ResolveMemberType ()
                {
                        if (CurrentTypeParameters != null) {
-                               MethodBuilder = Parent.TypeBuilder.DefineMethod (GetFullName (MemberName), flags);
                                CreateTypeParameters ();
                        }
 
@@ -1485,7 +1519,7 @@ namespace Mono.CSharp {
                }
        }
        
-       public class Constructor : MethodCore, IMethodData
+       public class Constructor : MethodCore, IMethodData, IMethodDefinition
        {
                public ConstructorBuilder ConstructorBuilder;
                public ConstructorInitializer Initializer;
@@ -1533,6 +1567,13 @@ namespace Mono.CSharp {
                    }
                }
 
+               
+               MethodBase IMethodDefinition.Metadata {
+                       get {
+                               return ConstructorBuilder;
+                       }
+               }
+
                //
                // Returns true if this is a default constructor
                //
@@ -1620,7 +1661,7 @@ namespace Mono.CSharp {
                                ca, CallingConventions,
                                parameters.GetMetaInfo ());
 
-                       spec = new MethodSpec (MemberKind.Constructor, Parent.Definition, this, Compiler.BuiltinTypes.Void, ConstructorBuilder, parameters, ModFlags);
+                       spec = new MethodSpec (MemberKind.Constructor, Parent.Definition, this, Compiler.BuiltinTypes.Void, parameters, ModFlags);
                        
                        Parent.MemberCache.AddMember (spec);
                        
@@ -1828,10 +1869,6 @@ namespace Mono.CSharp {
        //
        public class MethodData
        {
-#if !STATIC
-               static FieldInfo methodbuilder_attrs_field;
-#endif
-
                public readonly IMethodData method;
 
                //
@@ -1848,6 +1885,7 @@ namespace Mono.CSharp {
                protected TypeSpec declaring_type;
                protected MethodSpec parent_method;
                SourceMethodBuilder debug_builder;
+               string full_name;
 
                MethodBuilder builder;
                public MethodBuilder MethodBuilder {
@@ -1862,6 +1900,12 @@ namespace Mono.CSharp {
                        }
                }
 
+               public string MetadataName {
+                       get {
+                               return full_name;
+                       }
+               }
+
                public MethodData (InterfaceMemberBase member,
                                   Modifiers modifiers, MethodAttributes flags, IMethodData method)
                {
@@ -1874,11 +1918,10 @@ namespace Mono.CSharp {
 
                public MethodData (InterfaceMemberBase member,
                                   Modifiers modifiers, MethodAttributes flags, 
-                                  IMethodData method, MethodBuilder builder,
+                                  IMethodData method,
                                   MethodSpec parent_method)
                        : this (member, modifiers, flags, method)
                {
-                       this.builder = builder;
                        this.parent_method = parent_method;
                }
 
@@ -1896,13 +1939,13 @@ namespace Mono.CSharp {
                                                if (member is PropertyBase) {
                                                        container.Compiler.Report.Error (550, method.Location,
                                                                "`{0}' is an accessor not found in interface member `{1}{2}'",
-                                                                         method.GetSignatureForError (), TypeManager.CSharpName (member.InterfaceType),
+                                                                         method.GetSignatureForError (), member.InterfaceType.GetSignatureForError (),
                                                                          member.GetSignatureForError ().Substring (member.GetSignatureForError ().LastIndexOf ('.')));
 
                                                } else {
                                                        container.Compiler.Report.Error (539, method.Location,
                                                                          "`{0}.{1}' in explicit interface declaration is not a member of interface",
-                                                                         TypeManager.CSharpName (member.InterfaceType), member.ShortName);
+                                                                         member.InterfaceType.GetSignatureForError (), member.ShortName);
                                                }
                                                return false;
                                        }
@@ -1910,7 +1953,7 @@ namespace Mono.CSharp {
                                                container.Compiler.Report.SymbolRelatedToPreviousError (implementing);
                                                container.Compiler.Report.Error (683, method.Location,
                                                        "`{0}' explicit method implementation cannot implement `{1}' because it is an accessor",
-                                                       member.GetSignatureForError (), TypeManager.CSharpSignature (implementing));
+                                                       member.GetSignatureForError (), implementing.GetSignatureForError ());
                                                return false;
                                        }
                                } else {
@@ -2033,58 +2076,45 @@ namespace Mono.CSharp {
                                        method_full_name = implementing.MemberDefinition.Name;
                        }
 
-                       DefineMethodBuilder (container, method_full_name, method.ParameterInfo);
+                       full_name = method_full_name;
+                       declaring_type = container.Definition;
 
-                       if (builder == null)
-                               return false;
+                       return true;
+               }
 
-//                     if (container.CurrentType != null)
-//                             declaring_type = container.CurrentType;
-//                     else
-                               declaring_type = container.Definition;
+               void DefineOverride (TypeDefinition container)
+               {
+                       if (implementing == null)
+                               return;
 
-                       if (implementing != null && member.IsExplicitImpl) {
-                               container.TypeBuilder.DefineMethodOverride (builder, (MethodInfo) implementing.GetMetaInfo ());
-                       }
+                       if (!member.IsExplicitImpl)
+                               return;
 
-                       return true;
+                       container.TypeBuilder.DefineMethodOverride (builder, (MethodInfo) implementing.GetMetaInfo ());
                }
 
-
-               /// <summary>
-               /// Create the MethodBuilder for the method 
-               /// </summary>
-               void DefineMethodBuilder (TypeDefinition container, string method_name, ParametersCompiled param)
+               //
+               // Creates partial MethodBuilder for the method when has generic parameters used
+               // as arguments or return type
+               //
+               public MethodBuilder DefineMethodBuilder (TypeDefinition container)
                {
-                       var return_type = method.ReturnType.GetMetaInfo ();
-                       var p_types = param.GetMetaInfo ();
+                       if (builder != null)
+                               throw new InternalErrorException ();
 
-                       if (builder == null) {
-                               builder = container.TypeBuilder.DefineMethod (
-                                       method_name, flags, method.CallingConventions,
-                                       return_type, p_types);
-                               return;
-                       }
+                       builder = container.TypeBuilder.DefineMethod (full_name, flags, method.CallingConventions);
+                       return builder;
+               }
 
-                       //
-                       // Generic method has been already defined to resolve method parameters
-                       // correctly when they use type parameters
-                       //
-                       builder.SetParameters (p_types);
-                       builder.SetReturnType (return_type);
-                       if (builder.Attributes != flags) {
-#if STATIC
-                               builder.__SetAttributes (flags);
-#else
-                               try {
-                                       if (methodbuilder_attrs_field == null)
-                                               methodbuilder_attrs_field = typeof (MethodBuilder).GetField ("attrs", BindingFlags.NonPublic | BindingFlags.Instance);
-                                       methodbuilder_attrs_field.SetValue (builder, flags);
-                               } catch {
-                                       container.Compiler.Report.RuntimeMissingSupport (method.Location, "Generic method MethodAttributes");
-                               }
-#endif
-                       }
+               //
+               // Creates full MethodBuilder for the method 
+               //
+               public MethodBuilder DefineMethodBuilder (TypeDefinition container, ParametersCompiled param)
+               {
+                       DefineMethodBuilder (container);
+                       builder.SetReturnType (method.ReturnType.GetMetaInfo ());
+                       builder.SetParameters (param.GetMetaInfo ());
+                       return builder;
                }
 
                //
@@ -2092,6 +2122,8 @@ namespace Mono.CSharp {
                // 
                public void Emit (TypeDefinition parent)
                {
+                       DefineOverride (parent);
+
                        var mc = (IMemberContext) method;
 
                        method.ParameterInfo.ApplyAttributes (mc, MethodBuilder);
@@ -2226,7 +2258,7 @@ namespace Mono.CSharp {
 
        // Ooouh Martin, templates are missing here.
        // When it will be possible move here a lot of child code and template method type.
-       public abstract class AbstractPropertyEventMethod : MemberCore, IMethodData {
+       public abstract class AbstractPropertyEventMethod : MemberCore, IMethodData, IMethodDefinition {
                protected MethodData method_data;
                protected ToplevelBlock block;
                protected SecurityType declarative_security;
@@ -2292,6 +2324,12 @@ namespace Mono.CSharp {
                        }
                }
 
+               MethodBase IMethodDefinition.Metadata {
+                       get {
+                               return method_data.MethodBuilder;
+                       }
+               }
+
                public abstract ParametersCompiled ParameterInfo { get ; }
                public abstract TypeSpec ReturnType { get; }
 
@@ -2302,7 +2340,7 @@ namespace Mono.CSharp {
                        if (a.Type == pa.CLSCompliant || a.Type == pa.Obsolete || a.Type == pa.Conditional) {
                                Report.Error (1667, a.Location,
                                        "Attribute `{0}' is not valid on property or event accessors. It is valid on `{1}' declarations only",
-                                       TypeManager.CSharpName (a.Type), a.GetValidTargets ());
+                                       a.Type.GetSignatureForError (), a.GetValidTargets ());
                                return;
                        }
 
index 3edbed6ba8100199301d02a86c438388929257a6..f842410c7f74461ea15a897f31f603e66f414581 100644 (file)
@@ -262,7 +262,7 @@ namespace Mono.CSharp
                                return mod;
                        }
 
-                       for (i = 1; i <= (int) Modifiers.TOP; i <<= 1) {
+                       for (i = 1; i < (int) Modifiers.TOP; i <<= 1) {
                                if ((i & invalid_flags) == 0)
                                        continue;
 
index 017664e0b356e8bcdcd36f4b541a7a5a564757be..ceb73afc743f3fade798f311f549721e88ef43fe 100644 (file)
@@ -128,6 +128,9 @@ namespace Mono.CSharp
                PredefinedTypes predefined_types;
                PredefinedMembers predefined_members;
 
+               public Binary.PredefinedOperator[] OperatorsBinaryEqualityLifted;
+               public Binary.PredefinedOperator[] OperatorsBinaryLifted;
+
                static readonly string[] attribute_targets = new string[] { "assembly", "module" };
 
                public ModuleContainer (CompilerContext context)
@@ -311,7 +314,7 @@ namespace Mono.CSharp
 
                public override void AddTypeContainer (TypeContainer tc)
                {
-                       containers.Add (tc);
+                       AddTypeContainerMember (tc);
                }
 
                public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
@@ -529,11 +532,37 @@ namespace Mono.CSharp
                        return "<module>";
                }
 
+               public Binary.PredefinedOperator[] GetPredefinedEnumAritmeticOperators (TypeSpec enumType, bool nullable)
+               {
+                       TypeSpec underlying;
+                       Binary.Operator mask = 0;
+
+                       if (nullable) {
+                               underlying = Nullable.NullableInfo.GetEnumUnderlyingType (this, enumType);
+                               mask = Binary.Operator.NullableMask;
+                       } else {
+                               underlying = EnumSpec.GetUnderlyingType (enumType);
+                       }
+
+                       var operators = new[] {
+                               new Binary.PredefinedOperator (enumType, underlying,
+                                       mask | Binary.Operator.AdditionMask | Binary.Operator.SubtractionMask | Binary.Operator.DecomposedMask, enumType),
+                               new Binary.PredefinedOperator (underlying, enumType,
+                                       mask | Binary.Operator.AdditionMask | Binary.Operator.SubtractionMask | Binary.Operator.DecomposedMask, enumType),
+                               new Binary.PredefinedOperator (enumType, mask | Binary.Operator.SubtractionMask, underlying)
+                       };
+
+                       return operators;
+               }
+
                public void InitializePredefinedTypes ()
                {
                        predefined_attributes = new PredefinedAttributes (this);
                        predefined_types = new PredefinedTypes (this);
                        predefined_members = new PredefinedMembers (this);
+
+                       OperatorsBinaryEqualityLifted = Binary.CreateEqualityLiftedOperatorsTable (this);
+                       OperatorsBinaryLifted = Binary.CreateStandardLiftedOperatorsTable (this);
                }
 
                public override bool IsClsComplianceRequired ()
index de355945a0643f97667e26eac9179ae7fb1a7ae0..38fbac1684ed0ffcf992f653c8f8a6e61e88c15f 100644 (file)
@@ -252,7 +252,7 @@ namespace Mono.CSharp {
 
                        case "System.Windows.Forms":
                        case "System.Windows.Forms.Layout":
-                               assembly = "System.Windows.Name";
+                               assembly = "System.Windows.Forms";
                                break;
                        }
 
@@ -276,16 +276,7 @@ namespace Mono.CSharp {
 
                public Namespace AddNamespace (MemberName name)
                {
-                       Namespace ns_parent;
-                       if (name.Left != null) {
-                               if (parent != null)
-                                       ns_parent = parent.AddNamespace (name.Left);
-                               else
-                                       ns_parent = AddNamespace (name.Left);
-                       } else {
-                               ns_parent = this;
-                       }
-
+                       var ns_parent = name.Left == null ? this : AddNamespace (name.Left);
                        return ns_parent.TryAddNamespace (name.Basename);
                }
 
@@ -763,6 +754,11 @@ namespace Mono.CSharp {
 
                        return Compiler.Settings.IsConditionalSymbolDefined (value);
                }
+
+               public override void Accept (StructuralVisitor visitor)
+               {
+                       visitor.Visit (this);
+               }
        }
 
 
@@ -896,7 +892,7 @@ namespace Mono.CSharp {
                        MemberCore mc;
                        if (names_container.DefinedNames.TryGetValue (name, out mc)) {
                                if (tc is NamespaceContainer && mc is NamespaceContainer) {
-                                       containers.Add (tc);
+                                       AddTypeContainerMember (tc);
                                        return;
                                }
 
@@ -1066,6 +1062,9 @@ namespace Mono.CSharp {
 
                public override void GetCompletionStartingWith (string prefix, List<string> results)
                {
+                       if (Usings == null)
+                               return;
+
                        foreach (var un in Usings) {
                                if (un.Alias != null)
                                        continue;
@@ -1334,6 +1333,11 @@ namespace Mono.CSharp {
 
                        return false;
                }
+
+               public override void Accept (StructuralVisitor visitor)
+               {
+                       visitor.Visit (this);
+               }
        }
 
        public class UsingNamespace
index 788bbfbeb8e5cd3aaed4114ae1ac2e2508d80a7d..96afce4fd5e97dbae1cc006bc78343b9d10bdb4a 100644 (file)
@@ -13,6 +13,7 @@
 //
 
 using System;
+using SLE = System.Linq.Expressions;
 
 #if STATIC
 using IKVM.Reflection.Emit;
@@ -81,6 +82,12 @@ namespace Mono.CSharp.Nullable
                {
                        return ((InflatedTypeSpec) nullableType).TypeArguments[0];
                }
+
+               public static TypeSpec GetEnumUnderlyingType (ModuleContainer module, TypeSpec nullableEnum)
+               {
+                       return module.PredefinedTypes.Nullable.TypeSpec.MakeGenericType (module,
+                               new[] { EnumSpec.GetUnderlyingType (GetUnderlyingType (nullableEnum)) });
+               }
        }
 
        public class Unwrap : Expression, IMemoryLocation
@@ -88,9 +95,10 @@ namespace Mono.CSharp.Nullable
                Expression expr;
 
                LocalTemporary temp;
+               Expression temp_field;
                readonly bool useDefaultValue;
 
-               Unwrap (Expression expr, bool useDefaultValue)
+               public Unwrap (Expression expr, bool useDefaultValue = true)
                {
                        this.expr = expr;
                        this.loc = expr.Location;
@@ -105,6 +113,7 @@ namespace Mono.CSharp.Nullable
                        return expr.ContainsEmitWithAwait ();
                }
 
+               // TODO: REMOVE
                public static Expression Create (Expression expr)
                {
                        //
@@ -117,6 +126,18 @@ namespace Mono.CSharp.Nullable
                        return Create (expr, false);
                }
 
+               public static Expression CreateUnwrapped (Expression expr)
+               {
+                       //
+                       // Avoid unwraping and wraping of same type
+                       //
+                       Wrap wrap = expr as Wrap;
+                       if (wrap != null)
+                               return wrap.Child;
+
+                       return Create (expr, true);
+               }
+
                public static Unwrap Create (Expression expr, bool useDefaultValue)
                {
                        return new Unwrap (expr, useDefaultValue);
@@ -166,6 +187,14 @@ namespace Mono.CSharp.Nullable
                        call.EmitPredefined (ec, NullableInfo.GetHasValue (expr.Type), null);
                }
 
+               public override Expression EmitToField (EmitContext ec)
+               {
+                       if (temp_field == null)
+                               temp_field = this.expr.EmitToField (ec);
+                       
+                       return this;
+               }
+
                public override bool Equals (object obj)
                {
                        Unwrap uw = obj as Unwrap;
@@ -189,9 +218,9 @@ namespace Mono.CSharp.Nullable
                        }
                }
 
-               void Store (EmitContext ec)
+               public void Store (EmitContext ec)
                {
-                       if (temp != null)
+                       if (temp != null || temp_field != null)
                                return;
 
                        if (expr is VariableReference)
@@ -203,20 +232,35 @@ namespace Mono.CSharp.Nullable
 
                public void Load (EmitContext ec)
                {
-                       if (expr is VariableReference)
+                       if (temp_field != null)
+                               temp_field.Emit (ec);
+                       else if (expr is VariableReference)
                                expr.Emit (ec);
                        else
                                LocalVariable.Emit (ec);
                }
 
-               public override System.Linq.Expressions.Expression MakeExpression (BuilderContext ctx)
+               public override SLE.Expression MakeExpression (BuilderContext ctx)
                {
                        return expr.MakeExpression (ctx);
                }
 
                public void AddressOf (EmitContext ec, AddressOp mode)
                {
-                       IMemoryLocation ml = expr as VariableReference;
+                       IMemoryLocation ml;
+
+                       if (temp_field != null) {
+                               ml = temp_field as IMemoryLocation;
+                               if (ml == null) {
+                                       var lt = new LocalTemporary (temp_field.Type);
+                                       temp_field.Emit (ec);
+                                       lt.Store (ec);
+                                       ml = lt;
+                               }
+                       } else {
+                               ml = expr as VariableReference;
+                       }
+
                        if (ml != null)
                                ml.AddressOf (ec, mode);
                        else
@@ -228,7 +272,7 @@ namespace Mono.CSharp.Nullable
                //
                LocalTemporary LocalVariable {
                        get {
-                               if (temp == null)
+                               if (temp == null && temp_field == null)
                                        temp = new LocalTemporary (expr.Type);
                                return temp;
                        }
@@ -279,6 +323,12 @@ namespace Mono.CSharp.Nullable
                                return child_cast.CreateExpressionTree (ec);
                        }
 
+                       var user_cast = child as UserCast;
+                       if (user_cast != null) {
+                               child.Type = type;
+                               return user_cast.CreateExpressionTree (ec);
+                       }
+
                        return base.CreateExpressionTree (ec);
                }
 
@@ -317,10 +367,12 @@ namespace Mono.CSharp.Nullable
                        return new LiftedNull (nullable, loc);
                }
 
-               public static Constant CreateFromExpression (ResolveContext ec, Expression e)
+               public static Constant CreateFromExpression (ResolveContext rc, Expression e)
                {
-                       ec.Report.Warning (458, 2, e.Location, "The result of the expression is always `null' of type `{0}'",
-                               TypeManager.CSharpName (e.Type));
+                       if (!rc.HasSet (ResolveContext.Options.ExpressionTreeConversion)) {
+                               rc.Report.Warning (458, 2, e.Location, "The result of the expression is always `null' of type `{0}'",
+                                       e.Type.GetSignatureForError ());
+                       }
 
                        return ReducedExpression.Create (Create (e.Type, e.Location), e);
                }
@@ -349,12 +401,12 @@ namespace Mono.CSharp.Nullable
        //
        // Generic lifting expression, supports all S/S? -> T/T? cases
        //
-       public class Lifted : Expression, IMemoryLocation
+       public class LiftedConversion : Expression, IMemoryLocation
        {
                Expression expr, null_value;
                Unwrap unwrap;
 
-               public Lifted (Expression expr, Unwrap unwrap, TypeSpec type)
+               public LiftedConversion (Expression expr, Unwrap unwrap, TypeSpec type)
                {
                        this.expr = expr;
                        this.unwrap = unwrap;
@@ -362,7 +414,7 @@ namespace Mono.CSharp.Nullable
                        this.type = type;
                }
 
-               public Lifted (Expression expr, Expression unwrap, TypeSpec type)
+               public LiftedConversion (Expression expr, Expression unwrap, TypeSpec type)
                        : this (expr, unwrap as Unwrap, type)
                {
                }
@@ -393,9 +445,11 @@ namespace Mono.CSharp.Nullable
 
                        // Wrap target for T?
                        if (type.IsNullableType) {
-                               expr = Wrap.Create (expr, type);
-                               if (expr == null)
-                                       return null;
+                               if (!expr.Type.IsNullableType) {
+                                       expr = Wrap.Create (expr, type);
+                                       if (expr == null)
+                                               return null;
+                               }
 
                                null_value = LiftedNull.Create (type, loc);
                        } else if (TypeSpec.IsValueType (type)) {
@@ -422,6 +476,7 @@ namespace Mono.CSharp.Nullable
                        ec.MarkLabel (is_null_label);
 
                        null_value.Emit (ec);
+
                        ec.MarkLabel (end_label);
                }
 
@@ -540,266 +595,90 @@ namespace Mono.CSharp.Nullable
                }
        }
 
-       public class LiftedBinaryOperator : Binary
+       //
+       // Lifted version of binary operators
+       //
+       class LiftedBinaryOperator : Expression
        {
-               Unwrap left_unwrap, right_unwrap;
-               Expression left_orig, right_orig;
-               Expression user_operator;
-               MethodSpec wrap_ctor;
-
-               public LiftedBinaryOperator (Binary.Operator op, Expression left, Expression right)
-                       : base (op, left, right)
+               public LiftedBinaryOperator (Binary b)
                {
+                       this.Binary = b;
+                       this.loc = b.Location;
                }
 
-               bool IsBitwiseBoolean {
-                       get {
-                               return (Oper == Operator.BitwiseAnd || Oper == Operator.BitwiseOr) &&
-                               ((left_unwrap != null && left_unwrap.Type.BuiltinType == BuiltinTypeSpec.Type.Bool) ||
-                                (right_unwrap != null && right_unwrap.Type.BuiltinType == BuiltinTypeSpec.Type.Bool));
-                       }
-               }
+               public Binary Binary { get; private set; }
 
-               bool IsLeftNullLifted {
-                       get {
-                               return (state & State.LeftNullLifted) != 0;
-                       }
-               }
+               public Expression Left { get; set; }
 
-               bool IsRightNullLifted {
-                       get {
-                               return (state & State.RightNullLifted) != 0;
-                       }
-               }
+               public Expression Right { get; set; }
 
-               public override Expression CreateExpressionTree (ResolveContext ec)
-               {
-                       if (user_operator != null)
-                               return user_operator.CreateExpressionTree (ec);
+               public Unwrap UnwrapLeft { get; set; }
 
-                       return base.CreateExpressionTree (ec);
-               }
+               public Unwrap UnwrapRight { get; set; }
 
-               //
-               // CSC 2 has this behavior, it allows structs to be compared
-               // with the null literal *outside* of a generics context and
-               // inlines that as true or false.
-               //
-               Constant CreateNullConstant (ResolveContext ec, Expression expr)
-               {
-                       // FIXME: Handle side effect constants
-                       Constant c = new BoolConstant (ec.BuiltinTypes, Oper == Operator.Inequality, loc);
+               public MethodSpec UserOperator { get; set; }
 
-                       if ((Oper & Operator.EqualityMask) != 0) {
-                               ec.Report.Warning (472, 2, loc, "The result of comparing value type `{0}' with null is always `{1}'",
-                                       TypeManager.CSharpName (expr.Type), c.GetValueAsLiteral ());
-                       } else {
-                               ec.Report.Warning (464, 2, loc, "The result of comparing type `{0}' with null is always `{1}'",
-                                       TypeManager.CSharpName (expr.Type), c.GetValueAsLiteral ());
+               bool IsBitwiseBoolean {
+                       get {
+                               return (Binary.Oper == Binary.Operator.BitwiseAnd || Binary.Oper == Binary.Operator.BitwiseOr) &&
+                               ((UnwrapLeft != null && UnwrapLeft.Type.BuiltinType == BuiltinTypeSpec.Type.Bool) ||
+                                (UnwrapRight != null && UnwrapRight.Type.BuiltinType == BuiltinTypeSpec.Type.Bool));
                        }
-
-                       return ReducedExpression.Create (c, this);
                }
 
-               protected override Expression DoResolve (ResolveContext ec)
+               public override bool ContainsEmitWithAwait ()
                {
-                       if ((Oper & Operator.LogicalMask) != 0) {
-                               Error_OperatorCannotBeApplied (ec, left, right);
-                               return null;
-                       }
-
-                       bool use_default_call = (Oper & (Operator.BitwiseMask | Operator.EqualityMask)) != 0;
-                       left_orig = left;
-                       if (left.Type.IsNullableType) {
-                               left = left_unwrap = Unwrap.Create (left, use_default_call);
-                               if (left == null)
-                                       return null;
-                       }
-
-                       right_orig = right;
-                       if (right.Type.IsNullableType) {
-                               right = right_unwrap = Unwrap.Create (right, use_default_call);
-                               if (right == null)
-                                       return null;
-                       }
-
-                       //
-                       // Some details are in 6.4.2, 7.2.7
-                       // Arguments can be lifted for equal operators when the return type is bool and both
-                       // arguments are of same type
-                       //      
-                       if (left_orig is NullLiteral) {
-                               left = right;
-                               state |= State.LeftNullLifted;
-                               type = ec.BuiltinTypes.Bool;
-                       }
-
-                       if (right_orig.IsNull) {
-                               if ((Oper & Operator.ShiftMask) != 0)
-                                       right = new EmptyExpression (ec.BuiltinTypes.Int);
-                               else
-                                       right = left;
-
-                               state |= State.RightNullLifted;
-                               type = ec.BuiltinTypes.Bool;
-                       }
-
-                       eclass = ExprClass.Value;
-                       return DoResolveCore (ec, left_orig, right_orig);
+                       return Left.ContainsEmitWithAwait () || Right.ContainsEmitWithAwait ();
                }
 
-               void EmitBitwiseBoolean (EmitContext ec)
+               public override Expression CreateExpressionTree (ResolveContext rc)
                {
-                       Label load_left = ec.DefineLabel ();
-                       Label load_right = ec.DefineLabel ();
-                       Label end_label = ec.DefineLabel ();
-
-                       // null & value, null | value
-                       if (left_unwrap == null) {
-                               left_unwrap = right_unwrap;
-                               right_unwrap = null;
-                               right = left;
-                       }
-
-                       left_unwrap.Emit (ec);
-                       ec.Emit (OpCodes.Brtrue, load_right);
-
-                       // value & null, value | null
-                       if (right_unwrap != null) {
-                               right_unwrap.Emit (ec);
-                               ec.Emit (OpCodes.Brtrue_S, load_left);
-                       }
-
-                       left_unwrap.EmitCheck (ec);
-                       ec.Emit (OpCodes.Brfalse_S, load_right);
-
-                       // load left
-                       ec.MarkLabel (load_left);
+                       if (UserOperator != null) {
+                               Arguments args = new Arguments (2);
+                               args.Add (new Argument (Binary.Left));
+                               args.Add (new Argument (Binary.Right));
 
-                       if (Oper == Operator.BitwiseAnd) {
-                               left_unwrap.Load (ec);
-                       } else {
-                               if (right_unwrap == null) {
-                                       right.Emit (ec);
-                                       if (right is EmptyConstantCast || right is EmptyCast)
-                                               ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
-                               } else {
-                                       right_unwrap.Load (ec);
-                                       right_unwrap = left_unwrap;
-                               }
-                       }
-                       ec.Emit (OpCodes.Br_S, end_label);
-
-                       // load right
-                       ec.MarkLabel (load_right);
-                       if (right_unwrap == null) {
-                               if (Oper == Operator.BitwiseAnd) {
-                                       right.Emit (ec);
-                                       if (right is EmptyConstantCast || right is EmptyCast)
-                                               ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
-                               } else {
-                                       left_unwrap.Load (ec);
-                               }
-                       } else {
-                               right_unwrap.Load (ec);
+                               var method = new UserOperatorCall (UserOperator, args, Binary.CreateExpressionTree, loc);
+                               return method.CreateExpressionTree (rc);
                        }
 
-                       ec.MarkLabel (end_label);
+                       return Binary.CreateExpressionTree (rc);
                }
 
-               //
-               // Emits optimized equality or inequality operator when possible
-               //
-               void EmitEquality (EmitContext ec)
+               protected override Expression DoResolve (ResolveContext rc)
                {
-                       //
-                       // Either left or right is null
-                       //
-                       if (left_unwrap != null && (IsRightNullLifted || right.IsNull)) {
-                               left_unwrap.EmitCheck (ec);
-                               if (Oper == Binary.Operator.Equality) {
-                                       ec.EmitInt (0);
-                                       ec.Emit (OpCodes.Ceq);
-                               }
-                               return;
-                       }
-
-                       if (right_unwrap != null && (IsLeftNullLifted || left.IsNull)) {
-                               right_unwrap.EmitCheck (ec);
-                               if (Oper == Binary.Operator.Equality) {
-                                       ec.EmitInt (0);
-                                       ec.Emit (OpCodes.Ceq);
-                               }
-                               return;
-                       }
-
-                       Label dissimilar_label = ec.DefineLabel ();
-                       Label end_label = ec.DefineLabel ();
+                       if (rc.IsRuntimeBinder) {
+                               if (UnwrapLeft == null && !Left.Type.IsNullableType)
+                                       Left = Wrap.Create (Left, rc.Module.PredefinedTypes.Nullable.TypeSpec.MakeGenericType (rc.Module, new[] { Left.Type }));
 
-                       if (user_operator != null) {
-                               user_operator.Emit (ec);
-                               ec.Emit (Oper == Operator.Equality ? OpCodes.Brfalse_S : OpCodes.Brtrue_S, dissimilar_label);
+                               if (UnwrapRight == null && !Right.Type.IsNullableType)
+                                       Right = Wrap.Create (Right, rc.Module.PredefinedTypes.Nullable.TypeSpec.MakeGenericType (rc.Module, new[] { Right.Type }));
                        } else {
-                               if (ec.HasSet (BuilderContext.Options.AsyncBody) && right.ContainsEmitWithAwait ()) {
-                                       left = left.EmitToField (ec);
-                                       right = right.EmitToField (ec);
+                               if (UnwrapLeft == null && Left != null && Left.Type.IsNullableType) {
+                                       Left = Unwrap.CreateUnwrapped (Left);
+                                       UnwrapLeft = Left as Unwrap;
                                }
 
-                               left.Emit (ec);
-                               right.Emit (ec);
-
-                               ec.Emit (OpCodes.Bne_Un_S, dissimilar_label);
-                       }
-
-                       if (left_unwrap != null)
-                               left_unwrap.EmitCheck (ec);
-
-                       if (right_unwrap != null)
-                               right_unwrap.EmitCheck (ec);
-
-                       if (left_unwrap != null && right_unwrap != null) {
-                               if (Oper == Operator.Inequality)
-                                       ec.Emit (OpCodes.Xor);
-                               else
-                                       ec.Emit (OpCodes.Ceq);
-                       } else {
-                               if (Oper == Operator.Inequality) {
-                                       ec.EmitInt (0);
-                                       ec.Emit (OpCodes.Ceq);
+                               if (UnwrapRight == null && Right != null && Right.Type.IsNullableType) {
+                                       Right = Unwrap.CreateUnwrapped (Right);
+                                       UnwrapRight = Right as Unwrap;
                                }
                        }
 
-                       ec.Emit (OpCodes.Br_S, end_label);
-
-                       ec.MarkLabel (dissimilar_label);
-                       if (Oper == Operator.Inequality)
-                               ec.EmitInt (1);
-                       else
-                               ec.EmitInt (0);
+                       type = Binary.Type;
+                       eclass = Binary.eclass; 
 
-                       ec.MarkLabel (end_label);
+                       return this;
                }
-               
-               public override void EmitBranchable (EmitContext ec, Label target, bool onTrue)
-               {
-                       Emit (ec);
-                       ec.Emit (onTrue ? OpCodes.Brtrue : OpCodes.Brfalse, target);
-               }                       
 
                public override void Emit (EmitContext ec)
                {
-                       //
-                       // Optimize same expression operation
-                       //
-                       if (right_unwrap != null && right.Equals (left))
-                               right_unwrap = left_unwrap;
-
-                       if (user_operator == null && IsBitwiseBoolean) {
+                       if (IsBitwiseBoolean && UserOperator == null) {
                                EmitBitwiseBoolean (ec);
                                return;
                        }
 
-                       if ((Oper & Operator.EqualityMask) != 0) {
+                       if ((Binary.Oper & Binary.Operator.EqualityMask) != 0) {
                                EmitEquality (ec);
                                return;
                        }
@@ -807,28 +686,48 @@ namespace Mono.CSharp.Nullable
                        Label is_null_label = ec.DefineLabel ();
                        Label end_label = ec.DefineLabel ();
 
-                       if (left_unwrap != null) {
-                               left_unwrap.EmitCheck (ec);
-                               ec.Emit (OpCodes.Brfalse, is_null_label);
+                       if (ec.HasSet (BuilderContext.Options.AsyncBody) && Right.ContainsEmitWithAwait ()) {
+                               Left = Left.EmitToField (ec);
+                               Right = Right.EmitToField (ec);
+                       }
+
+                       if (UnwrapLeft != null) {
+                               UnwrapLeft.EmitCheck (ec);
                        }
 
                        //
                        // Don't emit HasValue check when left and right expressions are same
                        //
-                       if (right_unwrap != null && !left.Equals (right)) {
-                               right_unwrap.EmitCheck (ec);
-                               ec.Emit (OpCodes.Brfalse, is_null_label);
+                       if (UnwrapRight != null && !Binary.Left.Equals (Binary.Right)) {
+                               UnwrapRight.EmitCheck (ec);
+                               if (UnwrapLeft != null) {
+                                       ec.Emit (OpCodes.And);
+                               }
                        }
 
-                       EmitOperator (ec, left.Type);
+                       ec.Emit (OpCodes.Brfalse, is_null_label);
+
+                       if (UserOperator != null) {
+                               var args = new Arguments (2);
+                               args.Add (new Argument (Left));
+                               args.Add (new Argument (Right));
+
+                               var call = new CallEmitter ();
+                               call.EmitPredefined (ec, UserOperator, args);
+                       } else {
+                               Binary.EmitOperator (ec, Left, Right);
+                       }
 
-                       if (wrap_ctor != null)
-                               ec.Emit (OpCodes.Newobj, wrap_ctor);
+                       //
+                       // Wrap the result when the operator return type is nullable type
+                       //
+                       if (type.IsNullableType)
+                               ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
 
                        ec.Emit (OpCodes.Br_S, end_label);
                        ec.MarkLabel (is_null_label);
 
-                       if ((Oper & Operator.ComparisonMask) != 0) {
+                       if ((Binary.Oper & Binary.Operator.ComparisonMask) != 0) {
                                ec.EmitInt (0);
                        } else {
                                LiftedNull.Create (type, loc).Emit (ec);
@@ -837,170 +736,283 @@ namespace Mono.CSharp.Nullable
                        ec.MarkLabel (end_label);
                }
 
-               protected override void EmitOperator (EmitContext ec, TypeSpec l)
+               void EmitBitwiseBoolean (EmitContext ec)
                {
-                       if (user_operator != null) {
-                               user_operator.Emit (ec);
-                               return;
-                       }
+                       Label load_left = ec.DefineLabel ();
+                       Label load_right = ec.DefineLabel ();
+                       Label end_label = ec.DefineLabel ();
+                       Label is_null_label = ec.DefineLabel ();
 
-                       if (left.Type.IsNullableType) {
-                               l = NullableInfo.GetUnderlyingType (left.Type);
-                               left = EmptyCast.Create (left, l);
-                       }
+                       bool or = Binary.Oper == Binary.Operator.BitwiseOr;
 
-                       if (right.Type.IsNullableType) {
-                               right = EmptyCast.Create (right, NullableInfo.GetUnderlyingType (right.Type));
-                       }
+                       //
+                       // Both operands are bool? types
+                       //
+                       if (UnwrapLeft != null && UnwrapRight != null) {
+                               if (ec.HasSet (BuilderContext.Options.AsyncBody) && Binary.Right.ContainsEmitWithAwait ()) {
+                                       Left = Left.EmitToField (ec);
+                                       Right = Right.EmitToField (ec);
+                               }
 
-                       base.EmitOperator (ec, l);
-               }
+                               Left.Emit (ec);
+                               ec.Emit (OpCodes.Brtrue_S, load_right);
 
-               Expression LiftResult (ResolveContext ec, Expression res_expr)
-               {
-                       TypeSpec lifted_type;
+                               Right.Emit (ec);
+                               ec.Emit (OpCodes.Brtrue_S, load_left);
 
-                       //
-                       // Avoid double conversion
-                       //
-                       if (left_unwrap == null || IsLeftNullLifted || left_unwrap.Type != left.Type || (left_unwrap != null && IsRightNullLifted)) {
-                               lifted_type = new NullableType (left.Type, loc).ResolveAsType (ec);
-                               if (lifted_type == null)
-                                       return null;
+                               UnwrapLeft.EmitCheck (ec);
+                               ec.Emit (OpCodes.Brfalse_S, load_right);
 
-                               if (left is UserCast || left is EmptyCast || left is OpcodeCast)
-                                       left.Type = lifted_type;
+                               // load left
+                               ec.MarkLabel (load_left);
+                               if (or)
+                                       UnwrapRight.Load (ec);
                                else
-                                       left = EmptyCast.Create (left, lifted_type);
-                       }
+                                       UnwrapLeft.Load (ec);
 
-                       if (left != right && (right_unwrap == null || IsRightNullLifted || right_unwrap.Type != right.Type || (right_unwrap != null && IsLeftNullLifted))) {
-                               lifted_type = new NullableType (right.Type, loc).ResolveAsType (ec);
-                               if (lifted_type == null)
-                                       return null;
-
-                               var r = right;
-                               if (r is ReducedExpression)
-                                       r = ((ReducedExpression) r).OriginalExpression;
+                               ec.Emit (OpCodes.Br_S, end_label);
 
-                               if (r is UserCast || r is EmptyCast || r is OpcodeCast)
-                                       r.Type = lifted_type;
+                               // load right
+                               ec.MarkLabel (load_right);
+                               if (or)
+                                       UnwrapLeft.Load (ec);
                                else
-                                       right = EmptyCast.Create (right, lifted_type);
+                                       UnwrapRight.Load (ec);
+
+                               ec.MarkLabel (end_label);
+                               return;
                        }
 
-                       if ((Oper & Operator.ComparisonMask) == 0) {
-                               lifted_type = new NullableType (res_expr.Type, loc).ResolveAsType (ec);
-                               if (lifted_type == null)
-                                       return null;
+                       //
+                       // Faster version when one operand is bool
+                       //
+                       if (UnwrapLeft == null) {
+                               //
+                               // (bool, bool?)
+                               //
+                               // Optimizes remaining (false & bool?), (true | bool?) which are not easy to handle
+                               // in binary expression reduction
+                               //
+                               var c = Left as BoolConstant;
+                               if (c != null) {
+                                       // Keep evaluation order
+                                       UnwrapRight.Store (ec);
+
+                                       ec.EmitInt (or ? 1 : 0);
+                                       ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
+                               } else if (Left.IsNull) {
+                                       UnwrapRight.Emit (ec);
+                                       ec.Emit (or ? OpCodes.Brfalse_S : OpCodes.Brtrue_S, is_null_label);
+
+                                       UnwrapRight.Load (ec);
+                                       ec.Emit (OpCodes.Br_S, end_label);
+
+                                       ec.MarkLabel (is_null_label);
+                                       LiftedNull.Create (type, loc).Emit (ec);
+                               } else {
+                                       Left.Emit (ec);
+                                       ec.Emit (or ? OpCodes.Brfalse_S : OpCodes.Brtrue_S, load_right);
 
-                               wrap_ctor = NullableInfo.GetConstructor (lifted_type);
-                               type = res_expr.Type = lifted_type;
-                       }
+                                       ec.EmitInt (or ? 1 : 0);
+                                       ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
 
-                       if (IsLeftNullLifted) {
-                               left = LiftedNull.Create (right.Type, left.Location);
+                                       ec.Emit (OpCodes.Br_S, end_label);
 
+                                       ec.MarkLabel (load_right);
+                                       UnwrapRight.Original.Emit (ec);
+                               }
+                       } else {
                                //
-                               // Special case for bool?, the result depends on both null right side and left side value
+                               // (bool?, bool)
                                //
-                               if ((Oper == Operator.BitwiseAnd || Oper == Operator.BitwiseOr) && NullableInfo.GetUnderlyingType (type).BuiltinType == BuiltinTypeSpec.Type.Bool) {
-                                       return res_expr;
-                               }
-
-                               if ((Oper & (Operator.ArithmeticMask | Operator.ShiftMask | Operator.BitwiseMask)) != 0)
-                                       return LiftedNull.CreateFromExpression (ec, res_expr);
+                               // Keep left-right evaluation order
+                               UnwrapLeft.Store (ec);
 
                                //
-                               // Value types and null comparison
+                               // Optimizes remaining (bool? & false), (bool? | true) which are not easy to handle
+                               // in binary expression reduction
                                //
-                               if (right_unwrap == null || (Oper & Operator.RelationalMask) != 0)
-                                       return CreateNullConstant (ec, right_orig);
+                               var c = Right as BoolConstant;
+                               if (c != null) {
+                                       ec.EmitInt (or ? 1 : 0);
+                                       ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
+                               } else if (Right.IsNull) {
+                                       UnwrapLeft.Emit (ec);
+                                       ec.Emit (or ? OpCodes.Brfalse_S : OpCodes.Brtrue_S, is_null_label);
+
+                                       UnwrapLeft.Load (ec);
+                                       ec.Emit (OpCodes.Br_S, end_label);
+
+                                       ec.MarkLabel (is_null_label);
+                                       LiftedNull.Create (type, loc).Emit (ec);
+                               } else {
+                                       Right.Emit (ec);
+                                       ec.Emit (or ? OpCodes.Brfalse_S : OpCodes.Brtrue_S, load_right);
+
+                                       ec.EmitInt (or ? 1 : 0);
+                                       ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
+
+                                       ec.Emit (OpCodes.Br_S, end_label);
+
+                                       ec.MarkLabel (load_right);
+
+                                       UnwrapLeft.Load (ec);
+                               }
                        }
 
-                       if (IsRightNullLifted) {
-                               right = LiftedNull.Create (left.Type, right.Location);
+                       ec.MarkLabel (end_label);
+               }
 
+               //
+               // Emits optimized equality or inequality operator when possible
+               //
+               void EmitEquality (EmitContext ec)
+               {
+                       //
+                       // Either left or right is null
+                       // 
+                       if (UnwrapLeft != null && Binary.Right.IsNull) { // TODO: Optimize for EmitBranchable
                                //
-                               // Special case for bool?, the result depends on both null right side and left side value
+                               // left.HasValue == false 
                                //
-                               if ((Oper == Operator.BitwiseAnd || Oper == Operator.BitwiseOr) && NullableInfo.GetUnderlyingType (type).BuiltinType == BuiltinTypeSpec.Type.Bool) {
-                                       return res_expr;
+                               UnwrapLeft.EmitCheck (ec);
+                               if (Binary.Oper == Binary.Operator.Equality) {
+                                       ec.EmitInt (0);
+                                       ec.Emit (OpCodes.Ceq);
                                }
+                               return;
+                       }
 
-                               if ((Oper & (Operator.ArithmeticMask | Operator.ShiftMask | Operator.BitwiseMask)) != 0)
-                                       return LiftedNull.CreateFromExpression (ec, res_expr);
-
+                       if (UnwrapRight != null && Binary.Left.IsNull) {
                                //
-                               // Value types and null comparison
+                               // right.HasValue == false 
                                //
-                               if (left_unwrap == null || (Oper & Operator.RelationalMask) != 0)
-                                       return CreateNullConstant (ec, left_orig);
+                               UnwrapRight.EmitCheck (ec);
+                               if (Binary.Oper == Binary.Operator.Equality) {
+                                       ec.EmitInt (0);
+                                       ec.Emit (OpCodes.Ceq);
+                               }
+                               return;
                        }
 
-                       return res_expr;
-               }
+                       Label dissimilar_label = ec.DefineLabel ();
+                       Label end_label = ec.DefineLabel ();
 
-               protected override Expression ResolveOperatorPredefined (ResolveContext ec, Binary.PredefinedOperator [] operators, bool primitives_only, TypeSpec enum_type)
-               {
-                       Expression e = base.ResolveOperatorPredefined (ec, operators, primitives_only, enum_type);
+                       if (UserOperator != null) {
+                               var left = Left;
 
-                       if (e == this || enum_type != null)
-                               return LiftResult (ec, e);
+                               if (UnwrapLeft != null) {
+                                       UnwrapLeft.EmitCheck (ec);
+                               } else {
+                                       // Keep evaluation order same
+                                       if (!(Left is VariableReference)) {
+                                               Left.Emit (ec);
+                                               var lt = new LocalTemporary (Left.Type);
+                                               lt.Store (ec);
+                                               left = lt;
+                                       }
+                               }
 
-                       //
-                       // 7.9.9 Equality operators and null
-                       //
-                       // The == and != operators permit one operand to be a value of a nullable type and
-                       // the other to be the null literal, even if no predefined or user-defined operator
-                       // (in unlifted or lifted form) exists for the operation.
-                       //
-                       if (e == null && (Oper & Operator.EqualityMask) != 0) {
-                               if ((IsLeftNullLifted && right_unwrap != null) || (IsRightNullLifted && left_unwrap != null))
-                                       return LiftResult (ec, this);
-                       }
+                               if (UnwrapRight != null) {
+                                       UnwrapRight.EmitCheck (ec);
 
-                       return e;
-               }
+                                       if (UnwrapLeft != null) {
+                                               ec.Emit (OpCodes.Bne_Un, dissimilar_label);
 
-               protected override Expression ResolveUserOperator (ResolveContext ec, Expression left, Expression right)
-               {
-                       //
-                       // Try original types first for exact match without unwrapping
-                       //
-                       Expression expr = base.ResolveUserOperator (ec, left_orig, right_orig);
-                       if (expr != null)
-                               return expr;
+                                               Label compare_label = ec.DefineLabel ();
+                                               UnwrapLeft.EmitCheck (ec);
+                                               ec.Emit (OpCodes.Brtrue, compare_label);
 
-                       State orig_state = state;
+                                               if (Binary.Oper == Binary.Operator.Equality)
+                                                       ec.EmitInt (1);
+                                               else
+                                                       ec.EmitInt (0);
 
-                       //
-                       // One side is a nullable type, try to match underlying types
-                       //
-                       if (left_unwrap != null || right_unwrap != null || (state & (State.RightNullLifted | State.LeftNullLifted)) != 0) {
-                               expr = base.ResolveUserOperator (ec, left, right);
+                                               ec.Emit (OpCodes.Br, end_label);
+
+                                               ec.MarkLabel (compare_label);
+                                       } else {
+                                               ec.Emit (OpCodes.Brfalse, dissimilar_label);
+                                       }
+                               } else {
+                                       ec.Emit (OpCodes.Brfalse, dissimilar_label);
+                               }
+
+                               var args = new Arguments (2);
+                               args.Add (new Argument (left));
+                               args.Add (new Argument (Right));
+
+                               var call = new CallEmitter ();
+                               call.EmitPredefined (ec, UserOperator, args);
+                       } else {
+                               if (ec.HasSet (BuilderContext.Options.AsyncBody) && Binary.Right.ContainsEmitWithAwait ()) {
+                                       Left = Left.EmitToField (ec);
+                                       Right = Right.EmitToField (ec);
+                               }
+
+                               //
+                               // Emit underlying value comparison first.
+                               //
+                               // For this code: int? a = 1; bool b = a == 1;
+                               //
+                               // We emit something similar to this. Expressions with side effects have local
+                               // variable created by Unwrap expression
+                               //
+                               //      left.GetValueOrDefault ()
+                               //      right
+                               //      bne.un.s   dissimilar_label
+                               //  left.HasValue
+                               //      br.s       end_label
+                               // dissimilar_label:
+                               //      ldc.i4.0
+                               // end_label:
+                               //
+
+                               Left.Emit (ec);
+                               Right.Emit (ec);
+
+                               ec.Emit (OpCodes.Bne_Un_S, dissimilar_label);
+
+                               //
+                               // Check both left and right expressions for Unwrap call in which
+                               // case we need to run get_HasValue() check because the type is
+                               // nullable and could have null value
+                               //
+                               if (UnwrapLeft != null)
+                                       UnwrapLeft.EmitCheck (ec);
+
+                               if (UnwrapRight != null)
+                                       UnwrapRight.EmitCheck (ec);
+
+                               if (UnwrapLeft != null && UnwrapRight != null) {
+                                       if (Binary.Oper == Binary.Operator.Inequality)
+                                               ec.Emit (OpCodes.Xor);
+                                       else
+                                               ec.Emit (OpCodes.Ceq);
+                               } else {
+                                       if (Binary.Oper == Binary.Operator.Inequality) {
+                                               ec.EmitInt (0);
+                                               ec.Emit (OpCodes.Ceq);
+                                       }
+                               }
                        }
 
-                       if (expr == null)
-                               return null;
+                       ec.Emit (OpCodes.Br_S, end_label);
 
-                       //
-                       // Lift the result in the case it can be null and predefined or user operator
-                       // result type is of a value type
-                       //
-                       if (!TypeSpec.IsValueType (expr.Type))
-                               return null;
+                       ec.MarkLabel (dissimilar_label);
+                       if (Binary.Oper == Binary.Operator.Inequality)
+                               ec.EmitInt (1);
+                       else
+                               ec.EmitInt (0);
 
-                       if (state != orig_state)
-                               return expr;
+                       ec.MarkLabel (end_label);
+               }
 
-                       expr = LiftResult (ec, expr);
-                       if (expr is Constant)
-                               return expr;
+               public override SLE.Expression MakeExpression (BuilderContext ctx)
+               {
+                       Console.WriteLine (":{0} x {1}", Left.GetType (), Right.GetType ());
 
-                       type = expr.Type;
-                       user_operator = expr;
-                       return this;
+                       return Binary.MakeExpression (ctx, Left, Right);
                }
        }
 
index 75a7bb73db0afe40c9e2f8f70753dd0555d7810f..69ae1cf839f2a8da9cd5352f0b2fa11521f27a8f 100644 (file)
@@ -338,7 +338,7 @@ namespace Mono.CSharp {
                                if (HasOptionalExpression) {
                                        a.Report.Error (1745, a.Location,
                                                "Cannot specify `{0}' attribute on optional parameter `{1}'",
-                                               TypeManager.CSharpName (a.Type).Replace ("Attribute", ""), Name);
+                                               a.Type.GetSignatureForError ().Replace ("Attribute", ""), Name);
                                }
 
                                if (a.Type == pa.DefaultParameterValue)
@@ -406,7 +406,7 @@ namespace Mono.CSharp {
 
                        if ((modFlags & Modifier.This) != 0 && (parameter_type.IsPointer || parameter_type.BuiltinType == BuiltinTypeSpec.Type.Dynamic)) {
                                rc.Module.Compiler.Report.Error (1103, Location, "The extension method cannot be of type `{0}'",
-                                       TypeManager.CSharpName (parameter_type));
+                                       parameter_type.GetSignatureForError ());
                        }
 
                        return parameter_type;
@@ -582,7 +582,7 @@ namespace Mono.CSharp {
                {
                        string type_name;
                        if (parameter_type != null)
-                               type_name = TypeManager.CSharpName (parameter_type);
+                               type_name = parameter_type.GetSignatureForError ();
                        else
                                type_name = texpr.GetSignatureForError ();
 
@@ -989,11 +989,11 @@ namespace Mono.CSharp {
                        if (types == null || types [pos] == null)
                                return ((Parameter)FixedParameters [pos]).GetSignatureForError ();
 
-                       string type = TypeManager.CSharpName (types [pos]);
+                       string type = types [pos].GetSignatureForError ();
                        if (FixedParameters [pos].HasExtensionMethodModifier)
                                return "this " + type;
 
-                       Parameter.Modifier mod = FixedParameters [pos].ModFlags;
+                       var mod = FixedParameters[pos].ModFlags & Parameter.Modifier.ModifierMask;
                        if (mod == 0)
                                return type;
 
index ab8650cd09d139e7ed74e244986557751033914f..af15bf6e1c932ff3be8f3c3fd19f32a3f008bef0 100644 (file)
@@ -534,10 +534,14 @@ namespace Mono.CSharp {
                        // about mismatch at return type when the check bellow rejects them
                        //
                        var parameters = mi.Parameters;
+                       MethodSpec close_match = null;
+
                        while (true) {
                                var candidates = MemberCache.FindMembers (base_type, mi.Name, false);
-                               if (candidates == null)
+                               if (candidates == null) {
+                                       base_method = close_match;
                                        return false;
+                               }
 
                                MethodSpec similar_candidate = null;
                                foreach (var candidate in candidates) {
@@ -590,19 +594,29 @@ namespace Mono.CSharp {
                                        // From this point the candidate is used for detailed error reporting
                                        // because it's very close match to what we are looking for
                                        //
-                                       base_method = (MethodSpec) candidate;
+                                       var m = (MethodSpec) candidate;
+
+                                       if (!m.IsPublic) {
+                                               if (close_match == null)
+                                                       close_match = m;
 
-                                       if (!candidate.IsPublic)
-                                               return false;
+                                               continue;
+                                       }
 
-                                       if (!TypeSpecComparer.Override.IsEqual (mi.ReturnType, base_method.ReturnType))
-                                               return false;
+                                       if (!TypeSpecComparer.Override.IsEqual (mi.ReturnType, m.ReturnType)) {
+                                               if (close_match == null)
+                                                       close_match = m;
 
-                                       if (mi.IsGeneric && !Method.CheckImplementingMethodConstraints (container, base_method, mi)) {
+                                               continue;
+                                       }
+                                               
+                                       base_method = m;
+
+                                       if (mi.IsGeneric && !Method.CheckImplementingMethodConstraints (container, m, mi)) {
                                                return true;
                                        }
                                }
-
+                               
                                if (base_method != null) {
                                        if (similar_candidate != null) {
                                                Report.SymbolRelatedToPreviousError (similar_candidate);
@@ -617,8 +631,10 @@ namespace Mono.CSharp {
                                }
 
                                base_type = candidates[0].DeclaringType.BaseType;
-                               if (base_type == null)
+                               if (base_type == null) {
+                                       base_method = close_match;
                                        return false;
+                               }
                        }
 
                        if (!base_method.IsVirtual) {
index 325b8f118f4bab61e4995812fa54f66a22821e3f..06ffb0df7a442445586fee47023cb2e5f1af939d 100644 (file)
@@ -201,14 +201,14 @@ namespace Mono.CSharp
                        {
                                base.Define (parent);
 
-                               Spec = new MethodSpec (MemberKind.Method, parent.PartialContainer.Definition, this, ReturnType, null, ParameterInfo, ModFlags);
+                               Spec = new MethodSpec (MemberKind.Method, parent.PartialContainer.Definition, this, ReturnType, ParameterInfo, ModFlags);
 
                                method_data = new MethodData (method, ModFlags, flags, this);
 
                                if (!method_data.Define (parent.PartialContainer, method.GetFullName (MemberName)))
                                        return null;
 
-                               Spec.SetMetaInfo (method_data.MethodBuilder);
+                               method_data.DefineMethodBuilder (parent.PartialContainer, ParameterInfo);
 
                                return method_data.MethodBuilder;
                        }
@@ -253,7 +253,7 @@ namespace Mono.CSharp
                                        return;
                                }
 
-                               base.ApplyAttributeBuilder (a, ctor, cdata, pa);
+                               base.ApplyToExtraTarget (a, ctor, cdata, pa);
                        }
 
                        public override ParametersCompiled ParameterInfo {
@@ -268,14 +268,14 @@ namespace Mono.CSharp
                                
                                base.Define (parent);
 
-                               Spec = new MethodSpec (MemberKind.Method, parent.PartialContainer.Definition, this, ReturnType, null, ParameterInfo, ModFlags);
+                               Spec = new MethodSpec (MemberKind.Method, parent.PartialContainer.Definition, this, ReturnType, ParameterInfo, ModFlags);
 
                                method_data = new MethodData (method, ModFlags, flags, this);
 
                                if (!method_data.Define (parent.PartialContainer, method.GetFullName (MemberName)))
                                        return null;
 
-                               Spec.SetMetaInfo (method_data.MethodBuilder);
+                               method_data.DefineMethodBuilder (parent.PartialContainer, ParameterInfo);
 
                                return method_data.MethodBuilder;
                        }
@@ -1171,7 +1171,7 @@ namespace Mono.CSharp
                                        return;
                                }
 
-                               base.ApplyAttributeBuilder (a, ctor, cdata, pa);
+                               base.ApplyToExtraTarget (a, ctor, cdata, pa);
                        }
 
                        public override AttributeTargets AttributeTargets {
@@ -1198,15 +1198,15 @@ namespace Mono.CSharp
                                if (!method_data.Define (parent.PartialContainer, method.GetFullName (MemberName)))
                                        return null;
 
+                               method_data.DefineMethodBuilder (parent.PartialContainer, ParameterInfo);
+
                                if (Compiler.Settings.WriteMetadataOnly)
                                        block = null;
 
-                               MethodBuilder mb = method_data.MethodBuilder;
-
-                               Spec = new MethodSpec (MemberKind.Method, parent.PartialContainer.Definition, this, ReturnType, mb, ParameterInfo, method.ModFlags);
+                               Spec = new MethodSpec (MemberKind.Method, parent.PartialContainer.Definition, this, ReturnType, ParameterInfo, method.ModFlags);
                                Spec.IsAccessor = true;
 
-                               return mb;
+                               return method_data.MethodBuilder;
                        }
 
                        public override TypeSpec ReturnType {
index bfb82fb9f30f7e72fd259e526f5be2f0d1538288..f49a2980d7aa08a37ad608d4a1e958b934a35208 100644 (file)
@@ -550,6 +550,8 @@ namespace Mono.CSharp {
        //
        public abstract class ReportPrinter
        {
+               protected HashSet<ITypeDefinition> reported_missing_definitions;
+
                #region Properties
 
                public int ErrorsCount { get; protected set; }
@@ -605,6 +607,22 @@ namespace Mono.CSharp {
                        }
                }
 
+               //
+               // Tracks reported missing types. It needs to be session specific 
+               // because we can run in probing mode
+               //
+               public bool MissingTypeReported (ITypeDefinition typeDefinition)
+               {
+                       if (reported_missing_definitions == null)
+                               reported_missing_definitions = new HashSet<ITypeDefinition> ();
+
+                       if (reported_missing_definitions.Contains (typeDefinition))
+                               return true;
+
+                       reported_missing_definitions.Add (typeDefinition);
+                       return false;
+               }
+
                public void Reset ()
                {
                        // HACK: Temporary hack for broken repl flow
@@ -735,6 +753,11 @@ namespace Mono.CSharp {
                                error_msg |= !msg.IsWarning;
                        }
 
+                       if (reported_missing_definitions != null) {
+                               foreach (var missing in reported_missing_definitions)
+                                       dest.MissingTypeReported (missing);
+                       }
+
                        return error_msg;
                }
        }
index af8512ae255ba0b32113699c45637a19c1444be8..fa15cad9be6fad207d5bc87ea52262bbc92dc2fe 100644 (file)
@@ -350,6 +350,17 @@ namespace Mono.CSharp {
                public CompilerSettings ParseArguments (string[] args)
                {
                        CompilerSettings settings = new CompilerSettings ();
+                       if (!ParseArguments (settings, args))
+                               return null;
+
+                       return settings;
+               }
+
+               public bool ParseArguments (CompilerSettings settings, string[] args)
+               {
+                       if (settings == null)
+                               throw new ArgumentNullException ("settings");
+
                        List<string> response_file_list = null;
                        bool parsing_options = true;
                        stop_argument = false;
@@ -369,7 +380,7 @@ namespace Mono.CSharp {
 
                                        if (response_file_list.Contains (response_file)) {
                                                report.Error (1515, "Response file `{0}' specified multiple times", response_file);
-                                               return null;
+                                               return false;
                                        }
 
                                        response_file_list.Add (response_file);
@@ -377,7 +388,7 @@ namespace Mono.CSharp {
                                        extra_args = LoadArgs (response_file);
                                        if (extra_args == null) {
                                                report.Error (2011, "Unable to open response file: " + response_file);
-                                               return null;
+                                               return false;
                                        }
 
                                        args = AddArgs (args, extra_args);
@@ -399,7 +410,7 @@ namespace Mono.CSharp {
                                                        continue;
                                                case ParseResult.Stop:
                                                        stop_argument = true;
-                                                       return settings;
+                                                       return true;
                                                case ParseResult.UnknownOption:
                                                        if (UnknownOptionHandler != null) {
                                                                var ret = UnknownOptionHandler (args, i);
@@ -433,11 +444,11 @@ namespace Mono.CSharp {
                                                        }
 
                                                        Error_WrongOption (arg);
-                                                       return null;
+                                                       return false;
 
                                                case ParseResult.Stop:
                                                        stop_argument = true;
-                                                       return settings;
+                                                       return true;
                                                }
                                        }
                                }
@@ -445,10 +456,7 @@ namespace Mono.CSharp {
                                ProcessSourceFiles (arg, false, settings.SourceFiles);
                        }
 
-                       if (report.Errors > 0)
-                               return null;
-
-                       return settings;
+                       return report.Errors == 0;
                }
 
                void ProcessSourceFiles (string spec, bool recurse, List<SourceFile> sourceFiles)
index eec04bb687b4a7d633138b887e467c9ffe249044..4bd207aa00f0f72729c019c4458dfeec50794d6a 100644 (file)
@@ -57,6 +57,7 @@ namespace Mono.CSharp {
                        }
 
                        ec.StartFlowBranching (FlowBranching.BranchingType.Block, loc);
+                       ec.CurrentBranching.CurrentUsageVector.Goto ();
                        bool ok = Resolve (ec);
                        ec.KillFlowBranching ();
 
@@ -706,6 +707,7 @@ namespace Mono.CSharp {
                public StatementErrorExpression (Expression expr)
                {
                        this.expr = expr;
+                       this.loc = expr.StartLocation;
                }
 
                public Expression Expr {
@@ -714,6 +716,12 @@ namespace Mono.CSharp {
                        }
                }
 
+               public override bool Resolve (BlockContext bc)
+               {
+                       expr.Error_InvalidExpressionStatement (bc);
+                       return true;
+               }
+
                protected override void DoEmit (EmitContext ec)
                {
                        throw new NotSupportedException ();
@@ -903,9 +911,18 @@ namespace Mono.CSharp {
                                                        if (this is ContextualReturn)
                                                                return true;
 
-                                                       ec.Report.Error (1997, loc,
-                                                               "`{0}': A return keyword must not be followed by an expression when async method returns `Task'. Consider using `Task<T>' return type",
-                                                               ec.GetSignatureForError ());
+                                                       // Same error code as .NET but better error message
+                                                       if (async_block.DelegateType != null) {
+                                                               ec.Report.Error (1997, loc,
+                                                                       "`{0}': A return keyword must not be followed by an expression when async delegate returns `Task'. Consider using `Task<T>' return type",
+                                                                       async_block.DelegateType.GetSignatureForError ());
+                                                       } else {
+                                                               ec.Report.Error (1997, loc,
+                                                                       "`{0}': A return keyword must not be followed by an expression when async method returns `Task'. Consider using `Task<T>' return type",
+                                                                       ec.GetSignatureForError ());
+
+                                                       }
+
                                                        return false;
                                                }
 
@@ -1181,10 +1198,7 @@ namespace Mono.CSharp {
                                return false;
                        }
 
-                       if (ec.Switch.DefaultLabel == null) {
-                               FlowBranchingBlock.Error_UnknownLabel (loc, "default", ec.Report);
-                               return false;
-                       }
+                       ec.Switch.RegisterGotoCase (null, null);
 
                        return true;
                }
@@ -1205,7 +1219,6 @@ namespace Mono.CSharp {
        /// </summary>
        public class GotoCase : Statement {
                Expression expr;
-               SwitchLabel sl;
                
                public GotoCase (Expression e, Location l)
                {
@@ -1218,6 +1231,8 @@ namespace Mono.CSharp {
                                return this.expr;
                        }
                }
+
+               public SwitchLabel Label { get; set; }
                
                public override bool Resolve (BlockContext ec)
                {
@@ -1228,13 +1243,8 @@ namespace Mono.CSharp {
 
                        ec.CurrentBranching.CurrentUsageVector.Goto ();
 
-                       expr = expr.Resolve (ec);
-                       if (expr == null)
-                               return false;
-
-                       Constant c = expr as Constant;
+                       Constant c = expr.ResolveLabelConstant (ec);
                        if (c == null) {
-                               ec.Report.Error (150, expr.Location, "A constant value is expected");
                                return false;
                        }
 
@@ -1252,17 +1262,17 @@ namespace Mono.CSharp {
                                if (!Convert.ImplicitStandardConversionExists (c, type))
                                        ec.Report.Warning (469, 2, loc,
                                                "The `goto case' value is not implicitly convertible to type `{0}'",
-                                               TypeManager.CSharpName (type));
+                                               type.GetSignatureForError ());
 
                        }
 
-                       sl = ec.Switch.ResolveGotoCase (ec, res);
+                       ec.Switch.RegisterGotoCase (this, res);
                        return true;
                }
 
                protected override void DoEmit (EmitContext ec)
                {
-                       ec.Emit (OpCodes.Br, sl.GetILLabel (ec));
+                       ec.Emit (OpCodes.Br, Label.GetILLabel (ec));
                }
 
                protected override void CloneTo (CloneContext clonectx, Statement t)
@@ -1420,69 +1430,72 @@ namespace Mono.CSharp {
                Location Location { get; }
        }
 
-       public class BlockVariableDeclaration : Statement
+       public class BlockVariableDeclarator
        {
-               public class Declarator
+               LocalVariable li;
+               Expression initializer;
+
+               public BlockVariableDeclarator (LocalVariable li, Expression initializer)
                {
-                       LocalVariable li;
-                       Expression initializer;
+                       if (li.Type != null)
+                               throw new ArgumentException ("Expected null variable type");
 
-                       public Declarator (LocalVariable li, Expression initializer)
-                       {
-                               if (li.Type != null)
-                                       throw new ArgumentException ("Expected null variable type");
+                       this.li = li;
+                       this.initializer = initializer;
+               }
 
-                               this.li = li;
-                               this.initializer = initializer;
-                       }
+               #region Properties
 
-                       public Declarator (Declarator clone, Expression initializer)
-                       {
-                               this.li = clone.li;
-                               this.initializer = initializer;
+               public LocalVariable Variable {
+                       get {
+                               return li;
                        }
+               }
 
-                       #region Properties
-
-                       public LocalVariable Variable {
-                               get {
-                                       return li;
-                               }
+               public Expression Initializer {
+                       get {
+                               return initializer;
                        }
-
-                       public Expression Initializer {
-                               get {
-                                       return initializer;
-                               }
-                               set {
-                                       initializer = value;
-                               }
+                       set {
+                               initializer = value;
                        }
+               }
 
-                       #endregion
+               #endregion
+
+               public virtual BlockVariableDeclarator Clone (CloneContext cloneCtx)
+               {
+                       var t = (BlockVariableDeclarator) MemberwiseClone ();
+                       if (initializer != null)
+                               t.initializer = initializer.Clone (cloneCtx);
+
+                       return t;
                }
+       }
 
+       public class BlockVariable : Statement
+       {
                Expression initializer;
                protected FullNamedExpression type_expr;
                protected LocalVariable li;
-               protected List<Declarator> declarators;
+               protected List<BlockVariableDeclarator> declarators;
                TypeSpec type;
 
-               public BlockVariableDeclaration (FullNamedExpression type, LocalVariable li)
+               public BlockVariable (FullNamedExpression type, LocalVariable li)
                {
                        this.type_expr = type;
                        this.li = li;
                        this.loc = type_expr.Location;
                }
 
-               protected BlockVariableDeclaration (LocalVariable li)
+               protected BlockVariable (LocalVariable li)
                {
                        this.li = li;
                }
 
                #region Properties
 
-               public List<Declarator> Declarators {
+               public List<BlockVariableDeclarator> Declarators {
                        get {
                                return declarators;
                        }
@@ -1511,10 +1524,10 @@ namespace Mono.CSharp {
 
                #endregion
 
-               public void AddDeclarator (Declarator decl)
+               public void AddDeclarator (BlockVariableDeclarator decl)
                {
                        if (declarators == null)
-                               declarators = new List<Declarator> ();
+                               declarators = new List<BlockVariableDeclarator> ();
 
                        declarators.Add (decl);
                }
@@ -1607,7 +1620,7 @@ namespace Mono.CSharp {
                        bool eval_global = bc.Module.Compiler.Settings.StatementMode && bc.CurrentBlock is ToplevelBlock;
                        if (eval_global) {
                                CreateEvaluatorVariable (bc, li);
-                       } else {
+                       } else if (type != InternalType.ErrorType) {
                                li.PrepareForFlowAnalysis (bc);
                        }
 
@@ -1621,7 +1634,7 @@ namespace Mono.CSharp {
                                        d.Variable.Type = li.Type;
                                        if (eval_global) {
                                                CreateEvaluatorVariable (bc, d.Variable);
-                                       } else {
+                                       } else if (type != InternalType.ErrorType) {
                                                d.Variable.PrepareForFlowAnalysis (bc);
                                        }
 
@@ -1661,7 +1674,7 @@ namespace Mono.CSharp {
 
                protected override void CloneTo (CloneContext clonectx, Statement target)
                {
-                       BlockVariableDeclaration t = (BlockVariableDeclaration) target;
+                       BlockVariable t = (BlockVariable) target;
 
                        if (type_expr != null)
                                t.type_expr = (FullNamedExpression) type_expr.Clone (clonectx);
@@ -1672,7 +1685,7 @@ namespace Mono.CSharp {
                        if (declarators != null) {
                                t.declarators = null;
                                foreach (var d in declarators)
-                                       t.AddDeclarator (new Declarator (d, d.Initializer == null ? null : d.Initializer.Clone (clonectx)));
+                                       t.AddDeclarator (d.Clone (clonectx));
                        }
                }
 
@@ -1682,9 +1695,9 @@ namespace Mono.CSharp {
                }
        }
 
-       public class BlockConstantDeclaration : BlockVariableDeclaration
+       public class BlockConstant : BlockVariable
        {
-               public BlockConstantDeclaration (FullNamedExpression type, LocalVariable li)
+               public BlockConstant (FullNamedExpression type, LocalVariable li)
                        : base (type, li)
                {
                }
@@ -2059,7 +2072,8 @@ namespace Mono.CSharp {
                        HasAsyncModifier = 1 << 10,
                        Resolved = 1 << 11,
                        YieldBlock = 1 << 12,
-                       AwaitBlock = 1 << 13
+                       AwaitBlock = 1 << 13,
+                       Iterator = 1 << 14
                }
 
                public Block Parent;
@@ -2229,6 +2243,11 @@ namespace Mono.CSharp {
                                scope_initializers.Add (s);
                        }
                }
+
+               public void InsertStatement (int index, Statement s)
+               {
+                       statements.Insert (index, s);
+               }
                
                public void AddStatement (Statement s)
                {
@@ -2607,6 +2626,24 @@ namespace Mono.CSharp {
                                                                if (pb.StateMachine == storey)
                                                                        break;
 
+                                                               //
+                                                               // If we are state machine with no parent we can hook into we don't
+                                                               // add reference but capture this directly
+                                                               //
+                                                               ExplicitBlock parent_storey_block = pb;
+                                                               while (parent_storey_block.Parent != null) {
+                                                                       parent_storey_block = parent_storey_block.Parent.Explicit;
+                                                                       if (parent_storey_block.AnonymousMethodStorey != null) {
+                                                                               break;
+                                                                       }
+                                                               }
+
+                                                               if (parent_storey_block.AnonymousMethodStorey == null) {
+                                                                       pb.StateMachine.AddCapturedThisField (ec);
+                                                                       b.HasCapturedThis = true;
+                                                                       continue;
+                                                               }
+
                                                                pb.StateMachine.AddParentStoreyReference (ec, storey);
                                                        }
                                                        
@@ -2646,6 +2683,7 @@ namespace Mono.CSharp {
                        }
 
                        storey.Define ();
+                       storey.PrepareEmit ();
                        storey.Parent.PartialContainer.AddCompilerGeneratedClass (storey);
                }
 
@@ -2664,6 +2702,8 @@ namespace Mono.CSharp {
 
                public void RegisterIteratorYield ()
                {
+                       ParametersBlock.TopBlock.IsIterator = true;
+
                        var block = this;
                        while ((block.flags & Flags.YieldBlock) == 0) {
                                block.flags |= Flags.YieldBlock;
@@ -3112,7 +3152,7 @@ namespace Mono.CSharp {
                        return tlb;
                }
 
-               public ParametersBlock ConvertToAsyncTask (IMemberContext context, TypeDefinition host, ParametersCompiled parameters, TypeSpec returnType, Location loc)
+               public ParametersBlock ConvertToAsyncTask (IMemberContext context, TypeDefinition host, ParametersCompiled parameters, TypeSpec returnType, TypeSpec delegateType, Location loc)
                {
                        for (int i = 0; i < parameters.Count; i++) {
                                Parameter p = parameters[i];
@@ -3144,6 +3184,7 @@ namespace Mono.CSharp {
                        var block_type = host.Module.Compiler.BuiltinTypes.Void;
                        var initializer = new AsyncInitializer (this, host, block_type);
                        initializer.Type = block_type;
+                       initializer.DelegateType = delegateType;
 
                        var stateMachine = new AsyncTaskStorey (this, context, initializer, returnType);
 
@@ -3207,7 +3248,10 @@ namespace Mono.CSharp {
 
                public bool IsIterator {
                        get {
-                               return HasYield;
+                               return (flags & Flags.Iterator) != 0;
+                       }
+                       set {
+                               flags = value ? flags | Flags.Iterator : flags & ~Flags.Iterator;
                        }
                }
 
@@ -3601,6 +3645,9 @@ namespace Mono.CSharp {
 
                public override bool Resolve (BlockContext bc)
                {
+                       if (ResolveAndReduce (bc))
+                               bc.Switch.RegisterLabel (bc, this);
+
                        bc.CurrentBranching.CurrentUsageVector.ResetBarrier ();
 
                        return base.Resolve (bc);
@@ -3610,29 +3657,25 @@ namespace Mono.CSharp {
                // Resolves the expression, reduces it to a literal if possible
                // and then converts it to the requested type.
                //
-               public bool ResolveAndReduce (ResolveContext ec, TypeSpec required_type, bool allow_nullable)
-               {       
-                       Expression e = label.Resolve (ec);
+               bool ResolveAndReduce (ResolveContext rc)
+               {
+                       if (IsDefault)
+                               return true;
 
-                       if (e == null)
+                       var c = label.ResolveLabelConstant (rc);
+                       if (c == null)
                                return false;
 
-                       Constant c = e as Constant;
-                       if (c == null){
-                               ec.Report.Error (150, loc, "A constant value is expected");
-                               return false;
-                       }
-
-                       if (allow_nullable && c is NullLiteral) {
+                       if (rc.Switch.IsNullable && c is NullLiteral) {
                                converted = c;
                                return true;
                        }
 
-                       converted = c.ImplicitConversionRequired (ec, required_type, loc);
+                       converted = c.ImplicitConversionRequired (rc, rc.Switch.SwitchType, loc);
                        return converted != null;
                }
 
-               public void Error_AlreadyOccurs (ResolveContext ec, TypeSpec switch_type, SwitchLabel collision_with)
+               public void Error_AlreadyOccurs (ResolveContext ec, SwitchLabel collision_with)
                {
                        string label;
                        if (converted == null)
@@ -3738,6 +3781,8 @@ namespace Mono.CSharp {
                Dictionary<string, SwitchLabel> string_labels;
                List<SwitchLabel> case_labels;
 
+               List<Tuple<GotoCase, Constant>> goto_cases;
+
                /// <summary>
                ///   The governing switch type
                /// </summary>
@@ -3857,88 +3902,40 @@ namespace Mono.CSharp {
                        };
                }
 
-               //
-               // Performs the basic sanity checks on the switch statement
-               // (looks for duplicate keys and non-constant expressions).
-               //
-               // It also returns a hashtable with the keys that we will later
-               // use to compute the switch tables
-               //
-               bool ResolveLabels (ResolveContext ec, Constant value)
+               public void RegisterLabel (ResolveContext rc, SwitchLabel sl)
                {
-                       bool error = false;
-                       if (SwitchType.BuiltinType == BuiltinTypeSpec.Type.String) {
-                               string_labels = new Dictionary<string, SwitchLabel> ();
-                       } else {
-                               labels = new Dictionary<long, SwitchLabel> ();
-                       }
-
-                       case_labels = new List<SwitchLabel> ();
-                       int default_label_index = -1;
-                       bool constant_label_found = false;
-
-                       for (int i = 0; i < block.Statements.Count; ++i) {
-                               var s = block.Statements[i];
-
-                               var sl = s as SwitchLabel;
-                               if (sl == null) {
-                                       continue;
-                               }
-
-                               case_labels.Add (sl);
+                       case_labels.Add (sl);
 
-                               if (sl.IsDefault) {
-                                       if (case_default != null) {
-                                               sl.Error_AlreadyOccurs (ec, SwitchType, case_default);
-                                               error = true;
-                                       }
-
-                                       default_label_index = i;
+                       if (sl.IsDefault) {
+                               if (case_default != null) {
+                                       sl.Error_AlreadyOccurs (rc, case_default);
+                               } else {
                                        case_default = sl;
-                                       continue;
                                }
 
-                               if (!sl.ResolveAndReduce (ec, SwitchType, IsNullable)) {
-                                       error = true;
-                                       continue;
-                               }
+                               return;
+                       }
 
-                               try {
-                                       if (string_labels != null) {
-                                               string string_value = sl.Converted.GetValue () as string;
-                                               if (string_value == null)
-                                                       case_null = sl;
-                                               else
-                                                       string_labels.Add (string_value, sl);
+                       try {
+                               if (string_labels != null) {
+                                       string string_value = sl.Converted.GetValue () as string;
+                                       if (string_value == null)
+                                               case_null = sl;
+                                       else
+                                               string_labels.Add (string_value, sl);
+                               } else {
+                                       if (sl.Converted is NullLiteral) {
+                                               case_null = sl;
                                        } else {
-                                               if (sl.Converted is NullLiteral) {
-                                                       case_null = sl;
-                                               } else {
-                                                       labels.Add (sl.Converted.GetValueAsLong (), sl);
-                                               }
+                                               labels.Add (sl.Converted.GetValueAsLong (), sl);
                                        }
-                               } catch (ArgumentException) {
-                                       if (string_labels != null)
-                                               sl.Error_AlreadyOccurs (ec, SwitchType, string_labels[(string) sl.Converted.GetValue ()]);
-                                       else
-                                               sl.Error_AlreadyOccurs (ec, SwitchType, labels[sl.Converted.GetValueAsLong ()]);
-
-                                       error = true;
-                               }
-
-                               if (value != null) {
-                                       var constant_label = constant_label_found ? null : FindLabel (value);
-                                       if (constant_label == null || constant_label != sl)
-                                               block.Statements[i] = new EmptyStatement (s.loc);
-                                       else
-                                               constant_label_found = true;
                                }
+                       } catch (ArgumentException) {
+                               if (string_labels != null)
+                                       sl.Error_AlreadyOccurs (rc, string_labels[(string) sl.Converted.GetValue ()]);
+                               else
+                                       sl.Error_AlreadyOccurs (rc, labels[sl.Converted.GetValueAsLong ()]);
                        }
-
-                       if (value != null && constant_label_found && default_label_index >= 0)
-                               block.Statements[default_label_index] = new EmptyStatement (case_default.loc);
-
-                       return !error;
                }
                
                //
@@ -4110,10 +4107,13 @@ namespace Mono.CSharp {
                                new_expr = SwitchGoverningType (ec, unwrap);
                        }
 
-                       if (new_expr == null){
-                               ec.Report.Error (151, loc,
-                                       "A switch expression of type `{0}' cannot be converted to an integral type, bool, char, string, enum or nullable type",
-                                       TypeManager.CSharpName (Expr.Type));
+                       if (new_expr == null) {
+                               if (Expr.Type != InternalType.ErrorType) {
+                                       ec.Report.Error (151, loc,
+                                               "A switch expression of type `{0}' cannot be converted to an integral type, bool, char, string, enum or nullable type",
+                                               Expr.Type.GetSignatureForError ());
+                               }
+
                                return false;
                        }
 
@@ -4128,24 +4128,29 @@ namespace Mono.CSharp {
                        if (block.Statements.Count == 0)
                                return true;
 
-                       var constant = new_expr as Constant;
+                       if (SwitchType.BuiltinType == BuiltinTypeSpec.Type.String) {
+                               string_labels = new Dictionary<string, SwitchLabel> ();
+                       } else {
+                               labels = new Dictionary<long, SwitchLabel> ();
+                       }
 
-                       if (!ResolveLabels (ec, constant))
-                               return false;
+                       case_labels = new List<SwitchLabel> ();
+
+                       var constant = new_expr as Constant;
 
                        //
                        // Don't need extra variable for constant switch or switch with
                        // only default case
                        //
-                       if (constant == null && (case_labels.Count - (case_default != null ? 1 : 0)) != 0) {
+                       if (constant == null) {
                                //
                                // Store switch expression for comparison purposes
                                //
                                value = new_expr as VariableReference;
-                               if (value == null) {
-                                       // Create temporary variable inside switch scope
+                               if (value == null && !HasOnlyDefaultSection ()) {
                                        var current_block = ec.CurrentBlock;
                                        ec.CurrentBlock = Block;
+                                       // Create temporary variable inside switch scope
                                        value = TemporaryVariableReference.Create (SwitchType, ec.CurrentBlock, loc);
                                        value.Resolve (ec);
                                        ec.CurrentBlock = current_block;
@@ -4168,6 +4173,33 @@ namespace Mono.CSharp {
                        ec.EndFlowBranching ();
                        ec.Switch = old_switch;
 
+                       //
+                       // Check if all goto cases are valid. Needs to be done after switch
+                       // is resolved becuase goto can jump forward in the scope.
+                       //
+                       if (goto_cases != null) {
+                               foreach (var gc in goto_cases) {
+                                       if (gc.Item1 == null) {
+                                               if (DefaultLabel == null) {
+                                                       FlowBranchingBlock.Error_UnknownLabel (loc, "default", ec.Report);
+                                               }
+
+                                               continue;
+                                       }
+
+                                       var sl = FindLabel (gc.Item2);
+                                       if (sl == null) {
+                                               FlowBranchingBlock.Error_UnknownLabel (loc, "case " + gc.Item2.GetValueAsLiteral (), ec.Report);
+                                       } else {
+                                               gc.Item1.Label = sl;
+                                       }
+                               }
+                       }
+
+                       if (constant != null) {
+                               ResolveUnreachableSections (ec, constant);
+                       }
+
                        if (!ok)
                                return false;
 
@@ -4176,23 +4208,34 @@ namespace Mono.CSharp {
                        }
 
                        //
-                       // Needed to emit anonymous storey initialization before
+                       // Anonymous storey initialization has to happen before
                        // any generated switch dispatch
                        //
-                       block.AddScopeStatement (new DispatchStatement (this));
+                       block.InsertStatement (0, new DispatchStatement (this));
 
                        return true;
                }
 
-               public SwitchLabel ResolveGotoCase (ResolveContext rc, Constant value)
+               bool HasOnlyDefaultSection ()
                {
-                       var sl = FindLabel (value);
+                       for (int i = 0; i < block.Statements.Count; ++i) {
+                               var s = block.Statements[i] as SwitchLabel;
+
+                               if (s == null || s.IsDefault)
+                                       continue;
 
-                       if (sl == null) {
-                               FlowBranchingBlock.Error_UnknownLabel (loc, "case " + value.GetValueAsLiteral (), rc.Report);
+                               return false;
                        }
 
-                       return sl;
+                       return true;
+               }
+
+               public void RegisterGotoCase (GotoCase gotoCase, Constant value)
+               {
+                       if (goto_cases == null)
+                               goto_cases = new List<Tuple<GotoCase, Constant>> ();
+
+                       goto_cases.Add (Tuple.Create (gotoCase, value));
                }
 
                //
@@ -4253,6 +4296,38 @@ namespace Mono.CSharp {
                        string_dictionary = new SimpleAssign (switch_cache_field, initializer.Resolve (ec));
                }
 
+               void ResolveUnreachableSections (BlockContext bc, Constant value)
+               {
+                       var constant_label = FindLabel (value) ?? case_default;
+
+                       bool found = false;
+                       bool unreachable_reported = false;
+                       for (int i = 0; i < block.Statements.Count; ++i) {
+                               var s = block.Statements[i];
+
+                               if (s is SwitchLabel) {
+                                       if (unreachable_reported) {
+                                               found = unreachable_reported = false;
+                                       }
+
+                                       found |= s == constant_label;
+                                       continue;
+                               }
+
+                               if (found) {
+                                       unreachable_reported = true;
+                                       continue;
+                               }
+
+                               if (!unreachable_reported) {
+                                       unreachable_reported = true;
+                                       bc.Report.Warning (162, 2, s.loc, "Unreachable code detected");
+                               }
+
+                               block.Statements[i] = new EmptyStatement (s.loc);
+                       }
+               }
+
                void DoEmitStringSwitch (EmitContext ec)
                {
                        Label l_initialized = ec.DefineLabel ();
@@ -4363,12 +4438,6 @@ namespace Mono.CSharp {
                                return;
                        }
 
-                       //
-                       // Mark sequence point explicitly to switch
-                       //
-                       ec.Mark (block.StartLocation);
-                       block.IsCompilerGenerated = true;
-
                        if (string_dictionary != null) {
                                DoEmitStringSwitch (ec);
                        } else if (case_labels.Count < 4 || string_labels != null) {
@@ -4404,6 +4473,14 @@ namespace Mono.CSharp {
                                } else if (new_expr != value) {
                                        value.EmitAssign (ec, new_expr, false, false);
                                }
+
+
+                               //
+                               // Next statement is compiler generated we don't need extra
+                               // nop when we can use the statement for sequence point
+                               //
+                               ec.Mark (block.StartLocation);
+                               block.IsCompilerGenerated = true;
                        }
 
                        block.Emit (ec);
@@ -4512,6 +4589,7 @@ namespace Mono.CSharp {
 
                        if (finally_host != null) {
                                finally_host.Define ();
+                               finally_host.PrepareEmit ();
                                finally_host.Emit ();
 
                                // Now it's safe to add, to close it properly and emit sequence points
@@ -5049,7 +5127,7 @@ namespace Mono.CSharp {
                        }
                }
 
-               public class VariableDeclaration : BlockVariableDeclaration
+               public class VariableDeclaration : BlockVariable
                {
                        public VariableDeclaration (FullNamedExpression type, LocalVariable li)
                                : base (type, li)
@@ -5174,7 +5252,7 @@ namespace Mono.CSharp {
                        }
                }
 
-               public BlockVariableDeclaration Variables {
+               public BlockVariable Variables {
                        get {
                                return decl;
                        }
@@ -5548,7 +5626,7 @@ namespace Mono.CSharp {
 
        public class Using : TryFinallyBlock
        {
-               public class VariableDeclaration : BlockVariableDeclaration
+               public class VariableDeclaration : BlockVariable
                {
                        Statement dispose_call;
 
@@ -5725,7 +5803,7 @@ namespace Mono.CSharp {
                        }
                }
 
-               public BlockVariableDeclaration Variables {
+               public BlockVariable Variables {
                        get {
                                return decl;
                        }
index d4e018c32594ad118a57c80cd32f675943c470d3..8cbbc14680557a301ba3dcb59834d1b2f8c09012 100644 (file)
@@ -322,4 +322,38 @@ namespace Mono.CSharp {
                        }
                }
        }
+
+       struct TypeNameParser
+       {
+               internal static string Escape(string name)
+               {
+                       if (name == null) {
+                               return null;
+                       }
+                       StringBuilder sb = null;
+                       for (int pos = 0; pos < name.Length; pos++) {
+                               char c = name[pos];
+                               switch (c) {
+                                       case '\\':
+                                       case '+':
+                                       case ',':
+                                       case '[':
+                                       case ']':
+                                       case '*':
+                                       case '&':
+                                               if (sb == null) {
+                                                       sb = new StringBuilder(name, 0, pos, name.Length + 3);
+                                               }
+                                               sb.Append("\\").Append(c);
+                                               break;
+                                       default:
+                                               if (sb != null) {
+                                                       sb.Append(c);
+                                               }
+                                               break;
+                               }
+                       }
+                       return sb != null ? sb.ToString() : name;
+               }
+       }
 }
index 4a674c4c46a2cac0270e6cec8fe901b23c485198..b77dfef531fb6c6e9fddc1914ffa2641302857dd 100644 (file)
@@ -691,6 +691,7 @@ namespace Mono.CSharp
                readonly MemberKind kind;
                protected readonly ModuleContainer module;
                protected TypeSpec type;
+               bool defined;
 
                public PredefinedType (ModuleContainer module, MemberKind kind, string ns, string name, int arity)
                        : this (module, kind, ns, name)
@@ -753,7 +754,11 @@ namespace Mono.CSharp
                        if (type != null)
                                return true;
 
-                       type = Resolve (module, kind, ns, name, arity, false, false);
+                       if (!defined) {
+                               defined = true;
+                               type = Resolve (module, kind, ns, name, arity, false, false);
+                       }
+
                        return type != null;
                }
 
@@ -771,12 +776,13 @@ namespace Mono.CSharp
                        // fake namespaces when type is optional and does not exist (e.g. System.Linq).
                        //
                        Namespace type_ns = module.GlobalRootNamespace.GetNamespace (ns, required);
+
                        IList<TypeSpec> found = null;
                        if (type_ns != null)
                                found = type_ns.GetAllTypes (name);
 
                        if (found == null) {
-                               if (reportErrors )
+                               if (reportErrors)
                                        module.Compiler.Report.Error (518, "The predefined type `{0}.{1}' is not defined or imported", ns, name);
 
                                return null;
@@ -829,15 +835,22 @@ namespace Mono.CSharp
                        }
 
                        if (best_match == null && reportErrors) {
-                               Location loc;
-                               if (found[0].MemberDefinition is MemberCore) {
-                                       loc = ((MemberCore) found[0].MemberDefinition).Location;
+                               var found_member = found[0];
+
+                               if (found_member.Kind == MemberKind.MissingType) {
+                                       // CSC: should be different error number
+                                       module.Compiler.Report.Error (518, "The predefined type `{0}.{1}' is defined in an assembly that is not referenced.", ns, name);
                                } else {
-                                       loc = Location.Null;
-                                       module.Compiler.Report.SymbolRelatedToPreviousError (found[0]);
-                               }
+                                       Location loc;
+                                       if (found_member.MemberDefinition is MemberCore) {
+                                               loc = ((MemberCore) found_member.MemberDefinition).Location;
+                                       } else {
+                                               loc = Location.Null;
+                                               module.Compiler.Report.SymbolRelatedToPreviousError (found_member);
+                                       }
 
-                               module.Compiler.Report.Error (520, loc, "The predefined type `{0}.{1}' is not declared correctly", ns, name);
+                                       module.Compiler.Report.Error (520, loc, "The predefined type `{0}.{1}' is not declared correctly", ns, name);
+                               }
                        }
 
                        return best_match;
@@ -984,15 +997,7 @@ namespace Mono.CSharp
 
        partial class TypeManager {
 
-       /// <summary>
-       ///   Returns the C# name of a type if possible, or the full type name otherwise
-       /// </summary>
-       static public string CSharpName (TypeSpec t)
-       {
-               return t.GetSignatureForError ();
-       }
-
-       static public string CSharpName (IList<TypeSpec> types)
+       static public string CSharpName(IList<TypeSpec> types)
        {
                if (types.Count == 0)
                        return string.Empty;
@@ -1002,7 +1007,7 @@ namespace Mono.CSharp
                        if (i > 0)
                                sb.Append (",");
 
-                       sb.Append (CSharpName (types [i]));
+                       sb.Append (types [i].GetSignatureForError ());
                }
                return sb.ToString ();
        }
@@ -1090,7 +1095,7 @@ namespace Mono.CSharp
                rc.Compiler.Report.SymbolRelatedToPreviousError (t);
                rc.Compiler.Report.Error (208, loc,
                        "Cannot take the address of, get the size of, or declare a pointer to a managed type `{0}'",
-                       CSharpName (t));
+                       t.GetSignatureForError ());
 
                return false;   
        }
index e0d813030ca6d3c78c97eff169aa379f0d42f7e8..3740a8c54a0f217dbeecb878d3a605fafd5819c7 100644 (file)
@@ -98,6 +98,20 @@ namespace Mono.CSharp
                //
                public virtual IList<TypeSpec> Interfaces {
                        get {
+                               if ((state & StateFlags.InterfacesImported) == 0) {
+                                       state |= StateFlags.InterfacesImported;
+
+                                       //
+                                       // Delay interfaces expansion to save memory and once all
+                                       // base types has been imported to avoid problems where
+                                       // interface references type before its base was imported
+                                       //
+                                       var imported = MemberDefinition as ImportedTypeDefinition;
+                                       if (imported != null && Kind != MemberKind.MissingType)
+                                               imported.DefineInterfaces (this);
+
+                               }
+
                                return ifaces;
                        }
                        set {
@@ -639,6 +653,20 @@ namespace Mono.CSharp
                        }
                }
 
+               public static bool IsNonNullableValueType (TypeSpec t)
+               {
+                       switch (t.Kind) {
+                       case MemberKind.TypeParameter:
+                               return ((TypeParameterSpec) t).IsValueType;
+                       case MemberKind.Struct:
+                               return !t.IsNullableType;
+                       case MemberKind.Enum:
+                               return true;
+                       default:
+                               return false;
+                       }
+               }
+
                public static bool IsValueType (TypeSpec t)
                {
                        switch (t.Kind) {
@@ -770,6 +798,31 @@ namespace Mono.CSharp
                {
                        modifiers |= Modifiers.METHOD_EXTENSION;
                }
+
+               public void UpdateInflatedInstancesBaseType ()
+               {
+                       //
+                       // When nested class has a partial part the situation where parent type
+                       // is inflated before its base type is defined can occur. In such case
+                       // all inflated (should be only 1) instansted need to be updated
+                       //
+                       // partial class A<T> {
+                       //   partial class B : A<int> { }
+                       // }
+                       //
+                       // partial class A<T> : X {}
+                       //
+                       if (inflated_instances == null)
+                               return;
+
+                       foreach (var inflated in inflated_instances) {
+                               //
+                               // Don't need to inflate possible generic type because for now the method
+                               // is always used from within the nested type
+                               //
+                               inflated.Value.BaseType = base_type;
+                       }
+               }
        }
 
        //
index 3af9db9a8c293e3044af275e65abb02d6d7496c3..fc2aa5e62b830cb238aba7b2308d53e3afbe4d85 100644 (file)
@@ -58,6 +58,11 @@ namespace Mono.CSharp
                        VisitTypeContainer (ns);
                }
 
+               public virtual void Visit (CompilationSourceFile csf)
+               {
+                       VisitTypeContainer (csf);
+               }
+
                public virtual void Visit (Class c)
                {
                        VisitTypeContainer (c);
@@ -136,12 +141,12 @@ namespace Mono.CSharp
                        return null;
                }
                
-               public virtual object Visit (BlockVariableDeclaration blockVariableDeclaration)
+               public virtual object Visit (BlockVariable blockVariableDeclaration)
                {
                        return null;
                }
                
-               public virtual object Visit (BlockConstantDeclaration blockConstantDeclaration)
+               public virtual object Visit (BlockConstant blockConstantDeclaration)
                {
                        return null;
                }
index 06f2fed3fdea5f221591e1894a5e9aefdd8c911f..f0b58ef8b9a0758ad265a412d9b0cb85b601ff7a 100644 (file)
@@ -36,6 +36,7 @@ class C
        public dynamic[,] t2;
        public Func<dynamic, int, dynamic[]> v;
        public I<dynamic>[] iface;
+       public Action<int[], object, dynamic> d2;
 }
 
 delegate dynamic Del (dynamic d);
@@ -135,6 +136,12 @@ class Test
                if (!da.TransformFlags.SequenceEqual (new bool[] { false, false, true }))
                        return 47;
 
+               da = t.GetMember ("d2")[0].GetCustomAttributes (ca, false)[0] as DynamicAttribute;
+               if (da == null)
+                       return 48;
+               if (!da.TransformFlags.SequenceEqual (new bool[] { false, false, false, false, true }))
+                       return 49;
+
                t = typeof (Del);
 
                if (t.GetMember ("Invoke")[0].GetCustomAttributes (ca, false).Length != 0)
index 5522a499f888e435e74308951483cd73b37c2020..30f4d3c5b4a53d02556a4f0205724850da3737d6 100644 (file)
@@ -45,9 +45,17 @@ public struct Baz
        }
 }
 
+struct S
+{
+       public static implicit operator bool?(S arg)
+       {
+               throw new ApplicationException ("should not be called");
+       }
+}
+
 class X
 {
-       public static void Main ()
+       public static int Main ()
        {
                int a = 3;
                int? b = a;
@@ -67,5 +75,12 @@ class X
                Baz? z2 = (Baz?) f2;
                Baz? z3 = (Baz?) f3;
                Baz z4 = (Baz) f2;
+
+               S? s = null;
+               bool? g = s;
+               if (g != null)
+                       return 1;
+
+               return 0;
        }
 }
index 63ca06b2b5484df6b984bec316713cbbe0980409..5668a7dca7afda43128c2fc6bc564adfd2b44edc 100644 (file)
@@ -21,6 +21,20 @@ public static class ApplicationContext
                if (res)
                        return 2;
                
+               int? re = 3 + (short?) 7;
+               if (re != 10)
+                       return 3;
+               
+               int a = 2;
+               int b = 2;
+               int? c = (byte?)a + b;
+               if (c != 4)
+                       return 4;
+               
+               c = a + (ushort?)b;
+               if (c != 4)
+                       return 5;
+               
                return 0;
        }
 }
diff --git a/mcs/tests/gtest-581-lib.cs b/mcs/tests/gtest-581-lib.cs
new file mode 100644 (file)
index 0000000..bb1d7a3
--- /dev/null
@@ -0,0 +1,21 @@
+// Compiler options: -t:library
+
+public interface IA<T>
+{
+}
+
+public interface IB<T>
+{
+}
+
+public abstract class A : IA<A>, IB<A>
+{
+}
+
+public abstract class B : A, IA<B>, IB<B>, IB<C>
+{
+}
+
+public sealed class C : B, IA<C>
+{
+}
diff --git a/mcs/tests/gtest-581.cs b/mcs/tests/gtest-581.cs
new file mode 100644 (file)
index 0000000..5021792
--- /dev/null
@@ -0,0 +1,12 @@
+// Compiler options: -r:gtest-581-lib.dll
+
+class Program
+{
+       static void Main()
+       {
+               var f1 = (IA<A>) new C();
+               var f2 = (IA<B>) new C();
+               var f3 = (IB<A>) new C();
+               var f4 = (IB<C>) new C();
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-582-lib.cs b/mcs/tests/gtest-582-lib.cs
new file mode 100644 (file)
index 0000000..a5c58fa
--- /dev/null
@@ -0,0 +1,9 @@
+// Compiler options: -t:library
+
+public class C : I
+{
+}
+
+interface I
+{
+}
diff --git a/mcs/tests/gtest-582.cs b/mcs/tests/gtest-582.cs
new file mode 100644 (file)
index 0000000..5534de4
--- /dev/null
@@ -0,0 +1,27 @@
+// Compiler options: -r:gtest-582-lib.dll
+
+using System;
+using System.Reflection;
+
+public class G1 : GC<C>
+{
+}
+
+public class GC<T> where T : C
+{
+}
+
+class Program
+{
+       public static int Main()
+       {
+               var constraints = typeof (GC<>).GetGenericArguments ()[0].GetGenericParameterConstraints ();
+               if (constraints.Length != 1)
+                       return 1;
+               if (constraints [0] != typeof (C))
+                       return 2;
+
+               Console.WriteLine ("ok");
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-583-lib.il b/mcs/tests/gtest-583-lib.il
new file mode 100644 (file)
index 0000000..5284ebd
--- /dev/null
@@ -0,0 +1,34 @@
+.assembly extern mscorlib
+{
+}
+
+.assembly extern 'missing-lib'
+{
+}
+
+.assembly 'gtest-583-lib'
+{
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+
+.module 'gtest-583-lib.dll'
+
+.class public auto ansi beforefieldinit C`1<T>
+       extends [mscorlib]System.Object
+{
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    ldarg.0
+    call       instance void [mscorlib]System.Object::.ctor()
+    ret
+  }
+
+  .method public hidebysig instance int32 
+          Join(class [mscorlib]System.Collections.Generic.List`1<class ['missing-lib']N/M> arg) cil managed
+  {
+    ldc.i4.1
+    ret
+  }
+}
diff --git a/mcs/tests/gtest-583.cs b/mcs/tests/gtest-583.cs
new file mode 100644 (file)
index 0000000..83080ac
--- /dev/null
@@ -0,0 +1,9 @@
+// Compiler options: -r:gtest-583-lib.dll
+
+public class Test
+{
+       public static void Main ()
+       {
+               new C<short> ();
+       }
+}
diff --git a/mcs/tests/gtest-584.cs b/mcs/tests/gtest-584.cs
new file mode 100644 (file)
index 0000000..3a5b786
--- /dev/null
@@ -0,0 +1,73 @@
+using System;
+
+enum E : sbyte
+{
+       V = 1
+}
+
+struct S
+{
+       public static bool operator == (S s, S i)
+       {
+               throw new ApplicationException ();
+       }
+
+       public static bool operator != (S s, S i)
+       {
+               throw new ApplicationException ();
+       }
+
+       public static implicit operator int? (S s)
+       {
+               throw new ApplicationException ();
+       }
+
+       public static implicit operator E? (S s)
+       {
+               return null;
+       }
+}
+
+class C
+{
+       public static int Main ()
+       {
+               E? a = E.V;
+               E? a_n = null;
+               E? b = E.V;
+               E? b_n = null;
+
+               if (a != b)
+                       return 1;
+
+               if (a == a_n)
+                       return 2;
+
+               if (a_n != b_n)
+                       return 3;
+               
+               E e = (E) 4;
+               S s;
+               if (e == s)
+                       return 10;
+
+               if (s == e)
+                       return 11;
+
+               if (e > s)
+                       return 12;
+
+               if (s > e)
+                       return 13;
+
+               if ((s & e) != null)
+                       return 14;
+
+               if ((s & e) != null)
+                       return 15;
+
+               Console.WriteLine ("ok");
+
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-585.cs b/mcs/tests/gtest-585.cs
new file mode 100644 (file)
index 0000000..ff2a16c
--- /dev/null
@@ -0,0 +1,71 @@
+using System;
+
+struct S
+{
+       public static implicit operator int (S arg)
+       {
+               throw new ApplicationException ();
+       }
+}
+
+struct S2
+{
+       public static implicit operator int?(S2 arg)
+       {
+               return 10000;
+       }
+
+       public static implicit operator uint?(S2 arg)
+       {
+               throw new ApplicationException ();
+       }
+}
+
+public struct S3
+{
+       public static int counter;
+       
+       public static implicit operator string (S3 s3)
+       {
+               counter++;
+               return "";
+       }
+}
+
+class C
+{
+       public static int Main ()
+       {
+               S? s = null;
+               bool res = s > 1;
+               if (res)
+                       return 1;
+
+               S2 s2 = new S2 ();
+
+               var b = s2 >> 3;
+               if (b != 1250)
+                       return 2;
+
+               var b2 = s2 >> s2;
+               if (b2 != 0)
+                       return 3;
+
+               var b3 = s2 + 1;
+               if (b3 != 10001)
+                       return 4;
+
+               var s3 = new S3 ();
+               if ((s3 == null) != false)
+                       return 5;
+
+               if ((s3 != null) != true)
+                       return 6;
+               
+               if (S3.counter != 2)
+                       return 7;
+
+               Console.WriteLine ("ok");
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-586.cs b/mcs/tests/gtest-586.cs
new file mode 100644 (file)
index 0000000..6d01808
--- /dev/null
@@ -0,0 +1,98 @@
+using System;
+
+struct S
+{
+       public static bool operator == (S s, S i)
+       {
+               throw new ApplicationException ();
+       }
+
+       public static bool operator != (S s, S i)
+       {
+               throw new ApplicationException ();
+       }
+}
+
+struct S2
+{
+       public static int counter;
+
+       public static bool operator == (S2 s, S2 i)
+       {
+               counter++;
+               return true;
+       }
+
+       public static bool operator != (S2 s, S2 i)
+       {
+               throw new ApplicationException ();
+       }
+}
+
+
+struct S3
+{
+       public static int counter;
+
+       public static implicit operator int?(S3 arg)
+       {
+               counter++;
+               return null;
+       }
+}
+
+class C
+{
+       public static int Main ()
+       {
+               S? s = new S ();
+               S? s2 = null;
+               S? s4 = null;
+
+               if ((s == s2) != false)
+                       return 1;
+
+               if ((s2 == s) != false)
+                       return 2;
+
+               if ((s2 == s4) != true)
+                       return 3;
+
+               S x = new S ();
+
+               if ((s2 == x) != false)
+                       return 5;
+
+               if ((x == s2) != false)
+                       return 6;
+
+               S2? s2_1 = new S2 ();
+               S2? s2_3 = new S2 ();
+               S2 x2 = new S2 ();
+
+               if ((s2_1 == s2_3) != true)
+                       return 7;
+
+               if ((s2_1 == x2) != true)
+                       return 8;
+
+               if ((x2 == s2_1) != true)
+                       return 9;
+
+               if (S2.counter != 3)
+                       return 10;
+
+               S3 s3;
+
+               if ((s3 == null) != true)
+                       return 20;
+
+               if ((null == s3) != true)
+                       return 21;
+
+               if (S3.counter != 2)
+                       return 22;
+
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-587.cs b/mcs/tests/gtest-587.cs
new file mode 100644 (file)
index 0000000..60484bd
--- /dev/null
@@ -0,0 +1,51 @@
+using System;
+
+struct S
+{
+       public static implicit operator string (S s)
+       {
+               return "1";
+       }
+
+       public static implicit operator short? (S s)
+       {
+               return 1;
+       }
+
+       public static implicit operator E (S s)
+       {
+               return 0;
+       }
+}
+
+public enum E
+{
+}
+
+class C
+{
+       public static int Main ()
+       {
+               E? e = 0;
+               const E e1 = (E)44;
+               var res = e == e1;
+               if (res != false)
+                       return 1;
+
+               res = e1 == e;
+               if (res != false)
+                       return 2;
+
+               E e2 = 0;
+               S s;
+               var res2 = e2 & s;
+               if (res2 != 0)
+                       return 3;
+
+               res2 = s & e2;
+               if (res2 != 0)
+                       return 4;
+
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-588.cs b/mcs/tests/gtest-588.cs
new file mode 100644 (file)
index 0000000..efbc67e
--- /dev/null
@@ -0,0 +1,33 @@
+using System;
+
+struct S
+{
+       public static implicit operator short? (S s)
+       {
+               return 0;
+       }
+
+       public static implicit operator short (S s)
+       {
+               throw new ApplicationException ();
+       }
+}
+
+class Program
+{
+       public static int Main ()
+       {
+               S? s = null;
+               S? s2 = new S ();
+
+               long? i = s;
+               if (i != null)
+                       return 1;
+
+               double? ui = s2;
+               if (ui == null)
+                       return 2;
+
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-589.cs b/mcs/tests/gtest-589.cs
new file mode 100644 (file)
index 0000000..4599fe2
--- /dev/null
@@ -0,0 +1,40 @@
+using System;
+
+public class Z : IGenericInterface<Z>
+{
+       public Z Start ()
+       {
+               return this;
+       }
+
+       Z IGenericInterface<Z>.Start ()
+       {
+               throw new ApplicationException ();
+       }
+}
+
+public interface IGenericInterface<T>
+{
+       T Start ();
+}
+
+public class A<T> where T : Z, IGenericInterface<int> 
+{
+       public void SomeOperation (T t)
+       {
+               t.Start ();
+       }
+}
+
+public class C : Z, IGenericInterface<int> 
+{
+       int IGenericInterface<int>.Start ()
+       {
+               throw new NotImplementedException ();
+       }
+
+       public static void Main ()
+       {
+               new A<C> ().SomeOperation (new C ());
+       }
+}
\ No newline at end of file
index 94a2f29f94c3facb31ef346cf4d9338dfffa16bb..d40bc9636d952ab34e08658c794aee43128d93b8 100644 (file)
@@ -22,6 +22,11 @@ struct Foo
        {
                throw new ApplicationException ();
        }
+       
+       public static Foo operator + (Foo d1, Foo d2)
+       {
+               throw new ApplicationException ();
+       }
 }
 
 class C
@@ -45,6 +50,10 @@ class C
                if (!e.Compile ().Invoke ())
                        return 4;
                
+               Expression<Func<Foo?>> e2 = () => f + null;
+               if (e2.Compile ().Invoke () != null)
+                       return 5;
+
                Console.WriteLine ("OK");
                return 0;
        }
diff --git a/mcs/tests/gtest-exmethod-46.cs b/mcs/tests/gtest-exmethod-46.cs
new file mode 100644 (file)
index 0000000..1254a5b
--- /dev/null
@@ -0,0 +1,43 @@
+using System;
+using System.Collections.Generic;
+
+namespace ExtensionTest.Two
+{
+       public delegate TResult AxFunc<in T1, out TResult> (T1 first);
+
+       public static class Extensions
+       {
+               public static bool Contains<T> (this IEnumerable<T> source, T item)
+               {
+                       return true;
+               }
+
+               public static bool All<T> (this IEnumerable<T> source, AxFunc<T, bool> predicate)
+               {
+                       return true;
+               }
+
+       }
+}
+
+namespace ExtensionTest
+{
+       using ExtensionTest.Two;
+
+       public static class MyClass
+       {
+               public static bool IsCharacters (this string text, params char[] chars)
+               {
+                       return text.All (chars.Contains);
+               }
+
+               public static bool Contains (this string text, string value, StringComparison comp)
+               {
+                       return text.IndexOf (value, comp) >= 0;
+               }
+
+               public static void Main ()
+               {
+               }
+       }
+}
diff --git a/mcs/tests/gtest-iter-29.cs b/mcs/tests/gtest-iter-29.cs
new file mode 100644 (file)
index 0000000..9276d02
--- /dev/null
@@ -0,0 +1,22 @@
+using System;
+using System.Linq;
+using System.Collections.Generic;
+
+public class Test
+{
+       public static int Main ()
+       {
+               var x = Test2 ();
+               if (x.Count () != 0)
+                       return 1;
+
+               Console.WriteLine ("ok");
+               return 0;
+       }
+
+       public static IEnumerable<int> Test2 ()
+       {
+               while (false)
+                       yield return 5;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-partial-06.cs b/mcs/tests/gtest-partial-06.cs
new file mode 100644 (file)
index 0000000..3dd2dd3
--- /dev/null
@@ -0,0 +1,23 @@
+partial class Test
+{
+       static partial void Foo<T> ();
+
+       static partial void Baz<T> ();
+
+       static partial void Baz<U> ()
+       {
+       }
+
+       static partial void Bar<T> (T t) where T : class;
+
+       static partial void Bar<U> (U u) where U : class
+       {
+       }
+
+       public static void Main ()
+       {
+               Foo<long> ();
+               Baz<string> ();
+               Bar<Test> (null);
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-partial-07.cs b/mcs/tests/gtest-partial-07.cs
new file mode 100644 (file)
index 0000000..d3b0319
--- /dev/null
@@ -0,0 +1,30 @@
+partial class A<T>
+{
+       internal partial class B : A<int>
+       {
+               public void Test ()
+               {
+                       Foo (3);
+               }
+       }
+}
+
+partial class A<T> : X<T>
+{
+
+}
+
+class X<U>
+{
+       public void Foo (U arg)
+       {
+       }
+}
+
+class M
+{
+       public static void Main ()
+       {
+               new A<string>.B ().Test ();
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-partial-08.cs b/mcs/tests/gtest-partial-08.cs
new file mode 100644 (file)
index 0000000..fcc96be
--- /dev/null
@@ -0,0 +1,58 @@
+namespace N
+{
+       public partial class A<T1, T2>
+       {
+               public partial class D
+               {
+                       public class C : D
+                       {
+                               public void Test ()
+                               {
+                                       Foo ();
+                               }
+                       }
+               }
+
+               public partial class D2<U>
+               {
+                       public class C2 : D2<int>
+                       {
+                               public void Test ()
+                               {
+                                       Foo (2);
+                               }
+                       }
+               }
+       }
+
+       public partial class A<T1, T2>
+       {
+               public partial class D : X
+               {
+               }
+
+               public partial class D2<U> : X2<U>
+               {
+               }
+       }
+
+       public class X2<W>
+       {
+               public void Foo (W arg)
+               {
+               }
+       }
+
+       public class X
+       {
+               public void Foo ()
+               {
+               }
+
+               public static void Main ()
+               {
+                       new A<int, long>.D.C ().Test ();
+                       new A<int, long>.D2<string>.C2 ().Test ();
+               }
+       }
+}
diff --git a/mcs/tests/gtest-partial-09.cs b/mcs/tests/gtest-partial-09.cs
new file mode 100644 (file)
index 0000000..2dbb116
--- /dev/null
@@ -0,0 +1,57 @@
+namespace A
+{
+       public partial class B<T>
+       {
+               public partial class C
+               {
+                       public class A { }
+               }
+       }
+}
+
+namespace A
+{
+       public abstract partial class B<T> where T : B<T>.C
+       {
+       }
+}
+
+namespace A
+{
+       public partial class B<T>
+       {
+               public partial class C : I
+               {
+               }
+       }
+}
+
+namespace A
+{
+       public interface Ibase
+       {
+       }
+
+       public partial class B<T>
+       {
+               public interface I : Ibase
+               {
+               }
+       }
+}
+
+namespace A
+{
+       class Bar : B<Bar>.C
+       {
+       }
+
+       public class Test
+       {
+               public static void Main ()
+               {
+                       Ibase b = new Bar ();
+                       System.Console.WriteLine (b != null);
+               }
+       }
+}
index c63250e13d554268818c7594ba9758ba8cb25ffc..526f238285fea10be61d84ad175f8618e6633a13 100644 (file)
@@ -14,10 +14,41 @@ class Test
        {
        }
 
+       [MethodImplAttribute((short)MethodImplOptions.Synchronized)]
+       public void test2 ()
+       {
+       }
+
+       [MethodImplAttribute((byte)32)]
+       public void test3 ()
+       {
+       }
+
+       [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
+       public void test4 ()
+       {
+       }
+
        public static int Main ()
        {
-               MethodImplAttributes iflags = typeof (Test).GetMethod ("test").GetMethodImplementationFlags ();
-               return ((iflags & MethodImplAttributes.Synchronized) != 0 ? 0 : 1);
+               MethodImplAttributes iflags;
+               iflags = typeof (Test).GetMethod ("test").GetMethodImplementationFlags ();
+               if ((iflags & MethodImplAttributes.Synchronized) == 0)
+                       return 1;
+
+               iflags = typeof (Test).GetMethod ("test2").GetMethodImplementationFlags ();
+               if ((iflags & MethodImplAttributes.Synchronized) == 0)
+                       return 2;
+
+               iflags = typeof (Test).GetMethod ("test3").GetMethodImplementationFlags ();
+               if ((iflags & MethodImplAttributes.Synchronized) == 0)
+                       return 3;
+
+               iflags = typeof (Test).GetMethod ("test3").GetMethodImplementationFlags ();
+               if ((iflags & MethodImplAttributes.Synchronized) == 0)
+                       return 4;
+
+               return 0;
        }
 }
                
index fe9b37174e837bc68eae74c2956985b7fbc5a76b..c49949b239ac575543d245d6b734788fd7c941be 100644 (file)
@@ -1,11 +1,42 @@
-class T {
-       public static int Main ()
+class Test
+{
+       static int test1 ()
        {
-               switch (1) {
-               case 1:
-                       return 0;
-               default:
-                       break;
+               var s = "Nice";
+               switch (s) {
+               case "HI":
+                       const string x = "Nice";
+                       return 1;
+               case x:
+                       return 2;
                }
+
+               return 3;
        }
-}
+
+       public const string xx = "Not";
+       static int test2 ()
+       {
+               var s = "Nice";
+               switch (s) {
+               case "HI":
+                       const string xx = "Nice";
+                       return 1;
+               case xx:
+                       return 2;
+               }
+
+               return 3;
+       }
+
+       static int Main ()
+       {
+               if (test1 () != 2)
+                       return 1;
+
+               if (test2 () != 2)
+                       return 2;
+
+               return 0;
+       }
+}
\ No newline at end of file
index 60787efbfa9cf5b5ed5d3e6f48b57e39b315fdfe..e05993a5f03ba65b1c3f206b0c6b26caeed3bebc 100644 (file)
@@ -1,6 +1,8 @@
 #if false
 #line hahaha
 #error
+#define X
+#undef X
 #pragma warning disable 3005 // wrong directive on csc 1.x
        public class Foo
        {
@@ -16,6 +18,9 @@ public class Test
 {
        public static void Main ()
        {
+               string s = @"Test string
+                       #define
+                       ";
        }
 }
 
diff --git a/mcs/tests/test-867.cs b/mcs/tests/test-867.cs
new file mode 100644 (file)
index 0000000..57b529b
--- /dev/null
@@ -0,0 +1,35 @@
+class Test
+{
+       public static void Main ()
+       {
+               new BaseJobController ();
+               new JobController ();
+       }
+}
+
+public interface IUser
+{
+}
+
+public class User : IUser
+{
+}
+
+public interface IJobController
+{
+       IUser User { get; }
+}
+
+public class BaseController
+{
+       public virtual IUser User { get; set; }
+}
+
+public class BaseJobController : BaseController
+{
+       public new User User { get; set; }
+}
+
+public class JobController : BaseJobController, IJobController
+{
+}
\ No newline at end of file
diff --git a/mcs/tests/test-868.cs b/mcs/tests/test-868.cs
new file mode 100644 (file)
index 0000000..3ca6157
--- /dev/null
@@ -0,0 +1,39 @@
+using System.Diagnostics;
+using System.Reflection;
+
+[assembly: AssemblyProduct ("Product")]
+[assembly: AssemblyCompany ("Company")]
+[assembly: AssemblyDescription ("Description")]
+[assembly: AssemblyCopyright ("Copyright")]
+[assembly: AssemblyTrademark ("Trademark")]
+[assembly: AssemblyVersion ("5.4.3.1")]
+[assembly: AssemblyFileVersion ("8.9")]
+
+class C
+{
+       public static int Main ()
+       {
+               var loc = Assembly.GetExecutingAssembly ().Location;
+               var fv = FileVersionInfo.GetVersionInfo (loc);
+
+               if (fv.ProductName != "Product")
+                       return 1;
+
+               if (fv.CompanyName != "Company")
+                       return 2;
+
+//             if (fv.Comments != "Description")
+//                     return 3;
+
+               if (fv.LegalCopyright != "Copyright")
+                       return 4;
+
+               if (fv.LegalTrademarks != "Trademark")
+                       return 5;
+
+               if (fv.ProductVersion != "8.9")
+                       return 6;
+
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-869.cs b/mcs/tests/test-869.cs
new file mode 100644 (file)
index 0000000..e0f0167
--- /dev/null
@@ -0,0 +1,39 @@
+using System;
+
+public class C
+{
+       public static readonly C Token = new C ();
+
+       public static C operator & (C set, E value)
+       {
+               return Token;
+       }
+
+       public static implicit operator E (C c)
+       {
+               throw new ApplicationException ();
+       }
+}
+
+public enum E
+{
+       Item = 2
+}
+
+class FooClass
+{
+       public static int Main ()
+       {
+               C m = new C ();
+               var x = E.Item;
+               var res = m & x;
+               if (res != C.Token)
+                       return 1;
+
+               res = m & E.Item;
+               if (res != C.Token)
+                       return 2;
+
+               return 0;       
+       }
+}
\ No newline at end of file
index e101c7b42df1cb4a680bd1be877406c9d920e813..b8f012ee9a2e598b4daf58cba07391494669f1fc 100644 (file)
@@ -93,6 +93,20 @@ class Test
                };
        }
 
+       static Func<T> Catch_2<T> (T t) where T : Exception
+       {
+               T l = t;
+               return () => {
+                       try {
+                               throw new NotSupportedException ();
+                       } catch (T e) {
+                               return l;
+                       } catch {
+                               throw new ApplicationException ("Should not be reached");
+                       }
+               };
+       }
+
        static Func<T> Finally<T> (T t)
        {
                T l = t;
@@ -199,6 +213,11 @@ class Test
                if (t5 () != 3)
                        return 5;
 
+               var ex = new NotSupportedException ();
+               var t5_2 = Catch_2 (ex);
+               if (t5_2 () != ex)
+                       return 52;
+
                var t6 = Finally (5);
                if (t6 () != 0)
                        return 6;
diff --git a/mcs/tests/test-anon-171.cs b/mcs/tests/test-anon-171.cs
new file mode 100644 (file)
index 0000000..ff084d4
--- /dev/null
@@ -0,0 +1,52 @@
+using System;
+
+namespace TestAnonSwitch
+{
+       public class MyClass
+       {
+               public event EventHandler<EventArgs> FirstEvent;
+               public event EventHandler<EventArgs> SecondEvent;
+
+               public void Trigger ()
+               {
+                       if (FirstEvent != null)
+                               FirstEvent (this, EventArgs.Empty);
+               }
+       }
+
+       public class Tester
+       {
+               MyClass myobj;
+
+               public void Test ()
+               {
+                       myobj = new MyClass ();
+                       var something = "key";
+
+                       switch (something) {
+                       case "key":
+                               myobj.FirstEvent += (sender, e) => {
+                                       Console.WriteLine ("FirstEvent: {0}", myobj);
+                               };
+                               break;
+                       case "somethingelse":
+                               bool? woot = null;
+                               myobj.SecondEvent += (sender, e) => {
+                                       Console.WriteLine ("woot {0}", woot);
+                               };
+                               break;
+                       }
+
+                       myobj.Trigger ();
+               }
+       }
+
+       class MainClass
+       {
+               public static void Main ()
+               {
+                       var tester = new Tester ();
+                       tester.Test ();
+               }
+       }
+}
index e2a361403c7ea8f95a872e5cdb11a220df44649d..3e0350012b945ee2c7bd643e1288139012fe8b19 100644 (file)
@@ -2,8 +2,7 @@ using System;
 using System.Threading.Tasks;
 
 // contextual async, parser tests
-
-class A
+class A : Iasync
 {
        async Task<int> async ()
        {
@@ -21,6 +20,10 @@ class A
                var res = (int) await async ();
                var res2 = (Int32) await async ();
        }
+       
+       async void Iasync.async ()
+       {
+       }
 
        public static int Main ()
        {
@@ -28,6 +31,11 @@ class A
        }
 }
 
+interface Iasync
+{
+       void async ();
+}
+
 class B
 {
        class async
diff --git a/mcs/tests/test-async-42.cs b/mcs/tests/test-async-42.cs
new file mode 100644 (file)
index 0000000..bb2dee6
--- /dev/null
@@ -0,0 +1,45 @@
+using System;
+using System.Threading.Tasks;
+
+class A
+{
+       public Task<int> OpenAsync ()
+       {
+               return Task.FromResult (0);
+       }
+}
+
+class C
+{
+       public static int Main ()
+       {
+               var c = new C ();
+               return c.Foo ().Result;
+       }
+
+       public A Connection
+       {
+               get
+               {
+                       return new A ();
+               }
+       }
+
+       async Task<int> Foo ()
+       {
+               {
+                       await Test (
+                               async () => {
+                                       await Connection.OpenAsync ();
+                               });
+               }
+
+               return 0;
+       }
+
+       T Test<T> (Func<T> func)
+       {
+               return func ();
+       }
+}
+
diff --git a/mcs/tests/test-async-46.cs b/mcs/tests/test-async-46.cs
new file mode 100644 (file)
index 0000000..5a0aed3
--- /dev/null
@@ -0,0 +1,16 @@
+using System;
+using System.Threading.Tasks;
+
+partial class X
+{
+       partial void Foo ();
+
+       async partial void Foo ()
+       {
+               await Task.FromResult (1);
+       }
+
+       public static void Main ()
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-async-47.cs b/mcs/tests/test-async-47.cs
new file mode 100644 (file)
index 0000000..4b6af22
--- /dev/null
@@ -0,0 +1,39 @@
+using System;
+
+class C
+{
+       public static void Main ()
+       {
+               new C ().Test ();
+       }
+
+       void Test ()
+       {
+               var v = new View ();
+               v.Click += async (o, e) => {
+                       var b = new Builder ();
+                       b.SetButton (() => {
+                               Console.WriteLine (this);
+                       });
+               };
+               v.Run ();
+       }
+}
+
+class View
+{
+       public event EventHandler Click;
+
+       public void Run ()
+       {
+               Click (null, null);
+       }
+}
+
+class Builder
+{
+       public void SetButton (Action h)
+       {
+               h ();
+       }
+}
diff --git a/mcs/tests/test-async-48.cs b/mcs/tests/test-async-48.cs
new file mode 100644 (file)
index 0000000..a0aefb1
--- /dev/null
@@ -0,0 +1,21 @@
+using System.Threading.Tasks;
+using System;
+
+public class App
+{
+       X _x = new X ();
+
+       public async Task Test ()
+       {
+               await Task.Run (new Func<Task> (async () => _x.ToString ()));
+       }
+}
+
+class X
+{
+       public static void Main ()
+       {
+               var app = new App ();
+               app.Test ().Wait ();
+       }
+}
index 6d3f12c18465e91e3ac857f651372a7092170454..09f0c57ba8dd8117551385d6c8a6c9db84185e65 100644 (file)
@@ -5,15 +5,15 @@
   </files>
   <methods>
     <method token="0x6000001">
-      <sequencepoints>
-        <entry il="0x0" row="4" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="5" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000002">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="4" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="5" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
index 98ce07ad2ffb3c9745ff52129cb138ad52920c4e..b2fd331bf76dd8198ae9e3efd455e4ef2668f67d 100644 (file)
       <scopes />
     </method>
     <method token="0x6000007">
-      <sequencepoints>
-        <entry il="0x0" row="47" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="48" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000008">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="47" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="48" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
index 9cc8718343c79c8fee2075a6ab7ca452ea6eab0b..5c6423f005ce311fe8fa739ad772b214d534d9f2 100644 (file)
       <scopes />
     </method>
     <method token="0x6000007">
-      <sequencepoints>
-        <entry il="0x0" row="25" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="26" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000008">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="25" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="26" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
index 6216b888614ab0496c5dce0f94bd23444c6f07db..156d687a7db82e9ab3c33a6b9fcc5ee89779e0eb 100644 (file)
       <scopes />
     </method>
     <method token="0x6000004">
-      <sequencepoints>
-        <entry il="0x0" row="22" col="2" file_ref="2" hidden="false" />
-        <entry il="0x1" row="23" col="2" file_ref="2" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000005">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="22" col="2" file_ref="2" hidden="false" />
+        <entry il="0x1" row="23" col="2" file_ref="2" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
index 0114c98f11855dbc94234bde93caf5d466e4e437..78b7fcc3b6b8f4d48225aeda0f66715d07951c61 100644 (file)
@@ -6,6 +6,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="4" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="5" col="3" file_ref="1" hidden="false" />
@@ -18,7 +23,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="12" col="2" file_ref="1" hidden="false" />
         <entry il="0x9" row="55" col="3" file_ref="1" hidden="false" />
@@ -31,7 +36,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="59" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="60" col="3" file_ref="1" hidden="false" />
       </locals>
       <scopes />
     </method>
-    <method token="0x6000004">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index 9714fb693d75052d70df726075d3e98c3bc77c4f..925cb921f893b64548c58d7c491423d542ecf96c 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="6" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="7" col="2" file_ref="1" hidden="false" />
@@ -12,7 +17,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="10" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="12" col="3" file_ref="1" hidden="false" />
@@ -28,7 +33,7 @@
         <entry index="1" start="0xa" end="0xa" />
       </scopes>
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="20" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="22" col="3" file_ref="1" hidden="false" />
@@ -47,7 +52,7 @@
         <entry index="1" start="0xa" end="0xc" />
       </scopes>
     </method>
-    <method token="0x6000004">
+    <method token="0x6000005">
       <sequencepoints>
         <entry il="0x0" row="31" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="33" col="3" file_ref="1" hidden="false" />
@@ -71,7 +76,7 @@
         <entry index="2" start="0x14" end="0x19" />
       </scopes>
     </method>
-    <method token="0x6000005">
+    <method token="0x6000006">
       <sequencepoints>
         <entry il="0x0" row="46" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="48" col="3" file_ref="1" hidden="false" />
@@ -86,7 +91,7 @@
         <entry index="1" start="0x9" end="0x9" />
       </scopes>
     </method>
-    <method token="0x6000006">
+    <method token="0x6000007">
       <sequencepoints>
         <entry il="0x0" row="56" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="58" col="3" file_ref="1" hidden="false" />
         <entry index="2" start="0x13" end="0x13" />
       </scopes>
     </method>
-    <method token="0x6000007">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index faccf800550c039fb658de3977c664a1346a30a2..15473e5f5821ddd55d5cb88adb0621524d6640d6 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="4" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="5" col="3" file_ref="1" hidden="false" />
@@ -13,7 +18,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="9" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="10" col="3" file_ref="1" hidden="false" />
@@ -22,7 +27,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="14" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="15" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x3" end="0xa" />
       </scopes>
     </method>
-    <method token="0x6000004">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index c8083e9c1fd778b82e7ade18c0d734eea82e2f83..e7442c65a8bc9f73206a10df293e07174d40ea18 100644 (file)
@@ -5,25 +5,30 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="7" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="16" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000005">
       <sequencepoints>
         <entry il="0x0" row="23" col="5" file_ref="1" hidden="false" />
       </sequencepoints>
         <entry index="1" start="0x0" end="0x2" />
       </scopes>
     </method>
-    <method token="0x6000005">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index 42d40c79d4b0a8500bc0e9518232feb507a8198f..5e2b972cdc0500fb77220bb8d25bcc1800663503 100644 (file)
       <scopes />
     </method>
     <method token="0x6000003">
-      <sequencepoints>
-        <entry il="0x0" row="10" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="12" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000004">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="10" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="12" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
index 925bc0314519928b24c1f8005eaf34ce06997c8d..031aecb8fac8acf6605b520e591afba5e32cc72c 100644 (file)
@@ -5,15 +5,6 @@
   </files>
   <methods>
     <method token="0x6000001">
-      <sequencepoints>
-        <entry il="0x0" row="4" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="5" col="3" file_ref="1" hidden="false" />
-        <entry il="0x7" row="6" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
-      <locals />
-      <scopes />
-    </method>
-    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="10" col="7" file_ref="1" hidden="false" />
         <entry il="0x1" row="11" col="4" file_ref="1" hidden="false" />
@@ -22,7 +13,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="14" col="7" file_ref="1" hidden="false" />
         <entry il="0x1" row="15" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="20" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
     </method>
-    <method token="0x6000005">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="21" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
     </method>
-    <method token="0x6000006">
+    <method token="0x6000005">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
+    <method token="0x6000006">
+      <sequencepoints>
+        <entry il="0x0" row="4" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="5" col="3" file_ref="1" hidden="false" />
+        <entry il="0x2" row="5" col="3" file_ref="1" hidden="false" />
+        <entry il="0x7" row="6" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
   </methods>
 </symbols>
\ No newline at end of file
index 9a0d0e0d940f14e1cf7600f48d57a1089cdd8521..60ce461555d9ed94b2b6e91924ca8a336b443ba7 100644 (file)
@@ -15,7 +15,7 @@
     <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="12" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="13" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1" row="13" col="10" file_ref="1" hidden="false" />
         <entry il="0x6" row="13" col="26" file_ref="1" hidden="false" />
         <entry il="0x16" row="14" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <scopes />
     </method>
     <method token="0x6000003">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="20" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="21" col="2" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000005">
       <sequencepoints>
         <entry il="0x0" row="24" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="25" col="10" file_ref="1" hidden="false" />
         <entry il="0x9" row="26" col="3" file_ref="1" hidden="false" />
         <entry il="0xa" row="27" col="3" file_ref="1" hidden="false" />
+        <entry il="0x18" row="25" col="14" file_ref="1" hidden="false" />
         <entry il="0x1e" row="28" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
         <entry index="1" start="0xa" end="0xa" />
       </scopes>
     </method>
-    <method token="0x6000005">
+    <method token="0x6000006">
       <sequencepoints>
         <entry il="0x0" row="31" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="32" col="10" file_ref="1" hidden="false" />
         <entry il="0x9" row="32" col="26" file_ref="1" hidden="false" />
         <entry il="0x11" row="33" col="3" file_ref="1" hidden="false" />
         <entry il="0x12" row="34" col="3" file_ref="1" hidden="false" />
+        <entry il="0x20" row="32" col="26" file_ref="1" hidden="false" />
+        <entry il="0x33" row="32" col="12" file_ref="1" hidden="false" />
         <entry il="0x39" row="35" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
         <entry index="1" start="0x12" end="0x12" />
       </scopes>
     </method>
-    <method token="0x6000006">
+    <method token="0x6000007">
       <sequencepoints>
         <entry il="0x0" row="38" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="39" col="10" file_ref="1" hidden="false" />
         <entry il="0x10" row="40" col="3" file_ref="1" hidden="false" />
         <entry il="0x11" row="41" col="3" file_ref="1" hidden="false" />
+        <entry il="0x2e" row="39" col="13" file_ref="1" hidden="false" />
         <entry il="0x34" row="42" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
         <entry index="1" start="0x11" end="0x11" />
       </scopes>
     </method>
-    <method token="0x6000007">
+    <method token="0x6000008">
       <sequencepoints>
         <entry il="0x0" row="45" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="46" col="10" file_ref="1" hidden="false" />
+        <entry il="0x1" row="46" col="19" file_ref="1" hidden="false" />
         <entry il="0x7" row="47" col="3" file_ref="1" hidden="false" />
         <entry il="0x8" row="48" col="4" file_ref="1" hidden="false" />
+        <entry il="0xd" row="48" col="12" file_ref="1" hidden="false" />
         <entry il="0x12" row="49" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1f" row="46" col="14" file_ref="1" hidden="false" />
         <entry il="0x25" row="50" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
         <entry index="1" start="0x8" end="0x12" />
       </scopes>
     </method>
-    <method token="0x6000008">
+    <method token="0x6000009">
       <sequencepoints>
         <entry il="0x0" row="53" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="54" col="3" file_ref="1" hidden="false" />
         <entry index="0" start="0xe" end="0xe" />
       </scopes>
     </method>
-    <method token="0x6000009">
+    <method token="0x600000a">
       <sequencepoints>
         <entry il="0x0" row="60" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="61" col="3" file_ref="1" hidden="false" />
         <entry index="0" start="0xe" end="0x13" />
       </scopes>
     </method>
-    <method token="0x600000a">
+    <method token="0x600000b">
       <sequencepoints>
         <entry il="0x0" row="68" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="70" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes>
-        <entry index="0" start="0x22" end="0x3c" />
+        <entry index="0" start="0x1" end="0x3c" />
         <entry index="1" start="0x28" end="0x2d" />
       </scopes>
     </method>
-    <method token="0x600000b">
+    <method token="0x600000c">
       <sequencepoints>
         <entry il="0x0" row="88" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="89" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes>
-        <entry index="0" start="0x28" end="0x38" />
+        <entry index="0" start="0x15" end="0x38" />
         <entry index="1" start="0x2e" end="0x33" />
       </scopes>
     </method>
-    <method token="0x600000c">
+    <method token="0x600000d">
       <sequencepoints>
         <entry il="0x0" row="103" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="105" col="3" file_ref="1" hidden="false" />
+        <entry il="0x86" row="104" col="3" file_ref="1" hidden="false" />
         <entry il="0xb3" row="107" col="5" file_ref="1" hidden="false" />
         <entry il="0xb8" row="109" col="4" file_ref="1" hidden="false" />
         <entry il="0xb9" row="110" col="5" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes>
-        <entry index="0" start="0xb3" end="0xd2" />
+        <entry index="0" start="0x1" end="0xd2" />
         <entry index="1" start="0xb9" end="0xbe" />
       </scopes>
     </method>
-    <method token="0x600000d">
+    <method token="0x600000e">
       <sequencepoints>
         <entry il="0x0" row="127" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="129" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes>
-        <entry index="0" start="0x2c" end="0x3b" />
+        <entry index="0" start="0x1" end="0x3b" />
       </scopes>
     </method>
-    <method token="0x600000e">
+    <method token="0x600000f">
       <sequencepoints>
         <entry il="0x0" row="140" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="142" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x6" end="0x8" />
       </scopes>
     </method>
-    <method token="0x600000f">
+    <method token="0x6000010">
       <sequencepoints>
         <entry il="0x0" row="153" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="155" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0xf" end="0xf" />
       </scopes>
     </method>
-    <method token="0x6000010">
+    <method token="0x6000011">
       <sequencepoints>
         <entry il="0x0" row="165" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="167" col="3" file_ref="1" hidden="false" />
         <entry index="0" start="0x2" end="0x4" />
       </scopes>
     </method>
-    <method token="0x6000011">
+    <method token="0x6000012">
       <sequencepoints>
         <entry il="0x0" row="174" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="175" col="3" file_ref="1" hidden="false" />
         <entry il="0x2" row="176" col="3" file_ref="1" hidden="false" />
         <entry il="0x3" row="177" col="4" file_ref="1" hidden="false" />
+        <entry il="0x8" row="177" col="12" file_ref="1" hidden="false" />
         <entry il="0xd" row="178" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
         <entry index="0" start="0x3" end="0xd" />
       </scopes>
     </method>
-    <method token="0x6000012">
+    <method token="0x6000013">
       <sequencepoints>
         <entry il="0x0" row="182" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="183" col="3" file_ref="1" hidden="false" />
+        <entry il="0x7" row="183" col="7" file_ref="1" hidden="false" />
         <entry il="0x11" row="184" col="3" file_ref="1" hidden="false" />
         <entry il="0x12" row="185" col="3" file_ref="1" hidden="false" />
         <entry il="0x18" row="187" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x19" end="0x19" />
       </scopes>
     </method>
-    <method token="0x6000013">
+    <method token="0x6000014">
       <sequencepoints>
         <entry il="0x0" row="192" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="193" col="3" file_ref="1" hidden="false" />
+        <entry il="0x7" row="193" col="7" file_ref="1" hidden="false" />
         <entry il="0x11" row="194" col="3" file_ref="1" hidden="false" />
         <entry il="0x12" row="195" col="3" file_ref="1" hidden="false" />
         <entry il="0x18" row="196" col="8" file_ref="1" hidden="false" />
+        <entry il="0x1e" row="196" col="12" file_ref="1" hidden="false" />
         <entry il="0x28" row="197" col="3" file_ref="1" hidden="false" />
         <entry il="0x29" row="198" col="3" file_ref="1" hidden="false" />
         <entry il="0x2f" row="200" col="3" file_ref="1" hidden="false" />
         <entry index="2" start="0x30" end="0x30" />
       </scopes>
     </method>
-    <method token="0x6000014">
+    <method token="0x6000015">
       <sequencepoints>
         <entry il="0x0" row="205" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="206" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x10" end="0x10" />
       </scopes>
     </method>
-    <method token="0x6000015">
+    <method token="0x6000016">
       <sequencepoints>
         <entry il="0x0" row="215" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="216" col="8" file_ref="1" hidden="false" />
         <entry index="3" start="0x1b" end="0x1b" />
       </scopes>
     </method>
-    <method token="0x6000016">
+    <method token="0x6000017">
       <sequencepoints>
         <entry il="0x0" row="230" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="231" col="8" file_ref="1" hidden="false" />
         <entry index="1" start="0x9" end="0x9" />
       </scopes>
     </method>
-    <method token="0x6000017">
+    <method token="0x6000018">
       <sequencepoints>
         <entry il="0x0" row="237" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="238" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x10" end="0x10" />
       </scopes>
     </method>
-    <method token="0x6000018">
+    <method token="0x6000019">
       <sequencepoints>
         <entry il="0x0" row="246" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="247" col="3" file_ref="1" hidden="false" />
         <entry il="0x2" row="250" col="3" file_ref="1" hidden="false" />
+        <entry il="0x3" row="250" col="3" file_ref="1" hidden="false" />
         <entry il="0xe" row="248" col="4" file_ref="1" hidden="false" />
+        <entry il="0x10" row="250" col="3" file_ref="1" hidden="false" />
         <entry il="0x16" row="251" col="3" file_ref="1" hidden="false" />
         <entry il="0x17" row="252" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1a" row="250" col="3" file_ref="1" hidden="false" />
+        <entry il="0x31" row="250" col="3" file_ref="1" hidden="false" />
         <entry il="0x37" row="253" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
         <entry index="1" start="0x17" end="0x17" />
       </scopes>
     </method>
-    <method token="0x6000019">
+    <method token="0x600001a">
       <sequencepoints>
         <entry il="0x0" row="256" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="257" col="3" file_ref="1" hidden="false" />
         <entry il="0x2" row="260" col="3" file_ref="1" hidden="false" />
+        <entry il="0x4" row="260" col="3" file_ref="1" hidden="false" />
         <entry il="0xf" row="258" col="4" file_ref="1" hidden="false" />
+        <entry il="0x10" row="260" col="3" file_ref="1" hidden="false" />
         <entry il="0x16" row="261" col="3" file_ref="1" hidden="false" />
         <entry il="0x17" row="262" col="3" file_ref="1" hidden="false" />
+        <entry il="0x19" row="260" col="3" file_ref="1" hidden="false" />
         <entry il="0x3c" row="263" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
         <entry index="1" start="0x17" end="0x17" />
       </scopes>
     </method>
-    <method token="0x600001a">
+    <method token="0x600001b">
       <sequencepoints>
         <entry il="0x0" row="266" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="267" col="3" file_ref="1" hidden="false" />
         <entry il="0x2" row="269" col="6" file_ref="1" hidden="false" />
+        <entry il="0x6" row="269" col="6" file_ref="1" hidden="false" />
+        <entry il="0xe" row="269" col="6" file_ref="1" hidden="false" />
         <entry il="0x24" row="268" col="3" file_ref="1" hidden="false" />
         <entry il="0x2f" row="270" col="3" file_ref="1" hidden="false" />
         <entry il="0x30" row="271" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x30" end="0x30" />
       </scopes>
     </method>
-    <method token="0x600001b">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index 338ebab2372853b7ff26877d90ce9ec7b8b65b05..bc71011e0e5619b30eb6c5b1ec0f34dc7add039a 100644 (file)
@@ -5,15 +5,15 @@
   </files>
   <methods>
     <method token="0x6000001">
-      <sequencepoints>
-        <entry il="0x0" row="7" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="8" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000002">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="7" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="8" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
index 5125b202491c51b2c812f7b43be70070ac4e539d..46631e8e15c4f5124f50960f4691ca004d86524b 100644 (file)
@@ -5,15 +5,15 @@
   </files>
   <methods>
     <method token="0x6000001">
-      <sequencepoints>
-        <entry il="0x0" row="7" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="9" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000002">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="7" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="9" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
       <scopes />
     </method>
     <method token="0x6000008">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
-    <method token="0x6000009">
       <sequencepoints>
         <entry il="0x21" row="12" col="2" file_ref="1" hidden="false" />
         <entry il="0x22" row="13" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
+    <method token="0x6000009">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
     <method token="0x600000a">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000010">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
-    <method token="0x6000011">
       <sequencepoints>
         <entry il="0x12" row="17" col="2" file_ref="1" hidden="false" />
         <entry il="0x13" row="18" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
+    <method token="0x6000011">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
     <method token="0x6000012">
       <sequencepoints />
       <locals />
index e550e8ecffac9a0aa5620e70bd55ba4f7f6aba56..9bae89796d0373e1f1a8574ec2b53c561712f9ee 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="6" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="7" col="2" file_ref="1" hidden="false" />
@@ -12,7 +17,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="10" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="11" col="3" file_ref="1" hidden="false" />
@@ -23,7 +28,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="17" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="18" col="3" file_ref="1" hidden="false" />
@@ -34,7 +39,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000005">
       <sequencepoints>
         <entry il="0x0" row="26" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="27" col="3" file_ref="1" hidden="false" />
@@ -45,8 +50,9 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000005">
+    <method token="0x6000006">
       <sequencepoints>
+        <entry il="0x0" row="34" col="2" file_ref="1" hidden="false" />
         <entry il="0xd" row="34" col="2" file_ref="1" hidden="false" />
         <entry il="0xe" row="35" col="3" file_ref="1" hidden="false" />
         <entry il="0x1b" row="37" col="2" file_ref="1" hidden="false" />
       </locals>
       <scopes />
     </method>
-    <method token="0x6000006">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
     <method token="0x6000007">
       <sequencepoints>
-        <entry il="0x0" row="13" col="3" file_ref="1" hidden="false" />
+        <entry il="0x0" row="13" col="11" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
@@ -71,7 +72,7 @@
     <method token="0x6000008">
       <sequencepoints>
         <entry il="0x0" row="20" col="3" file_ref="1" hidden="false" />
-        <entry il="0x1" row="21" col="4" file_ref="1" hidden="false" />
+        <entry il="0x1" row="21" col="12" file_ref="1" hidden="false" />
         <entry il="0x6" row="22" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
@@ -80,7 +81,7 @@
     <method token="0x6000009">
       <sequencepoints>
         <entry il="0x0" row="28" col="3" file_ref="1" hidden="false" />
-        <entry il="0x1" row="29" col="4" file_ref="1" hidden="false" />
+        <entry il="0x1" row="29" col="12" file_ref="1" hidden="false" />
         <entry il="0x6" row="30" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
index 1e4c752197b5dcf6bfff8a108c935a96d7d69209..323939003d52a24bae3878e753ad28fe9e899b67 100644 (file)
@@ -5,9 +5,16 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="6" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="7" col="3" file_ref="1" hidden="false" />
+        <entry il="0xb" row="7" col="21" file_ref="1" hidden="false" />
+        <entry il="0x16" row="5" col="6" file_ref="1" hidden="false" />
         <entry il="0x1c" row="8" col="5" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
@@ -16,7 +23,7 @@
         <entry index="1" start="0x15" end="0x1b" />
       </scopes>
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="11" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="12" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000003">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index f34f901bff4f45c5560781da7f4c62934ee7cf74..083ef56c2c0b9fff32c79c828a440e78e72e9a83 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="10" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="11" col="2" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="14" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="15" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1" row="15" col="11" file_ref="1" hidden="false" />
         <entry il="0x7" row="17" col="4" file_ref="1" hidden="false" />
+        <entry il="0xe" row="17" col="4" file_ref="1" hidden="false" />
         <entry il="0x13" row="20" col="4" file_ref="1" hidden="false" />
+        <entry il="0x1a" row="20" col="4" file_ref="1" hidden="false" />
         <entry il="0x21" row="24" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
       </locals>
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="27" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="28" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1" row="28" col="14" file_ref="1" hidden="false" />
         <entry il="0x7" row="30" col="4" file_ref="1" hidden="false" />
         <entry il="0x12" row="31" col="4" file_ref="1" hidden="false" />
         <entry il="0x1b" row="33" col="2" file_ref="1" hidden="false" />
       </locals>
       <scopes />
     </method>
-    <method token="0x6000004">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index e71763c6366a5a1271b9ca889a7a0883275fa8e0..8c966ef91e8f63f76b24bf0f422a520846f0427b 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="7" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="8" col="2" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
+        <entry il="0xf" row="13" col="5" file_ref="1" hidden="false" />
+        <entry il="0x24" row="13" col="8" file_ref="1" hidden="false" />
         <entry il="0x2a" row="11" col="2" file_ref="1" hidden="false" />
         <entry il="0x2b" row="12" col="3" file_ref="1" hidden="false" />
+        <entry il="0x2d" row="14" col="4" file_ref="1" hidden="false" />
+        <entry il="0x40" row="13" col="4" file_ref="1" hidden="false" />
         <entry il="0x46" row="16" col="3" file_ref="1" hidden="false" />
         <entry il="0x4b" row="17" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       </locals>
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="20" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="21" col="3" file_ref="1" hidden="false" />
+        <entry il="0x11" row="21" col="59" file_ref="1" hidden="false" />
+        <entry il="0x1c" row="21" col="53" file_ref="1" hidden="false" />
+        <entry il="0x2c" row="21" col="47" file_ref="1" hidden="false" />
         <entry il="0x32" row="22" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
       </locals>
       <scopes />
     </method>
-    <method token="0x6000004">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index d1386aff5e20e5c7ffa4b87bba2624da6c0429fa..df5bd3c1056b17ed31ac2bef3ff4e5136eddb894 100644 (file)
       <scopes />
     </method>
     <method token="0x6000003">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="8" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="9" col="2" file_ref="1" hidden="false" />
@@ -22,7 +27,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000005">
       <sequencepoints>
         <entry il="0x0" row="12" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="13" col="3" file_ref="1" hidden="false" />
@@ -31,7 +36,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000005">
+    <method token="0x6000006">
       <sequencepoints>
         <entry il="0x0" row="17" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="18" col="3" file_ref="1" hidden="false" />
@@ -45,7 +50,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000006">
+    <method token="0x6000007">
       <sequencepoints>
         <entry il="0x0" row="24" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="25" col="3" file_ref="1" hidden="false" />
       </locals>
       <scopes />
     </method>
-    <method token="0x6000007">
+    <method token="0x6000008">
       <sequencepoints>
         <entry il="0x0" row="30" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="31" col="3" file_ref="1" hidden="false" />
         <entry il="0x7" row="32" col="3" file_ref="1" hidden="false" />
-        <entry il="0xe" row="33" col="3" file_ref="1" hidden="false" />
+        <entry il="0xe" row="33" col="15" file_ref="1" hidden="false" />
         <entry il="0x14" row="34" col="3" file_ref="1" hidden="false" />
         <entry il="0x81" row="35" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       </locals>
       <scopes />
     </method>
-    <method token="0x6000008">
+    <method token="0x6000009">
       <sequencepoints>
         <entry il="0x0" row="38" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="39" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1" row="39" col="15" file_ref="1" hidden="false" />
         <entry il="0x7" row="40" col="3" file_ref="1" hidden="false" />
         <entry il="0x1e4" row="41" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       </locals>
       <scopes />
     </method>
-    <method token="0x6000009">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
     <method token="0x600000a">
       <sequencepoints>
         <entry il="0x0" row="40" col="38" file_ref="1" hidden="false" />
index 1d9a90dfbf848c5f67b0d182e0fdac61a44a12e7..5c426ff09e890e4bfd053b7a1b20523b2751db35 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="7" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="8" col="2" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="16" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="17" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1" row="17" col="15" file_ref="1" hidden="false" />
         <entry il="0x23" row="17" col="23" file_ref="1" hidden="false" />
         <entry il="0x2e" row="21" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000005">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000005">
+    <method token="0x6000006">
       <sequencepoints>
         <entry il="0x0" row="29" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="30" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1" row="30" col="15" file_ref="1" hidden="false" />
         <entry il="0x23" row="30" col="23" file_ref="1" hidden="false" />
         <entry il="0x2e" row="31" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
     </method>
-    <method token="0x6000006">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
     <method token="0x6000007">
       <sequencepoints />
       <locals />
@@ -99,6 +99,7 @@
       <sequencepoints>
         <entry il="0x21" row="34" col="2" file_ref="1" hidden="false" />
         <entry il="0x22" row="35" col="3" file_ref="1" hidden="false" />
+        <entry il="0x23" row="35" col="15" file_ref="1" hidden="false" />
         <entry il="0x2d" row="36" col="3" file_ref="1" hidden="false" />
         <entry il="0x8b" row="37" col="3" file_ref="1" hidden="false" />
         <entry il="0x3ab" row="38" col="3" file_ref="1" hidden="false" />
index ac2dc762dc3c3c1b39c9b2f37c3122064c64b478..fd90d797f79a8640322ff8327e71b260146c0e14 100644 (file)
       <scopes />
     </method>
     <method token="0x6000002">
-      <sequencepoints>
-        <entry il="0x0" row="17" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="18" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000003">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="17" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="18" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
index 3b9f00550830d4ec2287d50a18c92db5fb0e6298..287791e7eb28203960a0b2699023ef6fa949b6ba 100644 (file)
       <scopes />
     </method>
     <method token="0x6000002">
-      <sequencepoints>
-        <entry il="0x0" row="22" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="23" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000003">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="22" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="23" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
       <scopes />
     </method>
     <method token="0x6000007">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
-    <method token="0x6000008">
       <sequencepoints>
         <entry il="0x27" row="7" col="2" file_ref="1" hidden="false" />
         <entry il="0x28" row="8" col="3" file_ref="1" hidden="false" />
+        <entry il="0x2d" row="8" col="11" file_ref="1" hidden="false" />
         <entry il="0x32" row="9" col="3" file_ref="1" hidden="false" />
         <entry il="0x41" row="10" col="3" file_ref="1" hidden="false" />
         <entry il="0x42" row="11" col="4" file_ref="1" hidden="false" />
         <entry index="0" start="0x42" end="0x5f" />
       </scopes>
     </method>
+    <method token="0x6000008">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
     <method token="0x6000009">
       <sequencepoints />
       <locals />
@@ -77,6 +78,7 @@
       <sequencepoints>
         <entry il="0x0" row="14" col="3" file_ref="1" hidden="false" />
         <entry il="0x1" row="15" col="4" file_ref="1" hidden="false" />
+        <entry il="0x6" row="15" col="12" file_ref="1" hidden="false" />
         <entry il="0xb" row="16" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
index 2b4a8e44532320e5b24cb224c5fa62ae4877524b..c380f599bb1c66f931447c41d71fca1a9c3ebd7f 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="7" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="8" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000005">
       <sequencepoints>
         <entry il="0x0" row="20" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="21" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1" row="21" col="9" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
     </method>
-    <method token="0x6000005">
+    <method token="0x6000006">
       <sequencepoints>
         <entry il="0x0" row="25" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="26" col="2" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000006">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
     <method token="0x6000007">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x600000b">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
-    <method token="0x600000c">
       <sequencepoints>
         <entry il="0x21" row="15" col="2" file_ref="1" hidden="false" />
         <entry il="0x22" row="16" col="3" file_ref="1" hidden="false" />
+        <entry il="0x29" row="16" col="21" file_ref="1" hidden="false" />
         <entry il="0x47" row="17" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
     </method>
+    <method token="0x600000c">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
     <method token="0x600000d">
       <sequencepoints />
       <locals />
index bb884fe89d1ab023d0be0002c954ef61f8601048..5c15ce75a8098c82d1b0d0882983cdb2c7b34281 100644 (file)
@@ -5,26 +5,42 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints>
+        <entry il="0x0" row="39" col="7" file_ref="1" hidden="false" />
+        <entry il="0x1" row="40" col="4" file_ref="1" hidden="false" />
+        <entry il="0x8" row="41" col="3" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="8" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="9" col="3" file_ref="1" hidden="false" />
+        <entry il="0x2" row="9" col="3" file_ref="1" hidden="false" />
         <entry il="0x7" row="9" col="8" file_ref="1" hidden="false" />
         <entry il="0xd" row="10" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="13" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="14" col="3" file_ref="1" hidden="false" />
+        <entry il="0x2" row="14" col="3" file_ref="1" hidden="false" />
         <entry il="0x7" row="14" col="11" file_ref="1" hidden="false" />
         <entry il="0xd" row="15" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000005">
       <sequencepoints>
         <entry il="0x0" row="18" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="19" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000006">
       <sequencepoints>
         <entry il="0x0" row="23" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="24" col="3" file_ref="1" hidden="false" />
         <entry il="0x1f" row="25" col="3" file_ref="1" hidden="false" />
+        <entry il="0x20" row="25" col="3" file_ref="1" hidden="false" />
         <entry il="0x25" row="25" col="8" file_ref="1" hidden="false" />
         <entry il="0x2b" row="26" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
@@ -47,7 +64,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000005">
+    <method token="0x6000007">
       <sequencepoints>
         <entry il="0x0" row="29" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="30" col="3" file_ref="1" hidden="false" />
@@ -56,7 +73,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000006">
+    <method token="0x6000008">
       <sequencepoints>
         <entry il="0x0" row="34" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="35" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000007">
-      <sequencepoints>
-        <entry il="0x0" row="39" col="7" file_ref="1" hidden="false" />
-        <entry il="0x1" row="40" col="4" file_ref="1" hidden="false" />
-        <entry il="0x8" row="41" col="3" file_ref="1" hidden="false" />
-      </sequencepoints>
-      <locals />
-      <scopes />
-    </method>
-    <method token="0x6000008">
+    <method token="0x6000009">
       <sequencepoints>
         <entry il="0x0" row="45" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="46" col="2" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000009">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
     <method token="0x600000a">
       <sequencepoints>
         <entry il="0x0" row="24" col="27" file_ref="1" hidden="false" />
index b3de71ee9781e9ba57c1f506238b20be3ce13502..11ff400fed595a2f322d60fd1c11bdc61d13087d 100644 (file)
@@ -5,10 +5,15 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="6" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="7" col="3" file_ref="1" hidden="false" />
-        <entry il="0x7" row="7" col="30" file_ref="1" hidden="false" />
+        <entry il="0x1" row="7" col="14" file_ref="1" hidden="false" />
+        <entry il="0x7" row="7" col="34" file_ref="1" hidden="false" />
         <entry il="0xd" row="8" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
@@ -17,7 +22,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="11" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="12" col="8" file_ref="1" hidden="false" />
@@ -35,7 +40,7 @@
         <entry index="1" start="0x9" end="0x9" />
       </scopes>
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="16" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="17" col="2" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index 28c1c5327ea5c0f9a858384f22d55e31eeba8575..de5ef91f9f2094bee8714cea9566aa4b688c6f44 100644 (file)
@@ -5,15 +5,15 @@
   </files>
   <methods>
     <method token="0x6000001">
-      <sequencepoints>
-        <entry il="0x0" row="6" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="7" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000002">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="6" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="7" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
diff --git a/mcs/tests/test-debug-26-ref.xml b/mcs/tests/test-debug-26-ref.xml
new file mode 100644 (file)
index 0000000..23156f3
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<symbols>
+  <files>
+    <file id="1" name="test-debug-26.cs" checksum="9517379bedd3abcc97156ab28d9cb3da" />
+  </files>
+  <methods>
+    <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
+      <sequencepoints>
+        <entry il="0x0" row="9" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="10" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000003">
+      <sequencepoints>
+        <entry il="0x0" row="13" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="14" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+  </methods>
+</symbols>
\ No newline at end of file
diff --git a/mcs/tests/test-debug-26.cs b/mcs/tests/test-debug-26.cs
new file mode 100644 (file)
index 0000000..0cbe64f
--- /dev/null
@@ -0,0 +1,15 @@
+partial class P
+{
+       partial void Foo ();
+}
+
+partial class P
+{
+       partial void Foo ()
+       {
+       }
+       
+       public static void Main ()
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-debug-27-ref.xml b/mcs/tests/test-debug-27-ref.xml
new file mode 100644 (file)
index 0000000..5509d00
--- /dev/null
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<symbols>
+  <files>
+    <file id="1" name="test-debug-27.cs" checksum="4a2fa40aa27e1d498f61d664c985ddf2" />
+  </files>
+  <methods>
+    <method token="0x6000001">
+      <sequencepoints>
+        <entry il="0x0" row="8" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="10" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
+      <sequencepoints>
+        <entry il="0x0" row="13" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="14" col="3" file_ref="1" hidden="false" />
+        <entry il="0x8" row="15" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000003">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000004">
+      <sequencepoints>
+        <entry il="0x0" row="21" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="22" col="3" file_ref="1" hidden="false" />
+        <entry il="0x8" row="23" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000005">
+      <sequencepoints>
+        <entry il="0x0" row="26" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="27" col="3" file_ref="1" hidden="false" />
+        <entry il="0x8" row="28" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000006">
+      <sequencepoints>
+        <entry il="0x0" row="31" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="32" col="10" file_ref="1" hidden="false" />
+        <entry il="0xc" row="33" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000007">
+      <sequencepoints>
+        <entry il="0x0" row="36" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="37" col="3" file_ref="1" hidden="false" />
+        <entry il="0x8" row="38" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000008">
+      <sequencepoints>
+        <entry il="0x0" row="41" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="42" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1f" row="44" col="3" file_ref="1" hidden="false" />
+        <entry il="0x20" row="44" col="13" file_ref="1" hidden="false" />
+        <entry il="0x26" row="44" col="20" file_ref="1" hidden="false" />
+        <entry il="0x2d" row="45" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals>
+        <entry name="f" il_index="0" scope_ref="0" />
+        <entry name="res" il_index="1" scope_ref="0" />
+      </locals>
+      <scopes />
+    </method>
+    <method token="0x6000009">
+      <sequencepoints>
+        <entry il="0x0" row="48" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="49" col="3" file_ref="1" hidden="false" />
+        <entry il="0x4" row="49" col="11" file_ref="1" hidden="false" />
+        <entry il="0x9" row="50" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals>
+        <entry name="s" il_index="0" scope_ref="0" />
+      </locals>
+      <scopes />
+    </method>
+    <method token="0x600000a">
+      <sequencepoints>
+        <entry il="0x0" row="53" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="54" col="3" file_ref="1" hidden="false" />
+        <entry il="0xa" row="54" col="11" file_ref="1" hidden="false" />
+        <entry il="0x18" row="54" col="22" file_ref="1" hidden="false" />
+        <entry il="0x1f" row="55" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals>
+        <entry name="i" il_index="0" scope_ref="0" />
+      </locals>
+      <scopes />
+    </method>
+    <method token="0x600000b">
+      <sequencepoints>
+        <entry il="0x0" row="58" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="59" col="3" file_ref="1" hidden="false" />
+        <entry il="0x6" row="59" col="11" file_ref="1" hidden="false" />
+        <entry il="0xc" row="60" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x600000c">
+      <sequencepoints>
+        <entry il="0x0" row="63" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="64" col="3" file_ref="1" hidden="false" />
+        <entry il="0x8" row="65" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+  </methods>
+</symbols>
\ No newline at end of file
diff --git a/mcs/tests/test-debug-27.cs b/mcs/tests/test-debug-27.cs
new file mode 100644 (file)
index 0000000..982b42c
--- /dev/null
@@ -0,0 +1,68 @@
+using System;
+
+// Tests for explicit call sequence point
+
+struct S
+{
+       public S (int i)
+       {
+
+       }
+
+       public static implicit operator int (S s)
+       {
+               return 1;
+       }
+}
+
+class C
+{
+       public static int A ()
+       {
+               return 1;
+       }
+
+       public static int B (C c)
+       {
+               return 2;
+       }
+
+       public static C Test ()
+       {
+               return new C ();
+       }
+
+       public string Foo ()
+       {
+               return null;
+       }
+
+       void Test_1 ()
+       {
+               Func<int> f = A;
+
+               var res = f () + f ();
+       }
+
+       void Test_2 ()
+       {
+               var s = new S (0);
+       }
+
+       void Test_3 ()
+       {
+               int i = new S () + new S ();
+       }
+
+       void Test_4 ()
+       {
+               Test ().Foo ();
+       }
+
+       static int Main ()
+       {
+               return 0;
+       }
+}
+
+
diff --git a/mcs/tests/test-partial-31.cs b/mcs/tests/test-partial-31.cs
new file mode 100644 (file)
index 0000000..849fabd
--- /dev/null
@@ -0,0 +1,45 @@
+using System;
+
+namespace TestPartialOverride.BaseNamespace
+{
+       public abstract class Base
+       {
+               protected virtual void OverrideMe ()
+               {
+                       Console.Out.WriteLine ("OverrideMe");
+               }
+       }
+}
+
+namespace TestPartialOverride.Outer.Nested.Namespace
+{
+       internal partial class Inherits
+       {
+               protected override void OverrideMe ()
+               {
+                       Console.Out.WriteLine ("Overridden");
+               }
+       }
+}
+
+namespace TestPartialOverride.Outer
+{
+       namespace Nested.Namespace
+       {
+               internal partial class Inherits : TestPartialOverride.BaseNamespace.Base
+               {
+                       public void DoesSomethignElse ()
+                       {
+                               OverrideMe ();
+                       }
+               }
+       }
+
+       public class C
+       {
+               public static void Main ()
+               {
+                       new TestPartialOverride.Outer.Nested.Namespace.Inherits ().DoesSomethignElse ();
+               }
+       }
+}
index b5f611c816ffb4ef08829d420c2882952bfbf34a..aa91c26a8950fd59c7d5b3c586a3e5a5b35af750 100644 (file)
@@ -41,7 +41,7 @@
     </type>\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>1216</size>\r
+        <size>1292</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       <method name="Void Assert[T](T, T, System.String)" attrs="145">\r
         <size>99</size>\r
       </method>\r
-      <method name="Void Assert[T](IList`1, IList`1, System.String)" attrs="145">\r
-        <size>257</size>\r
-      </method>\r
       <method name="Void AssertArgument(System.Runtime.CompilerServices.CallSiteBinder, Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[], System.String)" attrs="145">\r
         <size>172</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Tester">\r
+      <method name="Void Assert[T](System.Collections.Generic.IList`1[T], System.Collections.Generic.IList`1[T], System.String)" attrs="145">\r
+        <size>257</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="dtest-004.cs">\r
     <type name="G`1[T]">\r
       <method name="Int32 ConvertImplicitReturnTest()" attrs="129">\r
         <size>83</size>\r
       </method>\r
-      <method name="IEnumerable`1 ConvertImplicitReturnTest_2()" attrs="129">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void ConvertExplicitTest()" attrs="129">\r
         <size>503</size>\r
       </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>154</size>\r
       </method>\r
       <method name="Void Reset()" attrs="486">\r
         <size>6</size>\r
       </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="Int32 &lt;&gt;m__3()" attrs="131">\r
         <size>81</size>\r
       </method>\r
-      <method name="Nullable`1 &lt;&gt;m__4()" attrs="131">\r
-        <size>81</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Tester">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] ConvertImplicitReturnTest_2()" attrs="129">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;ConvertImplicitReturnTest_2&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.String] System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;ConvertExplicitCheckedTest&gt;c__AnonStorey3">\r
+      <method name="System.Nullable`1[System.UInt32] &lt;&gt;m__4()" attrs="131">\r
+        <size>81</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="dtest-007.cs">\r
     <type name="D">\r
       </method>\r
     </type>\r
     <type name="DynamicAssignments">\r
-      <method name="Void Foo(IA`1)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>192</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void Foo(IA`1[System.Object])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="dtest-018.cs">\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__DynamicSite1+Container0">\r
-      <method name="System.Object Invoke(System.Runtime.CompilerServices.CallSite, Nullable`1 ByRef, System.Object)" attrs="454">\r
-        <size>0</size>\r
-      </method>\r
       <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
         <size>0</size>\r
       </method>\r
     </type>\r
+    <type name="C+&lt;Main&gt;c__DynamicSite1+Container0">\r
+      <method name="System.Object Invoke(System.Runtime.CompilerServices.CallSite, System.Nullable`1[System.Int32] ByRef, System.Object)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="dtest-026.cs">\r
     <type name="C">\r
       <method name="Void M3[T,U](T, A`1[U])" attrs="145">\r
         <size>2</size>\r
       </method>\r
-      <method name="Void M4[T,U](T, IEquatable`1)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>577</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void M4[T,U](T, System.IEquatable`1[U])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="dtest-031.cs">\r
   </test>\r
   <test name="dtest-040.cs">\r
     <type name="A">\r
-      <method name="S`2 Foo[U](U)" attrs="454">\r
-        <size>18</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="B">\r
-      <method name="S`2 Foo[T](T)" attrs="198">\r
-        <size>38</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="A">\r
+      <method name="S`2[U,System.Object] Foo[U](U)" attrs="454">\r
+        <size>18</size>\r
+      </method>\r
+    </type>\r
+    <type name="B">\r
+      <method name="S`2[T,System.Object] Foo[T](T)" attrs="198">\r
+        <size>38</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="dtest-041.cs">\r
     <type name="A`1[AA]">\r
   </test>\r
   <test name="dtest-044.cs">\r
     <type name="C">\r
-      <method name="Int32 Test[T,U](T, IComparable`1)" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 Test_2[T](IList`1, T)" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>868</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Int32 Test[T,U](T, System.IComparable`1[U])" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 Test_2[T](System.Collections.Generic.IList`1[T], T)" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="dtest-045.cs">\r
       <method name="Void CLSCompliantMethod(System.Object[])" attrs="134">\r
         <size>2</size>\r
       </method>\r
-      <method name="Void CLSCompliantMethod(IEnumerable`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void CLSCompliantMethod(System.Collections.Generic.IEnumerable`1[System.Object])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="dtest-collectioninit-01.cs">\r
   </test>\r
   <test name="dtest-iter-01.cs">\r
     <type name="Program">\r
-      <method name="IEnumerable`1 D1()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
-      <method name="IEnumerable`1 D2()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;dynamic&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;System.Func&lt;dynamic&gt;&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Program">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Object] D1()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Func`1[System.Object]] D2()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+&lt;D1&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;dynamic&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+&lt;D2&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Func`1[System.Object]] System.Collections.Generic.IEnumerable&lt;System.Func&lt;dynamic&gt;&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="dtest-named-01.cs">\r
     <type name="Test">\r
   </test>\r
   <test name="gtest-032.cs">\r
     <type name="X">\r
-      <method name="Void Test(Bar`2)" attrs="145">\r
-        <size>25</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void Test(Bar`2[System.Int32,System.String])" attrs="145">\r
+        <size>25</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-033.cs">\r
     <type name="X">\r
-      <method name="Void Test(Bar`3)" attrs="145">\r
-        <size>36</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void Test(Bar`3[System.Int64,System.Int32,System.String])" attrs="145">\r
+        <size>36</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-034.cs">\r
       <method name="T get_Name()" attrs="2182">\r
         <size>15</size>\r
       </method>\r
-      <method name="IMonkey`1 GetTheMonkey[U](U)" attrs="134">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Void .ctor(T)" attrs="6278">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Zoo`1[T]">\r
+      <method name="IMonkey`1[U] GetTheMonkey[U](U)" attrs="134">\r
+        <size>16</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-040.cs">\r
     <type name="Stack`1[T]">\r
-      <method name="INode`1 GetNode()" attrs="134">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Stack`1+Foo`1[T,T] GetFoo(T)" attrs="134">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Stack`1[T]">\r
+      <method name="INode`1[T] GetNode()" attrs="134">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-041.cs">\r
     <type name="Stack`1[T]">\r
       <method name="Void Print(T)" attrs="486">\r
         <size>18</size>\r
       </method>\r
-      <method name="IHello`1 Test[U]()" attrs="486">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Hello`1[T]">\r
+      <method name="IHello`1[U] Test[U]()" attrs="486">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-058.cs">\r
     <type name="Foo">\r
   </test>\r
   <test name="gtest-062.cs">\r
     <type name="X">\r
-      <method name="IEnumerable`1 Test(Int32, Int64)" attrs="134">\r
-        <size>51</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>95</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>116</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="X">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test(Int32, Int64)" attrs="134">\r
+        <size>44</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-063.cs">\r
     <type name="Test">\r
   </test>\r
   <test name="gtest-064.cs">\r
     <type name="Foo`1[T]">\r
-      <method name="IHello`1 IFoo&lt;T&gt;.GetHello()" attrs="481">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Foo`1+Hello[T] GetHello()" attrs="134">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo`1[T]">\r
+      <method name="IHello`1[T] IFoo&lt;T&gt;.GetHello()" attrs="481">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-065.cs">\r
     <type name="ComparablePair`2[T,U]">\r
-      <method name="Int32 CompareTo(ComparablePair`2)" attrs="486">\r
-        <size>76</size>\r
-      </method>\r
-      <method name="Boolean Equals(ComparablePair`2)" attrs="134">\r
-        <size>81</size>\r
-      </method>\r
       <method name="System.String ToString()" attrs="198">\r
         <size>72</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="ComparablePair`2[T,U]">\r
+      <method name="Int32 CompareTo(ComparablePair`2[T,U])" attrs="486">\r
+        <size>76</size>\r
+      </method>\r
+      <method name="Boolean Equals(ComparablePair`2[T,U])" attrs="134">\r
+        <size>81</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-066.cs">\r
     <type name="Foo`1[T]">\r
   </test>\r
   <test name="gtest-069.cs">\r
     <type name="Test`1[T]">\r
-      <method name="Int32 Foo(IFoo`1)" attrs="134">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Int32 Foo(IFoo)" attrs="134">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test`1[T]">\r
+      <method name="Int32 Foo(IFoo`1[T])" attrs="134">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-070.cs">\r
     <type name="Martin.Test`1[T]">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>15</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="MyList`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="486">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-074.cs">\r
     <type name="Foo`1[T]">\r
       </method>\r
     </type>\r
     <type name="Test`1[T]">\r
-      <method name="Foo`1 GetFoo(T)" attrs="134">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test`1[T]">\r
+      <method name="Foo`1[T] GetFoo(T)" attrs="134">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-078.cs">\r
     <type name="S">\r
   </test>\r
   <test name="gtest-080.cs">\r
     <type name="Test">\r
-      <method name="Void Hello[T](IFoo`1)" attrs="134">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Void InsertAll[U](IFoo`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="Void Hello[T](IFoo`1[T])" attrs="134">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Void InsertAll[U](IFoo`1[U])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-081.cs">\r
     <type name="ArrayList`1[T]">\r
   </test>\r
   <test name="gtest-084.cs">\r
     <type name="HasherBuilder.ByPrototype`1[S]">\r
-      <method name="IHasher`1 Examine()" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="ArrayList`1[U]">\r
-      <method name="IHasher`1 GetHasher()" attrs="134">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-  </test>\r
-  <test name="gtest-085.cs">\r
-    <type name="ArrayList`1[T]">\r
-      <method name="Int32 InsertAll(IFoo`1)" attrs="454">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 InsertAll[U](IFoo`1)" attrs="454">\r
+    <type name="HasherBuilder.ByPrototype`1[S]">\r
+      <method name="IHasher`1[S] Examine()" attrs="150">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 AddAll(IFoo`1)" attrs="454">\r
-        <size>16</size>\r
+    </type>\r
+    <type name="ArrayList`1[U]">\r
+      <method name="IHasher`1[U] GetHasher()" attrs="134">\r
+        <size>14</size>\r
       </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-085.cs">\r
+    <type name="ArrayList`1[T]">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-  </test>\r
-  <test name="gtest-086.cs">\r
     <type name="ArrayList`1[T]">\r
-      <method name="Int32 InsertAll(IFoo`1)" attrs="454">\r
+      <method name="Int32 InsertAll(IFoo`1[T])" attrs="454">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 InsertAll[U](IFoo`1)" attrs="454">\r
+      <method name="Int32 InsertAll[U](IFoo`1[U])" attrs="454">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 AddAll(IFoo`1)" attrs="454">\r
+      <method name="Int32 AddAll(IFoo`1[T])" attrs="454">\r
         <size>16</size>\r
       </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-086.cs">\r
+    <type name="ArrayList`1[T]">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="ArrayList`1[T]">\r
+      <method name="Int32 InsertAll(IFoo`1[T])" attrs="454">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 InsertAll[U](IFoo`1[U])" attrs="454">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 AddAll(IFoo`1[T])" attrs="454">\r
+        <size>16</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-087.cs">\r
     <type name="C5.HashedArrayList`1[T]">\r
   </test>\r
   <test name="gtest-095.cs">\r
     <type name="GuardedCollectionValue`1[T]">\r
-      <method name="IDirectedEnumerable`1 IDirectedEnumerable&lt;T&gt;.Backwards()" attrs="481">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="IDirectedCollectionValue`1 Backwards()" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="GuardedSequenced`1[T]">\r
-      <method name="IDirectedCollectionValue`1 Test()" attrs="134">\r
-        <size>20</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="GuardedCollectionValue`1[T]">\r
+      <method name="IDirectedEnumerable`1[T] IDirectedEnumerable&lt;T&gt;.Backwards()" attrs="481">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="IDirectedCollectionValue`1[T] Backwards()" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="GuardedSequenced`1[T]">\r
+      <method name="IDirectedCollectionValue`1[T] Test()" attrs="134">\r
+        <size>20</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-096.cs">\r
     <type name="Foo`1[T]">\r
       </method>\r
     </type>\r
     <type name="Hello">\r
-      <method name="Void World[U](U, IFoo`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
-      <method name="Void World[V](IFoo`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Test(Foo)" attrs="134">\r
         <size>21</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Hello">\r
+      <method name="Void World[U](U, IFoo`1[U])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void World[V](IFoo`1[V])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-104.cs">\r
     <type name="MainClass">\r
       </method>\r
     </type>\r
     <type name="A.KeyValuePairComparer`2[K,V]">\r
-      <method name="Int32 Compare(KeyValuePair`2)" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="A.KeyValuePairComparer`2[K,V]">\r
+      <method name="Int32 Compare(A.KeyValuePair`2[K,V])" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-106.cs">\r
     <type name="KeyValuePair`2[X,Y]">\r
       </method>\r
     </type>\r
     <type name="KeyValuePairComparer`2[K,V]">\r
-      <method name="Int32 Compare(KeyValuePair`2)" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="KeyValuePairComparer`2[K,V]">\r
+      <method name="Int32 Compare(KeyValuePair`2[K,V])" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-107.cs">\r
     <type name="Mapper`2[T,V]">\r
   </test>\r
   <test name="gtest-108.cs">\r
     <type name="Test`1[T]">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="134">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void .ctor(T)" attrs="6278">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="134">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-109.cs">\r
     <type name="X">\r
   </test>\r
   <test name="gtest-112.cs">\r
     <type name="IC">\r
-      <method name="Void Compare(Foo`1)" attrs="486">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="List`1[T]">\r
-      <method name="Void Sort(IComparer`1, T)" attrs="454">\r
-        <size>9</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Sorting">\r
-      <method name="Void IntroSort[T](IComparer`1, T)" attrs="150">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="IC">\r
+      <method name="Void Compare(Foo`1[System.Int32])" attrs="486">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
+    <type name="List`1[T]">\r
+      <method name="Void Sort(IComparer`1[T], T)" attrs="454">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Sorting">\r
+      <method name="Void IntroSort[T](IComparer`1[T], T)" attrs="150">\r
+        <size>16</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-113.cs">\r
     <type name="Mapper`2[T,V]">\r
       <method name="LinkedList`1[T] op_Addition(LinkedList`1[T], LinkedList`1[T])" attrs="2198">\r
         <size>135</size>\r
       </method>\r
-      <method name="IMyList`1 Map[U](Mapper`2[T,U])" attrs="486">\r
-        <size>78</size>\r
-      </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>31</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="LinkedList`1[T]">\r
+      <method name="IMyList`1[U] Map[U](Mapper`2[T,U])" attrs="486">\r
+        <size>78</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="486">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-116.cs">\r
     <type name="Slow.Test">\r
       <method name="Int32 TestC()" attrs="150">\r
         <size>46</size>\r
       </method>\r
-      <method name="Boolean Check1(Nullable`1)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Boolean Check2[T](E)" attrs="145">\r
         <size>23</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Boolean Check1(System.Nullable`1[E])" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-118.cs">\r
       </method>\r
     </type>\r
     <type name="Sequenced`1[T]">\r
-      <method name="Boolean Equals(ISequenced`1)" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Sequenced`1[T]">\r
+      <method name="Boolean Equals(ISequenced`1[T])" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-121.cs">\r
     <type name="B`1[T]">\r
       </method>\r
     </type>\r
     <type name="M">\r
-      <method name="System.Collections.Generic.List`1[T] foo1[T](Filter`1)" attrs="145">\r
-        <size>46</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>46</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.List`1[T] foo1[T](Filter`1[T])" attrs="145">\r
+        <size>46</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-127.cs">\r
   <test name="gtest-130.cs">\r
     <type name="MyTest">\r
       <method name="Void Main(System.String[])" attrs="150">\r
-        <size>938</size>\r
+        <size>908</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   <test name="gtest-131.cs">\r
     <type name="MyTest">\r
       <method name="Void Main(System.String[])" attrs="150">\r
-        <size>1332</size>\r
+        <size>1300</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   </test>\r
   <test name="gtest-132.cs">\r
     <type name="MyTest">\r
-      <method name="Nullable`1 Sqrt(Nullable`1)" attrs="150">\r
-        <size>68</size>\r
-      </method>\r
       <method name="Void Main(System.String[])" attrs="150">\r
         <size>64</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Nullable`1[System.Int32] Sqrt(System.Nullable`1[System.Int32])" attrs="150">\r
+        <size>68</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-133.cs">\r
   <test name="gtest-137.cs">\r
     <type name="X">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>158</size>\r
+        <size>240</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   <test name="gtest-138.cs">\r
     <type name="X">\r
       <method name="Void Main()" attrs="150">\r
-        <size>62</size>\r
+        <size>102</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
     </type>\r
   </test>\r
   <test name="gtest-139.cs">\r
+    <type name="Test">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>78</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
     <type name="MyStruct">\r
-      <method name="Int32 op_Inequality(Nullable`1, System.String)" attrs="2198">\r
+      <method name="Int32 op_Inequality(System.Nullable`1[MyStruct], System.String)" attrs="2198">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 op_Equality(Nullable`1, System.String)" attrs="2198">\r
+      <method name="Int32 op_Equality(System.Nullable`1[MyStruct], System.String)" attrs="2198">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 op_Inequality(System.String, Nullable`1)" attrs="2198">\r
+      <method name="Int32 op_Inequality(System.String, System.Nullable`1[MyStruct])" attrs="2198">\r
         <size>11</size>\r
       </method>\r
-      <method name="Int32 op_Equality(System.String, Nullable`1)" attrs="2198">\r
+      <method name="Int32 op_Equality(System.String, System.Nullable`1[MyStruct])" attrs="2198">\r
         <size>10</size>\r
       </method>\r
     </type>\r
-    <type name="Test">\r
-      <method name="Int32 Main()" attrs="150">\r
-        <size>78</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
   </test>\r
   <test name="gtest-140.cs">\r
     <type name="X">\r
       <method name="Void IsFalse(System.String, Boolean)" attrs="150">\r
         <size>19</size>\r
       </method>\r
-      <method name="Void IsNull[T](System.String, Nullable`1)" attrs="150">\r
-        <size>25</size>\r
-      </method>\r
-      <method name="Void IsNotNull[T](System.String, Nullable`1)" attrs="150">\r
-        <size>25</size>\r
-      </method>\r
-      <method name="Void IsTrue(System.String, Nullable`1)" attrs="150">\r
-        <size>37</size>\r
-      </method>\r
-      <method name="Void IsFalse(System.String, Nullable`1)" attrs="150">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void .cctor()" attrs="6289">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="X">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>2253</size>\r
+        <size>2163</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Assert">\r
+      <method name="Void IsNull[T](System.String, System.Nullable`1[T])" attrs="150">\r
+        <size>25</size>\r
+      </method>\r
+      <method name="Void IsNotNull[T](System.String, System.Nullable`1[T])" attrs="150">\r
+        <size>25</size>\r
+      </method>\r
+      <method name="Void IsTrue(System.String, System.Nullable`1[System.Boolean])" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+      <method name="Void IsFalse(System.String, System.Nullable`1[System.Boolean])" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-143.cs">\r
     <type name="X">\r
       <method name="Int32 Index()" attrs="145">\r
         <size>34</size>\r
       </method>\r
-      <method name="Nullable`1 get_Item(Int32)" attrs="2177">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Void set_Item(Int32, Nullable`1)" attrs="2177">\r
-        <size>9</size>\r
-      </method>\r
       <method name="Int32 Test()" attrs="145">\r
-        <size>1157</size>\r
+        <size>1276</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>38</size>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Nullable`1[System.Int32] get_Item(Int32)" attrs="2177">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Void set_Item(Int32, System.Nullable`1[System.Int32])" attrs="2177">\r
+        <size>9</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-144.cs">\r
       <method name="IFoo IFoo.Hello()" attrs="481">\r
         <size>15</size>\r
       </method>\r
-      <method name="IFoo`1 Hello()" attrs="1478">\r
-        <size>0</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="HashBag`1[T]">\r
-      <method name="IFoo`1 Hello()" attrs="198">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="EnumerableBase`1[T]">\r
+      <method name="IFoo`1[T] Hello()" attrs="1478">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="HashBag`1[T]">\r
+      <method name="IFoo`1[T] Hello()" attrs="198">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-153.cs">\r
     <type name="MyClass`1[T]">\r
   </test>\r
   <test name="gtest-163.cs">\r
     <type name="Foo`1[T]">\r
-      <method name="IEnumerator`1 getEnumerator(Int32)" attrs="134">\r
-        <size>29</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] getEnumerator(Int32)" attrs="134">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-164.cs">\r
     <type name="Int2Int">\r
       </method>\r
     </type>\r
     <type name="FunEnumerable">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="134">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void .ctor(Int32, Int2Int)" attrs="6278">\r
         <size>22</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="FunEnumerable">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] GetEnumerator()" attrs="134">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-165.cs">\r
     <type name="C">\r
       </method>\r
     </type>\r
     <type name="X`1[T]">\r
-      <method name="IEnumerator`1 Y(IEnumerable`1)" attrs="150">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] Y(System.Collections.Generic.IEnumerable`1[T])" attrs="150">\r
         <size>15</size>\r
       </method>\r
-      <method name="T Z(IList`1, Int32)" attrs="150">\r
+      <method name="T Z(System.Collections.Generic.IList`1[T], Int32)" attrs="150">\r
         <size>16</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-178.cs">\r
         <size>2</size>\r
       </method>\r
       <method name="IEnumerable get_Item(Int32)" attrs="2177">\r
-        <size>37</size>\r
+        <size>30</size>\r
       </method>\r
       <method name="Void set_Item(Int32, IEnumerable)" attrs="2177">\r
         <size>2</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>168</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-182.cs">\r
   </test>\r
   <test name="gtest-183.cs">\r
     <type name="test.Test`1[T]">\r
-      <method name="IEnumerable`1 Lookup(T)" attrs="134">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>91</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="test.Test`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Lookup(T)" attrs="134">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="test.Test`1+&lt;Lookup&gt;c__Iterator0[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-184.cs">\r
     <type name="X">\r
     </type>\r
   </test>\r
   <test name="gtest-191.cs">\r
-    <type name="Test1.Test">\r
-      <method name="IEnumerable`1 Replace[T]()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
-    </type>\r
     <type name="Test2.Test`1[S]">\r
-      <method name="IEnumerable`1 Replace[T]()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test3.Test`1[S]">\r
-      <method name="IEnumerable`1 Replace[T](IEnumerable`1, IEnumerable`1)" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test4.Test">\r
-      <method name="IEnumerable`1 Replace[T]()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test5.Test">\r
-      <method name="IEnumerable`1 Replace[T](T)" attrs="150">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test6.Test">\r
-      <method name="IEnumerable`1 Replace[T](T)" attrs="150">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test7.Test">\r
-      <method name="IEnumerable`1 Replace[T](T[])" attrs="150">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="Test3.Test`1+&lt;Replace&gt;c__Iterator2`1[S,T]">\r
-      <method name="KeyValuePair`2 System.Collections.Generic.IEnumerator&lt;System.Collections.Generic.KeyValuePair&lt;S,T&gt;&gt;.get_Current()" attrs="2529">\r
-        <size>14</size>\r
-      </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>19</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;System.Collections.Generic.KeyValuePair&lt;S,T&gt;&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>77</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>89</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T[]&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>89</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test1.Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Replace[T]()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test2.Test`1[S]">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Replace[T]()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test3.Test`1[S]">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[S,T]] Replace[T](System.Collections.Generic.IEnumerable`1[T], System.Collections.Generic.IEnumerable`1[S])" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test4.Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Replace[T]()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test5.Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Replace[T](T)" attrs="150">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test6.Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Replace[T](T)" attrs="150">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test7.Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T[]] Replace[T](T[])" attrs="150">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test1.Test+&lt;Replace&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test2.Test`1+&lt;Replace&gt;c__Iterator1`1[S,T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test3.Test`1+&lt;Replace&gt;c__Iterator2`1[S,T]">\r
+      <method name="System.Collections.Generic.KeyValuePair`2[S,T] System.Collections.Generic.IEnumerator&lt;System.Collections.Generic.KeyValuePair&lt;S,T&gt;&gt;.get_Current()" attrs="2529">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[S,T]] System.Collections.Generic.IEnumerable&lt;System.Collections.Generic.KeyValuePair&lt;S,T&gt;&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test4.Test+&lt;Replace&gt;c__Iterator3`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test5.Test+&lt;Replace&gt;c__Iterator4`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test6.Test+&lt;Replace&gt;c__Iterator5`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test7.Test+&lt;Replace&gt;c__Iterator6`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T[]] System.Collections.Generic.IEnumerable&lt;T[]&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-192.cs">\r
     <type name="xX">\r
   </test>\r
   <test name="gtest-193.cs">\r
     <type name="OrderedMultiDictionary`2[T,U]">\r
-      <method name="IEnumerator`1 EnumerateKeys(RedBlackTree`1+RangeTester[System.Collections.Generic.KeyValuePair`2[T,U]])" attrs="129">\r
-        <size>36</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="RedBlackTree`1[S]">\r
-      <method name="IEnumerable`1 EnumerateRange(RedBlackTree`1+RangeTester[S])" attrs="134">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;S&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-  </test>\r
-  <test name="gtest-194.cs">\r
+    <type name="OrderedMultiDictionary`2[T,U]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] EnumerateKeys(RedBlackTree`1+RangeTester[System.Collections.Generic.KeyValuePair`2[T,U]])" attrs="129">\r
+        <size>29</size>\r
+      </method>\r
+    </type>\r
     <type name="RedBlackTree`1[S]">\r
-      <method name="IEnumerable`1 EnumerateRange(RedBlackTree`1+RangeTester[S])" attrs="134">\r
+      <method name="System.Collections.Generic.IEnumerable`1[S] EnumerateRange(RedBlackTree`1+RangeTester[S])" attrs="134">\r
         <size>23</size>\r
       </method>\r
+    </type>\r
+    <type name="RedBlackTree`1+&lt;EnumerateRange&gt;c__Iterator1[S]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[S] System.Collections.Generic.IEnumerable&lt;S&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-194.cs">\r
+    <type name="RedBlackTree`1[S]">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="OrderedMultiDictionary`2[T,U]">\r
-      <method name="IEnumerator`1 EnumerateKeys(RedBlackTree`1+RangeTester[System.Collections.Generic.KeyValuePair`2[T,U]])" attrs="129">\r
-        <size>36</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;S&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="RedBlackTree`1[S]">\r
+      <method name="System.Collections.Generic.IEnumerable`1[S] EnumerateRange(RedBlackTree`1+RangeTester[S])" attrs="134">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="OrderedMultiDictionary`2[T,U]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] EnumerateKeys(RedBlackTree`1+RangeTester[System.Collections.Generic.KeyValuePair`2[T,U]])" attrs="129">\r
+        <size>29</size>\r
+      </method>\r
+    </type>\r
+    <type name="RedBlackTree`1+&lt;EnumerateRange&gt;c__Iterator0[S]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[S] System.Collections.Generic.IEnumerable&lt;S&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-195.cs">\r
     <type name="OrderedMultiDictionary`2[T,U]">\r
       <method name="Int64 Test()" attrs="134">\r
         <size>15</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="134">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void .ctor(Int64)" attrs="6278">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="HashSet`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int64] GetEnumerator()" attrs="134">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-202.cs">\r
     <type name="Generic`1[T]">\r
       <method name="Ret Foo()" attrs="454">\r
         <size>10</size>\r
       </method>\r
-      <method name="Ret`1 Foo[T]()" attrs="454">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       <method name="Ret Foo()" attrs="198">\r
         <size>10</size>\r
       </method>\r
-      <method name="Ret`1 Foo[T]()" attrs="198">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="BaseClass">\r
+      <method name="Ret`1[T] Foo[T]()" attrs="454">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="DerivedClass">\r
+      <method name="Ret`1[T] Foo[T]()" attrs="198">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-217.cs">\r
     <type name="Fun`2[A1,R]">\r
       <method name="Void Main(System.String[])" attrs="150">\r
         <size>99</size>\r
       </method>\r
-      <method name="IEnumerable`1 Map[Aa,Af,Rf,Rr](Fun`2[Af,Rf], IEnumerable`1)" attrs="150">\r
-        <size>51</size>\r
-      </method>\r
-      <method name="IEnumerable`1 FromTo(Int32, Int32)" attrs="150">\r
-        <size>51</size>\r
-      </method>\r
       <method name="System.String &lt;Main&gt;m__0(Int32)" attrs="145">\r
         <size>22</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;Rr&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>215</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>125</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="MyTest">\r
+      <method name="System.Collections.Generic.IEnumerable`1[Rr] Map[Aa,Af,Rf,Rr](Fun`2[Af,Rf], System.Collections.Generic.IEnumerable`1[Aa])" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] FromTo(Int32, Int32)" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="MyTest+&lt;Map&gt;c__Iterator0`4[Aa,Af,Rf,Rr]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[Rr] System.Collections.Generic.IEnumerable&lt;Rr&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
+    <type name="MyTest+&lt;FromTo&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-218.cs">\r
     <type name="Foo">\r
   </test>\r
   <test name="gtest-225.cs">\r
     <type name="Set`1[Element]">\r
-      <method name="Locator locate(Element)" attrs="132">\r
-        <size>39</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>8</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Set`1[Element]">\r
+      <method name="Set`1+Locator[Element] locate(Element)" attrs="132">\r
+        <size>39</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-226.cs">\r
     <type name="Container`1[T]">\r
       <method name="IFoo GetFoo()" attrs="134">\r
         <size>15</size>\r
       </method>\r
-      <method name="IFoo`1 GetFooGeneric[T]()" attrs="134">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>15</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="IFoo`1[T] GetFooGeneric[T]()" attrs="134">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-235.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>15</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="1478">\r
-        <size>0</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
       <method name="Void raiseItemsAdded(T, Int32)" attrs="452">\r
         <size>2</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="1222">\r
-        <size>0</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="CircularQueue`1[T]">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="198">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void Enqueue(T)" attrs="454">\r
         <size>2</size>\r
       </method>\r
       <method name="Boolean searchoradd(T ByRef, Boolean, Boolean, Boolean)" attrs="129">\r
         <size>10</size>\r
       </method>\r
-      <method name="Void RemoveAll[U](IEnumerable`1)" attrs="454">\r
-        <size>8</size>\r
-      </method>\r
-      <method name="Void AddAll[U](IEnumerable`1)" attrs="454">\r
-        <size>65</size>\r
-      </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="198">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="EnumerableBase`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="1478">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="CollectionValueBase`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="1222">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="CircularQueue`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="198">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="HashSet`1[T]">\r
+      <method name="Void RemoveAll[U](System.Collections.Generic.IEnumerable`1[U])" attrs="454">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void AddAll[U](System.Collections.Generic.IEnumerable`1[U])" attrs="454">\r
+        <size>65</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="198">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-248.cs">\r
     <type name="Foo`1[T]">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>15</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="1478">\r
-        <size>0</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="ArrayBase`1[T]">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="198">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="HashedArrayList`1[T]">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="198">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="EnumerableBase`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="1478">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="ArrayBase`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="198">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="HashedArrayList`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="198">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-250.cs">\r
     <type name="Fun`2[R,S]">\r
       </method>\r
     </type>\r
     <type name="GuardedIndexedSorted`1[T]">\r
-      <method name="IIndexedSorted`1 Map[V](Fun`2[T,V])" attrs="486">\r
-        <size>21</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="GuardedIndexedSorted`1[T]">\r
+      <method name="IIndexedSorted`1[V] Map[V](Fun`2[T,V])" attrs="486">\r
+        <size>21</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-251.cs">\r
     <type name="SortedIndexedTester`1[T]">\r
-      <method name="Void Test(ISorted`1)" attrs="134">\r
-        <size>25</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="SortedIndexedTester`1[T]">\r
+      <method name="Void Test(ISorted`1[System.Int32])" attrs="134">\r
+        <size>25</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-252.cs">\r
     <type name="EqualityComparer`1[T]">\r
       </method>\r
     </type>\r
     <type name="Extensible`1[V]">\r
-      <method name="Void AddAll[W](IEnumerable`1)" attrs="486">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Extensible`1[V]">\r
+      <method name="Void AddAll[W](System.Collections.Generic.IEnumerable`1[W])" attrs="486">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-254.cs">\r
     <type name="HashedLinkedList`1[T]">\r
   </test>\r
   <test name="gtest-256.cs">\r
     <type name="Test">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="134">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>12</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.String] GetEnumerator()" attrs="134">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-257.cs">\r
     <type name="Tests">\r
       </method>\r
     </type>\r
     <type name="ConvertHelper">\r
-      <method name="IEnumerator`1 Test[S,T](S)" attrs="150">\r
-        <size>29</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="ConvertHelper">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] Test[S,T](S)" attrs="150">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-264.cs">\r
     <type name="BaseList`1[SubType]">\r
   </test>\r
   <test name="gtest-269.cs">\r
     <type name="IrishPub">\r
-      <method name="Int64 op_Implicit(Nullable`1)" attrs="2198">\r
-        <size>44</size>\r
-      </method>\r
-      <method name="Nullable`1 op_Implicit(Int64)" attrs="2198">\r
-        <size>21</size>\r
-      </method>\r
       <method name="Void .ctor(IrishBeer)" attrs="6278">\r
         <size>9</size>\r
       </method>\r
     </type>\r
     <type name="X">\r
-      <method name="Int32 Beer(Nullable`1)" attrs="145">\r
-        <size>72</size>\r
-      </method>\r
       <method name="Int64 PubToLong(IrishPub)" attrs="145">\r
         <size>20</size>\r
       </method>\r
-      <method name="Int32 Test(Nullable`1)" attrs="145">\r
-        <size>62</size>\r
-      </method>\r
-      <method name="Int32 TestWithNull(Nullable`1)" attrs="145">\r
-        <size>78</size>\r
-      </method>\r
-      <method name="Nullable`1 Foo(Boolean)" attrs="145">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Int32 Test(Boolean)" attrs="145">\r
         <size>72</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-  </test>\r
-  <test name="gtest-270.cs">\r
+    <type name="IrishPub">\r
+      <method name="Int64 op_Implicit(System.Nullable`1[IrishPub])" attrs="2198">\r
+        <size>44</size>\r
+      </method>\r
+      <method name="System.Nullable`1[IrishPub] op_Implicit(Int64)" attrs="2198">\r
+        <size>21</size>\r
+      </method>\r
+    </type>\r
     <type name="X">\r
-      <method name="Int32 Test(Nullable`1)" attrs="145">\r
+      <method name="Int32 Beer(System.Nullable`1[IrishPub])" attrs="145">\r
+        <size>72</size>\r
+      </method>\r
+      <method name="Int32 Test(System.Nullable`1[System.Int32])" attrs="145">\r
         <size>62</size>\r
       </method>\r
+      <method name="Int32 TestWithNull(System.Nullable`1[System.Int32])" attrs="145">\r
+        <size>78</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Int64] Foo(Boolean)" attrs="145">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-270.cs">\r
+    <type name="X">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>60</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Int32 Test(System.Nullable`1[System.Int32])" attrs="145">\r
+        <size>62</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-271.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>15</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Qux`2[X,V]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[V] GetEnumerator()" attrs="486">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-272.cs">\r
     <type name="Handler`1[T]">\r
       </method>\r
     </type>\r
     <type name="X">\r
-      <method name="Void Main()" attrs="150">\r
-        <size>448</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="S">\r
+      <method name="System.Nullable`1[System.Boolean] op_Implicit(S)" attrs="2198">\r
+        <size>12</size>\r
+      </method>\r
+    </type>\r
+    <type name="X">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>612</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-275.cs">\r
     <type name="Test">\r
       </method>\r
     </type>\r
     <type name="Tests+GenericClass`1[T]">\r
-      <method name="T Z(IList`1, Int32)" attrs="150">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="T Z(System.Collections.Generic.IList`1[T], Int32)" attrs="150">\r
+        <size>16</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-277.cs">\r
       <method name="Void Bar()" attrs="486">\r
         <size>12</size>\r
       </method>\r
-      <method name="IList`1 Bar[T]()" attrs="486">\r
-        <size>20</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo">\r
+      <method name="System.Collections.Generic.IList`1[T] Bar[T]()" attrs="486">\r
+        <size>20</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-280.cs">\r
     <type name="Test">\r
   </test>\r
   <test name="gtest-281.cs">\r
     <type name="List">\r
-      <method name="Void AddRange[T](ICollection`1)" attrs="131">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="List">\r
+      <method name="Void AddRange[T](System.Collections.Generic.ICollection`1[T])" attrs="131">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-282.cs">\r
     <type name="Foo">\r
       </method>\r
     </type>\r
     <type name="CollectionTester">\r
-      <method name="Int32 Test[T](IList`1)" attrs="145">\r
-        <size>95</size>\r
-      </method>\r
       <method name="Int32 Test()" attrs="150">\r
         <size>628</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="CollectionTester">\r
+      <method name="Int32 Test[T](System.Collections.Generic.IList`1[T])" attrs="145">\r
+        <size>95</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-285.cs">\r
     <type name="A">\r
       <method name="Void Main()" attrs="150">\r
         <size>23</size>\r
       </method>\r
-      <method name="System.String Test2(Nullable`1)" attrs="145">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.String Test2(System.Nullable`1[System.Decimal])" attrs="145">\r
+        <size>14</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-292.cs">\r
       <method name="Void Invalid(T)" attrs="134">\r
         <size>22</size>\r
       </method>\r
-      <method name="Void Other(IEnumerable`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test`1[T]">\r
+      <method name="Void Other(System.Collections.Generic.IEnumerable`1[T])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-294.cs">\r
     <type name="A">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>7</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-303.cs">\r
     <type name="test.BaseClass">\r
   </test>\r
   <test name="gtest-310.cs">\r
     <type name="MonoBugs.IncompleteGenericInference">\r
-      <method name="Void DoSomethingGeneric[T1,T2](IEnumerable`1, IDictionary`2)" attrs="150">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>21</size>\r
       </method>\r
+      <method name="Void DoSomethingGeneric[T1,T2](System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IDictionary`2[T1,T2])" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-312.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>15</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Temp`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[Temp`1+Foo[T]] GetEnumerator()" attrs="486">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-320.cs">\r
     <type name="Foo`1[K]">\r
   </test>\r
   <test name="gtest-330.cs">\r
     <type name="BaseCollection`1[T]">\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>25</size>\r
-      </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>25</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="BaseCollection`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>25</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-331.cs">\r
     <type name="Foo`1[T]">\r
       <method name="Void Main()" attrs="150">\r
         <size>14</size>\r
       </method>\r
-      <method name="Void Foo[T](IList`1)" attrs="145">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="FooList`1[T]">\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>7</size>\r
-      </method>\r
       <method name="Int32 IndexOf(T)" attrs="486">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="Void Foo[T](System.Collections.Generic.IList`1[T])" attrs="145">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="FooList`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-339.cs">\r
     <type name="Program">\r
       <method name="Void SerializeDictionary(IDictionary)" attrs="145">\r
         <size>2</size>\r
       </method>\r
-      <method name="Void SerializeDictionary(IDictionary`2)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="SerializerLazyDictionary">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="196">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="Boolean System.Collections.Generic.IDictionary&lt;string,object&gt;.ContainsKey(System.String)" attrs="481">\r
         <size>7</size>\r
       </method>\r
-      <method name="ICollection`1 System.Collections.Generic.IDictionary&lt;string,object&gt;.get_Keys()" attrs="2529">\r
-        <size>7</size>\r
-      </method>\r
       <method name="Boolean System.Collections.Generic.IDictionary&lt;string,object&gt;.Remove(System.String)" attrs="481">\r
         <size>7</size>\r
       </method>\r
       <method name="Boolean System.Collections.Generic.IDictionary&lt;string,object&gt;.TryGetValue(System.String, System.Object ByRef)" attrs="481">\r
         <size>7</size>\r
       </method>\r
-      <method name="ICollection`1 System.Collections.Generic.IDictionary&lt;string,object&gt;.get_Values()" attrs="2529">\r
-        <size>7</size>\r
-      </method>\r
       <method name="System.Object System.Collections.Generic.IDictionary&lt;string,object&gt;.get_Item(System.String)" attrs="2529">\r
         <size>7</size>\r
       </method>\r
       <method name="Void System.Collections.Generic.IDictionary&lt;string,object&gt;.set_Item(System.String, System.Object)" attrs="2529">\r
         <size>7</size>\r
       </method>\r
-      <method name="Void System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.Add(KeyValuePair`2)" attrs="481">\r
-        <size>7</size>\r
-      </method>\r
       <method name="Void System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.Clear()" attrs="481">\r
         <size>7</size>\r
       </method>\r
-      <method name="Boolean System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.Contains(KeyValuePair`2)" attrs="481">\r
-        <size>7</size>\r
-      </method>\r
       <method name="Void System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.CopyTo(System.Collections.Generic.KeyValuePair`2[System.String,System.Object][], Int32)" attrs="481">\r
         <size>7</size>\r
       </method>\r
       <method name="Boolean System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.get_IsReadOnly()" attrs="2529">\r
         <size>7</size>\r
       </method>\r
-      <method name="Boolean System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.Remove(KeyValuePair`2)" attrs="481">\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.GetEnumerator()" attrs="481">\r
-        <size>15</size>\r
+    </type>\r
+    <type name="Program">\r
+      <method name="Void SerializeDictionary(System.Collections.Generic.IDictionary`2[System.String,System.Object])" attrs="145">\r
+        <size>2</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>15</size>\r
+    </type>\r
+    <type name="SerializerLazyDictionary">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]] GetEnumerator()" attrs="196">\r
+        <size>10</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="1476">\r
-        <size>0</size>\r
+    </type>\r
+    <type name="LazyDictionary">\r
+      <method name="System.Collections.Generic.ICollection`1[System.String] System.Collections.Generic.IDictionary&lt;string,object&gt;.get_Keys()" attrs="2529">\r
+        <size>7</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6276">\r
+      <method name="System.Collections.Generic.ICollection`1[System.Object] System.Collections.Generic.IDictionary&lt;string,object&gt;.get_Values()" attrs="2529">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.Add(System.Collections.Generic.KeyValuePair`2[System.String,System.Object])" attrs="481">\r
         <size>7</size>\r
       </method>\r
+      <method name="Boolean System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.Contains(System.Collections.Generic.KeyValuePair`2[System.String,System.Object])" attrs="481">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Boolean System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.Remove(System.Collections.Generic.KeyValuePair`2[System.String,System.Object])" attrs="481">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]] System.Collections.Generic.IEnumerable&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.GetEnumerator()" attrs="481">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]] GetEnumerator()" attrs="1476">\r
+        <size>0</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-340.cs">\r
       <method name="IEnumerable Enumerable(Int32)" attrs="134">\r
         <size>7</size>\r
       </method>\r
-      <method name="IEnumerable`1 Enumerable[T](System.String)" attrs="134">\r
-        <size>7</size>\r
-      </method>\r
       <method name="IEnumerable Enumerable(System.String)" attrs="134">\r
         <size>7</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Enumerable[T](System.String)" attrs="134">\r
+        <size>7</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-348.cs">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="S2">\r
-      <method name="Boolean op_Equality(S2, Nullable`1)" attrs="2198">\r
-        <size>7</size>\r
-      </method>\r
-      <method name="Boolean op_Inequality(S2, Nullable`1)" attrs="2198">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
     <type name="S3">\r
       <method name="Decimal op_Inequality(S3, System.Object)" attrs="2198">\r
         <size>15</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="S2">\r
+      <method name="Boolean op_Equality(S2, System.Nullable`1[S2])" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Boolean op_Inequality(S2, System.Nullable`1[S2])" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-359.cs">\r
     <type name="BaseGeneric`1[T]">\r
       </method>\r
     </type>\r
     <type name="BugReport.A">\r
-      <method name="Nullable`1 get_Counter()" attrs="2182">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Int32] get_Counter()" attrs="2182">\r
         <size>15</size>\r
       </method>\r
-      <method name="Void set_Counter(Nullable`1)" attrs="2182">\r
+      <method name="Void set_Counter(System.Nullable`1[System.Int32])" attrs="2182">\r
         <size>9</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-365.cs">\r
       <method name="IList Query()" attrs="486">\r
         <size>10</size>\r
       </method>\r
-      <method name="IList`1 Query[Extent](IList`1, IList`1)" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Db4objects.Db4o.Internal.ObjectContainerBase">\r
+      <method name="System.Collections.Generic.IList`1[Extent] Query[Extent](System.Collections.Generic.IList`1[Extent], System.Collections.Generic.IList`1[Extent])" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-370.cs">\r
     <type name="N2.X`1[T]">\r
     </type>\r
   </test>\r
   <test name="gtest-376.cs">\r
-    <type name="S`1[T]">\r
-      <method name="System.Object Box(Nullable`1)" attrs="145">\r
-        <size>43</size>\r
-      </method>\r
-    </type>\r
     <type name="C">\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="S`1[T]">\r
+      <method name="System.Object Box(System.Nullable`1[T])" attrs="145">\r
+        <size>43</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-377.cs">\r
     <type name="D">\r
       <method name="Void Main()" attrs="150">\r
-        <size>92</size>\r
+        <size>68</size>\r
       </method>\r
       <method name="Void .cctor()" attrs="6289">\r
         <size>26</size>\r
   </test>\r
   <test name="gtest-378.cs">\r
     <type name="Test">\r
-      <method name="System.Object Foo(Nullable`1)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="System.Object FooG[T](Nullable`1)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>76</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Object Foo(System.Nullable`1[System.Int32])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Object FooG[T](System.Nullable`1[T])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-379.cs">\r
       </method>\r
     </type>\r
     <type name="C">\r
-      <method name="Int32 Print(Nullable`1)" attrs="145">\r
-        <size>29</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>23</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Int32 Print(System.Nullable`1[S])" attrs="145">\r
+        <size>29</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-380.cs">\r
       <method name="Void Main(System.String[])" attrs="150">\r
         <size>71</size>\r
       </method>\r
-      <method name="IEnumerable`1 setX()" attrs="145">\r
-        <size>23</size>\r
-      </method>\r
-      <method name="IEnumerable`1 test()" attrs="145">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;bool&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>115</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;bool&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>189</size>\r
       </method>\r
         <size>9</size>\r
       </method>\r
     </type>\r
+    <type name="TestGoto">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Boolean] setX()" attrs="145">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Boolean] test()" attrs="145">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestGoto+&lt;setX&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Boolean] System.Collections.Generic.IEnumerable&lt;bool&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestGoto+&lt;test&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Boolean] System.Collections.Generic.IEnumerable&lt;bool&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-382.cs">\r
     <type name="C">\r
     </type>\r
     <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>279</size>\r
+        <size>298</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   <test name="gtest-389.cs">\r
     <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>261</size>\r
+        <size>253</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   </test>\r
   <test name="gtest-392.cs">\r
     <type name="DieSubrangeType">\r
-      <method name="Nullable`1 get_UpperBound()" attrs="2182">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="Void set_UpperBound(Nullable`1)" attrs="2177">\r
-        <size>8</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>20</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="DieSubrangeType">\r
+      <method name="System.Nullable`1[System.Int32] get_UpperBound()" attrs="2182">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Void set_UpperBound(System.Nullable`1[System.Int32])" attrs="2177">\r
+        <size>8</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-393.cs">\r
     <type name="B`1[T]">\r
   </test>\r
   <test name="gtest-397.cs">\r
     <type name="Foo">\r
-      <method name="Foo op_UnaryNegation(Nullable`1)" attrs="2198">\r
-        <size>55</size>\r
-      </method>\r
       <method name="Void .ctor(Int32)" attrs="6278">\r
         <size>9</size>\r
       </method>\r
     </type>\r
     <type name="Bar">\r
-      <method name="Nullable`1 op_UnaryNegation(Nullable`1)" attrs="2198">\r
-        <size>54</size>\r
-      </method>\r
       <method name="Void .ctor(Int32)" attrs="6278">\r
         <size>9</size>\r
       </method>\r
       <method name="Foo NegateFoo(Foo)" attrs="145">\r
         <size>20</size>\r
       </method>\r
-      <method name="Foo NegateFooNullable(Nullable`1)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Nullable`1 NegateBarNullable(Nullable`1)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Nullable`1 NegateBar(Bar)" attrs="145">\r
-        <size>20</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>168</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo">\r
+      <method name="Foo op_UnaryNegation(System.Nullable`1[Foo])" attrs="2198">\r
+        <size>55</size>\r
+      </method>\r
+    </type>\r
+    <type name="Bar">\r
+      <method name="System.Nullable`1[Bar] op_UnaryNegation(System.Nullable`1[Bar])" attrs="2198">\r
+        <size>54</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test">\r
+      <method name="Foo NegateFooNullable(System.Nullable`1[Foo])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Nullable`1[Bar] NegateBarNullable(System.Nullable`1[Bar])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Nullable`1[Bar] NegateBar(Bar)" attrs="145">\r
+        <size>20</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-398.cs">\r
     <type name="ToStr">\r
     </type>\r
     <type name="NullableColorTests">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>117</size>\r
+        <size>120</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       <method name="Void Test_2()" attrs="129">\r
         <size>32</size>\r
       </method>\r
-      <method name="Nullable`1 Test_3[T](System.Func`3[T,T,T], T)" attrs="129">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void Test_4(Boolean, Boolean)" attrs="129">\r
         <size>40</size>\r
       </method>\r
       <method name="Void Test_13(System.Object)" attrs="129">\r
         <size>53</size>\r
       </method>\r
-      <method name="Nullable`1 Test_14()" attrs="129">\r
-        <size>68</size>\r
-      </method>\r
       <method name="System.Action`1[System.Int32] Test_15(System.Action`1[System.Int32])" attrs="129">\r
         <size>46</size>\r
       </method>\r
       <method name="Void Helper[T](T)" attrs="145">\r
         <size>2</size>\r
       </method>\r
+      <method name="System.Nullable`1[T] Test_3[T](System.Func`3[T,T,T], T)" attrs="129">\r
+        <size>22</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Int32] Test_14()" attrs="129">\r
+        <size>68</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-410.cs">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>31</size>\r
       </method>\r
-      <method name="Nullable`1 get_Id()" attrs="2177">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Boolean Test()" attrs="129">\r
         <size>59</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Nullable`1[System.Int32] get_Id()" attrs="2177">\r
+        <size>15</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-423.cs">\r
       <method name="Void Block(A[])" attrs="150">\r
         <size>7</size>\r
       </method>\r
-      <method name="Void Block(IEnumerable`1, A[])" attrs="150">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>37</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void Block(System.Collections.Generic.IEnumerable`1[B], A[])" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-425.cs">\r
   </test>\r
   <test name="gtest-426.cs">\r
     <type name="OverloadTest.MyClass`1[T]">\r
-      <method name="Boolean Method(MyInterface`1)" attrs="134">\r
-        <size>28</size>\r
-      </method>\r
       <method name="Boolean Method(System.Action`1[T])" attrs="134">\r
         <size>10</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="OverloadTest.MyClass`1[T]">\r
+      <method name="Boolean Method(OverloadTest.MyInterface`1[T])" attrs="134">\r
+        <size>28</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-427.cs">\r
     <type name="EventHandler">\r
       </method>\r
     </type>\r
     <type name="Klass">\r
-      <method name="Nullable`1 get_Value()" attrs="2182">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor(Nullable`1)" attrs="6278">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Klass">\r
+      <method name="System.Nullable`1[CInt] get_Value()" attrs="2182">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-429.cs">\r
     <type name="CInt">\r
       </method>\r
     </type>\r
     <type name="Driver">\r
-      <method name="Nullable`1 get_Prop()" attrs="2182">\r
-        <size>50</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>50</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Nullable`1[System.Int32] get_Prop()" attrs="2182">\r
+        <size>50</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-431.cs">\r
   <test name="gtest-435.cs">\r
     <type name="testcase.Program">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>293</size>\r
+        <size>371</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>10</size>\r
       </method>\r
-      <method name="Void Foo[U](IEnumerable`1)" attrs="486">\r
-        <size>2</size>\r
-      </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Impl`1[T]">\r
+      <method name="Void Foo[U](System.Collections.Generic.IEnumerable`1[U])" attrs="486">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-449.cs">\r
     <type name="Program">\r
       <method name="Single op_Implicit(S)" attrs="2198">\r
         <size>12</size>\r
       </method>\r
-      <method name="Nullable`1 op_Implicit(S)" attrs="2198">\r
+      <method name="System.Nullable`1[System.Single] op_Implicit(S)" attrs="2198">\r
         <size>19</size>\r
       </method>\r
     </type>\r
   </test>\r
   <test name="gtest-468.cs">\r
     <type name="TS">\r
-      <method name="Nullable`1 get_v()" attrs="2182">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Nullable`1 op_Implicit(TS)" attrs="2198">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="TS op_Implicit(Nullable`1)" attrs="2198">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>56</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Nullable`1[System.Int32] get_v()" attrs="2182">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Int32] op_Implicit(TS)" attrs="2198">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="TS op_Implicit(System.Nullable`1[System.Int32])" attrs="2198">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-469.cs">\r
   </test>\r
   <test name="gtest-476.cs">\r
     <type name="Test`1[T]">\r
-      <method name="B First()" attrs="134">\r
-        <size>18</size>\r
-      </method>\r
       <method name="IFoo Second()" attrs="134">\r
         <size>23</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test`1[T]">\r
+      <method name="Test`1+B[T] First()" attrs="134">\r
+        <size>18</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-477.cs">\r
     <type name="B`1[T]">\r
       </method>\r
     </type>\r
     <type name="M">\r
-      <method name="Void Test[T](I`1)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>22</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void Test[T](I`1[T])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-480.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>10</size>\r
       </method>\r
-      <method name="Void AddRange(IMyCollection`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
-      <method name="Void AddRange(IEnumerable`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Int32 get_Count()" attrs="2534">\r
         <size>10</size>\r
       </method>\r
       <method name="Boolean Remove(T)" attrs="486">\r
         <size>10</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>21</size>\r
       </method>\r
     </type>\r
+    <type name="MyCollection`1[T]">\r
+      <method name="Void AddRange(IMyCollection`1[T])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void AddRange(System.Collections.Generic.IEnumerable`1[T])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-487.cs">\r
     <type name="Limada.MonoTests.Generics.MultiDictionary`3[K,V,TDictionary]">\r
   </test>\r
   <test name="gtest-490.cs">\r
     <type name="Foo">\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;Foo&gt;.GetEnumerator()" attrs="481">\r
-        <size>25</size>\r
-      </method>\r
       <method name="IEnumerator GetEnumerator()" attrs="486">\r
         <size>25</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>18</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[Foo] System.Collections.Generic.IEnumerable&lt;Foo&gt;.GetEnumerator()" attrs="481">\r
+        <size>25</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-491.cs">\r
       <method name="Int32 Test(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="R Method[T,R](IEnumerable`1, System.Func`2[T,R])" attrs="145">\r
-        <size>24</size>\r
-      </method>\r
-      <method name="R Method2[T,R](IEnumerable`1, System.Func`2[System.Collections.Generic.List`1[T],R])" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>125</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="R Method[T,R](System.Collections.Generic.IEnumerable`1[T], System.Func`2[T,R])" attrs="145">\r
+        <size>24</size>\r
+      </method>\r
+      <method name="R Method2[T,R](System.Collections.Generic.IEnumerable`1[T], System.Func`2[System.Collections.Generic.List`1[T],R])" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-506.cs">\r
   </test>\r
   <test name="gtest-515.cs">\r
     <type name="A">\r
-      <method name="I`1 Foo[T]()" attrs="454">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="AA">\r
-      <method name="I`1 Foo[V]()" attrs="198">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="Void Dispose()" attrs="486">\r
         <size>2</size>\r
       </method>\r
-      <method name="I`1 Foo[R]()" attrs="198">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>13</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="A">\r
+      <method name="I`1[T] Foo[T]()" attrs="454">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="AA">\r
+      <method name="I`1[V] Foo[V]()" attrs="198">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="B">\r
+      <method name="I`1[R] Foo[R]()" attrs="198">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-516.cs">\r
     <type name="B">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>7</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator()" attrs="481">\r
-        <size>24</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerator`1[A] System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator()" attrs="481">\r
+        <size>24</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-521.cs">\r
     <type name="D">\r
       <method name="Boolean Equals(T)" attrs="486">\r
         <size>10</size>\r
       </method>\r
-      <method name="Boolean Equals(TestClass4`1)" attrs="486">\r
+      <method name="Int32 GetHashCode()" attrs="198">\r
         <size>10</size>\r
       </method>\r
-      <method name="Boolean Equals(TestClass4`1, TestClass4`1)" attrs="486">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Int32 GetHashCode(TestClass4`1)" attrs="486">\r
-        <size>22</size>\r
+      <method name="Boolean Equals(System.Object)" attrs="198">\r
+        <size>10</size>\r
       </method>\r
-      <method name="Int32 GetHashCode()" attrs="198">\r
+    </type>\r
+    <type name="Test.C">\r
+      <method name="Void Main()" attrs="150">\r
         <size>10</size>\r
       </method>\r
-      <method name="Boolean Equals(System.Object)" attrs="198">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.TestClass4`1[T]">\r
+      <method name="Boolean Equals(Test.TestClass4`1[T])" attrs="486">\r
         <size>10</size>\r
       </method>\r
-      <method name="Boolean op_Equality(TestClass4`1, TestClass4`1)" attrs="2198">\r
+      <method name="Boolean Equals(Test.TestClass4`1[T], Test.TestClass4`1[T])" attrs="486">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="Int32 GetHashCode(Test.TestClass4`1[T])" attrs="486">\r
+        <size>22</size>\r
+      </method>\r
+      <method name="Boolean op_Equality(Test.TestClass4`1[T], Test.TestClass4`1[T])" attrs="2198">\r
         <size>17</size>\r
       </method>\r
-      <method name="Boolean op_Equality(T, TestClass4`1)" attrs="2198">\r
+      <method name="Boolean op_Equality(T, Test.TestClass4`1[T])" attrs="2198">\r
         <size>17</size>\r
       </method>\r
-      <method name="Boolean op_Equality(TestClass4`1, T)" attrs="2198">\r
+      <method name="Boolean op_Equality(Test.TestClass4`1[T], T)" attrs="2198">\r
         <size>17</size>\r
       </method>\r
-      <method name="Boolean op_Equality(System.Object, TestClass4`1)" attrs="2198">\r
+      <method name="Boolean op_Equality(System.Object, Test.TestClass4`1[T])" attrs="2198">\r
         <size>23</size>\r
       </method>\r
-      <method name="Boolean op_Equality(TestClass4`1, System.Object)" attrs="2198">\r
+      <method name="Boolean op_Equality(Test.TestClass4`1[T], System.Object)" attrs="2198">\r
         <size>23</size>\r
       </method>\r
-      <method name="Boolean op_Inequality(TestClass4`1, TestClass4`1)" attrs="2198">\r
+      <method name="Boolean op_Inequality(Test.TestClass4`1[T], Test.TestClass4`1[T])" attrs="2198">\r
         <size>19</size>\r
       </method>\r
-      <method name="Boolean op_Inequality(T, TestClass4`1)" attrs="2198">\r
+      <method name="Boolean op_Inequality(T, Test.TestClass4`1[T])" attrs="2198">\r
         <size>19</size>\r
       </method>\r
-      <method name="Boolean op_Inequality(TestClass4`1, T)" attrs="2198">\r
+      <method name="Boolean op_Inequality(Test.TestClass4`1[T], T)" attrs="2198">\r
         <size>19</size>\r
       </method>\r
-      <method name="Boolean op_Inequality(System.Object, TestClass4`1)" attrs="2198">\r
+      <method name="Boolean op_Inequality(System.Object, Test.TestClass4`1[T])" attrs="2198">\r
         <size>19</size>\r
       </method>\r
-      <method name="Boolean op_Inequality(TestClass4`1, System.Object)" attrs="2198">\r
+      <method name="Boolean op_Inequality(Test.TestClass4`1[T], System.Object)" attrs="2198">\r
         <size>19</size>\r
       </method>\r
     </type>\r
-    <type name="Test.C">\r
-      <method name="Void Main()" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
   </test>\r
   <test name="gtest-524.cs">\r
     <type name="C">\r
   </test>\r
   <test name="gtest-534.cs">\r
     <type name="A">\r
-      <method name="Void Method(IG`1)" attrs="486">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>21</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void Method(IG`1[System.Double[][]])" attrs="486">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-535.cs">\r
       </method>\r
     </type>\r
     <type name="S">\r
-      <method name="System.String op_BitwiseOr(S, Nullable`1)" attrs="2198">\r
+      <method name="System.String op_BitwiseOr(S, System.Nullable`1[S])" attrs="2198">\r
         <size>14</size>\r
       </method>\r
-      <method name="Nullable`1 op_Addition(S, Nullable`1)" attrs="2198">\r
+      <method name="System.Nullable`1[System.Int32] op_Addition(S, System.Nullable`1[S])" attrs="2198">\r
         <size>16</size>\r
       </method>\r
     </type>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>7</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor(Int32)" attrs="6278">\r
         <size>2</size>\r
       </method>\r
     </type>\r
-    <type name="S2">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="134">\r
-        <size>23</size>\r
-      </method>\r
-    </type>\r
     <type name="Enumerator`1[T]">\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>7</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="S">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] GetEnumerator()" attrs="486">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="S2">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] GetEnumerator()" attrs="134">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-539.cs">\r
     <type name="S">\r
       <method name="C op_Explicit(S)" attrs="2198">\r
         <size>12</size>\r
       </method>\r
-      <method name="C op_Explicit(Nullable`1)" attrs="2198">\r
-        <size>47</size>\r
-      </method>\r
       <method name="Void .ctor(Int32)" attrs="6273">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="C op_Explicit(System.Nullable`1[S])" attrs="2198">\r
+        <size>47</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-540.cs">\r
     <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>964</size>\r
+        <size>762</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
         <size>10</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>128</size>\r
+        <size>353</size>\r
       </method>\r
     </type>\r
   </test>\r
         <size>20</size>\r
       </method>\r
     </type>\r
-    <type name="Foo.Magic`1[T]">\r
-      <method name="Void Upsample(IUpDown)" attrs="150">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
     <type name="Foo.Instance">\r
       <method name="Int32 get_DestinationDimension()" attrs="2534">\r
         <size>10</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo.Magic`1[T]">\r
+      <method name="Void Upsample(Foo.Magic`1+IUpDown[T])" attrs="150">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-551.cs">\r
     <type name="Base`1[T]">\r
       <method name="Void Foo[T](T)" attrs="145">\r
         <size>2</size>\r
       </method>\r
-      <method name="Void Test(Nullable`1)" attrs="150">\r
-        <size>20</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C`1[U]">\r
+      <method name="Void Test(System.Nullable`1[S])" attrs="150">\r
+        <size>20</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-564.cs">\r
     <type name="B1`2[T1,T2]">\r
       </method>\r
     </type>\r
     <type name="C`1[T]">\r
-      <method name="C`1 op_Implicit(T)" attrs="2198">\r
+      <method name="C`1[T] op_Implicit(T)" attrs="2198">\r
         <size>18</size>\r
       </method>\r
     </type>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>7</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>15</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int16] GetEnumerator()" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-573.cs">\r
       </method>\r
     </type>\r
     <type name="CA`1[T]">\r
-      <method name="IB`1 IB&lt;T&gt;.Backwards()" attrs="481">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="IA`1 Backwards()" attrs="1478">\r
-        <size>0</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="CA`1[T]">\r
+      <method name="IA`1[T] Backwards()" attrs="1478">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="IB`1[T] IB&lt;T&gt;.Backwards()" attrs="481">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-574.cs">\r
     <type name="TestClass`1[T1]">\r
       <method name="Void Test()" attrs="129">\r
         <size>11</size>\r
       </method>\r
-      <method name="Void Foo[U](IEnumerable`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="DirectedCollectionBase`1[T3]">\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T3&gt;.GetEnumerator()" attrs="481">\r
-        <size>10</size>\r
-      </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>10</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="EnumerableBase`1[T6]">\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T6&gt;.GetEnumerator()" attrs="481">\r
-        <size>10</size>\r
-      </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>10</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="TestClass`1[T1]">\r
+      <method name="Void Foo[U](System.Collections.Generic.IEnumerable`1[U])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
+    <type name="DirectedCollectionBase`1[T3]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T3] System.Collections.Generic.IEnumerable&lt;T3&gt;.GetEnumerator()" attrs="481">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="EnumerableBase`1[T6]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T6] System.Collections.Generic.IEnumerable&lt;T6&gt;.GetEnumerator()" attrs="481">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-575.cs">\r
     <type name="C`1[T1]">\r
   </test>\r
   <test name="gtest-576.cs">\r
     <type name="A">\r
-      <method name="Void IA.f[T1](IParam`1)" attrs="481">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>8</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void IA.f[T1](IParam`1[T1])" attrs="481">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-577.cs">\r
   </test>\r
   <test name="gtest-578.cs">\r
     <type name="X">\r
-      <method name="I`1 Test[T,TR](I`1, System.Func`2[I`1[T],TR])" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="U First[U](I`1)" attrs="150">\r
-        <size>18</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>44</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="I`1[TR] Test[T,TR](I`1[T], System.Func`2[I`1[T],TR])" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="U First[U](I`1[U])" attrs="150">\r
+        <size>18</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-579.cs">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="gtest-581.cs">\r
+    <type name="Program">\r
+      <method name="Void Main()" attrs="145">\r
+        <size>26</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-582.cs">\r
+    <type name="G1">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="GC`1[T]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>89</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-583.cs">\r
+    <type name="Test">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-584.cs">\r
+    <type name="S">\r
+      <method name="Boolean op_Equality(S, S)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Boolean op_Inequality(S, S)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>531</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="S">\r
+      <method name="System.Nullable`1[System.Int32] op_Implicit(S)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="System.Nullable`1[E] op_Implicit(S)" attrs="2198">\r
+        <size>18</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-585.cs">\r
+    <type name="S">\r
+      <method name="Int32 op_Implicit(S)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="S3">\r
+      <method name="System.String op_Implicit(S3)" attrs="2198">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>436</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="S2">\r
+      <method name="System.Nullable`1[System.Int32] op_Implicit(S2)" attrs="2198">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.UInt32] op_Implicit(S2)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-586.cs">\r
+    <type name="S">\r
+      <method name="Boolean op_Equality(S, S)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Boolean op_Inequality(S, S)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="S2">\r
+      <method name="Boolean op_Equality(S2, S2)" attrs="2198">\r
+        <size>22</size>\r
+      </method>\r
+      <method name="Boolean op_Inequality(S2, S2)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>661</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="S3">\r
+      <method name="System.Nullable`1[System.Int32] op_Implicit(S3)" attrs="2198">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-587.cs">\r
+    <type name="S">\r
+      <method name="System.String op_Implicit(S)" attrs="2198">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="E op_Implicit(S)" attrs="2198">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>139</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="S">\r
+      <method name="System.Nullable`1[System.Int16] op_Implicit(S)" attrs="2198">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-588.cs">\r
+    <type name="S">\r
+      <method name="System.Nullable`1[System.Int16] op_Implicit(S)" attrs="2198">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Int16 op_Implicit(S)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>246</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-589.cs">\r
+    <type name="Z">\r
+      <method name="Z Start()" attrs="134">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Z IGenericInterface&lt;Z&gt;.Start()" attrs="481">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="A`1[T]">\r
+      <method name="Void SomeOperation(T)" attrs="134">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Int32 IGenericInterface&lt;int&gt;.Start()" attrs="481">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void Main()" attrs="150">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="gtest-anontype-01.cs">\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
   </test>\r
   <test name="gtest-anontype-13.cs">\r
     <type name="Test">\r
-      <method name="IEnumerable`1 Select[T](System.Array, System.Func`2[System.Object,T])" attrs="150">\r
-        <size>51</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>182</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>211</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Select[T](System.Array, System.Func`2[System.Object,T])" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Select&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-autoproperty-01.cs">\r
     <type name="Test">\r
         <size>239</size>\r
       </method>\r
       <method name="Void ConvertTest_7()" attrs="129">\r
-        <size>123</size>\r
+        <size>108</size>\r
       </method>\r
       <method name="Void ConvertTest_8()" attrs="129">\r
         <size>119</size>\r
         <size>170</size>\r
       </method>\r
       <method name="Void EqualTest_11()" attrs="129">\r
-        <size>133</size>\r
+        <size>148</size>\r
       </method>\r
       <method name="Void EqualTest_12()" attrs="129">\r
         <size>128</size>\r
         <size>125</size>\r
       </method>\r
       <method name="Void EqualTest_14()" attrs="129">\r
-        <size>102</size>\r
+        <size>132</size>\r
       </method>\r
       <method name="Void EqualTest_15()" attrs="129">\r
         <size>160</size>\r
         <size>198</size>\r
       </method>\r
       <method name="Void ExclusiveOrTest_8()" attrs="129">\r
-        <size>164</size>\r
+        <size>179</size>\r
       </method>\r
       <method name="Void GreaterThanTest()" attrs="129">\r
         <size>100</size>\r
         <size>170</size>\r
       </method>\r
       <method name="Void NotEqualTest_11()" attrs="129">\r
-        <size>133</size>\r
+        <size>148</size>\r
       </method>\r
       <method name="Void OrTest()" attrs="129">\r
         <size>142</size>\r
     </type>\r
     <type name="Tester">\r
       <method name="Void LessThanTest_9()" attrs="129">\r
-        <size>199</size>\r
+        <size>184</size>\r
       </method>\r
     </type>\r
   </test>\r
   <test name="gtest-etree-03.cs">\r
     <type name="S`1[T]">\r
       <method name="Int32 Test()" attrs="150">\r
-        <size>164</size>\r
+        <size>139</size>\r
       </method>\r
     </type>\r
     <type name="C">\r
     </type>\r
     <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>394</size>\r
+        <size>495</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo">\r
+      <method name="Foo op_Addition(Foo, Foo)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-etree-05.cs">\r
     <type name="C">\r
   </test>\r
   <test name="gtest-etree-10.cs">\r
     <type name="Foo`1[T]">\r
-      <method name="Boolean ContainsAll[U](IEnumerable`1)" attrs="134">\r
-        <size>200</size>\r
-      </method>\r
       <method name="Boolean Contains(T)" attrs="134">\r
         <size>10</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo`1[T]">\r
+      <method name="Boolean ContainsAll[U](System.Collections.Generic.IEnumerable`1[U])" attrs="134">\r
+        <size>200</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-etree-11.cs">\r
     <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>66</size>\r
       </method>\r
-      <method name="IEnumerable`1 Test[T](Int32)" attrs="145">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>148</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Program">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test[T](Int32)" attrs="145">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+&lt;Test&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-etree-14.cs">\r
     <type name="Person">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>67</size>\r
       </method>\r
-      <method name="IEnumerable`1 GetPersons[T](IEnumerable`1, Int32)" attrs="145">\r
-        <size>51</size>\r
-      </method>\r
       <method name="Boolean Test[T](T, System.Linq.Expressions.Expression`1[System.Func`2[T,System.Boolean]])" attrs="145">\r
         <size>21</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>336</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Repro">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] GetPersons[T](System.Collections.Generic.IEnumerable`1[T], Int32)" attrs="145">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="Repro+&lt;GetPersons&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-etree-15.cs">\r
     <type name="Foo">\r
   </test>\r
   <test name="gtest-exmethod-07.cs">\r
     <type name="E">\r
-      <method name="Void ToReadOnly[T](IEnumerable`1)" attrs="147">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void To(IA)" attrs="147">\r
         <size>2</size>\r
       </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
-      <method name="Void Test(IEnumerable`1)" attrs="150">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="E">\r
+      <method name="Void ToReadOnly[T](System.Collections.Generic.IEnumerable`1[T])" attrs="147">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Void Test(System.Collections.Generic.IEnumerable`1[System.Boolean])" attrs="150">\r
+        <size>16</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-exmethod-08.cs">\r
     <type name="C">\r
   </test>\r
   <test name="gtest-exmethod-13.cs">\r
     <type name="Foo">\r
-      <method name="IEnumerable`1 Reverse[T](IEnumerable`1)" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>24</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Reverse[T](System.Collections.Generic.IEnumerable`1[T])" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-exmethod-14.cs">\r
       <method name="System.String Test_1(System.String)" attrs="150">\r
         <size>20</size>\r
       </method>\r
-      <method name="Int32 Test_2[T](IEnumerable`1)" attrs="150">\r
-        <size>11</size>\r
-      </method>\r
     </type>\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>0</size>\r
       </method>\r
     </type>\r
+    <type name="Rocks">\r
+      <method name="Int32 Test_2[T](System.Collections.Generic.IEnumerable`1[T])" attrs="150">\r
+        <size>11</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-exmethod-20.cs">\r
     <type name="Outer.Inner.Test">\r
       </method>\r
     </type>\r
     <type name="Outer.ExtensionMethods">\r
-      <method name="Void AddRange[T](I, IEnumerable`1)" attrs="150">\r
+      <method name="Void AddRange[T](I, System.Collections.Generic.IEnumerable`1[T])" attrs="150">\r
         <size>2</size>\r
       </method>\r
     </type>\r
     </type>\r
   </test>\r
   <test name="gtest-exmethod-27.cs">\r
-    <type name="Foo.Extensions">\r
-      <method name="System.String AsString(IList`1)" attrs="150">\r
-        <size>14</size>\r
-      </method>\r
-    </type>\r
     <type name="Bar.Program">\r
       <method name="Void Main()" attrs="150">\r
         <size>18</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo.Extensions">\r
+      <method name="System.String AsString(System.Collections.Generic.IList`1[System.Byte])" attrs="150">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-exmethod-28.cs">\r
     <type name="Foo">\r
       <method name="Int32 get_First()" attrs="2182">\r
         <size>10</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] GetEnumerator()" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-exmethod-31.cs">\r
     <type name="N.S">\r
   </test>\r
   <test name="gtest-exmethod-41.cs">\r
     <type name="TT">\r
-      <method name="Void Method[T](IEnumerable`1, System.Func`2[T,System.Boolean])" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Test[U](U)" attrs="150">\r
         <size>25</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="TT">\r
+      <method name="Void Method[T](System.Collections.Generic.IEnumerable`1[T], System.Func`2[T,System.Boolean])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-exmethod-42.cs">\r
     <type name="C">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="gtest-exmethod-46.cs">\r
+    <type name="ExtensionTest.Two.AxFunc`2[T1,TResult]">\r
+      <method name="TResult Invoke(T1)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="IAsyncResult BeginInvoke(T1, System.AsyncCallback, System.Object)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="TResult EndInvoke(IAsyncResult)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="ExtensionTest.MyClass">\r
+      <method name="Boolean IsCharacters(System.String, System.Char[])" attrs="150">\r
+        <size>27</size>\r
+      </method>\r
+      <method name="Boolean Contains(System.String, System.String, StringComparison)" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="Void Main()" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
+    <type name="ExtensionTest.Two.Extensions">\r
+      <method name="Boolean Contains[T](System.Collections.Generic.IEnumerable`1[T], T)" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Boolean All[T](System.Collections.Generic.IEnumerable`1[T], ExtensionTest.Two.AxFunc`2[T,System.Boolean])" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="gtest-fixedbuffer-01.cs">\r
     <type name="TestNew">\r
       <method name="Void SetTest()" attrs="134">\r
       <method name="T get_Item(Int32)" attrs="2182">\r
         <size>21</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="134">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>8</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C+ArrayReadOnlyList`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="134">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-02.cs">\r
     <type name="C">\r
-      <method name="IEnumerator`1 Test()" attrs="129">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test&gt;c__Iterator0">\r
-      <method name="KeyValuePair`2 System.Collections.Generic.IEnumerator&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.get_Current()" attrs="2529">\r
-        <size>14</size>\r
-      </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>19</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]] Test()" attrs="129">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.KeyValuePair`2[System.String,System.Object] System.Collections.Generic.IEnumerator&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.get_Current()" attrs="2529">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-03.cs">\r
     <type name="Test">\r
-      <method name="IEnumerable`1 Annotations[T]()" attrs="134">\r
-        <size>30</size>\r
-      </method>\r
-      <method name="IEnumerable`1 Annotations(System.Type)" attrs="134">\r
-        <size>44</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>15</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>204</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>232</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Annotations[T]()" attrs="134">\r
+        <size>30</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Object] Annotations(System.Type)" attrs="134">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Annotations&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Annotations&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-04.cs">\r
     <type name="TestClass">\r
       <method name="Void ToString(System.Object)" attrs="1478">\r
         <size>0</size>\r
       </method>\r
-      <method name="IEnumerable`1 TestEnumerator()" attrs="134">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Void Test()" attrs="134">\r
         <size>9</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>38</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="TestClass">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Object] TestEnumerator()" attrs="134">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestClass+&lt;TestEnumerator&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-05.cs">\r
     <type name="Test">\r
       <method name="Void Main()" attrs="150">\r
         <size>32</size>\r
       </method>\r
-      <method name="IEnumerable`1 TestRoutine[T](IEnumerable`1, Foo`1[T])" attrs="150">\r
-        <size>51</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>197</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-  </test>\r
-  <test name="gtest-iter-06.cs">\r
-    <type name="Mono.Rocks.KeyValuePair">\r
-      <method name="Nullable`1 Just[TKey,TValue](TKey, TValue)" attrs="150">\r
-        <size>21</size>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] TestRoutine[T](System.Collections.Generic.IEnumerable`1[T], Foo`1[T])" attrs="150">\r
+        <size>37</size>\r
       </method>\r
     </type>\r
-    <type name="Mono.Rocks.Sequence">\r
-      <method name="IEnumerable`1 Unfoldr[TSource,TResult](TSource, System.Func`2[TSource,System.Nullable`1[System.Collections.Generic.KeyValuePair`2[TResult,TSource]]])" attrs="150">\r
-        <size>16</size>\r
-      </method>\r
-      <method name="IEnumerable`1 CreateUnfoldrIterator[TSource,TResult](TSource, System.Func`2[TSource,System.Nullable`1[System.Collections.Generic.KeyValuePair`2[TResult,TSource]]])" attrs="145">\r
-        <size>51</size>\r
+    <type name="Test+&lt;TestRoutine&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
       </method>\r
     </type>\r
+  </test>\r
+  <test name="gtest-iter-06.cs">\r
     <type name="Mono.Rocks.Test">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>128</size>\r
       </method>\r
-      <method name="Nullable`1 &lt;Main&gt;m__0(Int32)" attrs="145">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;TResult&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>192</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Mono.Rocks.KeyValuePair">\r
+      <method name="System.Nullable`1[System.Collections.Generic.KeyValuePair`2[TKey,TValue]] Just[TKey,TValue](TKey, TValue)" attrs="150">\r
+        <size>21</size>\r
+      </method>\r
+    </type>\r
+    <type name="Mono.Rocks.Sequence">\r
+      <method name="System.Collections.Generic.IEnumerable`1[TResult] Unfoldr[TSource,TResult](TSource, System.Func`2[TSource,System.Nullable`1[System.Collections.Generic.KeyValuePair`2[TResult,TSource]]])" attrs="150">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[TResult] CreateUnfoldrIterator[TSource,TResult](TSource, System.Func`2[TSource,System.Nullable`1[System.Collections.Generic.KeyValuePair`2[TResult,TSource]]])" attrs="145">\r
+        <size>44</size>\r
+      </method>\r
+    </type>\r
+    <type name="Mono.Rocks.Test">\r
+      <method name="System.Nullable`1[System.Collections.Generic.KeyValuePair`2[System.Int32,System.Int32]] &lt;Main&gt;m__0(Int32)" attrs="145">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="Mono.Rocks.Sequence+&lt;CreateUnfoldrIterator&gt;c__Iterator0`2[TSource,TResult]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[TResult] System.Collections.Generic.IEnumerable&lt;TResult&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-07.cs">\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>16</size>\r
       </method>\r
-      <method name="Void TestFunction(IEnumerable`1)" attrs="150">\r
-        <size>36</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="MySystem">\r
-      <method name="IEnumerable`1 get_Items()" attrs="2182">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>35</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>197</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="Void TestFunction(System.Collections.Generic.IEnumerable`1[System.String])" attrs="150">\r
+        <size>36</size>\r
+      </method>\r
+    </type>\r
+    <type name="MySystem">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] get_Items()" attrs="2182">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="MySystem+&lt;&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.String] System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-08.cs">\r
     <type name="App">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>91</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-iter-09.cs">\r
     <type name="Test">\r
-      <method name="IEnumerable`1 Create[T](T[,])" attrs="145">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>89</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>137</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Create[T](T[,])" attrs="145">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Create&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-10.cs">\r
     <type name="Test">\r
-      <method name="IEnumerable`1 FromTo(Int32, Int32)" attrs="145">\r
-        <size>51</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>185</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>110</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] FromTo(Int32, Int32)" attrs="145">\r
+        <size>44</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;FromTo&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-11.cs">\r
     <type name="Foo">\r
       <method name="Void Add(T)" attrs="134">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>18</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Collection`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="486">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-12.cs">\r
     <type name="H">\r
       <method name="Void Main(System.String[])" attrs="150">\r
         <size>2</size>\r
       </method>\r
-      <method name="IEnumerable`1 Merge[T](IEnumerator`1)" attrs="150">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>124</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="H">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Merge[T](System.Collections.Generic.IEnumerator`1[T])" attrs="150">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="H+&lt;Merge&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-13.cs">\r
     <type name="C`1[T]">\r
       <method name="IEnumerator GetEnumerator()" attrs="134">\r
         <size>20</size>\r
       </method>\r
-      <method name="IEnumerable`1 Filter(System.Func`2[T,System.Boolean])" attrs="134">\r
-        <size>44</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>225</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Filter(System.Func`2[T,System.Boolean])" attrs="134">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="C`1+&lt;Filter&gt;c__Iterator0[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-14.cs">\r
     <type name="A">\r
       </method>\r
     </type>\r
     <type name="S">\r
-      <method name="IEnumerable`1 GetIt()" attrs="134">\r
-        <size>35</size>\r
-      </method>\r
       <method name="Int32 &lt;GetHashCode&gt;__BaseCallProxy0()" attrs="129">\r
         <size>24</size>\r
       </method>\r
       <method name="Void set_BaseM(Int32)" attrs="2244">\r
         <size>12</size>\r
       </method>\r
-      <method name="IEnumerable`1 GetIt()" attrs="129">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>145</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>82</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>93</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="S">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] GetIt()" attrs="134">\r
+        <size>35</size>\r
+      </method>\r
+    </type>\r
+    <type name="X">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] GetIt()" attrs="129">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="S+&lt;GetIt&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;GetIt&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-15.cs">\r
     <type name="C`1[TFirst]">\r
-      <method name="IEnumerable`1 GetEnumerable[V](IEnumerable`1)" attrs="131">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;V&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>189</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C`1[TFirst]">\r
+      <method name="System.Collections.Generic.IEnumerable`1[V] GetEnumerable[V](System.Collections.Generic.IEnumerable`1[C`1+VSlot`1[TFirst,V]])" attrs="131">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="C`1+&lt;GetEnumerable&gt;c__Iterator0`1[TFirst,V]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[V] System.Collections.Generic.IEnumerable&lt;V&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-16.cs">\r
     <type name="Test.Base">\r
-      <method name="IEnumerable`1 GetStuff(Int32)" attrs="454">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test.Derived">\r
-      <method name="IEnumerable`1 GetStuff(Int32)" attrs="198">\r
-        <size>44</size>\r
-      </method>\r
-      <method name="IEnumerable`1 &lt;GetStuff&gt;__BaseCallProxy0(Int32)" attrs="129">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test.SpecialDerived">\r
-      <method name="IEnumerable`1 GetStuff(Int32)" attrs="198">\r
-        <size>44</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>65</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;GetStuff&gt;__BaseCallProxy0(Int32)" attrs="129">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;Test.Base&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>77</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;Test.Base&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>195</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;Test.Base&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>195</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test.Base">\r
+      <method name="System.Collections.Generic.IEnumerable`1[Test.Base] GetStuff(Int32)" attrs="454">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.Derived">\r
+      <method name="System.Collections.Generic.IEnumerable`1[Test.Base] GetStuff(Int32)" attrs="198">\r
+        <size>37</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[Test.Base] &lt;GetStuff&gt;__BaseCallProxy0(Int32)" attrs="129">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.SpecialDerived">\r
+      <method name="System.Collections.Generic.IEnumerable`1[Test.Base] GetStuff(Int32)" attrs="198">\r
+        <size>37</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[Test.Base] &lt;GetStuff&gt;__BaseCallProxy0(Int32)" attrs="129">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.Base+&lt;GetStuff&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[Test.Base] System.Collections.Generic.IEnumerable&lt;Test.Base&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.Derived+&lt;GetStuff&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[Test.Base] System.Collections.Generic.IEnumerable&lt;Test.Base&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.SpecialDerived+&lt;GetStuff&gt;c__Iterator2">\r
+      <method name="System.Collections.Generic.IEnumerator`1[Test.Base] System.Collections.Generic.IEnumerable&lt;Test.Base&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-17.cs">\r
     <type name="Test">\r
-      <method name="IEnumerable`1 TestMethod()" attrs="134">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>37</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] TestMethod()" attrs="134">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;TestMethod&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-18.cs">\r
     <type name="c">\r
-      <method name="IEnumerable`1 func()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>57</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;char&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>78</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="c">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Char] func()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="c+&lt;func&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Char] System.Collections.Generic.IEnumerable&lt;char&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-19.cs">\r
     <type name="IEnumerableTransform">\r
-      <method name="IEnumerable`1 Transform[TOut](IEnumerable`1, IEnumerableTransform+EmitterFunc`1[TOut])" attrs="150">\r
-        <size>51</size>\r
-      </method>\r
       <method name="IEnumerableTransform+EmitterFunc`1[TOut] Emit[TOut](TOut)" attrs="150">\r
         <size>34</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;TOut&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>203</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="IEnumerableTransform">\r
+      <method name="System.Collections.Generic.IEnumerable`1[TOut] Transform[TOut](System.Collections.Generic.IEnumerable`1[System.Int32], IEnumerableTransform+EmitterFunc`1[TOut])" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="IEnumerableTransform+&lt;Transform&gt;c__Iterator0`1[TOut]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[TOut] System.Collections.Generic.IEnumerable&lt;TOut&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-20.cs">\r
     <type name="X">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>77</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-iter-21.cs">\r
     <type name="C">\r
-      <method name="IEnumerable`1 Test()" attrs="129">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>72</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Void &lt;&gt;__Finally0()" attrs="129">\r
         <size>29</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test()" attrs="129">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-22.cs">\r
     <type name="D">\r
       </method>\r
     </type>\r
     <type name="C">\r
-      <method name="IEnumerable`1 Test()" attrs="129">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>78</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>74</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-  </test>\r
-  <test name="gtest-iter-23.cs">\r
     <type name="C">\r
-      <method name="IEnumerable`1 Test()" attrs="145">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test()" attrs="129">\r
         <size>23</size>\r
       </method>\r
-      <method name="IEnumerable`1 Test_2()" attrs="145">\r
-        <size>23</size>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
       </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-iter-23.cs">\r
+    <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>180</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>271</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>200</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test()" attrs="145">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test_2()" attrs="145">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test_2&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-24.cs">\r
     <type name="B">\r
       </method>\r
     </type>\r
     <type name="C">\r
-      <method name="IEnumerable`1 Test()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>71</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>170</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-25.cs">\r
     <type name="Test.Program">\r
       <method name="Void Main()" attrs="150">\r
         <size>61</size>\r
       </method>\r
-      <method name="IEnumerable`1 Test()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
     </type>\r
     <type name="Test.Program+&lt;Test&gt;c__Iterator0">\r
       <method name="System.Object System.Collections.Generic.IEnumerator&lt;object&gt;.get_Current()" attrs="2529">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>143</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test.Program">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Object] Test()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.Program+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-26.cs">\r
     <type name="Test.Program">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>51</size>\r
       </method>\r
-      <method name="IEnumerable`1 Test()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
     </type>\r
     <type name="Test.Program+&lt;Test&gt;c__Iterator0">\r
       <method name="System.Object System.Collections.Generic.IEnumerator&lt;object&gt;.get_Current()" attrs="2529">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>72</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test.Program">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Object] Test()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.Program+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-27.cs">\r
     <type name="CompilerBug">\r
       <method name="Void Main()" attrs="150">\r
         <size>61</size>\r
       </method>\r
-      <method name="IEnumerable`1 Foo()" attrs="145">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>161</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="CompilerBug">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] Foo()" attrs="145">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="CompilerBug+&lt;Foo&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.String] System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-28.cs">\r
     <type name="A">\r
-      <method name="IEnumerable`1 Test(B)" attrs="134">\r
-        <size>44</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>18</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>178</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="A">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] Test(B)" attrs="134">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="A+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.String] System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-iter-29.cs">\r
+    <type name="Test">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>44</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Test2&gt;c__Iterator0">\r
+      <method name="Int32 System.Collections.Generic.IEnumerator&lt;int&gt;.get_Current()" attrs="2529">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="Boolean MoveNext()" attrs="486">\r
+        <size>21</size>\r
+      </method>\r
+      <method name="Void Dispose()" attrs="486">\r
+        <size>1</size>\r
+      </method>\r
+      <method name="Void Reset()" attrs="486">\r
+        <size>6</size>\r
+      </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test2()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Test2&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-lambda-01.cs">\r
     <type name="IntFunc">\r
       </method>\r
     </type>\r
     <type name="C">\r
-      <method name="IEnumerable`1 Test[T](T)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="IEnumerable`1 Test[T](Func`1[T])" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="IEnumerable`1 Test2[T](Func`2[T,T])" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>114</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Test[T](T)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Test[T](Func`1[T])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Test2[T](Func`2[T,T])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-lambda-10.cs">\r
     <type name="C">\r
-      <method name="Void Foo[TSource](IEnumerable`1)" attrs="150">\r
-        <size>2</size>\r
-      </method>\r
-      <method name="Void Foo[TCollection,TSource](IEnumerable`1, System.Func`2[TSource,System.Collections.Generic.IEnumerable`1[TCollection]])" attrs="150">\r
-        <size>2</size>\r
-      </method>\r
-      <method name="Void Foo[TCollection,TSource](IEnumerable`1, System.Func`3[TSource,TCollection[],System.Collections.Generic.IEnumerable`1[TCollection]])" attrs="150">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Foo[TCollection,TSource](System.Func`2[TCollection[],System.Collections.Generic.IEnumerable`1[TSource]])" attrs="150">\r
         <size>2</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="IEnumerable`1 &lt;&gt;m__0(Int32)" attrs="131">\r
-        <size>15</size>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Void Foo[TSource](System.Collections.Generic.IEnumerable`1[TSource])" attrs="150">\r
+        <size>2</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__1(Int32, System.Int32[])" attrs="131">\r
+      <method name="Void Foo[TCollection,TSource](System.Collections.Generic.IEnumerable`1[TSource], System.Func`2[TSource,System.Collections.Generic.IEnumerable`1[TCollection]])" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void Foo[TCollection,TSource](System.Collections.Generic.IEnumerable`1[TSource], System.Func`3[TSource,TCollection[],System.Collections.Generic.IEnumerable`1[TCollection]])" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__0(Int32)" attrs="131">\r
         <size>15</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__2(System.Int32[])" attrs="131">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__1(Int32, System.Int32[])" attrs="131">\r
         <size>15</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__2(System.Int32[])" attrs="131">\r
+        <size>15</size>\r
       </method>\r
     </type>\r
   </test>\r
     </type>\r
   </test>\r
   <test name="gtest-lambda-15.cs">\r
-    <type name="Enumerable">\r
-      <method name="Int32 Sum[TSource](IEnumerable`1, System.Func`2[TSource,System.Int32])" attrs="150">\r
-        <size>40</size>\r
-      </method>\r
-      <method name="TR Sum[TA,TR](IEnumerable`1, System.Func`3[TR,TA,TR])" attrs="145">\r
-        <size>139</size>\r
-      </method>\r
-    </type>\r
     <type name="Repro">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>128</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Enumerable">\r
+      <method name="Int32 Sum[TSource](System.Collections.Generic.IEnumerable`1[TSource], System.Func`2[TSource,System.Int32])" attrs="150">\r
+        <size>40</size>\r
+      </method>\r
+      <method name="TR Sum[TA,TR](System.Collections.Generic.IEnumerable`1[TA], System.Func`3[TR,TA,TR])" attrs="145">\r
+        <size>139</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-lambda-16.cs">\r
     <type name="Repro">\r
-      <method name="Void AssertFoo[T](IList`1)" attrs="145">\r
-        <size>35</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Repro">\r
+      <method name="Void AssertFoo[T](System.Collections.Generic.IList`1[T])" attrs="145">\r
+        <size>35</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-lambda-17.cs">\r
     <type name="TestCase">\r
       <method name="Product &lt;Main&gt;m__1(Product)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="&lt;&gt;__AnonType0`2[System.Linq.IGrouping`2[System.Int32,Product],System.Collections.Generic.IEnumerable`1[Product]] &lt;Main&gt;m__2(IGrouping`2)" attrs="145">\r
-        <size>56</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="MainClass">\r
+      <method name="&lt;&gt;__AnonType0`2[System.Linq.IGrouping`2[System.Int32,Product],System.Collections.Generic.IEnumerable`1[Product]] &lt;Main&gt;m__2(System.Linq.IGrouping`2[System.Int32,Product])" attrs="145">\r
+        <size>56</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-lambda-23.cs">\r
     <type name="C">\r
       <method name="Void DoStuff[T](T, System.Action`1[T])" attrs="150">\r
         <size>12</size>\r
       </method>\r
-      <method name="Void DoStuff[T](Nullable`1, System.Action`1[T])" attrs="150">\r
-        <size>15</size>\r
-      </method>\r
     </type>\r
     <type name="MonoBugs.Program">\r
       <method name="Void Main()" attrs="150">\r
         <size>60</size>\r
       </method>\r
-      <method name="Void &lt;Main&gt;m__0(Foo`1)" attrs="145">\r
+    </type>\r
+    <type name="MonoBugs.Bar">\r
+      <method name="Void DoStuff[T](System.Nullable`1[T], System.Action`1[T])" attrs="150">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="MonoBugs.Program">\r
+      <method name="Void &lt;Main&gt;m__0(MonoBugs.Foo`1[System.Int32])" attrs="145">\r
         <size>13</size>\r
       </method>\r
     </type>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>294</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;Main&gt;m__0(IEnumerable)" attrs="145">\r
+      <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;Main&gt;m__0(IEnumerable)" attrs="145">\r
         <size>7</size>\r
       </method>\r
     </type>\r
       <method name="Int32 &lt;Main&gt;m__1(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="Nullable`1 &lt;Main&gt;m__2(Nullable`1)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Int32 &lt;Main&gt;m__3(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
       <method name="Int32 &lt;Main&gt;m__1B(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 &lt;Main&gt;m__1C(Int32, IEnumerable`1)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Int32 &lt;Main&gt;m__1D(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
       <method name="Int32 &lt;Main&gt;m__1E(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 &lt;Main&gt;m__1F(Int32, IEnumerable`1)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Int32 &lt;Main&gt;m__20(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
       <method name="Int32 &lt;Main&gt;m__23(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="IGrouping`2 &lt;Main&gt;m__24(IGrouping`2)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="&lt;&gt;__AnonType1`2[System.Int32,System.Int32] &lt;Main&gt;m__25(Int32)" attrs="145">\r
         <size>18</size>\r
       </method>\r
       <method name="Int32 &lt;Main&gt;m__2B(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32] &lt;Main&gt;m__2D(IGrouping`2, Int32)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Int32 &lt;Main&gt;m__2E(&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
         <size>10</size>\r
       </method>\r
       <method name="Int32 &lt;Main&gt;m__2F(&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32] &lt;Main&gt;m__31(IGrouping`2, Int32)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Int32 &lt;Main&gt;m__32(&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
         <size>10</size>\r
       </method>\r
       <method name="Int32 &lt;Main&gt;m__33(&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32] &lt;Main&gt;m__35(IGrouping`2, Int32)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Int32 &lt;Main&gt;m__36(&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
         <size>10</size>\r
       </method>\r
       <method name="Int32 &lt;Main&gt;m__37(&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="IGrouping`2 &lt;Main&gt;m__38(IGrouping`2)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Int32 &lt;Main&gt;m__39(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="from.C+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="IEnumerable`1 &lt;&gt;m__4(Int32)" attrs="131">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__2C(IGrouping`2)" attrs="131">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__30(IGrouping`2)" attrs="131">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__34(IGrouping`2)" attrs="131">\r
-        <size>15</size>\r
-      </method>\r
       <method name="&lt;&gt;__AnonType1`2[System.Int32,System.Collections.Generic.IEnumerable`1[System.Int32]] &lt;&gt;m__3C(Int32)" attrs="131">\r
         <size>55</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="from.C">\r
+      <method name="System.Nullable`1[System.Boolean] &lt;Main&gt;m__2(System.Nullable`1[System.Boolean])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__1C(Int32, System.Collections.Generic.IEnumerable`1[System.Int32])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__1F(Int32, System.Collections.Generic.IEnumerable`1[System.Int32])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="System.Linq.IGrouping`2[System.Int32,System.Int32] &lt;Main&gt;m__24(System.Linq.IGrouping`2[System.Int32,System.Int32])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32] &lt;Main&gt;m__2D(System.Linq.IGrouping`2[System.Int32,System.Int32], Int32)" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32] &lt;Main&gt;m__31(System.Linq.IGrouping`2[System.Int32,System.Int32], Int32)" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32] &lt;Main&gt;m__35(System.Linq.IGrouping`2[System.Int32,System.Int32], Int32)" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="System.Linq.IGrouping`2[System.Int32,System.Int32] &lt;Main&gt;m__38(System.Linq.IGrouping`2[System.Int32,System.Int32])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="from.C+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__4(Int32)" attrs="131">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__2C(System.Linq.IGrouping`2[System.Int32,System.Int32])" attrs="131">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__30(System.Linq.IGrouping`2[System.Int32,System.Int32])" attrs="131">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__34(System.Linq.IGrouping`2[System.Int32,System.Int32])" attrs="131">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-02.cs">\r
     <type name="Test">\r
       </method>\r
     </type>\r
     <type name="SelectMany+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="IEnumerable`1 &lt;&gt;m__0(Int32)" attrs="131">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] &lt;&gt;m__0(Int32)" attrs="131">\r
         <size>20</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__3(Int32)" attrs="131">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] &lt;&gt;m__3(Int32)" attrs="131">\r
         <size>20</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__5(&lt;&gt;__AnonType0`2[System.Int32,System.String])" attrs="131">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__5(&lt;&gt;__AnonType0`2[System.Int32,System.String])" attrs="131">\r
         <size>20</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__9(Int32)" attrs="131">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] &lt;&gt;m__9(Int32)" attrs="131">\r
         <size>15</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-linq-08.cs">\r
       <method name="Int32 &lt;Main&gt;m__1(DataB)" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]] &lt;Main&gt;m__2(DataA, IEnumerable`1)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
-      <method name="IEnumerable`1 &lt;Main&gt;m__3(&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]])" attrs="145">\r
-        <size>20</size>\r
-      </method>\r
       <method name="&lt;&gt;__AnonType1`2[System.String,System.String] &lt;Main&gt;m__4(&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]], DataB)" attrs="145">\r
         <size>47</size>\r
       </method>\r
       <method name="Int32 &lt;Main&gt;m__6(DataB)" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]] &lt;Main&gt;m__7(DataA, IEnumerable`1)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
-      <method name="IEnumerable`1 &lt;Main&gt;m__8(&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]])" attrs="145">\r
-        <size>20</size>\r
-      </method>\r
       <method name="&lt;&gt;__AnonType1`2[System.String,System.String] &lt;Main&gt;m__9(&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]], DataB)" attrs="145">\r
         <size>47</size>\r
       </method>\r
       <method name="Int32 &lt;Main&gt;m__B(DataB)" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="DataA &lt;Main&gt;m__C(DataA, IEnumerable`1)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>21</size>\r
       </method>\r
     </type>\r
+    <type name="GroupJoin">\r
+      <method name="&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]] &lt;Main&gt;m__2(DataA, System.Collections.Generic.IEnumerable`1[DataB])" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[DataB] &lt;Main&gt;m__3(&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]])" attrs="145">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]] &lt;Main&gt;m__7(DataA, System.Collections.Generic.IEnumerable`1[DataB])" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[DataB] &lt;Main&gt;m__8(&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]])" attrs="145">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="DataA &lt;Main&gt;m__C(DataA, System.Collections.Generic.IEnumerable`1[DataB])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-11.cs">\r
     <type name="IntoTest">\r
       <method name="&lt;&gt;__AnonType0`2[System.String,System.Int32] &lt;XX&gt;m__0(System.String)" attrs="145">\r
         <size>20</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;XX&gt;m__1(&lt;&gt;__AnonType0`2[System.String,System.Int32])" attrs="145">\r
-        <size>117</size>\r
-      </method>\r
       <method name="Boolean &lt;Main&gt;m__2(System.String)" attrs="145">\r
         <size>18</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;Main&gt;m__3(System.String)" attrs="145">\r
-        <size>44</size>\r
-      </method>\r
       <method name="&lt;&gt;__AnonType0`2[System.String,System.Int32] &lt;Main&gt;m__4(System.String)" attrs="145">\r
         <size>21</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;Main&gt;m__5(&lt;&gt;__AnonType0`2[System.String,System.Int32])" attrs="145">\r
-        <size>118</size>\r
-      </method>\r
       <method name="&lt;&gt;__AnonType1`2[System.Char,System.Int32] &lt;XX&gt;m__6(Char)" attrs="145">\r
         <size>16</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="NestedQuery">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Char] &lt;XX&gt;m__1(&lt;&gt;__AnonType0`2[System.String,System.Int32])" attrs="145">\r
+        <size>117</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Char] &lt;Main&gt;m__3(System.String)" attrs="145">\r
+        <size>44</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Char] &lt;Main&gt;m__5(&lt;&gt;__AnonType0`2[System.String,System.Int32])" attrs="145">\r
+        <size>118</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-13.cs">\r
     <type name="Program">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Extension">\r
-      <method name="IEnumerable`1 Cast[T](IFoo)" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
-    </type>\r
     <type name="MethodDefinition">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Extension">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Cast[T](IFoo)" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-14.cs">\r
     <type name="Person">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Extensions">\r
-      <method name="IMarker`1 Cast[T](IObjectContainer)" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="IMarker`1 Where[T](IMarker`1, System.Linq.Expressions.Expression`1[System.Func`2[T,System.Boolean]])" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
-    </type>\r
     <type name="Program">\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Extensions">\r
+      <method name="IMarker`1[T] Cast[T](IObjectContainer)" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="IMarker`1[T] Where[T](IMarker`1[T], System.Linq.Expressions.Expression`1[System.Func`2[T,System.Boolean]])" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-15.cs">\r
     <type name="NameCollisionTest.Data">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="NameCollisionTest.Ex">\r
-      <method name="IEnumerable`1 Foo[T,TR](IEnumerable`1, System.Func`2[T,TR])" attrs="150">\r
-        <size>51</size>\r
-      </method>\r
-    </type>\r
     <type name="NameCollisionTest.C">\r
       <method name="Void Main()" attrs="150">\r
         <size>79</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;TR&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>93</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="NameCollisionTest.Ex">\r
+      <method name="System.Collections.Generic.IEnumerable`1[TR] Foo[T,TR](System.Collections.Generic.IEnumerable`1[T], System.Func`2[T,TR])" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="NameCollisionTest.Ex+&lt;Foo&gt;c__Iterator0`2[T,TR]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[TR] System.Collections.Generic.IEnumerable&lt;TR&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-16.cs">\r
     <type name="C">\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test_1&gt;c__AnonStorey0">\r
-      <method name="IEnumerable`1 &lt;&gt;m__0()" attrs="131">\r
-        <size>74</size>\r
-      </method>\r
       <method name="&lt;&gt;__AnonType0`2[System.Int32,System.Int32] &lt;&gt;m__2(Int32)" attrs="145">\r
         <size>16</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test_2&gt;c__AnonStorey1">\r
-      <method name="IEnumerable`1 &lt;&gt;m__4()" attrs="131">\r
-        <size>74</size>\r
-      </method>\r
       <method name="&lt;&gt;__AnonType0`2[System.Int32,System.Int32] &lt;&gt;m__5(Int32)" attrs="145">\r
         <size>16</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C+&lt;Test_1&gt;c__AnonStorey0">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__0()" attrs="131">\r
+        <size>74</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test_2&gt;c__AnonStorey1">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__4()" attrs="131">\r
+        <size>74</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-17.cs">\r
     <type name="TestGroupBy">\r
       <method name="Boolean &lt;Main&gt;m__10(Int32)" attrs="145">\r
         <size>39</size>\r
       </method>\r
-      <method name="Int32 &lt;Main&gt;m__11(Int32, IEnumerable`1)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="Int32 &lt;Main&gt;m__11(Int32, System.Collections.Generic.IEnumerable`1[System.Int32])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-19.cs">\r
     <type name="Test">\r
       </method>\r
     </type>\r
     <type name="Program+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="IEnumerable`1 &lt;&gt;m__0(Int32)" attrs="131">\r
-        <size>15</size>\r
-      </method>\r
       <method name="System.Action &lt;&gt;m__1(Int32, Int32)" attrs="131">\r
         <size>48</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Program+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-22.cs">\r
     <type name="Test.MainClass">\r
       <method name="Void &lt;Main&gt;m__0()" attrs="145">\r
         <size>162</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;Main&gt;m__1(A)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
       <method name="&lt;&gt;__AnonType0`2[A,B] &lt;Main&gt;m__2(A, B)" attrs="145">\r
         <size>16</size>\r
       </method>\r
         <size>21</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[B] &lt;Main&gt;m__1(A)" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-26.cs">\r
     <type name="Test.S`1[T]">\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="IEnumerable`1 &lt;&gt;m__1(System.String)" attrs="131">\r
-        <size>82</size>\r
-      </method>\r
       <method name="&lt;&gt;__AnonType0`2[System.String,System.Boolean] &lt;&gt;m__2(System.String)" attrs="145">\r
         <size>55</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Boolean] &lt;&gt;m__1(System.String)" attrs="131">\r
+        <size>82</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-28.cs">\r
     <type name="C">\r
       <method name="&lt;&gt;__AnonType0`2[System.Char,System.Collections.Generic.IEnumerable`1[System.Char]] &lt;Main&gt;m__0(Char)" attrs="145">\r
         <size>54</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;Main&gt;m__1(&lt;&gt;__AnonType0`2[System.Char,System.Collections.Generic.IEnumerable`1[System.Char]])" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Char &lt;Main&gt;m__2(Char)" attrs="145">\r
         <size>10</size>\r
       </method>\r
         <size>21</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Char] &lt;Main&gt;m__1(&lt;&gt;__AnonType0`2[System.Char,System.Collections.Generic.IEnumerable`1[System.Char]])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-named-01.cs">\r
     <type name="C">\r
   </test>\r
   <test name="gtest-optional-02.cs">\r
     <type name="C">\r
-      <method name="Boolean Test3(Nullable`1)" attrs="150">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>160</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Boolean Test3(System.Nullable`1[System.Int32])" attrs="150">\r
         <size>29</size>\r
       </method>\r
-      <method name="Boolean Test2(Nullable`1)" attrs="150">\r
+      <method name="Boolean Test2(System.Nullable`1[System.Int32])" attrs="150">\r
         <size>19</size>\r
       </method>\r
-      <method name="Int32 Test(Nullable`1)" attrs="150">\r
+      <method name="Int32 Test(System.Nullable`1[System.Int32])" attrs="150">\r
         <size>35</size>\r
       </method>\r
-      <method name="Int64 Test4(Nullable`1)" attrs="150">\r
+      <method name="Int64 Test4(System.Nullable`1[System.Int64])" attrs="150">\r
         <size>16</size>\r
       </method>\r
-      <method name="Int32 Main()" attrs="150">\r
-        <size>160</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-optional-03.cs">\r
       <method name="Void TestParams(Int32)" attrs="145">\r
         <size>2</size>\r
       </method>\r
-      <method name="Void TestStruct(Nullable`1)" attrs="145">\r
-        <size>25</size>\r
-      </method>\r
-      <method name="Void TestStruct2(Nullable`1)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="System.String get_Item(Int32, System.String)" attrs="2182">\r
         <size>10</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void TestStruct(System.Nullable`1[System.Int32])" attrs="145">\r
+        <size>25</size>\r
+      </method>\r
+      <method name="Void TestStruct2(System.Nullable`1[S])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-optional-05.cs">\r
       <method name="Void I.Explicit()" attrs="481">\r
         <size>18</size>\r
       </method>\r
-      <method name="IEnumerable`1 Enumerator()" attrs="145">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void GenericMethod[T]()" attrs="134">\r
         <size>18</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>88</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="CallerMemberTest">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Enumerator()" attrs="145">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="CallerMemberTest+&lt;Enumerator&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-optional-23.cs">\r
     <type name="CallerLineNumberTest">\r
   </test>\r
   <test name="gtest-optional-27.cs">\r
     <type name="EnumWrapperCtor`1[T]">\r
-      <method name="Test getValue()" attrs="134">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor(Test)" attrs="6278">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="EnumWrapperCtor`1[T]">\r
+      <method name="EnumWrapperCtor`1+Test[T] getValue()" attrs="134">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-partial-01.cs">\r
     <type name="B`1[U]">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="gtest-partial-06.cs">\r
+    <type name="Test">\r
+      <method name="Void Baz[U]()" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void Bar[U](U)" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void Main()" attrs="150">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-partial-07.cs">\r
+    <type name="A`1[T]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="A`1+B[T]">\r
+      <method name="Void Test()" attrs="134">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="X`1[U]">\r
+      <method name="Void Foo(U)" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="M">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>12</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-partial-08.cs">\r
+    <type name="N.A`2[T1,T2]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="N.A`2+D[T1,T2]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="N.A`2+D+C[T1,T2]">\r
+      <method name="Void Test()" attrs="134">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="N.A`2+D2`1[T1,T2,U]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="N.A`2+D2`1+C2[T1,T2,U]">\r
+      <method name="Void Test()" attrs="134">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="N.X2`1[W]">\r
+      <method name="Void Foo(W)" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="N.X">\r
+      <method name="Void Foo()" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void Main()" attrs="150">\r
+        <size>22</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-partial-09.cs">\r
+    <type name="A.B`1[T]">\r
+      <method name="Void .ctor()" attrs="6276">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="A.B`1+C[T]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="A.B`1+C+A[T]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="A.Bar">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="A.Test">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="gtest-var-04.cs">\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
   </test>\r
   <test name="gtest-variance-11.cs">\r
     <type name="D">\r
-      <method name="Boolean Contra[T](IContravariant`1, IContravariant`1)" attrs="150">\r
-        <size>49</size>\r
-      </method>\r
-      <method name="Boolean Covariant[T](ICovariant`1, ICovariant`1)" attrs="150">\r
-        <size>49</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>58</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Boolean Contra[T](IContravariant`1[T], IContravariant`1[T])" attrs="150">\r
+        <size>49</size>\r
+      </method>\r
+      <method name="Boolean Covariant[T](ICovariant`1[T], ICovariant`1[T])" attrs="150">\r
+        <size>49</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-variance-12.cs">\r
   </test>\r
   <test name="gtest-variance-13.cs">\r
     <type name="A">\r
-      <method name="Void Foo[T](T, IList`1)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Test()" attrs="150">\r
         <size>18</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="B">\r
-      <method name="Void Foo[T](T, I`1)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
-      <method name="Void Test[U](U, I`1)" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="A">\r
+      <method name="Void Foo[T](T, System.Collections.Generic.IList`1[T])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
+    <type name="B">\r
+      <method name="Void Foo[T](T, I`1[T])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void Test[U](U, I`1[U])" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-variance-14.cs">\r
     <type name="A">\r
       </method>\r
     </type>\r
     <type name="C">\r
-      <method name="T Foo[T](T, I`1)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>58</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="T Foo[T](T, I`1[T])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-variance-17.cs">\r
   </test>\r
   <test name="gtest-variance-6.cs">\r
     <type name="Cov1`1[U]">\r
-      <method name="ICovariant`1 Invoke(IContravariant`1)" attrs="454">\r
-        <size>0</size>\r
-      </method>\r
-      <method name="IAsyncResult BeginInvoke(IContravariant`1, System.AsyncCallback, System.Object)" attrs="454">\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
-      <method name="ICovariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+    </type>\r
+    <type name="Cov2`1[U]">\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
+    </type>\r
+    <type name="Cov3`1[U]">\r
       <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="Cov2`1[U]">\r
-      <method name="ICovariant`1 Invoke(IContravariant`1)" attrs="454">\r
+    <type name="Cov4`1[U]">\r
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(IContravariant`1, System.AsyncCallback, System.Object)" attrs="454">\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
-      <method name="ICovariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+    </type>\r
+    <type name="Cov5`1[U]">\r
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
       <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="Cov3`1[U]">\r
-      <method name="ICovariant`1 Invoke(IContravariant`1)" attrs="454">\r
+    <type name="Contra5`1[U]">\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(IContravariant`1, System.AsyncCallback, System.Object)" attrs="454">\r
+    </type>\r
+    <type name="Contra6`1[U]">\r
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="ICovariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
+    </type>\r
+    <type name="Contra7`1[U]">\r
       <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="Cov4`1[U]">\r
-      <method name="ICovariant`1 Invoke()" attrs="454">\r
+    <type name="Contra8`1[U]">\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)" attrs="454">\r
-        <size>0</size>\r
+    </type>\r
+    <type name="Program">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>2</size>\r
       </method>\r
-      <method name="ICovariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
-        <size>0</size>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
       </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+    </type>\r
+    <type name="Cov1`1[U]">\r
+      <method name="ICovariant`1[U] Invoke(IContravariant`1[U])" attrs="454">\r
         <size>0</size>\r
       </method>\r
-    </type>\r
-    <type name="Cov5`1[U]">\r
-      <method name="IContravariant`1 Invoke()" attrs="454">\r
+      <method name="IAsyncResult BeginInvoke(IContravariant`1[U], System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)" attrs="454">\r
+      <method name="ICovariant`1[U] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IContravariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+    </type>\r
+    <type name="Cov2`1[U]">\r
+      <method name="ICovariant`1[U] Invoke(IContravariant`1[ICovariant`1[U]])" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+      <method name="IAsyncResult BeginInvoke(IContravariant`1[ICovariant`1[U]], System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-    </type>\r
-    <type name="Contra5`1[U]">\r
-      <method name="IContravariant`1 Invoke(U, ICovariant`1)" attrs="454">\r
+      <method name="ICovariant`1[U] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(U, ICovariant`1, System.AsyncCallback, System.Object)" attrs="454">\r
+    </type>\r
+    <type name="Cov3`1[U]">\r
+      <method name="ICovariant`1[IContravariant`1[IContravariant`1[U]]] Invoke(IContravariant`1[IContravariant`1[IContravariant`1[ICovariant`1[U]]]])" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IContravariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+      <method name="IAsyncResult BeginInvoke(IContravariant`1[IContravariant`1[IContravariant`1[ICovariant`1[U]]]], System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+      <method name="ICovariant`1[IContravariant`1[IContravariant`1[U]]] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="Contra6`1[U]">\r
-      <method name="IContravariant`1 Invoke()" attrs="454">\r
+    <type name="Cov4`1[U]">\r
+      <method name="ICovariant`1[System.Int32] Invoke()" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)" attrs="454">\r
+      <method name="ICovariant`1[System.Int32] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IContravariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+    </type>\r
+    <type name="Cov5`1[U]">\r
+      <method name="IContravariant`1[System.Int32] Invoke()" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+      <method name="IContravariant`1[System.Int32] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="Contra7`1[U]">\r
-      <method name="IContravariant`1 Invoke(U, ICovariant`1)" attrs="454">\r
+    <type name="Contra5`1[U]">\r
+      <method name="IContravariant`1[U[]] Invoke(U, ICovariant`1[U])" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(U, ICovariant`1, System.AsyncCallback, System.Object)" attrs="454">\r
+      <method name="IAsyncResult BeginInvoke(U, ICovariant`1[U], System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IContravariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+      <method name="IContravariant`1[U[]] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+    </type>\r
+    <type name="Contra6`1[U]">\r
+      <method name="IContravariant`1[U[]] Invoke()" attrs="454">\r
         <size>0</size>\r
       </method>\r
-    </type>\r
-    <type name="Contra8`1[U]">\r
-      <method name="IContravariant`1 Invoke(U, ICovariant`1)" attrs="454">\r
+      <method name="IContravariant`1[U[]] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(U, ICovariant`1, System.AsyncCallback, System.Object)" attrs="454">\r
+    </type>\r
+    <type name="Contra7`1[U]">\r
+      <method name="IContravariant`1[U] Invoke(U, ICovariant`1[U])" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IContravariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+      <method name="IAsyncResult BeginInvoke(U, ICovariant`1[U], System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+      <method name="IContravariant`1[U] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="Program">\r
-      <method name="Void Main()" attrs="150">\r
-        <size>2</size>\r
+    <type name="Contra8`1[U]">\r
+      <method name="IContravariant`1[ICovariant`1[U]] Invoke(U, ICovariant`1[U])" attrs="454">\r
+        <size>0</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+      <method name="IAsyncResult BeginInvoke(U, ICovariant`1[U], System.AsyncCallback, System.Object)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="IContravariant`1[ICovariant`1[U]] EndInvoke(IAsyncResult)" attrs="454">\r
+        <size>0</size>\r
       </method>\r
     </type>\r
   </test>\r
   </test>\r
   <test name="gtest-variance-9.cs">\r
     <type name="Test">\r
-      <method name="Void Foo(IIn`1)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>18</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void Foo(IIn`1[System.String])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-1.cs">\r
         <size>2</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>51</size>\r
+        <size>178</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void test2()" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void test3()" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void test4()" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-182.cs">\r
     </type>\r
   </test>\r
   <test name="test-285.cs">\r
-    <type name="T">\r
-      <method name="Int32 Main()" attrs="150">\r
-        <size>11</size>\r
+    <type name="Test">\r
+      <method name="Int32 test1()" attrs="145">\r
+        <size>73</size>\r
+      </method>\r
+      <method name="Int32 test2()" attrs="145">\r
+        <size>73</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="145">\r
+        <size>46</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   <test name="test-476.cs">\r
     <type name="Test">\r
       <method name="Void Main()" attrs="150">\r
-        <size>2</size>\r
+        <size>8</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   <test name="test-510.cs">\r
     <type name="Foo">\r
       <method name="Void test39(Int32 ByRef)" attrs="145">\r
-        <size>37</size>\r
+        <size>41</size>\r
       </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>29</size>\r
   <test name="test-618.cs">\r
     <type name="C">\r
       <method name="Void ZeroBasedReductions()" attrs="150">\r
-        <size>16</size>\r
+        <size>22</size>\r
       </method>\r
       <method name="Void ZeroBasedReductionsWithConversion()" attrs="150">\r
-        <size>16</size>\r
+        <size>18</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>41</size>\r
   <test name="test-640.cs">\r
     <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>128</size>\r
+        <size>125</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
     </type>\r
     <type name="Program">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>438</size>\r
+        <size>410</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-867.cs">\r
+    <type name="Test">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="User">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="BaseController">\r
+      <method name="IUser get_User()" attrs="2502">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Void set_User(IUser)" attrs="2502">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="BaseJobController">\r
+      <method name="User get_User()" attrs="2182">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Void set_User(User)" attrs="2182">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="JobController">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-868.cs">\r
+    <type name="C">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>168</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-869.cs">\r
+    <type name="C">\r
+      <method name="C op_BitwiseAnd(C, E)" attrs="2198">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="E op_Implicit(C)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void .cctor()" attrs="6289">\r
+        <size>11</size>\r
+      </method>\r
+    </type>\r
+    <type name="FooClass">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>70</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-87.cs">\r
     <type name="Top">\r
       <method name="Int32 Main()" attrs="150">\r
       <method name="Int32 GetItem()" attrs="150">\r
         <size>59</size>\r
       </method>\r
-      <method name="IEnumerable`1 GetItems()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>76</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] GetItems()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;GetItems&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-105.cs">\r
     <type name="Hello">\r
       </method>\r
     </type>\r
     <type name="Foo">\r
-      <method name="IEnumerable`1 Test(Foo)" attrs="134">\r
-        <size>49</size>\r
-      </method>\r
       <method name="Void Hello(Int32)" attrs="134">\r
         <size>20</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;Foo&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>113</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo">\r
+      <method name="System.Collections.Generic.IEnumerable`1[Foo] Test(Foo)" attrs="134">\r
+        <size>42</size>\r
+      </method>\r
+    </type>\r
+    <type name="Foo+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[Foo] System.Collections.Generic.IEnumerable&lt;Foo&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-106.cs">\r
     <type name="Foo`2[R,S]">\r
       </method>\r
     </type>\r
     <type name="X">\r
-      <method name="IEnumerable`1 Test(Int32)" attrs="150">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>62</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>181</size>\r
       </method>\r
         <size>23</size>\r
       </method>\r
     </type>\r
+    <type name="X">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test(Int32)" attrs="150">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-108.cs">\r
     <type name="Foo">\r
       <method name="Foo op_Implicit(Test)" attrs="2198">\r
         <size>38</size>\r
       </method>\r
-      <method name="IEnumerable`1 op_Addition(Test, Test)" attrs="2198">\r
-        <size>51</size>\r
-      </method>\r
-      <method name="IEnumerable`1 get_Foo()" attrs="2182">\r
-        <size>23</size>\r
-      </method>\r
-      <method name="Void set_Foo(IEnumerable`1)" attrs="2182">\r
-        <size>12</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>82</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;Test&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>113</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>72</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] get_Foo()" attrs="2182">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="Void set_Foo(System.Collections.Generic.IEnumerable`1[System.Int32])" attrs="2182">\r
+        <size>12</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[Test] op_Addition(Test, Test)" attrs="2198">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;op_Addition&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[Test] System.Collections.Generic.IEnumerable&lt;Test&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-11.cs">\r
     <type name="D">\r
   </test>\r
   <test name="test-anon-110.cs">\r
     <type name="X">\r
-      <method name="IEnumerable`1 Test[T](T, T)" attrs="134">\r
-        <size>51</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>110</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>125</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="X">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Test[T](T, T)" attrs="134">\r
+        <size>44</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Test&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-111.cs">\r
     <type name="Foo">\r
       <method name="Void Closure(EmptyDelegate)" attrs="145">\r
         <size>2</size>\r
       </method>\r
-      <method name="System.Collections.Generic.List`1[T] Query[T](Nullable`1 ByRef)" attrs="145">\r
-        <size>61</size>\r
-      </method>\r
       <method name="T MakeSomething[T]()" attrs="145">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="BaseObject">\r
+      <method name="System.Collections.Generic.List`1[T] Query[T](System.Nullable`1[System.Int32] ByRef)" attrs="145">\r
+        <size>61</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-122.cs">\r
     <type name="D1">\r
   </test>\r
   <test name="test-anon-123.cs">\r
     <type name="MemberAccessData">\r
-      <method name="Void set_MyTypeProperty(Nullable`1)" attrs="2182">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Nullable`1 get_MyTypeProperty()" attrs="2182">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="MemberAccessData">\r
+      <method name="Void set_MyTypeProperty(System.Nullable`1[System.Int32])" attrs="2182">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Int32] get_MyTypeProperty()" attrs="2182">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-124.cs">\r
     <type name="Disposable`1[T]">\r
         <size>42</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>645</size>\r
+        <size>683</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test+&lt;Finally&gt;c__AnonStorey6`1[T]">\r
+    <type name="Test+&lt;ArrayMultiMutate&gt;c__AnonStoreyC`1[T]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test">\r
+      <method name="System.Func`1[T] Catch_2[T](T)" attrs="145">\r
+        <size>34</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Catch_2&gt;c__AnonStorey6`1[T]">\r
       <method name="T &lt;&gt;m__6()" attrs="131">\r
-        <size>62</size>\r
+        <size>42</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test+&lt;Using&gt;c__AnonStorey7`1[T]">\r
+    <type name="Test+&lt;Finally&gt;c__AnonStorey7`1[T]">\r
       <method name="T &lt;&gt;m__7()" attrs="131">\r
-        <size>15</size>\r
+        <size>62</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test+&lt;Switch&gt;c__AnonStorey8`1[T]">\r
+    <type name="Test+&lt;Using&gt;c__AnonStorey8`1[T]">\r
       <method name="T &lt;&gt;m__8()" attrs="131">\r
-        <size>16</size>\r
+        <size>15</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test+&lt;ForForeach&gt;c__AnonStorey9`1[T]">\r
-      <method name="System.Collections.Generic.List`1[T] &lt;&gt;m__9()" attrs="131">\r
-        <size>67</size>\r
+    <type name="Test+&lt;Switch&gt;c__AnonStorey9`1[T]">\r
+      <method name="T &lt;&gt;m__9()" attrs="131">\r
+        <size>16</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test+&lt;ArrayMutate&gt;c__AnonStoreyA`1[T]">\r
-      <method name="Void &lt;&gt;m__A(Int32)" attrs="131">\r
-        <size>39</size>\r
+    <type name="Test+&lt;ForForeach&gt;c__AnonStoreyA`1[T]">\r
+      <method name="System.Collections.Generic.List`1[T] &lt;&gt;m__A()" attrs="131">\r
+        <size>67</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test+&lt;ArrayMultiMutate&gt;c__AnonStoreyB`1[T]">\r
-      <method name="T[][] &lt;&gt;m__B()" attrs="131">\r
-        <size>58</size>\r
+    <type name="Test+&lt;ArrayMutate&gt;c__AnonStoreyB`1[T]">\r
+      <method name="Void &lt;&gt;m__B(Int32)" attrs="131">\r
+        <size>39</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test+&lt;ArrayMultiMutate&gt;c__AnonStoreyC`1[T]">\r
-      <method name="Int32 &lt;&gt;m__C()" attrs="131">\r
+      <method name="T[][] &lt;&gt;m__C()" attrs="131">\r
+        <size>58</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;ArrayMultiMutate&gt;c__AnonStoreyD`1[T]">\r
+      <method name="Int32 &lt;&gt;m__D()" attrs="131">\r
         <size>35</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test+&lt;NestedTypeMutate&gt;c__AnonStoreyD`1[T]">\r
-      <method name="T[] &lt;&gt;m__D()" attrs="131">\r
+    <type name="Test+&lt;NestedTypeMutate&gt;c__AnonStoreyE`1[T]">\r
+      <method name="T[] &lt;&gt;m__E()" attrs="131">\r
         <size>45</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
       </method>\r
     </type>\r
     <type name="Test">\r
-      <method name="Void Foo[T](IEqualityComparer`1)" attrs="145">\r
-        <size>28</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>16</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="Void Foo[T](System.Collections.Generic.IEqualityComparer`1[T])" attrs="145">\r
+        <size>28</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-126.cs">\r
     <type name="MonoBugs.BrokenGenericCast">\r
       <method name="Boolean TryAction[T](Test+Creator`1[T], T ByRef)" attrs="145">\r
         <size>25</size>\r
       </method>\r
-      <method name="Boolean Func1[T](IList`1, Boolean, T ByRef)" attrs="145">\r
-        <size>40</size>\r
-      </method>\r
-      <method name="T Item[T](IList`1)" attrs="150">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="T GetSingleItem[T](IList`1)" attrs="150">\r
-        <size>18</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>16</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="Boolean Func1[T](System.Collections.Generic.IList`1[T], Boolean, T ByRef)" attrs="145">\r
+        <size>40</size>\r
+      </method>\r
+      <method name="T Item[T](System.Collections.Generic.IList`1[T])" attrs="150">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="T GetSingleItem[T](System.Collections.Generic.IList`1[T])" attrs="150">\r
+        <size>18</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-13.cs">\r
     <type name="D">\r
       <method name="Void Assert(System.Action`1[System.Int32])" attrs="150">\r
         <size>10</size>\r
       </method>\r
-      <method name="Void Foo[T](IList`1)" attrs="150">\r
-        <size>32</size>\r
-      </method>\r
       <method name="Void Main(System.String[])" attrs="150">\r
         <size>8</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-  </test>\r
-  <test name="test-anon-133.cs">\r
-    <type name="IEnumerableRocks">\r
-      <method name="System.String Implode[TSource,TResult](IEnumerable`1, System.String, System.Func`2[TSource,TResult])" attrs="150">\r
-        <size>41</size>\r
-      </method>\r
-      <method name="System.String Implode[TSource](IEnumerable`1, System.String, System.Action`2[System.Text.StringBuilder,TSource])" attrs="150">\r
-        <size>146</size>\r
+    <type name="Program">\r
+      <method name="Void Foo[T](System.Collections.Generic.IList`1[T])" attrs="150">\r
+        <size>32</size>\r
       </method>\r
     </type>\r
+  </test>\r
+  <test name="test-anon-133.cs">\r
     <type name="Test">\r
       <method name="Void Main()" attrs="150">\r
         <size>68</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="IEnumerableRocks">\r
+      <method name="System.String Implode[TSource,TResult](System.Collections.Generic.IEnumerable`1[TSource], System.String, System.Func`2[TSource,TResult])" attrs="150">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="System.String Implode[TSource](System.Collections.Generic.IEnumerable`1[TSource], System.String, System.Action`2[System.Text.StringBuilder,TSource])" attrs="150">\r
+        <size>146</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-134.cs">\r
     <type name="MyClass">\r
   </test>\r
   <test name="test-anon-138.cs">\r
     <type name="Foo`1[T]">\r
-      <method name="Boolean ContainsAll[U](IEnumerable`1)" attrs="134">\r
-        <size>48</size>\r
-      </method>\r
       <method name="Boolean Contains(T)" attrs="134">\r
         <size>10</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo`1[T]">\r
+      <method name="Boolean ContainsAll[U](System.Collections.Generic.IEnumerable`1[U])" attrs="134">\r
+        <size>48</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-139.cs">\r
     <type name="Test">\r
       <method name="Void Test_1[T](T)" attrs="134">\r
         <size>34</size>\r
       </method>\r
-      <method name="Void Test_2[T](Nullable`1)" attrs="134">\r
-        <size>34</size>\r
-      </method>\r
       <method name="T Test_3[T](System.Object)" attrs="134">\r
         <size>59</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="Void Test_2[T](System.Nullable`1[T])" attrs="134">\r
+        <size>34</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-14.cs">\r
     <type name="X">\r
   </test>\r
   <test name="test-anon-141.cs">\r
     <type name="C">\r
-      <method name="Decimal Average[TSource](IEnumerable`1, System.Func`2[TSource,System.Decimal])" attrs="150">\r
-        <size>45</size>\r
-      </method>\r
-      <method name="TResult Average[TElement,TAggregate,TResult](IEnumerable`1, System.Func`3[TAggregate,TElement,TAggregate], System.Func`3[TAggregate,TElement,TResult])" attrs="145">\r
-        <size>7</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       <method name="Decimal &lt;Average`1&gt;m__1[TSource](Decimal, Decimal)" attrs="145">\r
         <size>15</size>\r
       </method>\r
+      <method name="Decimal Average[TSource](System.Collections.Generic.IEnumerable`1[TSource], System.Func`2[TSource,System.Decimal])" attrs="150">\r
+        <size>45</size>\r
+      </method>\r
+      <method name="TResult Average[TElement,TAggregate,TResult](System.Collections.Generic.IEnumerable`1[TElement], System.Func`3[TAggregate,TElement,TAggregate], System.Func`3[TAggregate,TElement,TResult])" attrs="145">\r
+        <size>7</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-142.cs">\r
       <method name="Void Main()" attrs="150">\r
         <size>33</size>\r
       </method>\r
-      <method name="Void Test[T](IList`1)" attrs="150">\r
-        <size>34</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="Void &lt;&gt;m__0()" attrs="131">\r
         <size>47</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__1(IList`1)" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="TestCase">\r
+      <method name="Void Test[T](System.Collections.Generic.IList`1[System.Collections.Generic.IList`1[T]])" attrs="150">\r
+        <size>34</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestCase+&lt;Test&gt;c__AnonStorey0`1[T]">\r
+      <method name="Int32 &lt;&gt;m__1(System.Collections.Generic.IList`1[System.Collections.Generic.IList`1[T]])" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-162.cs">\r
     <type name="D">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-anon-171.cs">\r
+    <type name="TestAnonSwitch.MyClass">\r
+      <method name="Void add_FirstEvent(System.EventHandler`1[System.EventArgs])" attrs="2182">\r
+        <size>42</size>\r
+      </method>\r
+      <method name="Void remove_FirstEvent(System.EventHandler`1[System.EventArgs])" attrs="2182">\r
+        <size>42</size>\r
+      </method>\r
+      <method name="Void add_SecondEvent(System.EventHandler`1[System.EventArgs])" attrs="2182">\r
+        <size>42</size>\r
+      </method>\r
+      <method name="Void remove_SecondEvent(System.EventHandler`1[System.EventArgs])" attrs="2182">\r
+        <size>42</size>\r
+      </method>\r
+      <method name="Void Trigger()" attrs="134">\r
+        <size>30</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestAnonSwitch.Tester">\r
+      <method name="Void Test()" attrs="134">\r
+        <size>157</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestAnonSwitch.MainClass">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestAnonSwitch.Tester+&lt;Test&gt;c__AnonStorey0">\r
+      <method name="Void &lt;&gt;m__0(System.Object, System.EventArgs)" attrs="131">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="Void &lt;&gt;m__1(System.Object, System.EventArgs)" attrs="131">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-anon-18.cs">\r
     <type name="A">\r
       <method name="Void Invoke()" attrs="454">\r
   <test name="test-anon-50.cs">\r
     <type name="Test">\r
       <method name="IEnumerable Foo(Int32)" attrs="134">\r
-        <size>37</size>\r
+        <size>30</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>135</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-51.cs">\r
   <test name="test-anon-52.cs">\r
     <type name="X">\r
       <method name="IEnumerator GetIt(System.Int32[])" attrs="145">\r
-        <size>29</size>\r
+        <size>22</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>40</size>\r
   <test name="test-anon-63.cs">\r
     <type name="X">\r
       <method name="IEnumerator GetIt(System.Int32[])" attrs="145">\r
-        <size>29</size>\r
+        <size>22</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>40</size>\r
     </type>\r
     <type name="Tester+&lt;ArrayAccessTest_7&gt;c__async6">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>385</size>\r
+        <size>426</size>\r
       </method>\r
       <method name="Int32 &lt;&gt;m__14()" attrs="145">\r
         <size>9</size>\r
     </type>\r
     <type name="Tester+&lt;ArrayAccessTest_8&gt;c__async7">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>670</size>\r
+        <size>792</size>\r
       </method>\r
       <method name="Int32 &lt;&gt;m__15()" attrs="145">\r
         <size>9</size>\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>273</size>\r
       </method>\r
-      <method name="Nullable`1 &lt;&gt;m__1F()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;AssignTest_3&gt;c__asyncB">\r
       <method name="Void MoveNext()" attrs="486">\r
     </type>\r
     <type name="Tester+&lt;BinaryTest_3&gt;c__asyncE">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>1082</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__28()" attrs="145">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__29()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__2A()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__2B()" attrs="145">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__2C()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__2D()" attrs="145">\r
-        <size>14</size>\r
+        <size>1137</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;BinaryTest_4&gt;c__asyncF">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>809</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__2E()" attrs="145">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__2F()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__30()" attrs="145">\r
-        <size>20</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__31()" attrs="145">\r
-        <size>17</size>\r
+        <size>872</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;ArrayAccessTest_1&gt;c__async0">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Nullable`1 &lt;&gt;m__3D()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
       <method name="Byte &lt;&gt;m__3E()" attrs="145">\r
         <size>9</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Nullable`1 &lt;&gt;m__59()" attrs="145">\r
-        <size>14</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;LogicalUserOperator_1&gt;c__async2A">\r
       <method name="Void MoveNext()" attrs="486">\r
     </type>\r
     <type name="Tester+&lt;UnaryTest_2&gt;c__async3C">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>354</size>\r
+        <size>339</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
     </type>\r
     <type name="Tester+&lt;UnaryTest_3&gt;c__async3D">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>369</size>\r
+        <size>372</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;UnaryTest_2&gt;c__async3C+&lt;UnaryTest_2&gt;c__AnonStorey47">\r
-      <method name="Nullable`1 &lt;&gt;m__7D()" attrs="131">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Tester+&lt;AssignTest_2&gt;c__asyncA">\r
+      <method name="System.Nullable`1[System.SByte] &lt;&gt;m__1F()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;BinaryTest_3&gt;c__asyncE">\r
+      <method name="System.Nullable`1[System.Boolean] &lt;&gt;m__28()" attrs="145">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Boolean] &lt;&gt;m__29()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Boolean] &lt;&gt;m__2A()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Boolean] &lt;&gt;m__2B()" attrs="145">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Boolean] &lt;&gt;m__2C()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Boolean] &lt;&gt;m__2D()" attrs="145">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;BinaryTest_4&gt;c__asyncF">\r
+      <method name="System.Nullable`1[System.Int16] &lt;&gt;m__2E()" attrs="145">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Byte] &lt;&gt;m__2F()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Decimal] &lt;&gt;m__30()" attrs="145">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Decimal] &lt;&gt;m__31()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;CoalescingTest_2&gt;c__async19">\r
+      <method name="System.Nullable`1[System.Int16] &lt;&gt;m__3D()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IsTest_2&gt;c__async29">\r
+      <method name="System.Nullable`1[System.UInt32] &lt;&gt;m__59()" attrs="145">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;UnaryTest_2&gt;c__async3C+&lt;UnaryTest_2&gt;c__AnonStorey47">\r
+      <method name="System.Nullable`1[System.Int16] &lt;&gt;m__7D()" attrs="131">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-async-14.cs">\r
     <type name="C">\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="A+&lt;async&gt;c__async0">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>38</size>\r
-      </method>\r
-    </type>\r
     <type name="A+&lt;async&gt;c__async1">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>37</size>\r
+        <size>38</size>\r
       </method>\r
     </type>\r
     <type name="A">\r
         <size>35</size>\r
       </method>\r
     </type>\r
-    <type name="A+&lt;CastTest&gt;c__async2">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>285</size>\r
-      </method>\r
-    </type>\r
-    <type name="A+&lt;async&gt;c__async0">\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
-        <size>13</size>\r
-      </method>\r
-    </type>\r
     <type name="A+&lt;async&gt;c__async1">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="A+&lt;CastTest&gt;c__async2">\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
-        <size>13</size>\r
-      </method>\r
-    </type>\r
     <type name="C">\r
       <method name="Void Test(Boolean)" attrs="145">\r
         <size>20</size>\r
         <size>14</size>\r
       </method>\r
     </type>\r
+    <type name="A">\r
+      <method name="Void Iasync.async()" attrs="481">\r
+        <size>27</size>\r
+      </method>\r
+    </type>\r
+    <type name="A+&lt;async&gt;c__async2">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>37</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="A+&lt;CastTest&gt;c__async3">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>285</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="A+async&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>31</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-async-23.cs">\r
     <type name="MyContext">\r
   </test>\r
   <test name="test-async-30.cs">\r
     <type name="C">\r
-      <method name="IEnumerable`1 Test(System.String)" attrs="129">\r
-        <size>37</size>\r
-      </method>\r
-      <method name="IEnumerable`1 Test2()" attrs="129">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>214</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>138</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>137</size>\r
       </method>\r
         <size>13</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] Test(System.String)" attrs="129">\r
+        <size>30</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] Test2()" attrs="129">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.String] System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test2&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.String] System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-async-31.cs">\r
     <type name="C">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-async-42.cs">\r
+    <type name="A">\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] OpenAsync()" attrs="134">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="A get_Connection()" attrs="2182">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>26</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] Foo()" attrs="129">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="T Test[T](System.Func`1[T])" attrs="129">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task &lt;Foo&gt;m__0()" attrs="129">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Foo&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>189</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Foo&gt;c__async3">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>169</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-async-43.cs">\r
     <type name="A">\r
       <method name="System.Threading.Tasks.Task`1[System.Int32] GetValue(Int32)" attrs="134">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-async-46.cs">\r
+    <type name="X">\r
+      <method name="Void Foo()" attrs="129">\r
+        <size>27</size>\r
+      </method>\r
+      <method name="Void Main()" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Foo&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>158</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-async-47.cs">\r
+    <type name="C">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>12</size>\r
+      </method>\r
+      <method name="Void Test()" attrs="129">\r
+        <size>32</size>\r
+      </method>\r
+      <method name="Void &lt;Test&gt;m__0(System.Object, System.EventArgs)" attrs="129">\r
+        <size>35</size>\r
+      </method>\r
+      <method name="Void &lt;Test&gt;m__1()" attrs="129">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="View">\r
+      <method name="Void add_Click(System.EventHandler)" attrs="2182">\r
+        <size>42</size>\r
+      </method>\r
+      <method name="Void remove_Click(System.EventHandler)" attrs="2182">\r
+        <size>42</size>\r
+      </method>\r
+      <method name="Void Run()" attrs="134">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Builder">\r
+      <method name="Void SetButton(System.Action)" attrs="134">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>61</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-async-48.cs">\r
+    <type name="App">\r
+      <method name="System.Threading.Tasks.Task Test()" attrs="134">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task &lt;Test&gt;m__0()" attrs="129">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>18</size>\r
+      </method>\r
+    </type>\r
+    <type name="X">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="App+&lt;Test&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>173</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="App+&lt;Test&gt;c__async1">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>51</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-cls-00.cs">\r
     <type name="CLSCLass_6">\r
       <method name="Void add_Disposed(Delegate)" attrs="2182">\r
       <method name="Void Switch_1(Int32)" attrs="129">\r
         <size>61</size>\r
       </method>\r
-      <method name="Void Switch_2(Nullable`1)" attrs="129">\r
-        <size>57</size>\r
-      </method>\r
       <method name="Void Switch_3(System.String)" attrs="129">\r
         <size>211</size>\r
       </method>\r
       <method name="Void ForEach_4(System.Int32[,])" attrs="129">\r
         <size>78</size>\r
       </method>\r
+      <method name="Void Switch_2(System.Nullable`1[System.Int32])" attrs="129">\r
+        <size>57</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-debug-12.cs">\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
-      <method name="IEnumerable`1 Iter_1()" attrs="129">\r
-        <size>23</size>\r
-      </method>\r
       <method name="IEnumerable Iter_2()" attrs="129">\r
         <size>23</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>72</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Iter_1()" attrs="129">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Iter_1&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Iter_2&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-debug-14.cs">\r
     <type name="C">\r
   </test>\r
   <test name="test-debug-21.cs">\r
     <type name="C">\r
-      <method name="IEnumerable`1 Test()" attrs="129">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Void &lt;&gt;__Finally0()" attrs="129">\r
         <size>13</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test()" attrs="129">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-debug-22.cs">\r
     <type name="A">\r
       </method>\r
     </type>\r
     <type name="C">\r
-      <method name="IEnumerable`1 GetIter()" attrs="134">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Int32 Foo()" attrs="198">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>82</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] GetIter()" attrs="134">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;GetIter&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-debug-23.cs">\r
     <type name="Program">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-debug-26.cs">\r
+    <type name="P">\r
+      <method name="Void Foo()" attrs="129">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void Main()" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-debug-27.cs">\r
+    <type name="S">\r
+      <method name="Int32 op_Implicit(S)" attrs="2198">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Void .ctor(Int32)" attrs="6278">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Int32 A()" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 B(C)" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="C Test()" attrs="150">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.String Foo()" attrs="134">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Void Test_1()" attrs="129">\r
+        <size>46</size>\r
+      </method>\r
+      <method name="Void Test_2()" attrs="129">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Void Test_3()" attrs="129">\r
+        <size>32</size>\r
+      </method>\r
+      <method name="Void Test_4()" attrs="129">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-externalias-01.cs">\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>149</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-02.cs">\r
   <test name="test-iter-03.cs">\r
     <type name="X">\r
       <method name="IEnumerable GetIt(System.Int32[])" attrs="145">\r
-        <size>37</size>\r
+        <size>30</size>\r
       </method>\r
       <method name="IEnumerable GetMulti(System.Int32[,])" attrs="145">\r
-        <size>37</size>\r
+        <size>30</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>275</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>159</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>246</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="X+&lt;GetIt&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;GetMulti&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-iter-04.cs">\r
     <type name="X">\r
       <method name="IEnumerable GetRange(Int32, Int32)" attrs="145">\r
-        <size>51</size>\r
+        <size>37</size>\r
       </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>104</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>130</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-05.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>191</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-06.cs">\r
     <type name="S">\r
       <method name="IEnumerable Get(Int32)" attrs="134">\r
-        <size>49</size>\r
+        <size>42</size>\r
       </method>\r
       <method name="IEnumerable GetS(Int32)" attrs="150">\r
-        <size>37</size>\r
+        <size>30</size>\r
       </method>\r
     </type>\r
     <type name="X">\r
       <method name="IEnumerable Get(Int32)" attrs="129">\r
-        <size>37</size>\r
+        <size>30</size>\r
       </method>\r
       <method name="IEnumerable GetS(Int32)" attrs="145">\r
-        <size>37</size>\r
+        <size>30</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>449</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>198</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>159</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>154</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>159</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="S+&lt;Get&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
+    <type name="S+&lt;GetS&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Get&gt;c__Iterator2">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;GetS&gt;c__Iterator3">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-iter-07.cs">\r
     <type name="Test">\r
       <method name="IEnumerable Foo(Int32)" attrs="134">\r
-        <size>37</size>\r
+        <size>30</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>264</size>\r
       </method>\r
       <method name="Void Reset()" attrs="486">\r
         <size>6</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
       <method name="Void &lt;&gt;__Finally0()" attrs="129">\r
         <size>13</size>\r
       </method>\r
       <method name="Void &lt;&gt;__Finally2()" attrs="129">\r
         <size>13</size>\r
       </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-08.cs">\r
     </type>\r
     <type name="X">\r
       <method name="IEnumerable Test(Int32, Int32)" attrs="150">\r
-        <size>51</size>\r
+        <size>37</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>210</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>377</size>\r
       </method>\r
       <method name="Void &lt;&gt;__Finally0()" attrs="129">\r
         <size>23</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-09.cs">\r
         <size>2</size>\r
       </method>\r
       <method name="IEnumerable get_Item(Int32)" attrs="2177">\r
-        <size>37</size>\r
+        <size>30</size>\r
       </method>\r
       <method name="Void set_Item(Int32, IEnumerable)" attrs="2177">\r
         <size>2</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>168</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-11.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>190</size>\r
       </method>\r
       <method name="Void &lt;&gt;__Finally0()" attrs="129">\r
         <size>20</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-13.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>27</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-14.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>98</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-15.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>38</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-17.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>168</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-18.cs">\r
     <type name="test">\r
       <method name="IEnumerable testen(Int32)" attrs="134">\r
-        <size>37</size>\r
+        <size>30</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>214</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-19.cs">\r
   <test name="test-iter-21.cs">\r
     <type name="X">\r
       <method name="IEnumerable GetIt(System.Int32[])" attrs="145">\r
-        <size>37</size>\r
+        <size>30</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>138</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>242</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="X+&lt;GetIt&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-iter-22.cs">\r
     <type name="Test">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>117</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="X+&lt;GetIt2&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-iter-25.cs">\r
     <type name="D">\r
       <method name="Void RunOnThread(System.Action)" attrs="150">\r
         <size>8</size>\r
       </method>\r
-      <method name="IEnumerable`1 TagsError()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>68</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
-        <size>75</size>\r
+        <size>60</size>\r
       </method>\r
       <method name="Void Dispose()" attrs="486">\r
         <size>1</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="UploadAction">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Object] TagsError()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="UploadAction+&lt;TagsError&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-iter-26.cs">\r
     <type name="C">\r
       <method name="IEnumerable Test(Boolean, Int32)" attrs="150">\r
-        <size>51</size>\r
+        <size>37</size>\r
       </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>10</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>101</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-named-01.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>76</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-partial-13.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
-        <size>37</size>\r
+        <size>32</size>\r
       </method>\r
       <method name="Void Dispose()" attrs="486">\r
         <size>1</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
-        <size>37</size>\r
+        <size>32</size>\r
       </method>\r
       <method name="Void Dispose()" attrs="486">\r
         <size>1</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
-        <size>37</size>\r
+        <size>32</size>\r
       </method>\r
       <method name="Void Dispose()" attrs="486">\r
         <size>1</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo.X+&lt;Attempts2&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="Foo.X+&lt;&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="Foo.X+&lt;&gt;c__Iterator2">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-partial-16.cs">\r
     <type name="A.C">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-partial-31.cs">\r
+    <type name="TestPartialOverride.BaseNamespace.Base">\r
+      <method name="Void OverrideMe()" attrs="452">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6276">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestPartialOverride.Outer.Nested.Namespace.Inherits">\r
+      <method name="Void OverrideMe()" attrs="196">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="Void DoesSomethignElse()" attrs="134">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestPartialOverride.Outer.C">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>12</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-var-01.cs">\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
index 89af0a942b7d9dab14608b87a956113117c0ff81..abdaed2d135dfacb23760b91f23414e075e00228 100644 (file)
@@ -41,9 +41,14 @@ namespace Mono {
                        var cmd = new CommandLineParser (Console.Out);
                        cmd.UnknownOptionHandler += HandleExtraArguments;
 
-                       var settings = cmd.ParseArguments (args);
-                       if (settings == null)
+                       // Enable unsafe code by default
+                       var settings = new CompilerSettings () {
+                               Unsafe = true
+                       };
+
+                       if (!cmd.ParseArguments (settings, args))
                                return 1;
+
                        var startup_files = new string [settings.SourceFiles.Count];
                        int i = 0;
                        foreach (var source in settings.SourceFiles)
@@ -63,6 +68,7 @@ namespace Mono {
 
                        eval.InteractiveBaseClass = typeof (InteractiveBaseShell);
                        eval.DescribeTypeExpressions = true;
+                       eval.WaitOnTask = true;
 
                        CSharpShell shell;
 #if !ON_DOTNET
diff --git a/mcs/tools/ildasm/DataConverter.cs b/mcs/tools/ildasm/DataConverter.cs
deleted file mode 100644 (file)
index d0bf047..0000000
+++ /dev/null
@@ -1,1836 +0,0 @@
-//
-// Authors:
-//   Miguel de Icaza (miguel@novell.com)
-//
-// See the following url for documentation:
-//     http://www.mono-project.com/Mono_DataConvert
-//
-// Compilation Options:
-//     MONO_DATACONVERTER_PUBLIC:
-//         Makes the class public instead of the default internal.
-//
-//     MONO_DATACONVERTER_STATIC_METHODS:     
-//         Exposes the public static methods.
-//
-// TODO:
-//   Support for "DoubleWordsAreSwapped" for ARM devices
-//
-// Copyright (C) 2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Text;
-
-#pragma warning disable 3021
-
-namespace Mono {
-
-#if MONO_DATACONVERTER_PUBLIC
-       unsafe public abstract class DataConverter {
-#else
-       unsafe internal abstract class DataConverter {
-
-// Disables the warning: CLS compliance checking will not be performed on
-//  `XXXX' because it is not visible from outside this assembly
-#pragma warning disable  3019
-#endif
-               static DataConverter SwapConv = new SwapConverter ();
-               static DataConverter CopyConv = new CopyConverter ();
-
-               public static readonly bool IsLittleEndian = BitConverter.IsLittleEndian;
-                       
-               public abstract double GetDouble (byte [] data, int index);
-               public abstract float  GetFloat  (byte [] data, int index);
-               public abstract long   GetInt64  (byte [] data, int index);
-               public abstract int    GetInt32  (byte [] data, int index);
-
-               public abstract short  GetInt16  (byte [] data, int index);
-
-                [CLSCompliant (false)]
-               public abstract uint   GetUInt32 (byte [] data, int index);
-                [CLSCompliant (false)]
-               public abstract ushort GetUInt16 (byte [] data, int index);
-                [CLSCompliant (false)]
-               public abstract ulong  GetUInt64 (byte [] data, int index);
-               
-               public abstract void PutBytes (byte [] dest, int destIdx, double value);
-               public abstract void PutBytes (byte [] dest, int destIdx, float value);
-               public abstract void PutBytes (byte [] dest, int destIdx, int value);
-               public abstract void PutBytes (byte [] dest, int destIdx, long value);
-               public abstract void PutBytes (byte [] dest, int destIdx, short value);
-
-                [CLSCompliant (false)]
-               public abstract void PutBytes (byte [] dest, int destIdx, ushort value);
-                [CLSCompliant (false)]
-               public abstract void PutBytes (byte [] dest, int destIdx, uint value);
-                [CLSCompliant (false)]
-               public abstract void PutBytes (byte [] dest, int destIdx, ulong value);
-
-               public byte[] GetBytes (double value)
-               {
-                       byte [] ret = new byte [8];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-               
-               public byte[] GetBytes (float value)
-               {
-                       byte [] ret = new byte [4];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-               
-               public byte[] GetBytes (int value)
-               {
-                       byte [] ret = new byte [4];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-               
-               public byte[] GetBytes (long value)
-               {
-                       byte [] ret = new byte [8];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-               
-               public byte[] GetBytes (short value)
-               {
-                       byte [] ret = new byte [2];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-
-                [CLSCompliant (false)]
-               public byte[] GetBytes (ushort value)
-               {
-                       byte [] ret = new byte [2];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-               
-                [CLSCompliant (false)]
-               public byte[] GetBytes (uint value)
-               {
-                       byte [] ret = new byte [4];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-               
-                [CLSCompliant (false)]
-               public byte[] GetBytes (ulong value)
-               {
-                       byte [] ret = new byte [8];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-               
-               static public DataConverter LittleEndian {
-                       get {
-                               return BitConverter.IsLittleEndian ? CopyConv : SwapConv;
-                       }
-               }
-
-               static public DataConverter BigEndian {
-                       get {
-                               return BitConverter.IsLittleEndian ? SwapConv : CopyConv;
-                       }
-               }
-
-               static public DataConverter Native {
-                       get {
-                               return CopyConv;
-                       }
-               }
-
-               static int Align (int current, int align)
-               {
-                       return ((current + align - 1) / align) * align;
-               }
-                       
-               class PackContext {
-                       // Buffer
-                       public byte [] buffer;
-                       int next;
-
-                       public string description;
-                       public int i; // position in the description
-                       public DataConverter conv;
-                       public int repeat;
-                       
-                       //
-                       // if align == -1, auto align to the size of the byte array
-                       // if align == 0, do not do alignment
-                       // Any other values aligns to that particular size
-                       //
-                       public int align;
-
-                       public void Add (byte [] group)
-                       {
-                               //Console.WriteLine ("Adding {0} bytes to {1} (next={2}", group.Length,
-                               // buffer == null ? "null" : buffer.Length.ToString (), next);
-                               
-                               if (buffer == null){
-                                       buffer = group;
-                                       next = group.Length;
-                                       return;
-                               }
-                               if (align != 0){
-                                       if (align == -1)
-                                               next = Align (next, group.Length);
-                                       else
-                                               next = Align (next, align);
-                                       align = 0;
-                               }
-
-                               if (next + group.Length > buffer.Length){
-                                       byte [] nb = new byte [System.Math.Max (next, 16) * 2 + group.Length];
-                                       Array.Copy (buffer, nb, buffer.Length);
-                                       Array.Copy (group, 0, nb, next, group.Length);
-                                       next = next + group.Length;
-                                       buffer = nb;
-                               } else {
-                                       Array.Copy (group, 0, buffer, next, group.Length);
-                                       next += group.Length;
-                               }
-                       }
-
-                       public byte [] Get ()
-                       {
-                               if (buffer == null)
-                                       return new byte [0];
-                               
-                               if (buffer.Length != next){
-                                       byte [] b = new byte [next];
-                                       Array.Copy (buffer, b, next);
-                                       return b;
-                               }
-                               return buffer;
-                       }
-               }
-
-               //
-               // Format includes:
-               // Control:
-               //   ^    Switch to big endian encoding
-               //   _    Switch to little endian encoding
-               //   %    Switch to host (native) encoding
-               //   !    aligns the next data type to its natural boundary (for strings this is 4).
-               //
-               // Types:
-               //   s    Int16
-               //   S    UInt16
-               //   i    Int32
-               //   I    UInt32
-               //   l    Int64
-               //   L    UInt64
-               //   f    float
-               //   d    double
-               //   b    byte
-                //   c    1-byte signed character
-                //   C    1-byte unsigned character
-               //   z8   string encoded as UTF8 with 1-byte null terminator
-               //   z6   string encoded as UTF16 with 2-byte null terminator
-               //   z7   string encoded as UTF7 with 1-byte null terminator
-               //   zb   string encoded as BigEndianUnicode with 2-byte null terminator
-               //   z3   string encoded as UTF32 with 4-byte null terminator
-               //   z4   string encoded as UTF32 big endian with 4-byte null terminator
-               //   $8   string encoded as UTF8
-               //   $6   string encoded as UTF16
-               //   $7   string encoded as UTF7
-               //   $b   string encoded as BigEndianUnicode
-               //   $3   string encoded as UTF32
-               //   $4   string encoded as UTF-32 big endian encoding
-               //   x    null byte
-               //
-               // Repeats, these are prefixes:
-               //   N    a number between 1 and 9, indicates a repeat count (process N items
-               //        with the following datatype
-               //   [N]  For numbers larger than 9, use brackets, for example [20]
-               //   *    Repeat the next data type until the arguments are exhausted
-               //
-               static public byte [] Pack (string description, params object [] args)
-               {
-                       int argn = 0;
-                       PackContext b = new PackContext ();
-                       b.conv = CopyConv;
-                       b.description = description;
-
-                       for (b.i = 0; b.i < description.Length; ){
-                               object oarg;
-
-                               if (argn < args.Length)
-                                       oarg = args [argn];
-                               else {
-                                       if (b.repeat != 0)
-                                               break;
-                                       
-                                       oarg = null;
-                               }
-
-                               int save = b.i;
-                               
-                               if (PackOne (b, oarg)){
-                                       argn++;
-                                       if (b.repeat > 0){
-                                               if (--b.repeat > 0)
-                                                       b.i = save;
-                                               else
-                                                       b.i++;
-                                       } else
-                                               b.i++;
-                               } else
-                                       b.i++;
-                       }
-                       return b.Get ();
-               }
-
-               static public byte [] PackEnumerable (string description, IEnumerable args)
-               {
-                       PackContext b = new PackContext ();
-                       b.conv = CopyConv;
-                       b.description = description;
-                       
-                       IEnumerator enumerator = args.GetEnumerator ();
-                       bool ok = enumerator.MoveNext ();
-
-                       for (b.i = 0; b.i < description.Length; ){
-                               object oarg;
-
-                               if (ok)
-                                       oarg = enumerator.Current;
-                               else {
-                                       if (b.repeat != 0)
-                                               break;
-                                       oarg = null;
-                               }
-                                               
-                               int save = b.i;
-                               
-                               if (PackOne (b, oarg)){
-                                       ok = enumerator.MoveNext ();
-                                       if (b.repeat > 0){
-                                               if (--b.repeat > 0)
-                                                       b.i = save;
-                                               else
-                                                       b.i++;
-                                       } else
-                                               b.i++;
-                               } else
-                                       b.i++;
-                       }
-                       return b.Get ();
-               }
-                       
-               //
-               // Packs one datum `oarg' into the buffer `b', using the string format
-               // in `description' at position `i'
-               //
-               // Returns: true if we must pick the next object from the list
-               //
-               static bool PackOne (PackContext b, object oarg)
-               {
-                       int n;
-                       
-                       switch (b.description [b.i]){
-                       case '^':
-                               b.conv = BigEndian;
-                               return false;
-                       case '_':
-                               b.conv = LittleEndian;
-                               return false;
-                       case '%':
-                               b.conv = Native;
-                               return false;
-
-                       case '!':
-                               b.align = -1;
-                               return false;
-                               
-                       case 'x':
-                               b.Add (new byte [] { 0 });
-                               return false;
-                               
-                               // Type Conversions
-                       case 'i':
-                               b.Add (b.conv.GetBytes (Convert.ToInt32 (oarg)));
-                               break;
-                               
-                       case 'I':
-                               b.Add (b.conv.GetBytes (Convert.ToUInt32 (oarg)));
-                               break;
-                               
-                       case 's':
-                               b.Add (b.conv.GetBytes (Convert.ToInt16 (oarg)));
-                               break;
-                               
-                       case 'S':
-                               b.Add (b.conv.GetBytes (Convert.ToUInt16 (oarg)));
-                               break;
-                               
-                       case 'l':
-                               b.Add (b.conv.GetBytes (Convert.ToInt64 (oarg)));
-                               break;
-                               
-                       case 'L':
-                               b.Add (b.conv.GetBytes (Convert.ToUInt64 (oarg)));
-                               break;
-                               
-                       case 'f':
-                               b.Add (b.conv.GetBytes (Convert.ToSingle (oarg)));
-                               break;
-                               
-                       case 'd':
-                               b.Add (b.conv.GetBytes (Convert.ToDouble (oarg)));
-                               break;
-                               
-                       case 'b':
-                               b.Add (new byte [] { Convert.ToByte (oarg) });
-                               break;
-
-                       case 'c':
-                               b.Add (new byte [] { (byte) (Convert.ToSByte (oarg)) });
-                               break;
-
-                       case 'C':
-                               b.Add (new byte [] { Convert.ToByte (oarg) });
-                               break;
-
-                               // Repeat acount;
-                       case '1': case '2': case '3': case '4': case '5':
-                       case '6': case '7': case '8': case '9':
-                               b.repeat = ((short) b.description [b.i]) - ((short) '0');
-                               return false;
-
-                       case '*':
-                               b.repeat = Int32.MaxValue;
-                               return false;
-                               
-                       case '[':
-                               int count = -1, j;
-                               
-                               for (j = b.i+1; j < b.description.Length; j++){
-                                       if (b.description [j] == ']')
-                                               break;
-                                       n = ((short) b.description [j]) - ((short) '0');
-                                       if (n >= 0 && n <= 9){
-                                               if (count == -1)
-                                                       count = n;
-                                               else
-                                                       count = count * 10 + n;
-                                       }
-                               }
-                               if (count == -1)
-                                       throw new ArgumentException ("invalid size specification");
-                               b.i = j;
-                               b.repeat = count;
-                               return false;
-                               
-                       case '$': case 'z':
-                               bool add_null = b.description [b.i] == 'z';
-                               b.i++;
-                               if (b.i >= b.description.Length)
-                                       throw new ArgumentException ("$ description needs a type specified", "description");
-                               char d = b.description [b.i];
-                               Encoding e;
-                               
-                               switch (d){
-                               case '8':
-                                       e = Encoding.UTF8;
-                                       n = 1;
-                                       break;
-                               case '6':
-                                       e = Encoding.Unicode;
-                                       n = 2;
-                                       break;
-                               case '7':
-                                       e = Encoding.UTF7;
-                                       n = 1;
-                                       break;
-                               case 'b':
-                                       e = Encoding.BigEndianUnicode;
-                                       n = 2;
-                                       break;
-                               case '3':
-                                       e = Encoding.GetEncoding (12000);
-                                       n = 4;
-                                       break;
-                               case '4':
-                                       e = Encoding.GetEncoding (12001);
-                                       n = 4;
-                                       break;
-                                       
-                               default:
-                                       throw new ArgumentException ("Invalid format for $ specifier", "description");
-                               }
-                               if (b.align == -1)
-                                       b.align = 4;
-                               b.Add (e.GetBytes (Convert.ToString (oarg)));
-                               if (add_null)
-                                       b.Add (new byte [n]);
-                               break;
-                       default:
-                               throw new ArgumentException (String.Format ("invalid format specified `{0}'",
-                                                                           b.description [b.i]));
-                       }
-                       return true;
-               }
-
-               static bool Prepare (byte [] buffer, ref int idx, int size, ref bool align)
-               {
-                       if (align){
-                               idx = Align (idx, size);
-                               align = false;
-                       }
-                       if (idx + size > buffer.Length){
-                               idx = buffer.Length;
-                               return false;
-                       }
-                       return true;
-               }
-               
-               static public IList Unpack (string description, byte [] buffer, int startIndex)
-               {
-                       DataConverter conv = CopyConv;
-                       ArrayList result = new ArrayList ();
-                       int idx = startIndex;
-                       bool align = false;
-                       int repeat = 0, n;
-                       
-                       for (int i = 0; i < description.Length && idx < buffer.Length; ){
-                               int save = i;
-                               
-                               switch (description [i]){
-                               case '^':
-                                       conv = BigEndian;
-                                       break;
-                               case '_':
-                                       conv = LittleEndian;
-                                       break;
-                               case '%':
-                                       conv = Native;
-                                       break;
-                               case 'x':
-                                       idx++;
-                                       break;
-
-                               case '!':
-                                       align = true;
-                                       break;
-
-                                       // Type Conversions
-                               case 'i':
-                                       if (Prepare (buffer, ref idx, 4, ref align)){
-                                               result.Add (conv.GetInt32 (buffer, idx));
-                                               idx += 4;
-                                       } 
-                                       break;
-                               
-                               case 'I':
-                                       if (Prepare (buffer, ref idx, 4, ref align)){
-                                               result.Add (conv.GetUInt32 (buffer, idx));
-                                               idx += 4;
-                                       }
-                                       break;
-                               
-                               case 's':
-                                       if (Prepare (buffer, ref idx, 2, ref align)){
-                                               result.Add (conv.GetInt16 (buffer, idx));
-                                               idx += 2;
-                                       }
-                                       break;
-                               
-                               case 'S':
-                                       if (Prepare (buffer, ref idx, 2, ref align)){
-                                               result.Add (conv.GetUInt16 (buffer, idx));
-                                               idx += 2;
-                                       }
-                                       break;
-                               
-                               case 'l':
-                                       if (Prepare (buffer, ref idx, 8, ref align)){
-                                               result.Add (conv.GetInt64 (buffer, idx));
-                                               idx += 8;
-                                       }
-                                       break;
-                               
-                               case 'L':
-                                       if (Prepare (buffer, ref idx, 8, ref align)){
-                                               result.Add (conv.GetUInt64 (buffer, idx));
-                                               idx += 8;
-                                       }
-                                       break;
-                               
-                               case 'f':
-                                       if (Prepare (buffer, ref idx, 4, ref align)){
-                                               result.Add (conv.GetDouble (buffer, idx));
-                                               idx += 4;
-                                       }
-                                       break;
-                               
-                               case 'd':
-                                       if (Prepare (buffer, ref idx, 8, ref align)){
-                                               result.Add (conv.GetDouble (buffer, idx));
-                                               idx += 8;
-                                       }
-                                       break;
-                               
-                               case 'b':
-                                       if (Prepare (buffer, ref idx, 1, ref align)){
-                                               result.Add (buffer [idx]);
-                                               idx++;
-                                       }
-                                       break;
-
-                               case 'c': case 'C':
-                                       if (Prepare (buffer, ref idx, 1, ref align)){
-                                               char c;
-                                               
-                                               if (description [i] == 'c')
-                                                       c = ((char) ((sbyte)buffer [idx]));
-                                               else
-                                                       c = ((char) ((byte)buffer [idx]));
-                                               
-                                               result.Add (c);
-                                               idx++;
-                                       }
-                                       break;
-                                       
-                                       // Repeat acount;
-                               case '1': case '2': case '3': case '4': case '5':
-                               case '6': case '7': case '8': case '9':
-                                       repeat = ((short) description [i]) - ((short) '0');
-                                       save = i + 1;
-                                       break;
-
-                               case '*':
-                                       repeat = Int32.MaxValue;
-                                       break;
-                               
-                               case '[':
-                                       int count = -1, j;
-                               
-                                       for (j = i+1; j < description.Length; j++){
-                                               if (description [j] == ']')
-                                                       break;
-                                               n = ((short) description [j]) - ((short) '0');
-                                               if (n >= 0 && n <= 9){
-                                                       if (count == -1)
-                                                               count = n;
-                                                       else
-                                                               count = count * 10 + n;
-                                               }
-                                       }
-                                       if (count == -1)
-                                               throw new ArgumentException ("invalid size specification");
-                                       i = j;
-                                       repeat = count;
-                                       break;
-                               
-                               case '$': case 'z':
-                                       // bool with_null = description [i] == 'z';
-                                       i++;
-                                       if (i >= description.Length)
-                                               throw new ArgumentException ("$ description needs a type specified", "description");
-                                       char d = description [i];
-                                       Encoding e;
-                                       if (align){
-                                               idx = Align (idx, 4);
-                                               align = false;
-                                       }
-                                       if (idx >= buffer.Length)
-                                               break;
-                               
-                                       switch (d){
-                                       case '8':
-                                               e = Encoding.UTF8;
-                                               n = 1;
-                                               break;
-                                       case '6':
-                                               e = Encoding.Unicode;
-                                               n = 2;
-                                               break;
-                                       case '7':
-                                               e = Encoding.UTF7;
-                                               n = 1;
-                                               break;
-                                       case 'b':
-                                               e = Encoding.BigEndianUnicode;
-                                               n = 2;
-                                               break;
-                                       case '3':
-                                               e = Encoding.GetEncoding (12000);
-                                               n = 4;
-                                               break;
-                                       case '4':
-                                               e = Encoding.GetEncoding (12001);
-                                               n = 4;
-                                               break;
-                                       
-                                       default:
-                                               throw new ArgumentException ("Invalid format for $ specifier", "description");
-                                       }
-                                       int k = idx;
-                                       switch (n){
-                                       case 1:
-                                               for (; k < buffer.Length && buffer [k] != 0; k++)
-                                                       ;
-                                               result.Add (e.GetChars (buffer, idx, k-idx));
-                                               if (k == buffer.Length)
-                                                       idx = k;
-                                               else
-                                                       idx = k+1;
-                                               break;
-                                               
-                                       case 2:
-                                               for (; k < buffer.Length; k++){
-                                                       if (k+1 == buffer.Length){
-                                                               k++;
-                                                               break;
-                                                       }
-                                                       if (buffer [k] == 0 && buffer [k+1] == 0)
-                                                               break;
-                                               }
-                                               result.Add (e.GetChars (buffer, idx, k-idx));
-                                               if (k == buffer.Length)
-                                                       idx = k;
-                                               else
-                                                       idx = k+2;
-                                               break;
-                                               
-                                       case 4:
-                                               for (; k < buffer.Length; k++){
-                                                       if (k+3 >= buffer.Length){
-                                                               k = buffer.Length;
-                                                               break;
-                                                       }
-                                                       if (buffer[k]==0 && buffer[k+1] == 0 && buffer[k+2] == 0 && buffer[k+3]== 0)
-                                                               break;
-                                               }
-                                               result.Add (e.GetChars (buffer, idx, k-idx));
-                                               if (k == buffer.Length)
-                                                       idx = k;
-                                               else
-                                                       idx = k+4;
-                                               break;
-                                       }
-                                       break;
-                               default:
-                                       throw new ArgumentException (String.Format ("invalid format specified `{0}'",
-                                                                                   description [i]));
-                               }
-
-                               if (repeat > 0){
-                                       if (--repeat > 0)
-                                               i = save;
-                               } else
-                                       i++;
-                       }
-                       return result;
-               }
-
-               internal void Check (byte [] dest, int destIdx, int size)
-               {
-                       if (dest == null)
-                               throw new ArgumentNullException ("dest");
-                       if (destIdx < 0 || destIdx > dest.Length - size)
-                               throw new ArgumentException ("destIdx");
-               }
-               
-               class CopyConverter : DataConverter {
-                       public override double GetDouble (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 8)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-                               double ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 8; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-
-                       public override ulong GetUInt64 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 8)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               ulong ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 8; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-
-                       public override long GetInt64 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 8)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               long ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 8; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override float GetFloat  (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 4)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               float ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 4; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override int GetInt32  (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 4)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               int ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 4; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override uint GetUInt32 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 4)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               uint ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 4; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override short GetInt16 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 2)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               short ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 2; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override ushort GetUInt16 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 2)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               ushort ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 2; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, double value)
-                       {
-                               Check (dest, destIdx, 8);
-                               fixed (byte *target = &dest [destIdx]){
-                                       long *source = (long *) &value;
-
-                                       *((long *)target) = *source;
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, float value)
-                       {
-                               Check (dest, destIdx, 4);
-                               fixed (byte *target = &dest [destIdx]){
-                                       uint *source = (uint *) &value;
-
-                                       *((uint *)target) = *source;
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, int value)
-                       {
-                               Check (dest, destIdx, 4);
-                               fixed (byte *target = &dest [destIdx]){
-                                       uint *source = (uint *) &value;
-
-                                       *((uint *)target) = *source;
-                               }
-                       }
-
-                       public override void PutBytes (byte [] dest, int destIdx, uint value)
-                       {
-                               Check (dest, destIdx, 4);
-                               fixed (byte *target = &dest [destIdx]){
-                                       uint *source = (uint *) &value;
-
-                                       *((uint *)target) = *source;
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, long value)
-                       {
-                               Check (dest, destIdx, 8);
-                               fixed (byte *target = &dest [destIdx]){
-                                       long *source = (long *) &value;
-
-                                       *((long*)target) = *source;
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, ulong value)
-                       {
-                               Check (dest, destIdx, 8);
-                               fixed (byte *target = &dest [destIdx]){
-                                       ulong *source = (ulong *) &value;
-
-                                       *((ulong *) target) = *source;
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, short value)
-                       {
-                               Check (dest, destIdx, 2);
-                               fixed (byte *target = &dest [destIdx]){
-                                       ushort *source = (ushort *) &value;
-
-                                       *((ushort *)target) = *source;
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, ushort value)
-                       {
-                               Check (dest, destIdx, 2);
-                               fixed (byte *target = &dest [destIdx]){
-                                       ushort *source = (ushort *) &value;
-
-                                       *((ushort *)target) = *source;
-                               }
-                       }
-               }
-
-               class SwapConverter : DataConverter {
-                       public override double GetDouble (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 8)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               double ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 8; i++)
-                                       b [7-i] = data [index+i];
-
-                               return ret;
-                       }
-
-                       public override ulong GetUInt64 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 8)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               ulong ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 8; i++)
-                                       b [7-i] = data [index+i];
-
-                               return ret;
-                       }
-
-                       public override long GetInt64 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 8)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               long ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 8; i++)
-                                       b [7-i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override float GetFloat  (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 4)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               float ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 4; i++)
-                                       b [3-i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override int GetInt32  (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 4)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               int ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 4; i++)
-                                       b [3-i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override uint GetUInt32 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 4)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               uint ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 4; i++)
-                                       b [3-i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override short GetInt16 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 2)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               short ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 2; i++)
-                                       b [1-i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override ushort GetUInt16 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 2)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               ushort ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 2; i++)
-                                       b [1-i] = data [index+i];
-
-                               return ret;
-                       }
-
-                       public override void PutBytes (byte [] dest, int destIdx, double value)
-                       {
-                               Check (dest, destIdx, 8);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 8; i++)
-                                               target [i] = source [7-i];
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, float value)
-                       {
-                               Check (dest, destIdx, 4);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 4; i++)
-                                               target [i] = source [3-i];
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, int value)
-                       {
-                               Check (dest, destIdx, 4);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 4; i++)
-                                               target [i] = source [3-i];
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, uint value)
-                       {
-                               Check (dest, destIdx, 4);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 4; i++)
-                                               target [i] = source [3-i];
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, long value)
-                       {
-                               Check (dest, destIdx, 8);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 8; i++)
-                                               target [i] = source [7-i];
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, ulong value)
-                       {
-                               Check (dest, destIdx, 8);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 4; i++)
-                                               target [i] = source [7-i];
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, short value)
-                       {
-                               Check (dest, destIdx, 2);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 2; i++)
-                                               target [i] = source [1-i];
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, ushort value)
-                       {
-                               Check (dest, destIdx, 2);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 2; i++)
-                                               target [i] = source [1-i];
-                               }
-                       }
-               }
-               
-#if MONO_DATACONVERTER_STATIC_METHODS
-               static unsafe void PutBytesLE (byte *dest, byte *src, int count)
-               {
-                       int i = 0;
-                       
-                       if (BitConverter.IsLittleEndian){
-                               for (; i < count; i++)
-                                       *dest++ = *src++;
-                       } else {
-                               dest += count;
-                               for (; i < count; i++)
-                                       *(--dest) = *src++;
-                       }
-               }
-
-               static unsafe void PutBytesBE (byte *dest, byte *src, int count)
-               {
-                       int i = 0;
-                       
-                       if (BitConverter.IsLittleEndian){
-                               dest += count;
-                               for (; i < count; i++)
-                                       *(--dest) = *src++;
-                       } else {
-                               for (; i < count; i++)
-                                       *dest++ = *src++;
-                       }
-               }
-
-               static unsafe void PutBytesNative (byte *dest, byte *src, int count)
-               {
-                       int i = 0;
-                       
-                       for (; i < count; i++)
-                               dest [i-count] = *src++;
-               }
-               
-               static public unsafe double DoubleFromLE (byte[] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       double ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-
-               static public unsafe float FloatFromLE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       float ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-
-               static public unsafe long Int64FromLE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       long ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe ulong UInt64FromLE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       ulong ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-
-               static public unsafe int Int32FromLE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       int ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe uint UInt32FromLE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       uint ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-
-               static public unsafe short Int16FromLE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 2)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-
-                       short ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 2);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe ushort UInt16FromLE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 2)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       ushort ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 2);
-                       }
-                       return ret;
-               }
-
-               static public unsafe double DoubleFromBE (byte[] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       double ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-
-               static public unsafe float FloatFromBE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       float ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-
-               static public unsafe long Int64FromBE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       long ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe ulong UInt64FromBE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       ulong ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-
-               static public unsafe int Int32FromBE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       int ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe uint UInt32FromBE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       uint ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-
-               static public unsafe short Int16FromBE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 2)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-
-                       short ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 2);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe ushort UInt16FromBE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 2)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       ushort ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 2);
-                       }
-                       return ret;
-               }
-
-               static public unsafe double DoubleFromNative (byte[] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       double ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-
-               static public unsafe float FloatFromNative (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       float ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-
-               static public unsafe long Int64FromNative (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       long ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe ulong UInt64FromNative (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       ulong ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-
-               static public unsafe int Int32FromNative (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       int ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe uint UInt32FromNative (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       uint ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-
-               static public unsafe short Int16FromNative (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 2)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-
-                       short ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 2);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe ushort UInt16FromNative (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 2)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       ushort ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 2);
-                       }
-                       return ret;
-               }
-
-                unsafe static byte[] GetBytesPtr (byte *ptr, int count)
-                {
-                        byte [] ret = new byte [count];
-
-                        for (int i = 0; i < count; i++) {
-                                ret [i] = ptr [i];
-                        }
-
-                        return ret;
-                }
-
-                unsafe static byte[] GetBytesSwap (bool swap, byte *ptr, int count)
-                {
-                        byte [] ret = new byte [count];
-
-                       if (swap){
-                               int t = count-1;
-                               for (int i = 0; i < count; i++) {
-                                       ret [t-i] = ptr [i];
-                               }
-                       } else {
-                               for (int i = 0; i < count; i++) {
-                                       ret [i] = ptr [i];
-                               }
-                       }
-                        return ret;
-                }
-               
-                unsafe public static byte[] GetBytesNative (bool value)
-                {
-                        return GetBytesPtr ((byte *) &value, 1);
-                }
-
-                unsafe public static byte[] GetBytesNative (char value)
-                {
-                        return GetBytesPtr ((byte *) &value, 2);
-                }
-
-                unsafe public static byte[] GetBytesNative (short value)
-                {
-                        return GetBytesPtr ((byte *) &value, 2);
-                }
-
-                unsafe public static byte[] GetBytesNative (int value)
-                {
-                        return GetBytesPtr ((byte *) &value, 4);
-                }
-
-                unsafe public static byte[] GetBytesNative (long value)
-                {
-                        return GetBytesPtr ((byte *) &value, 8);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesNative (ushort value)
-                {
-                        return GetBytesPtr ((byte *) &value, 2);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesNative (uint value)
-                {
-                        return GetBytesPtr ((byte *) &value, 4);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesNative (ulong value)
-                {
-                        return GetBytesPtr ((byte *) &value, 8);
-                }
-
-                unsafe public static byte[] GetBytesNative (float value)
-                {
-                        return GetBytesPtr ((byte *) &value, 4);
-                }
-
-                unsafe public static byte[] GetBytesNative (double value)
-                {
-                       return GetBytesPtr ((byte *) &value, 8);
-                }
-
-                unsafe public static byte[] GetBytesLE (bool value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 1);
-                }
-
-                unsafe public static byte[] GetBytesLE (char value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 2);
-                }
-
-                unsafe public static byte[] GetBytesLE (short value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 2);
-                }
-
-                unsafe public static byte[] GetBytesLE (int value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 4);
-                }
-
-                unsafe public static byte[] GetBytesLE (long value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 8);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesLE (ushort value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 2);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesLE (uint value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 4);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesLE (ulong value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 8);
-                }
-
-                unsafe public static byte[] GetBytesLE (float value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 4);
-                }
-
-                unsafe public static byte[] GetBytesLE (double value)
-                {
-                       return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 8);
-                }
-               
-                unsafe public static byte[] GetBytesBE (bool value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 1);
-                }
-
-                unsafe public static byte[] GetBytesBE (char value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 2);
-                }
-
-                unsafe public static byte[] GetBytesBE (short value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 2);
-                }
-
-                unsafe public static byte[] GetBytesBE (int value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 4);
-                }
-
-                unsafe public static byte[] GetBytesBE (long value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 8);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesBE (ushort value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 2);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesBE (uint value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 4);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesBE (ulong value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 8);
-                }
-
-                unsafe public static byte[] GetBytesBE (float value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 4);
-                }
-
-                unsafe public static byte[] GetBytesBE (double value)
-                {
-                       return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 8);
-                }
-#endif
-               
-       }
-}
diff --git a/mcs/tools/ildasm/Makefile b/mcs/tools/ildasm/Makefile
deleted file mode 100644 (file)
index 15b8dfb..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-thisdir = tools/ildasm
-SUBDIRS = 
-include ../../build/rules.make
-
-LOCAL_MCS_FLAGS = -r:Mono.Cecil.dll -D:MONO_DATACONVERTER_STATIC_METHODS -unsafe
-PROGRAM = $(topdir)/class/lib/$(PROFILE)/ildasm.exe
-
-include ../../build/executable.make
diff --git a/mcs/tools/ildasm/ildasm.cs b/mcs/tools/ildasm/ildasm.cs
deleted file mode 100644 (file)
index b19eea4..0000000
+++ /dev/null
@@ -1,1029 +0,0 @@
-using System;
-using System.IO;
-using System.Text;
-using System.Collections.Generic;
-using System.Linq;
-using Mono.Cecil;
-using Mono.Cecil.Cil;
-using Mono;
-
-public partial class ILDAsm
-{
-       public static int Main (String[] args) {
-               if (args.Length != 1) {
-                       Console.Error.WriteLine ("Usage: ildasm <assembly file>");
-                       return 1;
-               }
-
-               var inst = new ILDAsm ();
-               return inst.Run (args);
-       }
-
-       public AssemblyDefinition ad;
-       public ModuleDefinition main;
-       public TextWriter os;
-       public int indent;
-       public List<FieldDefinition> fields_with_rva = new List<FieldDefinition> ();
-
-       public void WriteLine () {
-               os.WriteLine ();
-       }
-
-       public void WriteLine (String s) {
-               for (int i = 0; i < indent; ++i)
-                       os.Write ("  ");
-               os.WriteLine (s);
-       }
-
-       public int Run (String[] args) {
-               ad = AssemblyDefinition.ReadAssembly (args [0]);
-
-               main = ad.MainModule;
-
-               os = Console.Out;
-
-               // Emit assembly references
-               EmitAssemblyReferences ();
-               EmitAssembly ();
-               EmitModule ();
-               foreach (var typedef in main.Types) {
-                       // FIXME:
-                       if (typedef.Name == "<Module>")
-                               EmitGlobals (typedef);
-                       else
-                               EmitType (typedef);
-               }
-               EmitData ();
-
-               return 0;
-       }
-
-       string EscapeName (string s) {
-               bool escape = false;
-
-               if (s.Contains ("/")) {
-                       string[] parts = s.Split ('/');
-                       var sb = new StringBuilder ();
-                       for (int i = 0; i < parts.Length; ++i) {
-                               if (i > 0)
-                                       sb.Append ("/");
-                               sb.Append (EscapeName (parts [i]));
-                       }
-                       return sb.ToString ();
-               }
-                       
-               foreach (char c in s) {
-                       if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || (c == '_') || (c == '.') || (c == '`')))
-                               escape = true;
-               }
-               if (!escape && keyword_table.ContainsKey (s))
-                       escape = true;
-               if (escape)
-                       return "'" + s + "'";
-               else
-                       return s;
-       }
-
-       string EscapeString (string s) {
-               return s.Replace ("\\", "\\\\").Replace ("\"", "\\\"");
-       }
-
-       void EmitScope (IMetadataScope s, StringBuilder sb) {
-               if (s is AssemblyNameReference) {
-                       AssemblyNameReference aname = (s as AssemblyNameReference);
-                       sb.Append ("[" + EscapeName (aname.Name) + "]");
-               } else if (s is ModuleDefinition) {
-                       if (s != main)
-                               throw new NotImplementedException ();
-               } else {
-                       throw new NotImplementedException (s.GetType ().ToString ());
-               }
-       }
-
-       string StringifyTypeRef (TypeReference t) {
-               switch (t.MetadataType) {
-               case MetadataType.Void:
-                       return "void";
-               case MetadataType.Boolean:
-                       return "bool";
-               case MetadataType.Char:
-                       return "char";
-               case MetadataType.SByte:
-                       return "int8";
-               case MetadataType.Byte:
-                       return "unsigned int8";
-               case MetadataType.Int16:
-                       return "int16";
-               case MetadataType.UInt16:
-                       return "unsigned int16";
-               case MetadataType.Int32:
-                       return "int32";
-               case MetadataType.UInt32:
-                       return "unsigned int32";
-               case MetadataType.Int64:
-                       return "int64";
-               case MetadataType.UInt64:
-                       return "unsigned int64";
-               case MetadataType.Single:
-                       return "float32";
-               case MetadataType.Double:
-                       return "float64";
-               case MetadataType.String:
-                       return "string";
-               case MetadataType.IntPtr:
-                       return "native int";
-               case MetadataType.UIntPtr:
-                       //return "unsigned native int";
-                       return "[mscorlib]System.UIntPtr";
-               case MetadataType.TypedByReference:
-                       return "typedref";
-               case MetadataType.Class:
-               case MetadataType.Object:
-               case MetadataType.ValueType: {
-                       var sb = new StringBuilder ();
-                       IMetadataScope s = t.Scope;
-                       if (t.MetadataType == MetadataType.ValueType)
-                               sb.Append ("valuetype ");
-                       else
-                               sb.Append ("class ");
-                       EmitScope (s, sb);
-                       sb.Append (EscapeName (t.FullName));
-                       return sb.ToString ();
-               }
-               case MetadataType.Array: {
-                       ArrayType at = (t as ArrayType);
-                       
-                       if (at.IsVector)
-                               return StringifyTypeRef (at.ElementType) + "[]";
-
-                       var suffix = new StringBuilder ();
-                       suffix.Append ("[");
-                       for (int i = 0; i < at.Dimensions.Count; i++) {
-                               if (i > 0)
-                                       suffix.Append (",");
-
-                               suffix.Append (at.Dimensions [i].ToString ());
-                       }
-                       suffix.Append ("]");
-
-                       return StringifyTypeRef (at.ElementType) + suffix;
-               }
-               case MetadataType.Pointer:
-                       return StringifyTypeRef ((t as TypeSpecification).ElementType) + "*";
-               case MetadataType.ByReference:
-                       return StringifyTypeRef ((t as TypeSpecification).ElementType) + "&";
-               case MetadataType.Pinned:
-                       return StringifyTypeRef ((t as TypeSpecification).ElementType) + " pinned";
-               case MetadataType.GenericInstance: {
-                       var sb = new StringBuilder ();
-                       var inst = (t as GenericInstanceType);
-                       sb.Append (StringifyTypeRef (inst.ElementType));
-                       sb.Append ("<");
-                       int aindex = 0;
-                       foreach (TypeReference arg in inst.GenericArguments) {
-                               if (aindex > 0)
-                                       sb.Append (", ");
-                               sb.Append (StringifyTypeRef (arg));
-                               aindex ++;
-                       }
-                       sb.Append (">");
-                       return sb.ToString ();
-               }
-               case MetadataType.Var:
-                       return "!" + (t as GenericParameter).Position;
-               case MetadataType.MVar:
-                       return "!!" + (t as GenericParameter).Position;
-               case MetadataType.Sentinel:
-                       return "..., " + StringifyTypeRef ((t as SentinelType).ElementType);
-               case MetadataType.RequiredModifier: {
-                       var mod = (t as RequiredModifierType);
-                       if (mod.ModifierType.MetadataType != MetadataType.Class)
-                               throw new NotImplementedException ();
-                       var sb = new StringBuilder ();
-                       sb.Append (StringifyTypeRef (mod.ElementType));
-                       sb.Append (" modreq (");
-                       EmitScope (mod.ModifierType.Scope, sb);
-                       sb.Append (EscapeName (mod.ModifierType.FullName));
-                       sb.Append (")");
-                       return sb.ToString ();
-               }
-               default:
-                       throw new NotImplementedException ("" + t.MetadataType + " " + t.ToString ());
-               }
-       }
-
-       // Same as StringifyTypeRef, but emit primitive types as [mscorlib]...
-       string StringifyTypeRefNoPrim (TypeReference t) {
-               switch (t.MetadataType) {
-               case MetadataType.Void:
-               case MetadataType.Boolean:
-               case MetadataType.Char:
-               case MetadataType.SByte:
-               case MetadataType.Byte:
-               case MetadataType.Int16:
-               case MetadataType.UInt16:
-               case MetadataType.Int32:
-               case MetadataType.UInt32:
-               case MetadataType.Int64:
-               case MetadataType.UInt64:
-               case MetadataType.Single:
-               case MetadataType.Double:
-               case MetadataType.String:
-               case MetadataType.IntPtr:
-               case MetadataType.UIntPtr:
-               case MetadataType.TypedByReference:
-                       return "[mscorlib]" + t.FullName;
-               default:
-                       return StringifyTypeRef (t);
-               }
-       }
-
-       string StringifyMethodRef (MethodReference method) {
-               var sb = new StringBuilder ();
-               if (method.CallingConvention == MethodCallingConvention.VarArg)
-                       sb.Append ("vararg ");
-               if (method.HasThis)
-                       sb.Append ("instance ");
-               sb.Append (StringifyTypeRef (method.ReturnType));
-               sb.Append (' ');
-               sb.Append (StringifyTypeRefNoPrim (method.DeclaringType));
-               sb.Append ("::");
-               sb.Append (EscapeName (method.Name));
-               if (method is GenericInstanceMethod) {
-                       sb.Append ("<");
-                       int idx = 0;
-                       foreach (var gpar in (method as GenericInstanceMethod).GenericArguments) {
-                               if (idx > 0)
-                                       sb.Append (", ");
-                               sb.Append (StringifyTypeRef (gpar));
-                               idx ++;
-                       }
-                       sb.Append (">");
-               }
-               sb.Append ('(');
-               int par_index = 0;
-               foreach (ParameterReference par in method.Parameters) {
-                       if (par_index > 0)
-                               sb.Append (", ");
-                       sb.Append (StringifyTypeRef (par.ParameterType));
-                       par_index ++;
-               }
-               sb.Append (")");
-               return sb.ToString ();
-       }
-
-       string StringifyFieldRef (FieldReference field) {
-               var sb = new StringBuilder ();
-               sb.Append (StringifyTypeRef (field.FieldType));
-               sb.Append (' ');
-               sb.Append (StringifyTypeRefNoPrim (field.DeclaringType));
-               sb.Append ("::");
-               sb.Append (EscapeName (field.Name));
-               return sb.ToString ();
-       }
-
-       void WriteBlob (byte[] blob) {
-               int idx = 0;
-               while (idx < blob.Length) {
-                       int len = idx + 16 < blob.Length ? 16 : blob.Length - idx;
-                       var sb = new StringBuilder ();
-                       var sb2 = new StringBuilder ();
-                       for (int i = idx; i < idx + len; ++i) {
-                               sb.Append (String.Format ("{0:X2} ", blob [i]));
-                               if (Char.IsLetterOrDigit ((char)blob [i]))
-                                       sb2.Append ((char)blob [i]);
-                               else
-                                       sb2.Append ('.');
-                       }
-                       for (int i = 0; i < 16 - len; ++i)
-                               sb.Append ("   ");
-                       if (len < 16 || idx + 16 == blob.Length)
-                               sb.Append (')');
-                       else
-                               sb.Append (' ');
-                       WriteLine (String.Format ("{0} // {1}", sb.ToString (), sb2.ToString ()));
-                       idx += 16;
-               }
-       }
-
-       string Map (Dictionary <uint, string> map, uint val) {
-               string s;
-
-               if (map.TryGetValue (val, out s))
-                       return s;
-               else
-                       throw new NotImplementedException ("Value '" + val + "' not supported.");
-       }
-
-       string MapFlags (Dictionary <uint, string> map, uint val) {
-               var sb = new StringBuilder ();
-               foreach (var flag in map.Keys)
-                       if ((val & flag) != 0)
-                               sb.Append (map [flag]);
-               return sb.ToString ();
-       }
-
-       void EmitAssemblyReferences () {
-               foreach (var aname in main.AssemblyReferences) {
-                       os.WriteLine (".assembly extern " + EscapeName (aname.Name));
-                       os.WriteLine ("{");
-                       indent ++;
-                       Version v = aname.Version;
-                       WriteLine (String.Format (".ver {0}:{1}:{2}:{3}", v.Major, v.Minor, v.Build, v.Revision));
-                       byte [] token = aname.PublicKeyToken;
-                       if (token.Length > 0) {
-                               StringBuilder sb = new StringBuilder ();
-                               StringBuilder sb2 = new StringBuilder ();
-                               for (int i = 0; i < token.Length; ++i) {
-                                       if (i > 0)
-                                               sb.Append (" ");
-                                       sb.Append (String.Format ("{0:X2}", token [i]));
-                                       if (Char.IsLetterOrDigit ((char)token [i]))
-                                               sb2.Append ((char)token [i]);
-                                       else
-                                               sb2.Append ('.');
-                               }
-                               WriteLine (String.Format (".publickeytoken = ({0}) // {1}", sb, sb2));
-                       }
-                       indent --;
-                       WriteLine ("}");
-               }
-       }
-
-       void EmitCattrs (ICustomAttributeProvider prov) {
-               foreach (var cattr in prov.CustomAttributes) {
-                       WriteLine (String.Format (".custom {0} = (", StringifyMethodRef (cattr.Constructor)));
-                       indent += 3;
-                       byte[] blob = cattr.GetBlob ();
-                       WriteBlob (blob);
-                       indent -= 3;
-               }
-       }
-
-       void EmitSecDeclarations (ISecurityDeclarationProvider prov) {
-               foreach (var sec in prov.SecurityDeclarations) {
-                       string act_str = null;
-                       if (!sec_action_to_string.TryGetValue (sec.Action, out act_str))
-                               throw new NotImplementedException (sec.Action.ToString ());
-                       WriteLine (".permissionset " + act_str + " = (");
-                       WriteBlob (sec.GetBlob ());
-               }
-       }
-
-       void EmitAssembly () {
-               AssemblyNameDefinition aname = ad.Name;
-
-               WriteLine (".assembly " + EscapeName (aname.Name));
-               WriteLine ("{");
-               indent ++;
-               EmitCattrs (ad);
-               EmitSecDeclarations (ad);
-               WriteLine (String.Format (".hash algorithm 0x{0:X8}", (int)aname.HashAlgorithm));
-               Version v = aname.Version;
-               WriteLine (String.Format (".ver {0}:{1}:{2}:{3}", v.Major, v.Minor, v.Build, v.Revision));
-               byte[] token = aname.PublicKey;
-               if (token != null && token.Length > 0) {
-                       StringBuilder sb = new StringBuilder ();
-                       StringBuilder sb2 = new StringBuilder ();
-                       for (int i = 0; i < token.Length; ++i) {
-                               if (i > 0)
-                                       sb.Append (" ");
-                               sb.Append (String.Format ("{0:X2}", token [i]));
-                               if (Char.IsLetterOrDigit ((char)token [i]))
-                                       sb2.Append ((char)token [i]);
-                               else
-                                       sb2.Append ('.');
-                       }
-                       WriteLine (String.Format (".publickey = ({0}) // {1}", sb, sb2));
-               }
-               indent --;
-               WriteLine ("}");
-       }
-
-       void EmitModule () {
-               WriteLine (".module " + EscapeName (main.Name) + " // GUID = " + "{" + main.Mvid.ToString ().ToUpper () + "}");
-               EmitCattrs (main);
-       }
-
-       string StringifyTypeAttrs (TypeAttributes attrs) {
-               var sb = new StringBuilder ();
-
-               sb.Append (Map (type_sem_map, (uint)(attrs & TypeAttributes.ClassSemanticMask)));
-               sb.Append (Map (type_access_map, (uint)(attrs & TypeAttributes.VisibilityMask)));
-               sb.Append (Map (type_layout_map, (uint)(attrs & TypeAttributes.LayoutMask)));
-               sb.Append (Map (type_string_format_map, (uint)(attrs & TypeAttributes.StringFormatMask)));
-               sb.Append (MapFlags (type_flag_map, (uint)(attrs)));
-
-               return sb.ToString ();
-       }
-
-       void EmitGenParams (IGenericParameterProvider prov, StringBuilder sb) {
-               sb.Append ("<");
-               int idx = 0;
-               foreach (var gpar in prov.GenericParameters) {
-                       if (idx > 0)
-                               sb.Append (", ");
-                       if (gpar.HasDefaultConstructorConstraint)
-                               sb.Append (".ctor ");
-                       if (gpar.HasNotNullableValueTypeConstraint)
-                               sb.Append ("valuetype ");
-                       if (gpar.HasReferenceTypeConstraint)
-                               sb.Append ("class ");
-                       if (gpar.HasConstraints) {
-                               int idx2 = 0;
-                               sb.Append ("(");
-                               foreach (var c in gpar.Constraints) {
-                                       if (idx2 > 0)
-                                               sb.Append (", ");
-                                       sb.Append (StringifyTypeRef (c));
-                                       idx2 ++;
-                               }
-                               sb.Append (")");
-                       }
-                       sb.Append (EscapeName (gpar.Name));
-                       idx ++;
-               }
-               sb.Append (">");
-       }
-
-       void EmitGenParamCattrs (IGenericParameterProvider prov) {
-               foreach (var gpar in prov.GenericParameters) {
-                       if (gpar.HasCustomAttributes) {
-                               WriteLine (".param type " + gpar.Name);
-                               EmitCattrs (gpar);
-                       }
-               }
-       }
-
-       void EmitGlobals (TypeDefinition td) {
-               foreach (var md in td.Methods)
-                       EmitMethod (md);
-       }
-
-       void EmitType (TypeDefinition td) {
-               WriteLine ("");
-
-               if (td.MetadataType != MetadataType.Class && td.MetadataType != MetadataType.ValueType)
-                       throw new NotImplementedException (td.MetadataType.ToString ());
-
-               // FIXME: Group types by namespaces
-               if (!td.IsNested && td.Namespace != null && td.Namespace != String.Empty) {
-                       WriteLine (".namespace " + EscapeName (td.Namespace));
-                       WriteLine ("{");
-                       indent ++;
-               }
-
-               var sb = new StringBuilder ();
-               sb.Append (".class ");
-               sb.Append (StringifyTypeAttrs (td.Attributes));
-               sb.Append (EscapeName (td.Name));
-               if (td.HasGenericParameters)
-                       EmitGenParams (td, sb);
-               WriteLine (sb.ToString ());
-               indent ++;
-               if (td.BaseType != null)
-                       WriteLine ("extends " + StringifyTypeRef (td.BaseType));
-               if (td.HasInterfaces) {
-                       int idx = 0;
-                       sb = new StringBuilder ();
-                       foreach (TypeReference t in td.Interfaces) {
-                               if (idx > 0)
-                                       sb.Append (", ");
-                               sb.Append (StringifyTypeRef (t));
-                               idx ++;
-                       }
-                       WriteLine (String.Format ("implements {0}", sb.ToString ()));
-               }
-               indent --;
-               WriteLine ("{");
-               indent ++;
-               if (td.PackingSize != -1)
-                       WriteLine (".pack " + td.PackingSize);
-               if (td.ClassSize != -1)
-                       WriteLine (".size " + td.ClassSize);
-               EmitCattrs (td);
-               EmitGenParamCattrs (td);
-               EmitSecDeclarations (td);
-               foreach (var fd in td.Fields)
-                       EmitField (fd);
-               foreach (var md in td.Methods)
-                       EmitMethod (md);
-               foreach (var p in td.Properties)
-                       EmitProperty (p);
-               foreach (var e in td.Events)
-                       EmitEvent (e);
-               foreach (var t in td.NestedTypes)
-                       EmitType (t);
-               indent --;
-               WriteLine ("}");
-
-               if (!td.IsNested && td.Namespace != null && td.Namespace != String.Empty) {
-                       WriteLine ("}");
-                       indent --;
-               }
-       }
-
-       string StringifyFieldAttributes (FieldAttributes attrs) {
-               var sb = new StringBuilder ();
-               sb.Append (Map (field_access_map, (uint)(attrs & FieldAttributes.FieldAccessMask)));
-               sb.Append (MapFlags (field_flag_map, (uint)(attrs)));
-               return sb.ToString ();
-       }
-
-       void EmitField (FieldDefinition fd) {
-               var sb = new StringBuilder ();
-               sb.Append (".field ");
-               if (fd.Offset != -1)
-                       sb.Append ("[" + fd.Offset + "] ");
-               sb.Append (StringifyFieldAttributes (fd.Attributes));
-               if (fd.HasMarshalInfo) {
-                       sb.Append (" ");
-                       sb.Append (StringifyMarshalInfo (fd.MarshalInfo));
-               }
-               sb.Append (" ");
-               sb.Append (StringifyTypeRef (fd.FieldType));
-               sb.Append (" ");
-               sb.Append (EscapeName (fd.Name));
-               if (fd.HasConstant)
-                       EmitConstant (fd.Constant, sb);
-               if (fd.RVA != 0) {
-                       sb.Append (String.Format (" at D_{0:x8}", fd.RVA));
-                       fields_with_rva.Add (fd);
-               }
-               WriteLine (sb.ToString ());
-               EmitCattrs (fd);
-       }
-
-       string StringifyMethodAttributes (MethodAttributes attrs) {
-               var sb = new StringBuilder ();
-               sb.Append (Map (method_access_map, (uint)(attrs & MethodAttributes.MemberAccessMask)));
-               sb.Append (MapFlags (method_flag_map, (uint)(attrs)));
-               return sb.ToString ();
-       }
-
-       string StringifyMethodImplAttributes (MethodImplAttributes attrs) {
-               var sb = new StringBuilder ();
-               sb.Append (Map (method_impl_map, (uint)(attrs & MethodImplAttributes.CodeTypeMask)));
-               sb.Append (Map (method_managed_map, (uint)(attrs & MethodImplAttributes.ManagedMask)));
-               sb.Append (MapFlags (method_impl_flag_map, (uint)(attrs)));
-
-               return sb.ToString ();
-       }
-
-       string StringifyTypeNameReflection (TypeReference t) {
-               if (t.MetadataType != MetadataType.Class)
-                       throw new NotImplementedException ();
-               IMetadataScope s = t.Scope;
-               if (!(s is ModuleDefinition))
-                       throw new NotImplementedException ();
-               return t.FullName.Replace ("/", "+");
-       }
-
-       string StringifyMarshalInfo (MarshalInfo mi) {
-               var sb = new StringBuilder ();
-
-               sb.Append ("marshal (");
-
-               string s = null;
-               switch (mi.NativeType) {
-               case NativeType.Array: {
-                       var ami = (mi as ArrayMarshalInfo);
-                       if (native_type_to_str.TryGetValue (ami.ElementType, out s)) {
-                               sb.Append (s);
-                       }
-                       sb.Append ("[");
-                       //Console.WriteLine ("// XXX: " + ami.Size + " " + ami.SizeParameterIndex + " " + ami.SizeParameterMultiplier);
-
-                       /*
-                        * Comments in metadata.c:
-                        * So if (param_num == 0) && (num_elem > 0), then
-                        * elem_mult == 0 -> the array size is num_elem
-                        * elem_mult == 1 -> the array size is @param_num + num_elem
-                        */
-                       if (ami.Size != -1 && ami.Size != 0)
-                               sb.Append (ami.Size.ToString ());
-                       if (ami.SizeParameterMultiplier != 0 && ami.SizeParameterIndex != -1)
-                               sb.Append ("+" + ami.SizeParameterIndex.ToString ());
-                       sb.Append ("]");
-                       break;
-               }
-               case NativeType.FixedArray: {
-                       var ami = (mi as FixedArrayMarshalInfo);
-                       /*
-                       if (native_type_to_str.TryGetValue (ami.ElementType, out s)) {
-                               sb.Append (s);
-                       }
-                       */
-                       sb.Append ("fixed array [" + ami.Size + "]");
-                       break;
-               }
-               case NativeType.FixedSysString: {
-                       var ami = (mi as FixedSysStringMarshalInfo);
-                       sb.Append ("fixed sysstring [" + ami.Size + "]");
-                       break;
-               }
-               case NativeType.SafeArray: {
-                       var sami = (mi as SafeArrayMarshalInfo);
-                       sb.Append ("safearray ");
-                       switch (sami.ElementType) {
-                       case VariantType.Variant:
-                               sb.Append ("variant");
-                               break;
-                       default:
-                               throw new NotImplementedException ();
-                       }
-                       break;
-               }
-               case NativeType.CustomMarshaler: {
-                       var cmi = (mi as CustomMarshalInfo);
-
-                       if (cmi.Guid != Guid.Empty || cmi.UnmanagedType != String.Empty)
-                               throw new NotImplementedException ();
-                       sb.Append ("custom (\"" + StringifyTypeNameReflection (cmi.ManagedType) + "\", \"" + EscapeString (cmi.Cookie) + "\")");
-                       break;
-               }
-               default:
-                       if (native_type_to_str.TryGetValue (mi.NativeType, out s))
-                               sb.Append (s);
-                       else
-                               throw new NotImplementedException (mi.NativeType.ToString ());
-                       break;
-               }
-               sb.Append (")");
-               return sb.ToString ();
-       }
-
-       string StringifySignature (MethodDefinition md) {
-               var sb = new StringBuilder ();
-               int pindex = 0;
-               foreach (var par in md.Parameters) {
-                       if (pindex > 0)
-                               sb.Append (", ");
-                       if (par.IsIn)
-                               sb.Append ("[in] ");
-                       if (par.IsOut)
-                               sb.Append ("[out] ");
-                       if (par.IsOptional)
-                               sb.Append ("[opt] ");
-                       sb.Append (StringifyTypeRef (par.ParameterType));
-                       if (par.HasMarshalInfo) {
-                               sb.Append (" ");
-                               sb.Append (StringifyMarshalInfo (par.MarshalInfo));
-                       }
-                       sb.Append (" ");
-                       sb.Append (EscapeName (par.Name));
-                       pindex ++;
-               }
-
-               return sb.ToString ();
-       }
-
-       string StringifyPInvokeAttrs (PInvokeAttributes attrs) {
-               var sb = new StringBuilder ();
-               sb.Append (Map (pinvoke_char_set_map, (uint)(attrs & PInvokeAttributes.CharSetMask)));
-               sb.Append (Map (pinvoke_cconv_map, (uint)(attrs & PInvokeAttributes.CallConvMask)));
-               sb.Append (MapFlags (pinvoke_flags_map, (uint)(attrs)));
-               return sb.ToString ();
-       }               
-
-       string StringifyCallingConvention (MethodCallingConvention cconv) {
-               switch (cconv) {
-               case MethodCallingConvention.Default:
-                       return "default";
-               case MethodCallingConvention.VarArg:
-                       return "vararg";
-               default:
-                       throw new NotImplementedException (cconv.ToString ());
-               }
-       }
-
-       void EmitMethod (MethodDefinition md) {
-               int idx;
-
-               WriteLine ();
-               var pinvoke_sb = new StringBuilder ();
-               if ((uint)(md.Attributes & MethodAttributes.PInvokeImpl) != 0) {
-                       var pinvoke = md.PInvokeInfo;
-                       pinvoke_sb.Append ("pinvokeimpl (\"" + pinvoke.Module.Name + "\" as \"" + pinvoke.EntryPoint + "\" " + StringifyPInvokeAttrs (pinvoke.Attributes) + " )");
-               }
-               WriteLine (String.Format (".method {0}{1}", StringifyMethodAttributes (md.Attributes), pinvoke_sb));
-
-               var sb = new StringBuilder ();
-               sb.Append ("       ");
-               if (!md.IsStatic)
-                       sb.Append ("instance ");                
-               // CallingConvention seems to be 32
-               sb.Append (StringifyCallingConvention ((MethodCallingConvention)((uint)md.CallingConvention & 0xf)));
-               sb.Append (" ");
-               sb.Append (StringifyTypeRef (md.ReturnType));
-               sb.Append (" ");
-               if (md.MethodReturnType.HasMarshalInfo) {
-                       sb.Append (StringifyMarshalInfo (md.MethodReturnType.MarshalInfo));
-                       sb.Append (" ");
-               }
-               sb.Append (EscapeName (md.Name));
-               if (md.HasGenericParameters)
-                       EmitGenParams (md, sb);
-               WriteLine (String.Format ("{0} ({1}) {2}", sb, StringifySignature (md), StringifyMethodImplAttributes (md.ImplAttributes)));
-               WriteLine ("{");
-               indent ++;
-               foreach (var ov in md.Overrides)
-                       WriteLine (".override method " + StringifyMethodRef (ov));
-               EmitCattrs (md);
-               EmitGenParamCattrs (md);
-               EmitSecDeclarations (md);
-               idx = 0;
-               foreach (var par in md.Parameters) {
-                       if (par.HasCustomAttributes) {
-                               WriteLine (".param [" + (idx + 1) + "]");
-                               EmitCattrs (par);
-                       }
-                       if (par.HasConstant) {
-                               sb = new StringBuilder ();
-                               EmitConstant (par.Constant, sb);
-                               WriteLine (".param [" + (idx + 1) + "]" + sb);
-                       }
-                       idx ++;
-               }
-               // FIXME: Print RVA, code size
-               if (md == main.EntryPoint)
-                       WriteLine (".entrypoint");
-               if (md.HasBody) {
-                       MethodBody body = md.Body;
-                       WriteLine (".maxstack " + body.MaxStackSize);
-                       if (body.InitLocals)
-                               WriteLine (".locals init (");
-                       else
-                               WriteLine (".locals (");
-                       indent ++;
-                       int vindex = 0;
-                       foreach (var v in body.Variables) {
-                               WriteLine (StringifyTypeRef (v.VariableType) + " " + (v.Name == "" ? "V_" + v.Index : v.Name) + (vindex + 1 < body.Variables.Count ? ", " : ""));
-                               vindex ++;
-                       }
-                       indent --;
-                       WriteLine (")");
-
-                       List<ExceptionHandler> handlers = body.ExceptionHandlers.ToList ();
-                       List<ExceptionHandler> reverse_handlers = body.ExceptionHandlers.Reverse ().ToList ();
-
-                       var trys = new Dictionary<ExceptionHandler, bool> ();
-                       if (handlers.Count > 0)
-                               trys [handlers [0]] = true;
-                       for (int i = 1; i < handlers.Count; ++i) {
-                               trys [handlers [i]] = true;
-                               for (int j = 0; j < i; ++j) {
-                                       if (handlers [i].TryStart == handlers [j].TryStart && handlers [i].TryEnd == handlers [j].TryEnd) {
-                                               trys [handlers [i]] = false;
-                                               break;
-                                       }
-                               }
-                       }
-
-                       idx = 0;
-                       var handler_to_idx = new Dictionary<ExceptionHandler, int> ();
-                       foreach (ExceptionHandler eh in body.ExceptionHandlers) {
-                               handler_to_idx [eh] = idx;
-                               idx ++;
-                       }
-
-                       foreach (var ins in body.Instructions) {
-                               foreach (var eh in handlers) {
-                                       if (eh.TryEnd == ins && trys [eh]) {
-                                               indent --;
-                                               WriteLine ("} // end try " + handler_to_idx [eh]);
-                                       }
-
-                                       if (eh.HandlerEnd == ins) {
-                                               indent --;
-                                               WriteLine ("} // end handler " + handler_to_idx [eh]);
-                                       }
-                               }                       
-
-                               foreach (var eh in reverse_handlers) {
-                                       if (eh.TryStart == ins && trys [eh]) {
-                                               WriteLine (".try { // " + handler_to_idx [eh]);
-                                               indent ++;
-                                       }
-                                       if (eh.HandlerStart == ins) {
-                                               string type_str = null;
-                                               switch (eh.HandlerType) {
-                                               case ExceptionHandlerType.Catch:
-                                                       type_str = "catch";
-                                                       break;
-                                               case ExceptionHandlerType.Finally:
-                                                       type_str = "finally";
-                                                       break;
-                                               default:
-                                                       throw new NotImplementedException (eh.HandlerType.ToString ());
-                                               }
-                                               if (eh.CatchType == null)
-                                                       WriteLine (type_str + " { // " + handler_to_idx [eh]);
-                                               else
-                                                       WriteLine (type_str + " " + StringifyTypeRef (eh.CatchType) + " { // " + handler_to_idx [eh]);
-                                               indent ++;
-                                       }
-                               }
-
-                               WriteLine (StringifyIns (ins));
-                       }
-               }
-               indent --;
-               WriteLine ("}");
-       }
-
-       // Based on Instruction:ToString ()
-       public string StringifyIns (Instruction ins) {
-               var sb = new StringBuilder ();
-
-               AppendLabel (sb, ins);
-               sb.Append (':');
-               sb.Append ("  ");
-               sb.Append (ins.OpCode.Name);
-
-               if (ins.Operand == null)
-                       return sb.ToString ();
-
-               sb.Append (' ');
-
-               object operand = ins.Operand;
-               switch (ins.OpCode.OperandType) {
-               case OperandType.ShortInlineBrTarget:
-               case OperandType.InlineBrTarget:
-                       AppendLabel (sb, (Instruction) operand);
-                       break;
-               case OperandType.InlineSwitch:
-                       var labels = (Instruction []) operand;
-                       sb.Append ("(");
-                       for (int i = 0; i < labels.Length; i++) {
-                               if (i > 0)
-                                       sb.Append (',');
-
-                               AppendLabel (sb, labels [i]);
-                       }
-                       sb.Append (")");
-                       break;
-                       case OperandType.InlineString:
-                               sb.Append ('\"');
-                               sb.Append (EscapeString ((string)operand));
-                               sb.Append ('\"');
-                               break;
-               default:
-                       if (operand is MethodReference) {
-                               if (ins.OpCode == OpCodes.Ldtoken)
-                                       sb.Append ("method ");
-                               sb.Append (StringifyMethodRef ((MethodReference)operand));
-                       } else if (operand is TypeReference)
-                               sb.Append (StringifyTypeRef ((TypeReference)operand));
-                       else if (operand is VariableDefinition)
-                               sb.Append (operand.ToString ());
-                       else if (operand is FieldReference) {
-                               if (ins.OpCode == OpCodes.Ldtoken)
-                                       sb.Append ("field ");
-                               sb.Append (StringifyFieldRef ((FieldReference)operand));
-                       } else if (operand is ParameterDefinition) {
-                               var pd = (operand as ParameterDefinition);
-                               sb.Append (pd.Index + (pd.Method.HasThis ? 1 : 0));
-                       }
-                       else {
-                               EmitConstantOperand (operand, sb);
-                       }
-                       break;
-                       }
-
-               return sb.ToString ();
-       }
-
-       static void AppendLabel (StringBuilder builder, Instruction instruction) {
-               builder.Append ("IL_");
-               builder.Append (instruction.Offset.ToString ("x4"));
-       }
-
-       void EmitProperty (PropertyDefinition p) {
-               // FIXME: attributes
-
-               var sb = new StringBuilder ();
-               sb.Append (".property ");
-               if (p.HasThis)
-                       sb.Append ("instance ");
-               sb.Append (StringifyTypeRef (p.PropertyType));
-               sb.Append (" ");
-               sb.Append (EscapeName (p.Name));
-               sb.Append ("(");
-               int idx = 0;
-               foreach (var par in p.Parameters) {
-                       if (idx > 0)
-                               sb.Append (", ");
-                       sb.Append (StringifyTypeRef (par.ParameterType));
-                       idx ++;
-               }
-               sb.Append (")");
-               WriteLine (sb.ToString ());
-               WriteLine ("{");
-               indent ++;
-               EmitCattrs (p);
-               if (p.SetMethod != null)
-                       WriteLine (".set " + StringifyMethodRef (p.SetMethod));
-               if (p.GetMethod != null)
-                       WriteLine (".get " + StringifyMethodRef (p.GetMethod));
-               if (p.HasOtherMethods)
-                       throw new NotImplementedException ();
-               indent --;
-               WriteLine ("}");
-       }
-
-       void EmitEvent (EventDefinition e) {
-               WriteLine (".event " + StringifyTypeRef (e.EventType) + " " + EscapeName (e.Name));
-               WriteLine ("{");
-               indent ++;
-               if (e.AddMethod != null)
-                       WriteLine (".addon " + StringifyMethodRef (e.AddMethod));
-               if (e.RemoveMethod != null)
-                       WriteLine (".removeon " + StringifyMethodRef (e.RemoveMethod));
-               foreach (var m in e.OtherMethods)
-                       WriteLine (".other " + StringifyMethodRef (m));
-               indent --;
-               WriteLine ("}");
-       }
-
-       void EmitData () {
-               foreach (var fd in fields_with_rva) {
-                       WriteLine (String.Format (".data D_{0:x8} = bytearray (", fd.RVA));
-                       WriteBlob (fd.InitialValue);
-               }
-       }
-
-       void EmitConstantOperand (object operand, StringBuilder sb) {
-               if (operand is double) {
-                       double d = (double)operand;
-                       // FIXME:
-                       //if (Double.IsNaN (d) || Double.IsInfinity (d)) {
-                       {
-                               byte[] b = DataConverter.GetBytesLE (d);
-                               sb.Append ("(");
-                               int index = 0;
-                               for (int i = 0; i < b.Length; ++i) {
-                                       if (index > 0)
-                                               sb.Append (" ");
-                                       sb.Append (String.Format ("{0:x2}", b [i]));
-                                       index ++;
-                               }
-                               sb.Append (")");
-                       }
-               } else if (operand is float) {
-                       float d = (float)operand;
-                       // FIXME:
-                       //if (Single.IsNaN (d) || Single.IsInfinity (d)) {
-                       {
-                               byte[] b = DataConverter.GetBytesLE (d);
-                               sb.Append ("(");
-                               int index = 0;
-                               for (int i = 0; i < b.Length; ++i) {
-                                       if (index > 0)
-                                               sb.Append (" ");
-                                       sb.Append (String.Format ("{0:x2}", b [i]));
-                                       index ++;
-                               }
-                               sb.Append (")");
-                       }
-               } else if (operand.GetType ().Assembly == typeof (int).Assembly)
-                       sb.Append (operand.ToString ());
-               else
-                       throw new NotImplementedException (operand.GetType ().ToString ());
-       }
-
-       void EmitConstant (object o, StringBuilder sb) {
-               if (o is byte)
-                       sb.Append (String.Format (" = int8(0x{0:x2})", (byte)o));
-               else if (o is sbyte)
-                       sb.Append (String.Format (" = int8(0x{0:x2})", (sbyte)o));
-               else if (o is short)
-                       sb.Append (String.Format (" = int16(0x{0:x4})", (short)o));
-               else if (o is ushort)
-                       sb.Append (String.Format (" = int16(0x{0:x4})", (ushort)o));
-               else if (o is int)
-                       sb.Append (String.Format (" = int32(0x{0:x8})", (int)o));
-               else if (o is uint)
-                       sb.Append (String.Format (" = int32(0x{0:x8})", (uint)o));
-               else if (o is long)
-                       sb.Append (String.Format (" = int64(0x{0:x8})", (long)o));
-               else if (o is ulong)
-                       sb.Append (String.Format (" = int64(0x{0:x8})", (ulong)o));
-               else if (o is string)
-                       sb.Append (String.Format (" = \"{0}\"", EscapeString ((string)o)));
-               else if (o is bool)
-                       sb.Append (String.Format (" = bool({0})", (bool)o ? "true" : " false"));
-               else if (o is char)
-                       sb.Append (String.Format (" = char(0x{0:x4})", (int)(char)o));
-               else if (o is double)
-                       // FIXME:
-                       sb.Append (String.Format (" = float64({0:f})", (double)o));
-               else if (o is float)
-                       // FIXME:
-                       sb.Append (String.Format (" = float32({0:f})", (float)o));
-               else if (o == null)
-                       sb.Append ("= nullref");
-               else
-                       throw new NotImplementedException ("" + o.GetType ().ToString () + " " + o.ToString ());
-       }
-}
diff --git a/mcs/tools/ildasm/ildasm.exe.sources b/mcs/tools/ildasm/ildasm.exe.sources
deleted file mode 100644 (file)
index 937aaea..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-ildasm.cs
-tables.cs
-DataConverter.cs
-
-
diff --git a/mcs/tools/ildasm/tables.cs b/mcs/tools/ildasm/tables.cs
deleted file mode 100644 (file)
index dd8d8c6..0000000
+++ /dev/null
@@ -1,606 +0,0 @@
-using System;
-using System.IO;
-using System.Text;
-using System.Collections.Generic;
-using System.Linq;
-using Mono.Cecil;
-using Mono.Cecil.Cil;
-using Mono;
-
-/*
- * This partial class contains the tables used by the disassembler.
- */
-public partial class ILDAsm {
-
-       Dictionary<uint, string> type_access_map = new Dictionary <uint, string> () {
-               { (uint)TypeAttributes.NotPublic, "private " },
-               { (uint)TypeAttributes.Public, "public " },
-               { (uint)TypeAttributes.NestedPublic, "nested public " },
-               { (uint)TypeAttributes.NestedPrivate, "nested private " },
-               { (uint)TypeAttributes.NestedFamily, "nested family " },
-               { (uint)TypeAttributes.NestedAssembly, "nested assembly " },
-               { (uint)TypeAttributes.NestedFamANDAssem, "nested famandassem " },
-               { (uint)TypeAttributes.NestedFamORAssem, "nested famorassem " },
-       };
-       Dictionary<uint, string> type_layout_map = new Dictionary <uint, string> () {
-               { (uint)TypeAttributes.AutoLayout, "auto " },
-               { (uint)TypeAttributes.SequentialLayout, "sequential " },
-               { (uint)TypeAttributes.ExplicitLayout, "explicit " }
-       };
-       Dictionary<uint, string> type_string_format_map = new Dictionary <uint, string> () {
-               { (uint)TypeAttributes.AnsiClass, "ansi " },
-               { (uint)TypeAttributes.UnicodeClass, "unicode " },
-               //{ (uint)TypeAttributes.AutoClass, "unicode " },
-       };
-       Dictionary<uint, string> type_flag_map = new Dictionary <uint, string> () {
-               { (uint)TypeAttributes.Abstract, "abstract " },
-               { (uint)TypeAttributes.Sealed, "sealed " },
-               { (uint)TypeAttributes.SpecialName, "specialname " },
-               { (uint)TypeAttributes.Import, "import " },
-               { (uint)TypeAttributes.Serializable, "serializable " },
-               { (uint)TypeAttributes.BeforeFieldInit, "beforefieldinit " },
-               { (uint)TypeAttributes.RTSpecialName, "rtspecialname " },
-               //{ (uint)TypeAttributes.HasSecurity, "rtspecialname " },
-               //{ (uint)TypeAttributes.Forwarder, "rtspecialname " },
-       };
-
-       Dictionary<uint, string> type_sem_map = new Dictionary <uint, string> () {
-               { (uint)TypeAttributes.Class, "" },
-               { (uint)TypeAttributes.Interface, "interface " },
-       };
-
-
-       Dictionary<uint, string> field_access_map = new Dictionary <uint, string> () {
-               { (uint)FieldAttributes.Private, "private " },
-               { (uint)FieldAttributes.FamANDAssem, "famandassem " },
-               { (uint)FieldAttributes.Assembly, "assembly " },
-               { (uint)FieldAttributes.Family, "family " },
-               { (uint)FieldAttributes.FamORAssem, "famorassem " },
-               { (uint)FieldAttributes.Public, "public " },
-       };
-
-       Dictionary<uint, string> field_flag_map = new Dictionary <uint, string> () {
-               { (uint)FieldAttributes.Static, "static " },
-               { (uint)FieldAttributes.Literal, "literal " },
-               { (uint)FieldAttributes.InitOnly, "initonly " },
-               { (uint)FieldAttributes.SpecialName, "specialname " },
-               { (uint)FieldAttributes.RTSpecialName, "rtspecialname " },
-               { (uint)FieldAttributes.NotSerialized, "notserialized " },              
-       };
-
-
-       Dictionary<uint, string> method_access_map = new Dictionary <uint, string> () {
-               { (uint)MethodAttributes.CompilerControlled, "privatescope " },
-               { (uint)MethodAttributes.Private, "private " },
-               { (uint)MethodAttributes.Public, "public " },
-               { (uint)MethodAttributes.Family, "family " },
-               { (uint)MethodAttributes.FamORAssem, "famorassem " },
-               { (uint)MethodAttributes.Assembly, "assembly " }
-       };
-
-       Dictionary<uint, string> method_flag_map = new Dictionary <uint, string> () {
-               { (uint)MethodAttributes.Static, "static " },
-               { (uint)MethodAttributes.Final, "final " },
-               { (uint)MethodAttributes.Virtual, "virtual " },
-               { (uint)MethodAttributes.HideBySig, "hidebysig " },
-               { (uint)MethodAttributes.NewSlot, "newslot " },
-               { (uint)MethodAttributes.CheckAccessOnOverride, "strict " },
-               { (uint)MethodAttributes.Abstract, "abstract " },
-               { (uint)MethodAttributes.SpecialName, "specialname " },
-               { (uint)MethodAttributes.RTSpecialName, "rtspecialname " },
-       };
-
-
-       Dictionary<uint, string> method_impl_map = new Dictionary <uint, string> () {
-               { (uint)MethodImplAttributes.IL, "cil " },
-               { (uint)MethodImplAttributes.Runtime, "runtime " }
-       };
-       Dictionary<uint, string> method_managed_map = new Dictionary <uint, string> () {
-               { (uint)MethodImplAttributes.Managed, "managed " }
-       };
-       Dictionary<uint, string> method_impl_flag_map = new Dictionary <uint, string> () {
-               { (uint)MethodImplAttributes.PreserveSig, "preservesig " },
-               { (uint)MethodImplAttributes.InternalCall, "internalcall " },
-               { (uint)MethodImplAttributes.Synchronized, "synchronized " },
-               { (uint)MethodImplAttributes.NoInlining, "noinlining " },
-       };
-
-
-       Dictionary<NativeType, string> native_type_to_str = new Dictionary<NativeType, string> () {
-               { NativeType.Boolean, "bool" },
-               { NativeType.I1, "int8" },
-               { NativeType.U1, "unsigned int8" },
-               { NativeType.I2, "int16" },
-               { NativeType.U2, "unsigned int16" },
-               { NativeType.I4, "int32" },
-               { NativeType.U4, "unsigned int32" },
-               { NativeType.I8, "int64" },
-               { NativeType.U8, "unsigned int64" },
-               //{ NativeType.R4, "int32" },
-               //{ NativeType.R8, "unsigned int32" },
-               { NativeType.LPStr, "lpstr" },
-               { NativeType.Int, "int" },
-               //{ NativeType.Int, "int" },
-               { NativeType.Func, "method" },
-               //{ NativeType.Array, "int" },
-               //{ NativeType.Currency, "method" },
-               { NativeType.BStr, "bstr " },
-               { NativeType.LPWStr, "lpwstr" },
-               //{ NativeType.LPTStr, "lpwstr" },
-               //{ NativeType.FixedSysString, "lpwstr" },
-               { NativeType.IUnknown, "iunknown" },
-               { NativeType.IDispatch, "idispatch" },
-               { NativeType.Struct, "struct" },
-               { NativeType.IntF, "interface" },
-               //{ NativeType.SafeArray, "interface" },
-               //{ NativeType.FixedArray, "interface" },
-               //{ NativeType.ByValStr, "interface" },
-               //{ NativeType.ANSIBStr, "interface" },
-               //{ NativeType.TBStr, "interface" },
-               { NativeType.VariantBool, "variant bool" },
-               { NativeType.ASAny, "as any" },
-               { NativeType.LPStruct, "lpstruct" },
-               //{ NativeType.CustomMarshaler, "lpstruct" },
-               //{ NativeType.Error, "lpstruct" },
-       };
-
-
-       Dictionary<uint, string> pinvoke_char_set_map = new Dictionary <uint, string> () {
-               { (uint)PInvokeAttributes.CharSetNotSpec, "" },
-               { (uint)PInvokeAttributes.CharSetAnsi, "ansi " },
-               { (uint)PInvokeAttributes.CharSetUnicode, "unicode " },
-               { (uint)PInvokeAttributes.CharSetAuto, "autochar " },
-       };
-
-       Dictionary<uint, string> pinvoke_cconv_map = new Dictionary <uint, string> () {
-               { (uint)PInvokeAttributes.CallConvWinapi, "winapi " },
-               { (uint)PInvokeAttributes.CallConvCdecl, "cdecl " },
-               { (uint)PInvokeAttributes.CallConvStdCall, "stdcall " },
-               { (uint)PInvokeAttributes.CallConvThiscall, "thiscall " },
-               { (uint)PInvokeAttributes.CallConvFastcall, "fastcall " },
-       };
-
-       Dictionary<uint, string> pinvoke_flags_map = new Dictionary <uint, string> () {
-               { (uint)PInvokeAttributes.SupportsLastError, "lasterr " },
-       };
-
-
-       Dictionary<SecurityAction, string> sec_action_to_string = new Dictionary<SecurityAction, string> () {
-               //{ SecurityAction.Request, "reqmin" },
-               { SecurityAction.Demand, "demand" },
-               { SecurityAction.Assert, "assert" },
-               { SecurityAction.Deny, "deny" },
-               { SecurityAction.PermitOnly, "permitonly" },
-               { SecurityAction.LinkDemand, "linkcheck" },
-               { SecurityAction.InheritDemand, "inheritcheck" },
-               { SecurityAction.RequestMinimum, "reqmin" },
-               { SecurityAction.RequestOptional, "reqopt" },
-               { SecurityAction.RequestRefuse, "reqrefuse" },
-               //{ SecurityAction.PreJitGrant, "reqmin" },
-               //{ SecurityAction.PreJitDeny, "reqmin" },
-               //{ SecurityAction.NonCasDemand, "reqmin" },
-               //{ SecurityAction.NonCasLinkDemand, "reqmin" },
-               //{ SecurityAction.NonCasInheritance, "reqmin" },
-       };
-
-
-       Dictionary<string, bool> keyword_table = new Dictionary<string, bool> {
-               {"9", true},
-               {"abstract", true},
-               {"add", true},
-               {"add.ovf", true},
-               {"add.ovf.un", true},
-               {"algorithm", true},
-               {"alignment", true},
-               {"and", true},
-               {"ansi", true},
-               {"any", true},
-               {"arglist", true},
-               {"array", true},
-               {"as", true},
-               {"assembly", true},
-               {"assert", true},
-               {"at", true},
-               {"autochar", true},
-               {"auto", true},
-               {"beforefieldinit", true},
-               {"bestfit", true},
-               {"beq", true},
-               {"beq.s", true},
-               {"bge", true},
-               {"bge.s", true},
-               {"bge.un", true},
-               {"bge.un.s", true},
-               {"bgt", true},
-               {"bgt.s", true},
-               {"bgt.un", true},
-               {"bgt.un.s", true},
-               {"ble", true},
-               {"ble.s", true},
-               {"ble.un", true},
-               {"ble.un.s", true},
-               {"blob", true},
-               {"blob_object", true},
-               {"blt", true},
-               {"blt.s", true},
-               {"blt.un", true},
-               {"blt.un.s", true},
-               {"bne.un", true},
-               {"bne.un.s", true},
-               {"bool", true},
-               {"box", true},
-               {"break", true},
-               {"brfalse", true},
-               {"brfalse.s", true},
-               {"br", true},
-               {"brinst", true},
-               {"brinst.s", true},
-               {"brnull", true},
-               {"brnull.s", true},
-               {"br.s", true},
-               {"brtrue", true},
-               {"brtrue.s", true},
-               {"brzero", true},
-               {"brzero.s", true},
-               {"bstr", true},
-               {"bytearray", true},
-               {"byvalstr", true},
-               {"call", true},
-               {"callconv", true},
-               {"calli", true},
-               {"callmostderived", true},
-               {"callvirt", true},
-               {"carray", true},
-               {"castclass", true},
-               {"catch", true},
-               {"cdecl", true},
-               {"ceq", true},
-               {"cf", true},
-               {"cgt", true},
-               {"cgt.un", true},
-               {"char", true},
-               {"charmaperror", true},
-               {"cil", true},
-               {"ckfinite", true},
-               {"class", true},
-               {"clsid", true},
-               {"clt", true},
-               {"clt.un", true},
-               {"Compilercontrolled", true},
-               {"const", true},
-               {"conv.i1", true},
-               {"conv.i2", true},
-               {"conv.i4", true},
-               {"conv.i8", true},
-               {"conv.i", true},
-               {"conv.ovf.i1", true},
-               {"conv.ovf.i1.un", true},
-               {"conv.ovf.i2", true},
-               {"conv.ovf.i2.un", true},
-               {"conv.ovf.i4", true},
-               {"conv.ovf.i4.un", true},
-               {"conv.ovf.i8", true},
-               {"conv.ovf.i8.un", true},
-               {"conv.ovf.i", true},
-               {"conv.ovf.i.un", true},
-               {"conv.ovf.u1", true},
-               {"conv.ovf.u1.un", true},
-               {"conv.ovf.u2", true},
-               {"conv.ovf.u2.un", true},
-               {"conv.ovf.u4", true},
-               {"conv.ovf.u4.un", true},
-               {"conv.ovf.u8", true},
-               {"conv.ovf.u8.un", true},
-               {"conv.ovf.u", true},
-               {"conv.ovf.u.un", true},
-               {"conv.r4", true},
-               {"conv.r8", true},
-               {"conv.r.un", true},
-               {"conv.u1", true},
-               {"conv.u2", true},
-               {"conv.u4", true},
-               {"conv.u8", true},
-               {"conv.u", true},
-               {"cpblk", true},
-               {"cpobj", true},
-               {"currency", true},
-               {"custom", true},
-               {"date", true},
-               {"decimal", true},
-               {"default", true},
-               {"demand", true},
-               {"deny", true},
-               {"div", true},
-               {"div.un", true},
-               {"dup", true},
-               {"endfault", true},
-               {"endfilter", true},
-               {"endfinally", true},
-               {"endmac", true},
-               {"enum", true},
-               {"error", true},
-               {"explicit", true},
-               {"extends", true},
-               {"extern", true},
-               {"false", true},
-               {"famandassem", true},
-               {"family", true},
-               {"famorassem", true},
-               {"fastcall", true},
-               {"fault", true},
-               {"field", true},
-               {"filetime", true},
-               {"filter", true},
-               {"final", true},
-               {"finally", true},
-               {"fixed", true},
-               {"flags", true},
-               {"float32", true},
-               {"float64", true},
-               {"float", true},
-               {"forwardref", true},
-               {"fromunmanaged", true},
-               {"handler", true},
-               {"hidebysig", true},
-               {"hresult", true},
-               {"idispatch", true},
-               {"il", true},
-               {"illegal", true},
-               {"implements", true},
-               {"implicitcom", true},
-               {"implicitres", true},
-               {"import", true},
-               {"in", true},
-               {"inheritcheck", true},
-               {"initblk", true},
-               {"init", true},
-               {"initobj", true},
-               {"initonly", true},
-               {"instance", true},
-               {"int16", true},
-               {"int32", true},
-               {"int64", true},
-               {"int8", true},
-               {"interface", true},
-               {"internalcall", true},
-               {"int", true},
-               {"isinst", true},
-               {"iunknown", true},
-               {"jmp", true},
-               {"lasterr", true},
-               {"lcid", true},
-               {"ldarg.0", true},
-               {"ldarg.1", true},
-               {"ldarg.2", true},
-               {"ldarg.3", true},
-               {"ldarga", true},
-               {"ldarga.s", true},
-               {"ldarg", true},
-               {"ldarg.s", true},
-               {"ldc.i4.0", true},
-               {"ldc.i4.1", true},
-               {"ldc.i4.2", true},
-               {"ldc.i4.3", true},
-               {"ldc.i4.4", true},
-               {"ldc.i4.5", true},
-               {"ldc.i4.6", true},
-               {"ldc.i4.7", true},
-               {"ldc.i4.8", true},
-               {"ldc.i4", true},
-               {"ldc.i4.m1", true},
-               {"ldc.i4.M1", true},
-               {"ldc.i4.s", true},
-               {"ldc.i8", true},
-               {"ldc.r4", true},
-               {"ldc.r8", true},
-               {"ldelem", true},
-               {"ldelema", true},
-               {"ldelem.i1", true},
-               {"ldelem.i2", true},
-               {"ldelem.i4", true},
-               {"ldelem.i8", true},
-               {"ldelem.i", true},
-               {"ldelem.r4", true},
-               {"ldelem.r8", true},
-               {"ldelem.ref", true},
-               {"ldelem.u1", true},
-               {"ldelem.u2", true},
-               {"ldelem.u4", true},
-               {"ldelem.u8", true},
-               {"ldflda", true},
-               {"ldfld", true},
-               {"ldftn", true},
-               {"ldind.i1", true},
-               {"ldind.i2", true},
-               {"ldind.i4", true},
-               {"ldind.i8", true},
-               {"ldind.i", true},
-               {"ldind.r4", true},
-               {"ldind.r8", true},
-               {"ldind.ref", true},
-               {"ldind.u1", true},
-               {"ldind.u2", true},
-               {"ldind.u4", true},
-               {"ldind.u8", true},
-               {"ldlen", true},
-               {"ldloc.0", true},
-               {"ldloc.1", true},
-               {"ldloc.2", true},
-               {"ldloc.3", true},
-               {"ldloca", true},
-               {"ldloca.s", true},
-               {"ldloc", true},
-               {"ldloc.s", true},
-               {"ldnull", true},
-               {"ldobj", true},
-               {"ldsflda", true},
-               {"ldsfld", true},
-               {"ldstr", true},
-               {"ldtoken", true},
-               {"ldvirtftn", true},
-               {"leave", true},
-               {"leave.s", true},
-               {"legacy", true},
-               {"linkcheck", true},
-               {"literal", true},
-               {"localloc", true},
-               {"lpstr", true},
-               {"lpstruct", true},
-               {"lptstr", true},
-               {"lpvoid", true},
-               {"lpwstr", true},
-               {"managed", true},
-               {"marshal", true},
-               {"method", true},
-               {"mkrefany", true},
-               {"modopt", true},
-               {"modreq", true},
-               {"mul", true},
-               {"mul.ovf", true},
-               {"mul.ovf.un", true},
-               {"native", true},
-               {"neg", true},
-               {"nested", true},
-               {"newarr", true},
-               {"newobj", true},
-               {"newslot", true},
-               {"noappdomain", true},
-               {"noinlining", true},
-               {"nomachine", true},
-               {"nomangle", true},
-               {"nometadata", true},
-               {"noncasdemand", true},
-               {"noncasinheritance", true},
-               {"noncaslinkdemand", true},
-               {"nop", true},
-               {"noprocess", true},
-               {"not", true},
-               {"not_in_gc_heap", true},
-               {"notremotable", true},
-               {"notserialized", true},
-               {"null", true},
-               {"nullref", true},
-               {"object", true},
-               {"objectref", true},
-               {"off", true},
-               {"on", true},
-               {"opt", true},
-               {"optil", true},
-               {"or", true},
-               {"out", true},
-               {"permitonly", true},
-               {"pinned", true},
-               {"pinvokeimpl", true},
-               {"pop", true},
-               {"prefix1", true},
-               {"prefix2", true},
-               {"prefix3", true},
-               {"prefix4", true},
-               {"prefix5", true},
-               {"prefix6", true},
-               {"prefix7", true},
-               {"prefixref", true},
-               {"prejitdeny", true},
-               {"prejitgrant", true},
-               {"preservesig", true},
-               {"private", true},
-               {"privatescope", true},
-               {"property", true},
-               {"protected", true},
-               {"public", true},
-               {"readonly", true},
-               {"record", true},
-               {"refany", true},
-               {"refanytype", true},
-               {"refanyval", true},
-               {"rem", true},
-               {"rem.un", true},
-               {"reqmin", true},
-               {"reqopt", true},
-               {"reqrefuse", true},
-               {"reqsecobj", true},
-               {"request", true},
-               {"ret", true},
-               {"rethrow", true},
-               {"retval", true},
-               {"rtspecialname", true},
-               {"runtime", true},
-               {"safearray", true},
-               {"sealed", true},
-               {"sequential", true},
-               {"serializable", true},
-               {"shl", true},
-               {"shr", true},
-               {"shr.un", true},
-               {"sizeof", true},
-               {"special", true},
-               {"specialname", true},
-               {"starg", true},
-               {"starg.s", true},
-               {"static", true},
-               {"stdcall", true},
-               {"stelem", true},
-               {"stelem.i1", true},
-               {"stelem.i2", true},
-               {"stelem.i4", true},
-               {"stelem.i8", true},
-               {"stelem.i", true},
-               {"stelem.r4", true},
-               {"stelem.r8", true},
-               {"stelem.ref", true},
-               {"stfld", true},
-               {"stind.i1", true},
-               {"stind.i2", true},
-               {"stind.i4", true},
-               {"stind.i8", true},
-               {"stind.i", true},
-               {"stind.r4", true},
-               {"stind.r8", true},
-               {"stloc", true},
-               {"stobj", true},
-               {"storage", true},
-               {"stored_object", true},
-               {"streamed_object", true},
-               {"stream", true},
-               {"strict", true},
-               {"string", true},
-               {"struct", true},
-               {"stsfld", true},
-               {"sub", true},
-               {"sub.ovf", true},
-               {"sub.ovf.un", true},
-               {"switch", true},
-               {"synchronized", true},
-               {"syschar", true},
-               {"sysstring", true},
-               {"tbstr", true},
-               {"thiscall", true},
-               {"tls", true},
-               {"to", true},
-               {"true", true},
-               {"type", true},
-               {"typedref", true},
-               {"uint", true},
-               {"uint8", true},
-               {"uint16", true},
-               {"uint32", true},
-               {"uint64", true},
-               {"unbox", true},
-               {"unicode", true},
-               {"unmanagedexp", true},
-               {"unmanaged", true},
-               {"unsigned", true},
-               {"userdefined", true},
-               {"value", true},
-               {"valuetype", true},
-               {"vararg", true},
-               {"variant", true},
-               {"vector", true},
-               {"virtual", true},
-               {"void", true},
-               {"wchar", true},
-               {"winapi", true},
-               {"with", true},
-               {"xor", true},
-       };
-}
\ No newline at end of file
index bd96da20aac41926bdcd6f12a0458050ba1b3f14..cadab17357a7f6b2995bca2c47cbaa3e8740cc97 100644 (file)
@@ -344,6 +344,15 @@ namespace Mono.Linker.Steps {
                        Annotations.Mark (provider);
                }
 
+               protected virtual void MarkSerializable (TypeDefinition type)
+               {
+                       if (!type.HasMethods)
+                               return;
+
+                       MarkMethodsIf (type.Methods, IsDefaultConstructorPredicate);
+                       MarkMethodsIf (type.Methods, IsSpecialSerializationConstructorPredicate);
+               }
+
                protected virtual TypeDefinition MarkType (TypeReference reference)
                {
                        if (reference == null)
@@ -374,10 +383,8 @@ namespace Mono.Linker.Steps {
                                MarkMethodCollection (type.Methods);
                        }
 
-                       if (IsSerializable (type) && type.HasMethods) {
-                               MarkMethodsIf (type.Methods, IsDefaultConstructorPredicate);
-                               MarkMethodsIf (type.Methods, IsSpecialSerializationConstructorPredicate);
-                       }
+                       if (IsSerializable (type))
+                               MarkSerializable (type);
 
                        MarkTypeSpecialCustomAttributes (type);
 
@@ -567,7 +574,7 @@ namespace Mono.Linker.Steps {
 
                static bool IsDefaultConstructor (MethodDefinition method)
                {
-                       return IsConstructor (method) && method.Parameters.Count == 0;
+                       return IsConstructor (method) && !method.HasParameters;
                }
 
                static bool IsConstructor (MethodDefinition method)
index 9929998565c9e1f63eafd7ff4d33c760156b5dde..5919870876ca773db4ebbb255220415b927870c5 100644 (file)
@@ -47,13 +47,11 @@ namespace Mono.Documentation {
                internal ExceptionSources (TypeReference exception)
                {
                        Exception = exception;
-                       SourcesList = new List<MemberReference> ();
-                       Sources = new ReadOnlyCollection<MemberReference> (SourcesList);
+                       Sources   = new HashSet<MemberReference> ();
                }
 
                public TypeReference Exception { get; private set; }
-               public ReadOnlyCollection<MemberReference> Sources { get; private set; }
-               internal List<MemberReference> SourcesList;
+               internal  HashSet<MemberReference>  Sources;
        }
 
 
@@ -93,13 +91,13 @@ namespace Mono.Documentation {
                                Dictionary<string, ExceptionSources> e;
                                if (!db.TryGetValue (memberDecl, out e)) {
                                        e = new Dictionary<string, ExceptionSources> ();
+                                       db.Add (memberDecl, e);
                                        var bodies = GetMethodBodies (member);
                                        foreach (var body in bodies) {
                                                if (body == null)
                                                        continue;
                                                FillExceptions (body, e);
                                        }
-                                       db.Add (memberDecl, e);
                                }
                                return e.Values;
                        }
@@ -145,6 +143,7 @@ namespace Mono.Documentation {
                                                                        body.Method.DeclaringType.Scope.Name == memberRef.DeclaringType.Scope.Name) ||
                                                                ((locations & ExceptionLocations.DependentAssemblies) != 0 && 
                                                                        body.Method.DeclaringType.Scope.Name != memberRef.DeclaringType.Scope.Name)) {
+
                                                        IEnumerable<ExceptionSources> memberExceptions = this [memberRef];
                                                        AddExceptions (body, instruction, 
                                                                        memberExceptions.Select (es => es.Exception),
@@ -181,7 +180,8 @@ namespace Mono.Documentation {
                                                s = new ExceptionSources (ex);
                                                exceptions.Add (eName, s);
                                        }
-                                       s.SourcesList.AddRange (sources);
+                                       foreach (var m in sources)
+                                               s.Sources.Add (m);
                                }
                        }
                }
index cccb63f5a472b7974b2bd9c95ee9480788395fa4..7559208868850cf98cc65ce296f8a8e9b3388214 100644 (file)
@@ -1813,6 +1813,7 @@ class MDocUpdater : MDocCommand
        
        private void UpdateExceptions (XmlNode docs, MemberReference member)
        {
+               string indent = new string (' ', 10);
                foreach (var source in new ExceptionLookup (exceptions.Value)[member]) {
                        string cref = slashdocFormatter.GetDeclaration (source.Exception);
                        var node = docs.SelectSingleNode ("exception[@cref='" + cref + "']");
@@ -1820,10 +1821,10 @@ class MDocUpdater : MDocCommand
                                continue;
                        XmlElement e = docs.OwnerDocument.CreateElement ("exception");
                        e.SetAttribute ("cref", cref);
-                       e.InnerXml = "To be added; from: <see cref=\"" + 
-                               string.Join ("\" />, <see cref=\"", 
+                       e.InnerXml = "To be added; from:\n" + indent + "<see cref=\"" +
+                               string.Join ("\" />,\n" + indent + "<see cref=\"",
                                                source.Sources.Select (m => slashdocFormatter.GetDeclaration (m))
-                                               .ToArray ()) +
+                                               .OrderBy (s => s)) +
                                "\" />";
                        docs.AppendChild (e);
                }
index 4bfe5962a28bf5c228e4ef9ba34e293fba84f2f1..b818401eca1644e5845841dffac17d22bb4bdeb6 100644 (file)
@@ -119,12 +119,10 @@ public class MDocToMSXDocConverter : MDocCommand {
                                XmlElement members = outputfiles [assemblyname];
                                if (members == null) continue; // assembly is strangely not listed in the index
                                
-                               //CreateMember(EcmaDoc.GetCref (type.DocumentElement), type.DocumentElement, members);
+                               CreateMember (GetCref (type.DocumentElement), type.DocumentElement, members);
                                        
                                foreach (XmlElement memberdoc in type.SelectNodes("Type/Members/Member")) {
-                                       //string name = EcmaDoc.GetCref (memberdoc);
-                                       // FIXME
-                                       string name = ns + "." + typename + "." + memberdoc.GetAttribute ("MemberName");
+                                       string name = GetCref (memberdoc);
                                        CreateMember(name, memberdoc, members);
                                }
                        }
@@ -133,6 +131,48 @@ public class MDocToMSXDocConverter : MDocCommand {
                        AddNamespaceSummary(nsSummaries, basepath, nsnode.GetAttribute("Name"));
                }
        }
+
+       static string GetCref (XmlElement member)
+       {
+               string typeName = XmlDocUtils.ToEscapedTypeName (member.SelectSingleNode("/Type/@FullName").InnerText);
+               if (member.Name == "Type")
+                       return "T:" + typeName;
+               string memberType = member.SelectSingleNode("MemberType").InnerText;
+               switch (memberType) {
+                       case "Constructor":
+                               return "C:" + typeName + MakeArgs(member);
+                       case "Event":
+                               return "E:" + typeName + "." + XmlDocUtils.ToEscapedMemberName (member.GetAttribute("MemberName"));
+                       case "Field":
+                               return "F:" + typeName + "." + XmlDocUtils.ToEscapedMemberName (member.GetAttribute("MemberName"));
+                       case "Method": {
+                               string name = "M:" + typeName + "." + XmlDocUtils.ToEscapedMemberName (member.GetAttribute("MemberName")) + MakeArgs(member);
+                               if (member.GetAttribute("MemberName") == "op_Implicit" || member.GetAttribute("MemberName") == "op_Explicit")
+                                       name += "~" + XmlDocUtils.ToTypeName (member.SelectSingleNode("ReturnValue/ReturnType").InnerText, member);
+                               return name;
+                       }
+                       case "Property":
+                               return "P:" + typeName + "." + XmlDocUtils.ToEscapedMemberName (member.GetAttribute("MemberName")) + MakeArgs(member);
+                       default:
+                               throw new NotSupportedException ("MemberType '" + memberType + "' is not supported.");
+               }
+       }
+
+       static string MakeArgs (XmlElement member)
+       {
+               XmlNodeList parameters = member.SelectNodes ("Parameters/Parameter");
+               if (parameters.Count == 0)
+                       return "";
+               StringBuilder args = new StringBuilder ();
+               args.Append ("(");
+               args.Append (XmlDocUtils.ToTypeName (parameters [0].Attributes ["Type"].Value, member));
+               for (int i = 1; i < parameters.Count; ++i) {
+                       args.Append (",");
+                       args.Append (XmlDocUtils.ToTypeName (parameters [i].Attributes ["Type"].Value, member));
+               }
+               args.Append (")");
+               return args.ToString ();
+       }
        
        private static void AddNamespaceSummary(XmlDocument nsSummaries, string basepath, string currentNs) {
                foreach (var filename in new [] {
index b8bc52ffecc13a666510df363517f5f4c78ef628..75d65a244b05105fd3f9fae787a0eca2b0d17166 100644 (file)
@@ -203,8 +203,7 @@ namespace Mono.Documentation
                                        continue;
                                var file = XmlDocUtils.GetCachedFileName (outDir, url);
                                using (var o = File.AppendText (file)) {
-                                       Node _;
-                                       string contents = docRoot.RenderUrl (url, generator, out _);
+                                       string contents = docRoot.RenderUrl (url, generator, hs);
                                        o.Write (contents);
                                }
                        }
index e98f0a129587ccbea20f09b8300fe70c0faf18a9..a44b91988ada1e1ecbf34fa48bb7da98d5bc61df 100644 (file)
   <xsl:template name="create-index">
     <xsl:if test="
         count(PageTitle/@id) &gt; 0 and 
-        count(Signature/@id) &gt; 0 and
+        (count(Signature/@id) &gt; 0 or count(Signature/div/@id) &gt; 0) and
         count(Remarks/@id) &gt; 0 and
         count(Members/@id) &gt; 0
         ">
             <xsl:attribute name="href">
               <xsl:text>#</xsl:text>
               <xsl:value-of select="Signature/@id" />
+              <xsl:value-of select="Signature/div/@id" />
             </xsl:attribute>
             <xsl:text>Signature</xsl:text>
           </a>
index d28bcd6515f16eaef76d3c1bf02f618b615ec34b..9700fe0543d474e38aa23d90e2e6a1bc6b2721f8 100644 (file)
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="MyEvent">
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="op_Explicit">
index 0fe3b00451ea840bb67279cc60849e67ecb72f20..0a415dc1226b34761e08e19f321a5cc3f2a74038 100644 (file)
@@ -29,7 +29,8 @@
         <param name="docs">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Field">
index e2acdfc9cde026aee6ed823179e6c3f7aae9f5a1..848096553647593acb8009c514615576bfa90ee5 100644 (file)
         <param name="i">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ApplicationException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
-        <exception cref="T:System.SystemException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.ApplicationException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.SystemException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="total">
index 0fa5fb91367ef927a5bffc9f9250dc161a4b9797..c9a3fade121af8b9259e671f439983f57ad69bbe 100644 (file)
@@ -80,7 +80,8 @@
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process">
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />,
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process&lt;T&gt;">
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="UseHelper&lt;T,U,V&gt;">
index 881946f6580bca06f45642a9a6bc39a776e79182..6d67e84a38e88f5ac4db2239b66dadca19bf6cf4 100644 (file)
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="array1">
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Dynamic1">
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="DynamicE2">
index dd0db58d231252e9a7832f9df62ed6db673e56f0..c38f72491c80acf75ca1fd83b9578991cafb98e2 100644 (file)
@@ -42,7 +42,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotImplementedException">To be added; from: <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
+        <exception cref="T:System.NotImplementedException">To be added; from:
+          <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
       </Docs>
     </Member>
     <Member MemberName="ConvertAll&lt;TInput,TOutput&gt;">
@@ -68,7 +69,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.InvalidOperationException">To be added; from: <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
+        <exception cref="T:System.InvalidOperationException">To be added; from:
+          <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Resize&lt;T&gt;">
@@ -91,7 +93,8 @@
         <param name="newSize">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
       </Docs>
     </Member>
   </Members>
index 8734f749a9b2eb05af19977d6c2e8ea868ed3c7b..c1d7858ae45136a728e44ae16e3b12c4740c64fa 100644 (file)
@@ -28,7 +28,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotSupportedException">To be added; from: <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
+        <exception cref="T:System.NotSupportedException">To be added; from:
+          <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
       </Docs>
     </Member>
   </Members>
index b082688677f9891ede22b3618dd8a51d14a0f8a4..96aee607a9951683ebd223f8b5efe2fde0c539cd 100644 (file)
@@ -131,7 +131,8 @@ and the second dimension indexed by 1, 2, and 3. </para>
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotImplementedException">To be added; from: <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
+        <exception cref="T:System.NotImplementedException">To be added; from:
+          <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
       </Docs>
     </Member>
     <Member MemberName="ConvertAll&lt;T,U&gt;">
@@ -168,7 +169,8 @@ and the second dimension indexed by 1, 2, and 3. </para>
         <remarks>
           <para>The <see cref="T:System.Converter&lt;T,U&gt;" /> is a delegate that converts an array element to the target type.  The elements of  <paramref name="array" /> are individually passed to this converter, and the converted elements are saved in the new array. The source array remains unchanged.</para>
         </remarks>
-        <exception cref="T:System.InvalidOperationException">To be added; from: <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
+        <exception cref="T:System.InvalidOperationException">To be added; from:
+          <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
         <exception cref="T:System.ArgumentNullException">
           <paramref name="array" /> is <see langword="null" /> or <paramref name="converter" /> is <see langword="null" />.</exception>
       </Docs>
@@ -196,7 +198,8 @@ and the second dimension indexed by 1, 2, and 3. </para>
         <param name="newSize">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
       </Docs>
     </Member>
   </Members>
index 5ce89496398ac49cd002401634d0c52c6f1909f1..f7a5f40c8f45795f4b9a60438039b3eebeba5e4d 100644 (file)
@@ -78,7 +78,8 @@
    property.</para>
           </block>
         </remarks>
-        <exception cref="T:System.NotSupportedException">To be added; from: <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
+        <exception cref="T:System.NotSupportedException">To be added; from:
+          <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
         <exception cref="T:System.ArgumentException">foo</exception>
         <permission cref="T:System.SomePermission">bar</permission>
         <altmember cref="T:System.SomeMember">alt member</altmember>
index 9fe29c5aa686b03ca03e637295e817daada1421b..a4f8b4baf8d7d0df4d03d850460930f441952983 100644 (file)
       <Docs>
         <summary>To be added.</summary>
         <remarks>E:Mono.DocTest.Generic.GenericBase`1.ItemChanged</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="MyEvent">
       <Docs>
         <summary>To be added.</summary>
         <remarks>E:Mono.DocTest.Generic.GenericBase`1.MyEvent</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="op_Explicit">
index cc491e85254c7f8554c2a0a94e9d25e5ec23d999..82aa9a349194ae35692ad7a0efcec0e51ea8a6cb 100644 (file)
@@ -53,7 +53,8 @@ class Example {
         <remarks>
           <c>C:Mono.DocTest.DocAttribute(System.String)</c>
         </remarks>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Field">
index 42c429c98f8eb129ed800b2dff57f67c0a592047..d33393476a1efff36bdfce0bffe5c40add2a9d02 100644 (file)
         <summary>To be added.</summary>
         <remarks>
           <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" />.</remarks>
-        <exception cref="T:System.ApplicationException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
-        <exception cref="T:System.SystemException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.ApplicationException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.SystemException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="total">
index 37b8e40116b858a00bec455b4db5850827986c89..d949b562def12545dd909e8f47701484371b403b 100644 (file)
             <see cref="M:System.Collections.Generic.List{System.Int32}.Remove(`0)" />
           </para>
         </remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process">
         <summary>To be added.</summary>
         <remarks>
           <c>M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})</c>.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />,
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process&lt;T&gt;">
         <summary>To be added.</summary>
         <remarks>
           <c>M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})</c>.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="UseHelper&lt;T,U,V&gt;">
index a3ae10a149eceb9be2ec6e694a20e6ed6eae54ea..31435197800f7f09515598fabf94131998dadd7d 100644 (file)
         <summary>To be added.</summary>
         <remarks>
           <c>E:Mono.DocTest.Widget.AnotherEvent</c>.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="array1">
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Dynamic1">
         <remarks>
           <c>E:Mono.DocTest.Widget.DynamicE1</c>
         </remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="DynamicE2">
index 2965a7f7da2ea1c9722dc82b5e48353be9932554..1f221eb27b275a8540a435acddf053668e1eff65 100644 (file)
@@ -49,7 +49,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotImplementedException">To be added; from: <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
+        <exception cref="T:System.NotImplementedException">To be added; from:
+          <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
       </Docs>
     </Member>
     <Member MemberName="ConvertAll&lt;TInput,TOutput&gt;">
@@ -78,7 +79,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.InvalidOperationException">To be added; from: <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
+        <exception cref="T:System.InvalidOperationException">To be added; from:
+          <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Resize&lt;T&gt;">
         <param name="newSize">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
       </Docs>
     </Member>
   </Members>
index 0a1b9400db414588564e9f653fc3fe729d0a67ec..ceb5e1acfc73644967cf97a96f6c0961d418c144 100644 (file)
@@ -38,7 +38,8 @@
         <remarks>
           <c>M:System.Environment.GetFolderPath(System.Environment+SpecialFolder)</c>
         </remarks>
-        <exception cref="T:System.NotSupportedException">To be added; from: <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
+        <exception cref="T:System.NotSupportedException">To be added; from:
+          <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
       </Docs>
     </Member>
   </Members>
index c8283811e0fd92ed9159051620776b49ea7bba84..393a51ae7b3e11d5c4b008a23755981f982e377b 100644 (file)
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="MyEvent">
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="op_Explicit">
index c00d0e991f32a5ec1c725ef76a04c4fdb9a15147..5516cf272ebf5d8368031f8519de9de62db4e741 100644 (file)
@@ -35,7 +35,8 @@
         <param name="docs">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Field">
index ae648fae699390fada86a85342186711cb2e5e47..410dece134385e1f29cf6b88fef4e0af23b076d9 100644 (file)
         <param name="i">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ApplicationException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
-        <exception cref="T:System.SystemException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.ApplicationException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.SystemException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="total">
index 458a2e255ea570236decdc1ed5a0ee26b4ca178f..96e73c3baf54b4dfdc7de15a2a75fda81aaf1371 100644 (file)
@@ -98,7 +98,8 @@
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process">
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />,
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process&lt;T&gt;">
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="UseHelper&lt;T,U,V&gt;">
index 774d2396397f3999de0428c1bcd143e8b83a239a..0c1f1893057b0bdaa5cd9f7b111b95bf6b592b91 100644 (file)
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="array1">
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Dynamic1">
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="DynamicE2">
index 67fbe3ef045eb8259cae8d1dd594d8f4060ce7ba..779981099833dc7713412ac586cea044a6e554d4 100644 (file)
@@ -52,7 +52,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotImplementedException">To be added; from: <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
+        <exception cref="T:System.NotImplementedException">To be added; from:
+          <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
       </Docs>
     </Member>
     <Member MemberName="ConvertAll&lt;TInput,TOutput&gt;">
@@ -82,7 +83,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.InvalidOperationException">To be added; from: <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
+        <exception cref="T:System.InvalidOperationException">To be added; from:
+          <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Resize&lt;T&gt;">
         <param name="newSize">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
       </Docs>
     </Member>
   </Members>
index 0576dfb26044af82a6ba47f3477b4eb1305862d9..df4c852ba766efb40577c6e4fa0a1f42b19fd034 100644 (file)
@@ -34,7 +34,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotSupportedException">To be added; from: <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
+        <exception cref="T:System.NotSupportedException">To be added; from:
+          <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
       </Docs>
     </Member>
   </Members>
index e4b74d3bac8fd0a18a061e5c3d044699958b69af..42c2af1365f43bb63f0dcdb1c58186ef85bd7e70 100644 (file)
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="MyEvent">
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="op_Explicit">
index 8fa875fe6ffa48bd0f78bbc2d41682fe8b95d7e9..fbc5798295f9105ddf938c216218949b6b219c58 100644 (file)
@@ -33,7 +33,8 @@
         <param name="docs">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Field">
index 5d27f0ade8c51687f46f7c7573bdd77dd7b5836b..6aa658cc09fc6cb96f3f8af7429ceab7b338bc68 100644 (file)
         <param name="i">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ApplicationException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
-        <exception cref="T:System.SystemException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.ApplicationException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.SystemException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="total">
index b30f8bdb0f126284ac8577741e65c926b654b033..a7afb6cf27a92882519bf0eacb271b108be4e90d 100644 (file)
@@ -93,7 +93,8 @@
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process">
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />,
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process&lt;T&gt;">
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="UseHelper&lt;T,U,V&gt;">
index 82529c49ba35d914758ce0fda24e6194d0724c22..b2242b00993d41051ff72600d1dbd2a1856612ee 100644 (file)
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="array1">
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Dynamic1">
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="DynamicE2">
index 2965a7f7da2ea1c9722dc82b5e48353be9932554..1f221eb27b275a8540a435acddf053668e1eff65 100644 (file)
@@ -49,7 +49,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotImplementedException">To be added; from: <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
+        <exception cref="T:System.NotImplementedException">To be added; from:
+          <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
       </Docs>
     </Member>
     <Member MemberName="ConvertAll&lt;TInput,TOutput&gt;">
@@ -78,7 +79,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.InvalidOperationException">To be added; from: <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
+        <exception cref="T:System.InvalidOperationException">To be added; from:
+          <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Resize&lt;T&gt;">
         <param name="newSize">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
       </Docs>
     </Member>
   </Members>
index 7bf1dc8fc10f9ae428990d1993772dcc90b8fbb1..5c1923816d25d423ac6282eb0c763e5cacf252e5 100644 (file)
@@ -32,7 +32,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotSupportedException">To be added; from: <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
+        <exception cref="T:System.NotSupportedException">To be added; from:
+          <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
       </Docs>
     </Member>
   </Members>
index 9da902d5dd3c4e465a8cdeb01a9e6439dea6313c..00b54d75199606ca4d2c4c7e248ae1a9584736f1 100644 (file)
     </div>
     <h1 class="PageTitle" id="T:Mono.DocTest.Generic.Extensions">Extensions  Class</h1>
     <p class="Summary" id="T:Mono.DocTest.Generic.Extensions:Summary">extension methods!</p>
-    <div id="T:Mono.DocTest.Generic.Extensions:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public static class  <b>Extensions</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.Extensions:Signature">public static class  <b>Extensions</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.Extensions:Docs">
       <h2 class="Section">Remarks</h2>
index 78e190fc140f193e61d8b623423d0101fc222209..1336f30720eaa1b918a4acf6ffe5b7b0e4aaf098 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.Func`2:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.Func`2:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">[Mono.DocTest.Doc("method")]<br />[return:Mono.DocTest.Doc("return", Field=false)]<br />public delegate <i title="return type, with attributes!">TRet</i> <b>Func&lt;[Mono.DocTest.Doc("arg!")] TArg, [Mono.DocTest.Doc("ret!")] TRet&gt;</b> ([Mono.DocTest.Doc("arg-actual")] <i title="argument type, with attributes!">TArg</i> a)<br /> where TArg : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Exception">Exception</a><br /> where TRet : </div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.Func`2:Signature">[Mono.DocTest.Doc("method")]<br />[return:Mono.DocTest.Doc("return", Field=false)]<br />public delegate <i title="return type, with attributes!">TRet</i> <b>Func&lt;[Mono.DocTest.Doc("arg!")] TArg, [Mono.DocTest.Doc("ret!")] TRet&gt;</b> ([Mono.DocTest.Doc("arg-actual")] <i title="argument type, with attributes!">TArg</i> a)<br /> where TArg : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Exception">Exception</a></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.Func`2:Docs">
       <h4 class="Subsection">Type Parameters</h4>
index ad1ce4e5fb5a8fb842f089050c62d862ecdc8bfa..640edea5d159a35c35fbc75f5ab7d095e0940cee 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>GenericBase&lt;U&gt;.FooEventArgs</b> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.EventArgs">EventArgs</a></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:Signature">public class  <b>GenericBase&lt;U&gt;.FooEventArgs</b> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.EventArgs">EventArgs</a></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs">GenericBase</a>
+                      <a href="#C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs()">GenericBase</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs">GenericBase Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:member">
+        <h3 id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs()">GenericBase Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>GenericBase</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 73d94d0ed4259dbb19119ff8dea86e00edef7f12..93df5378c0a9bcc08ccd5c5c6858e5f7d421ddc7 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection.Enumerator:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection.Enumerator:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">protected struct  <b>GenericBase&lt;U&gt;.NestedCollection.Enumerator</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection.Enumerator:Signature">protected struct  <b>GenericBase&lt;U&gt;.NestedCollection.Enumerator</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection.Enumerator:Docs">
       <h2 class="Section">Remarks</h2>
index ff94eab5013a35b930e8fad3b85137a0ebf12279..5eaccf4724866b1bdfca4d6aad441f0b7222dc75 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>GenericBase&lt;U&gt;.NestedCollection</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection:Signature">public class  <b>GenericBase&lt;U&gt;.NestedCollection</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Generic.GenericBase`1.NestedCollection">GenericBase</a>
+                      <a href="#C:Mono.DocTest.Generic.GenericBase`1.NestedCollection()">GenericBase</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection">GenericBase Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection:member">
+        <h3 id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection()">GenericBase Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>GenericBase</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 59dd7e0721f462a4cce50fbd1f00c2f2a24947e2..51183f4e2bc0537219328afd00cba5aa792baa46 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.GenericBase`1:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.GenericBase`1:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>GenericBase&lt;U&gt;</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.GenericBase`1:Signature">public class  <b>GenericBase&lt;U&gt;</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.GenericBase`1:Docs">
       <h4 class="Subsection">Type Parameters</h4>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Generic.GenericBase`1">GenericBase</a>
+                      <a href="#C:Mono.DocTest.Generic.GenericBase`1()">GenericBase</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Generic.GenericBase`1:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Generic.GenericBase`1">GenericBase Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Generic.GenericBase`1:member">
+        <h3 id="C:Mono.DocTest.Generic.GenericBase`1()">GenericBase Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Generic.GenericBase`1():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>GenericBase</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
                   <span class="NotEntered">Documentation for this section has not yet been entered.</span>
                 </td>
               </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentNullException">ArgumentNullException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentOutOfRangeException">ArgumentOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.FormatException">FormatException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.IndexOutOfRangeException">IndexOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
               <tr valign="top">
                 <td>
                   <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.MulticastNotSupportedException">MulticastNotSupportedException</a>
                   <span class="NotEntered">Documentation for this section has not yet been entered.</span>
                 </td>
               </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentNullException">ArgumentNullException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentOutOfRangeException">ArgumentOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.FormatException">FormatException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.IndexOutOfRangeException">IndexOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
               <tr valign="top">
                 <td>
                   <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.MulticastNotSupportedException">MulticastNotSupportedException</a>
index 44da611b8bd8656c70431c3b2bcbd0d2964c1602..2a71d47683c2acddc6ca52bec7948e34c5f4cdf9 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.IFoo`1:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.IFoo`1:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public interface  <b>IFoo&lt;T&gt;</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.IFoo`1:Signature">public interface  <b>IFoo&lt;T&gt;</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.IFoo`1:Docs">
       <h4 class="Subsection">Type Parameters</h4>
index d38aa369c1ddd36e0e5e79cd6ffc348ccc5fb415..4ce462af161b624e25f7febf041ee4b2fa644072 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.MyList`1.Helper`2:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.MyList`1.Helper`2:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>MyList&lt;T, U, V&gt;</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.MyList`1.Helper`2:Signature">public class  <b>MyList&lt;T, U, V&gt;</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.MyList`1.Helper`2:Docs">
       <h4 class="Subsection">Type Parameters</h4>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Generic.MyList`1.Helper`2">MyList</a>
+                      <a href="#C:Mono.DocTest.Generic.MyList`1.Helper`2()">MyList</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Generic.MyList`1.Helper`2:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Generic.MyList`1.Helper`2">MyList Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Generic.MyList`1.Helper`2:member">
+        <h3 id="C:Mono.DocTest.Generic.MyList`1.Helper`2()">MyList Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Generic.MyList`1.Helper`2():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>MyList</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1.Helper`2:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1.Helper`2():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1.Helper`2:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1.Helper`2():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index da02046714c62454158a44cf200f8ed5dea9786a..312b3c4385e434565fab9bb76cfce6a01f95e1f8 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.MyList`1:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.MyList`1:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>MyList&lt;[Mono.DocTest.Doc("Type Parameter!")] T&gt;</b> : <a href="../Mono.DocTest.Generic/GenericBase`1.html">GenericBase&lt;T&gt;</a>,       <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerable`1">IEnumerable&lt;Int32[]&gt;</a></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.MyList`1:Signature">public class  <b>MyList&lt;[Mono.DocTest.Doc("Type Parameter!")] T&gt;</b> : <a href="../Mono.DocTest.Generic/GenericBase`1.html">GenericBase&lt;T&gt;</a>,        <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerable`1">IEnumerable&lt;Int32[]&gt;</a></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.MyList`1:Docs">
       <h4 class="Subsection">Type Parameters</h4>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Generic.MyList`1">MyList</a>
+                      <a href="#C:Mono.DocTest.Generic.MyList`1()">MyList</a>
                     </b>()</div>
                 </td>
                 <td>
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Generic.MyList`1.GetEnumerator">GetEnumerator</a>
+                    <a href="#M:Mono.DocTest.Generic.MyList`1.GetEnumerator()">GetEnumerator</a>
                   </b>()<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerator`1">IEnumerator&lt;Int32[]&gt;</a></nobr><blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
               <tr valign="top">
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Generic.MyList`1.GetHelper``2">GetHelper&lt;U,V&gt;</a>
+                    <a href="#M:Mono.DocTest.Generic.MyList`1.GetHelper``2()">GetHelper&lt;U,V&gt;</a>
                   </b>()<nobr> : <a href="../Mono.DocTest.Generic/MyList`1+Helper`2.html">MyList&lt;T&gt;.Helper&lt;U, V&gt;</a></nobr><blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
               <tr valign="top">
                   </div>
                 </td>
                 <td>
-                  <a href="#M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator">
+                  <a href="#M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator()">
                     <b>IEnumerable.GetEnumerator</b>
                   </a>
                 </td>
     <div class="Members" id="T:Mono.DocTest.Generic.MyList`1:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Generic.MyList`1">MyList Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Generic.MyList`1:member">
+        <h3 id="C:Mono.DocTest.Generic.MyList`1()">MyList Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Generic.MyList`1():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>MyList</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator">GetEnumerator Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator()">GetEnumerator Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerator`1">IEnumerator&lt;Int32[]&gt;</a> <b>GetEnumerator</b> ()</div>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator:Returns">
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator():Returns">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator():Remarks">
             <tt>M:Mono.DocTest.MyList`1.GetEnumerator</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2">GetHelper&lt;U,V&gt; Generic Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2()">GetHelper&lt;U,V&gt; Generic Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="../Mono.DocTest.Generic/MyList`1+Helper`2.html">MyList&lt;T&gt;.Helper&lt;U, V&gt;</a> <b>GetHelper&lt;U, V&gt;</b> ()</div>
           <h4 class="Subsection">Type Parameters</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2:Type Parameters">
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2():Type Parameters">
             <dl>
               <dt>
                 <i>U</i>
             </dl>
           </blockquote>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2:Returns">
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2():Returns">
             <tt>null</tt>.</blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2():Remarks">
             <tt>M:Mono.DocTest.Generic.MyList`1.GetHelper``2</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator">System.Collections.IEnumerable.GetEnumerator Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator()">System.Collections.IEnumerable.GetEnumerator Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <div class="Signature">
             <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.IEnumerator">IEnumerator</a> <b>System.Collections.IEnumerable.GetEnumerator</b> ()</div>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator:Returns">
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator():Returns">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator():Remarks">
             <tt>M:Mono.DocTest.MyList`1.System#Collections#GetEnumerator</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 4766687f9fb3d5b3df59e07429a30bb81627244f..75444ea1c4a7776b348c511e345dd09a9f00910b 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.MyList`2:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.MyList`2:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>MyList&lt;A, B&gt;</b> : <a href="../Mono.DocTest.Generic/GenericBase`1.html">GenericBase&lt;Dictionary&lt;A, B&gt;&gt;</a>,     <a href="../Mono.DocTest.Generic/IFoo`1.html">IFoo&lt;A&gt;</a>, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.ICollection`1">ICollection&lt;A&gt;</a>, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerable`1">IEnumerable&lt;A&gt;</a>, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerator`1">IEnumerator&lt;A&gt;</a><br /> where A : class, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IList`1">IList&lt;B&gt;</a>, new()<br /> where B : class, <i title="Ako generic param">A</i></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.MyList`2:Signature">public class  <b>MyList&lt;A, B&gt;</b> : <a href="../Mono.DocTest.Generic/GenericBase`1.html">GenericBase&lt;Dictionary&lt;A, B&gt;&gt;</a>,      <a href="../Mono.DocTest.Generic/IFoo`1.html">IFoo&lt;A&gt;</a>, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.ICollection`1">ICollection&lt;A&gt;</a>, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerable`1">IEnumerable&lt;A&gt;</a>, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerator`1">IEnumerator&lt;A&gt;</a><br /> where A : class, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IList`1">IList&lt;B&gt;</a>, new()<br /> where B : class, <i title="Ako generic param">A</i></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.MyList`2:Docs">
       <h4 class="Subsection">Type Parameters</h4>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Generic.MyList`2">MyList</a>
+                      <a href="#C:Mono.DocTest.Generic.MyList`2()">MyList</a>
                     </b>()</div>
                 </td>
                 <td>
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Generic.MyList`2.Dispose">Dispose</a>
+                    <a href="#M:Mono.DocTest.Generic.MyList`2.Dispose()">Dispose</a>
                   </b>()<blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
               <tr valign="top">
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Generic.MyList`2.Foo">Foo</a>
+                    <a href="#M:Mono.DocTest.Generic.MyList`2.Foo()">Foo</a>
                   </b>()<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.KeyValuePair`2">KeyValuePair&lt;IEnumerable&lt;A&gt;, IEnumerable&lt;B&gt;&gt;</a></nobr><blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
               <tr valign="top">
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Generic.MyList`2.GetEnumerator">GetEnumerator</a>
+                    <a href="#M:Mono.DocTest.Generic.MyList`2.GetEnumerator()">GetEnumerator</a>
                   </b>()<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.List`1.Enumerator">List&lt;A&gt;.Enumerator</a></nobr><blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
               <tr valign="top">
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Generic.MyList`2.MoveNext">MoveNext</a>
+                    <a href="#M:Mono.DocTest.Generic.MyList`2.MoveNext()">MoveNext</a>
                   </b>()<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a></nobr><blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
               <tr valign="top">
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Generic.MyList`2.Reset">Reset</a>
+                    <a href="#M:Mono.DocTest.Generic.MyList`2.Reset()">Reset</a>
                   </b>()<blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
             </table>
                   </div>
                 </td>
                 <td>
-                  <a href="#M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear">
+                  <a href="#M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear()">
                     <b>ICollection&lt;A&gt;.Clear</b>
                   </a>
                 </td>
                   </div>
                 </td>
                 <td>
-                  <a href="#M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator">
+                  <a href="#M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator()">
                     <b>IEnumerable&lt;A&gt;.GetEnumerator</b>
                   </a>
                 </td>
                   </div>
                 </td>
                 <td>
-                  <a href="#M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator">
+                  <a href="#M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator()">
                     <b>IEnumerable.GetEnumerator</b>
                   </a>
                 </td>
     <div class="Members" id="T:Mono.DocTest.Generic.MyList`2:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Generic.MyList`2">MyList Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Generic.MyList`2:member">
+        <h3 id="C:Mono.DocTest.Generic.MyList`2()">MyList Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Generic.MyList`2():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>MyList</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`2:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`2():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`2:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`2():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.Dispose">Dispose Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.Dispose:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.Dispose()">Dispose Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.Dispose():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>Dispose</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Dispose:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Dispose():Remarks">
             <tt>M:Mono.DocTest.MyList`2.Dispose</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Dispose:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Dispose():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.Foo">Foo Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.Foo:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.Foo()">Foo Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.Foo():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.KeyValuePair`2">KeyValuePair&lt;IEnumerable&lt;A&gt;, IEnumerable&lt;B&gt;&gt;</a> <b>Foo</b> ()</div>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.Foo:Returns">
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.Foo():Returns">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Foo:Remarks">M:Mono.DocTest.Generic.MyList`2.Foo</div>
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Foo():Remarks">M:Mono.DocTest.Generic.MyList`2.Foo</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Foo:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Foo():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator">GetEnumerator Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator()">GetEnumerator Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.List`1.Enumerator">List&lt;A&gt;.Enumerator</a> <b>GetEnumerator</b> ()</div>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator:Returns">A <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.List`1.Enumerator">List&lt;`0&gt;.Enumerator</a>.</blockquote>
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator():Returns">A <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.List`1.Enumerator">List&lt;`0&gt;.Enumerator</a>.</blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator():Remarks">
             <tt>M:Mono.DocTest.MyList`2.GetEnumerator</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.MoveNext">MoveNext Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.MoveNext:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.MoveNext()">MoveNext Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.MoveNext():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a> <b>MoveNext</b> ()</div>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.MoveNext:Returns">
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.MoveNext():Returns">
             <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a>
           </blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.MoveNext:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.MoveNext():Remarks">
             <tt>M:Mono.DocTest.MyList`2.MoveNext</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.MoveNext:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.MoveNext():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.Reset">Reset Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.Reset:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.Reset()">Reset Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.Reset():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>Reset</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Reset:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Reset():Remarks">
             <tt>M:Mono.DocTest.MyList`2.Reset</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Reset:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Reset():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear">System.Collections.Generic.ICollection&lt;A&gt;.Clear Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear()">System.Collections.Generic.ICollection&lt;A&gt;.Clear Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <div class="Signature">
             <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>System.Collections.Generic.ICollection&lt;A&gt;.Clear</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear():Remarks">
             <tt>M:Mono.DocTest.MyList`2.System#Collections#Generic#ICollection{A}#Clear</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator">System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator()">System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <div class="Signature">
             <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerator`1">IEnumerator&lt;A&gt;</a> <b>System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator</b> ()</div>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator:Returns">A <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerator`1">IEnumerator&lt;`0&gt;</a>.</blockquote>
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator():Returns">A <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerator`1">IEnumerator&lt;`0&gt;</a>.</blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator():Remarks">
             <tt>M:Mono.DocTest.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator">System.Collections.IEnumerable.GetEnumerator Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator()">System.Collections.IEnumerable.GetEnumerator Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <div class="Signature">
             <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.IEnumerator">IEnumerator</a> <b>System.Collections.IEnumerable.GetEnumerator</b> ()</div>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator:Returns">
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator():Returns">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator():Remarks">
             <tt>M:Mono.DocTest.MyList`2.System#Collections#GetEnumerator</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index d438287e94fb442dd342ae34bd38c6913edecbfd..dae529e4670ffa4ae2804b63467aaeeef3e4b83f 100644 (file)
     </div>
     <h1 class="PageTitle" id="T:Mono.DocTest.Color">Color  Enum</h1>
     <p class="Summary" id="T:Mono.DocTest.Color:Summary">Possible colors</p>
-    <div id="T:Mono.DocTest.Color:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public enum <b>Color</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Color:Signature">public enum <b>Color</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Color:Docs">
       <h2 class="Section">Remarks</h2>
index b69c1eb4e42009755ee742618eeb8b047f75056d..a3bb5ddffefbc8459a34662e2089af1c8432d0c6 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.D:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.D:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Object">object</a> <b>D</b> (<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Func`3">Func&lt;string, object, object&gt;</a> value)</div>
+      <div class="Signature" id="T:Mono.DocTest.D:Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Object">object</a> <b>D</b> (<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Func`3">Func&lt;string, object, object&gt;</a> value)</div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.D:Docs">
       <h4 class="Subsection">Parameters</h4>
index 9c293849c14a072558b55cea07feec90ed233310..609837edbcc43382a772f4343508ecc42dfbe327 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.DocAttribute:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.DocAttribute:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">[System.AttributeUsage(System.AttributeTargets.All)]<br />public class  <b>DocAttribute</b> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Attribute">Attribute</a></div>
+      <div class="Signature" id="T:Mono.DocTest.DocAttribute:Signature">[System.AttributeUsage(System.AttributeTargets.All)]<br />public class  <b>DocAttribute</b> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Attribute">Attribute</a></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.DocAttribute:Docs">
       <h2 class="Section">Remarks</h2>
index 0cd98cc3cb45b86a85b460ffe1a9696e2839e985..bad6608916c2538ec7f354605cc452245a4a67d6 100644 (file)
     </div>
     <h1 class="PageTitle" id="T:Mono.DocTest.DocValueType">DocValueType  Struct</h1>
     <p class="Summary" id="T:Mono.DocTest.DocValueType:Summary">Process interface</p>
-    <div id="T:Mono.DocTest.DocValueType:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public struct  <b>DocValueType</b> : <a href="../Mono.DocTest/IProcess.html">IProcess</a></div>
+      <div class="Signature" id="T:Mono.DocTest.DocValueType:Signature">public struct  <b>DocValueType</b> : <a href="../Mono.DocTest/IProcess.html">IProcess</a></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.DocValueType:Docs">
       <h2 class="Section">Remarks</h2>
index 278dfe86f58d44058ce8b8eaa2446807abcbfa99..75443ba178afd3fc1e64b22d7ad7c47255fc6717 100644 (file)
     </div>
     <h1 class="PageTitle" id="T:Mono.DocTest.IProcess">IProcess  Interface</h1>
     <p class="Summary" id="T:Mono.DocTest.IProcess:Summary">Process interface</p>
-    <div id="T:Mono.DocTest.IProcess:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public interface  <b>IProcess</b></div>
+      <div class="Signature" id="T:Mono.DocTest.IProcess:Signature">public interface  <b>IProcess</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.IProcess:Docs">
       <h2 class="Section">Remarks</h2>
index fba5a9f6ccdde020535d4fe6ad2107344b3e5e3b..7e45227c71bd9a45d312962074b26544581d46a1 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.UseLists:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.UseLists:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>UseLists</b></div>
+      <div class="Signature" id="T:Mono.DocTest.UseLists:Signature">public class  <b>UseLists</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.UseLists:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.UseLists">UseLists</a>
+                      <a href="#C:Mono.DocTest.UseLists()">UseLists</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.UseLists:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.UseLists">UseLists Constructor</h3>
-        <blockquote id="C:Mono.DocTest.UseLists:member">
+        <h3 id="C:Mono.DocTest.UseLists()">UseLists Constructor</h3>
+        <blockquote id="C:Mono.DocTest.UseLists():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>UseLists</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.UseLists:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.UseLists():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.UseLists:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.UseLists():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 47cce1db7595173f0bed9efa7b5fc625b7f45016..ba4e2ac9660e16bafaf140546a6ba9927e83bccd 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.Del:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.Del:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>Widget.Del</b> (<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Int32">int</a> i)</div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.Del:Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>Widget.Del</b> (<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Int32">int</a> i)</div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.Del:Docs">
       <h4 class="Subsection">Parameters</h4>
index 1962c75179f61776055caa71c272cc0379a73be4..0d2bc273e90355c15da3b0acde973db38f7abb0c 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.Direction:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.Direction:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">[System.Flags]<br />protected enum <b>Widget.Direction</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.Direction:Signature">[System.Flags]<br />protected enum <b>Widget.Direction</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.Direction:Docs">
       <h2 class="Section">Remarks</h2>
index a98e7c74827fe3840f9f3b6141351a565d2b154c..05beb05f4c99eefdae9f1f1746560eeaa4ecb1be 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.IMenuItem:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.IMenuItem:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public interface  <b>Widget.IMenuItem</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.IMenuItem:Signature">public interface  <b>Widget.IMenuItem</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.IMenuItem:Docs">
       <h2 class="Section">Remarks</h2>
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Widget.IMenuItem.A">A</a>
+                    <a href="#M:Mono.DocTest.Widget.IMenuItem.A()">A</a>
                   </b>()<blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
             </table>
     <div class="Members" id="T:Mono.DocTest.Widget.IMenuItem:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="M:Mono.DocTest.Widget.IMenuItem.A">A Method</h3>
-        <blockquote id="M:Mono.DocTest.Widget.IMenuItem.A:member">
+        <h3 id="M:Mono.DocTest.Widget.IMenuItem.A()">A Method</h3>
+        <blockquote id="M:Mono.DocTest.Widget.IMenuItem.A():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>A</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Widget.IMenuItem.A:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Widget.IMenuItem.A():Remarks">
             <tt>M:Mono.DocTest.Widget.IMenuItem.A</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Widget.IMenuItem.A:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Widget.IMenuItem.A():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 1e9918bd722a6507c7ccd0fbd4ec4a8faf3f1a49..8e2397f2c41c407e90a7ffb023182576ffda3df3 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>Widget.NestedClass.Double.Triple.Quadruple</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:Signature">public class  <b>Widget.NestedClass.Double.Triple.Quadruple</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple">Widget.NestedClass.Double.Triple.Quadruple</a>
+                      <a href="#C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple()">Widget.NestedClass.Double.Triple.Quadruple</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple">Widget.NestedClass.Double.Triple.Quadruple Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:member">
+        <h3 id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple()">Widget.NestedClass.Double.Triple.Quadruple Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>Widget.NestedClass.Double.Triple.Quadruple</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index b004c0872d581f67ce55688da36fac39f5fd605f..dd28c310b2a854272be8a1da24fa52cbc70432e0 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.NestedClass.Double.Triple:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>Widget.NestedClass.Double.Triple</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple:Signature">public class  <b>Widget.NestedClass.Double.Triple</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Widget.NestedClass.Double.Triple">Widget.NestedClass.Double.Triple</a>
+                      <a href="#C:Mono.DocTest.Widget.NestedClass.Double.Triple()">Widget.NestedClass.Double.Triple</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Widget.NestedClass.Double.Triple">Widget.NestedClass.Double.Triple Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Widget.NestedClass.Double.Triple:member">
+        <h3 id="C:Mono.DocTest.Widget.NestedClass.Double.Triple()">Widget.NestedClass.Double.Triple Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Widget.NestedClass.Double.Triple():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>Widget.NestedClass.Double.Triple</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 5aad9ed459ee9f24e472d3fc68225857f6ce887d..2b6640cdde2c2ffb791a439ec3ad332e30ae6be1 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.NestedClass.Double:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.NestedClass.Double:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>Widget.NestedClass.Double</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.NestedClass.Double:Signature">public class  <b>Widget.NestedClass.Double</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.NestedClass.Double:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Widget.NestedClass.Double">Widget.NestedClass.Double</a>
+                      <a href="#C:Mono.DocTest.Widget.NestedClass.Double()">Widget.NestedClass.Double</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Widget.NestedClass.Double:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Widget.NestedClass.Double">Widget.NestedClass.Double Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Widget.NestedClass.Double:member">
+        <h3 id="C:Mono.DocTest.Widget.NestedClass.Double()">Widget.NestedClass.Double Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Widget.NestedClass.Double():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>Widget.NestedClass.Double</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index e6eea8d8dd9410dd41d575e633b43a931bdc6ead..4b2f9b768f594e02ab1bddb1dd2b0eb420f6fb5c 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.NestedClass:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.NestedClass:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>Widget.NestedClass</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.NestedClass:Signature">public class  <b>Widget.NestedClass</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.NestedClass:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Widget.NestedClass">Widget.NestedClass</a>
+                      <a href="#C:Mono.DocTest.Widget.NestedClass()">Widget.NestedClass</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Widget.NestedClass:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Widget.NestedClass">Widget.NestedClass Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Widget.NestedClass:member">
+        <h3 id="C:Mono.DocTest.Widget.NestedClass()">Widget.NestedClass Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Widget.NestedClass():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>Widget.NestedClass</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index cb38b39455b8b0b9e44a342fc577a8c2ba5edf17..160b3ca1e72e6fbda580e92503c8b9a8d39fdd31 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.NestedClass`1:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.NestedClass`1:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>Widget.NestedClass&lt;T&gt;</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.NestedClass`1:Signature">public class  <b>Widget.NestedClass&lt;T&gt;</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.NestedClass`1:Docs">
       <h4 class="Subsection">Type Parameters</h4>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Widget.NestedClass`1">Widget.NestedClass</a>
+                      <a href="#C:Mono.DocTest.Widget.NestedClass`1()">Widget.NestedClass</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Widget.NestedClass`1:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Widget.NestedClass`1">Widget.NestedClass Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Widget.NestedClass`1:member">
+        <h3 id="C:Mono.DocTest.Widget.NestedClass`1()">Widget.NestedClass Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Widget.NestedClass`1():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>Widget.NestedClass</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass`1:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass`1():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass`1:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass`1():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 75dce8428156d65a91d308ee6d2465cb61f2eacb..943c58d4227e67576b25a1284cf535024bab60a9 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>Widget</b> : <a href="../Mono.DocTest/IProcess.html">IProcess</a></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget:Signature">public class  <b>Widget</b> : <a href="../Mono.DocTest/IProcess.html">IProcess</a></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget:Docs">
       <h4 class="Subsection">See Also</h4>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Widget">Widget</a>
+                      <a href="#C:Mono.DocTest.Widget()">Widget</a>
                     </b>()</div>
                 </td>
                 <td>
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Widget.M0">M0</a>
+                    <a href="#M:Mono.DocTest.Widget.M0()">M0</a>
                   </b>()<blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
               <tr valign="top">
     <div class="Members" id="T:Mono.DocTest.Widget:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Widget">Widget Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Widget:member">
+        <h3 id="C:Mono.DocTest.Widget()">Widget Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Widget():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>Widget</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget():Remarks">
             <p>
               <tt>C:Mono.DocTest.Widget</tt>.</p>
             <p>
             </p>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
                   <span class="NotEntered">Documentation for this section has not yet been entered.</span>
                 </td>
               </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentNullException">ArgumentNullException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentOutOfRangeException">ArgumentOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.FormatException">FormatException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.IndexOutOfRangeException">IndexOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
               <tr valign="top">
                 <td>
                   <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.MulticastNotSupportedException">MulticastNotSupportedException</a>
                   <span class="NotEntered">Documentation for this section has not yet been entered.</span>
                 </td>
               </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentNullException">ArgumentNullException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentOutOfRangeException">ArgumentOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.FormatException">FormatException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.IndexOutOfRangeException">IndexOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
               <tr valign="top">
                 <td>
                   <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.MulticastNotSupportedException">MulticastNotSupportedException</a>
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Widget.M0">M0 Method</h3>
-        <blockquote id="M:Mono.DocTest.Widget.M0:member">
+        <h3 id="M:Mono.DocTest.Widget.M0()">M0 Method</h3>
+        <blockquote id="M:Mono.DocTest.Widget.M0():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public static <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>M0</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Widget.M0:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Widget.M0():Remarks">
             <tt>M:Mono.DocTest.Widget.M0</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Widget.M0:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Widget.M0():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 057984a71ba9db5a1fae04881d2f895c56762a23..e0711675d7f91dbf93f4e33713f0e9dcdf34fae7 100644 (file)
     </div>
     <h1 class="PageTitle" id="T:NoNamespace">NoNamespace  Class</h1>
     <p class="Summary" id="T:NoNamespace:Summary">Namespace Test: [<a href="Mono.DocTest/index.html">Mono.DocTest</a>]</p>
-    <div id="T:NoNamespace:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>NoNamespace</b></div>
+      <div class="Signature" id="T:NoNamespace:Signature">public class  <b>NoNamespace</b></div>
     </div>
     <div class="Remarks" id="T:NoNamespace:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:NoNamespace">NoNamespace</a>
+                      <a href="#C:NoNamespace()">NoNamespace</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:NoNamespace:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:NoNamespace">NoNamespace Constructor</h3>
-        <blockquote id="C:NoNamespace:member">
+        <h3 id="C:NoNamespace()">NoNamespace Constructor</h3>
+        <blockquote id="C:NoNamespace():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>NoNamespace</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:NoNamespace:Remarks">
+          <div class="SectionBox" id="C:NoNamespace():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:NoNamespace:Version Information">
+          <div class="SectionBox" id="C:NoNamespace():Version Information">
             <b>Namespace: </b>
             <br />
             <b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
index d012d7772fbd880ccc21bb92113e2f48656bf008..4a0f413147cadcff48a9bc43be9649922894d62b 100644 (file)
     <p class="Summary" id="T:System.Action`1:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:System.Action`1:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>Action&lt;T&gt;</b> (<i title="To be added.">T</i> obj)</div>
+      <div class="Signature" id="T:System.Action`1:Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>Action&lt;T&gt;</b> (<i title="To be added.">T</i> obj)</div>
     </div>
     <div class="Remarks" id="T:System.Action`1:Docs">
       <h4 class="Subsection">Type Parameters</h4>
index fe4d7ed74badc38aa3c7a1c04d69708305a8ae8b..4e82fe559ac0b3e56b3dca77a835297989b6ed79 100644 (file)
     <p class="Summary" id="T:System.Array:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:System.Array:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>Array</b></div>
+      <div class="Signature" id="T:System.Array:Signature">public class  <b>Array</b></div>
     </div>
     <div class="Remarks" id="T:System.Array:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:System.Array">Array</a>
+                      <a href="#C:System.Array()">Array</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:System.Array:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:System.Array">Array Constructor</h3>
-        <blockquote id="C:System.Array:member">
+        <h3 id="C:System.Array()">Array Constructor</h3>
+        <blockquote id="C:System.Array():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>Array</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:System.Array:Remarks">
+          <div class="SectionBox" id="C:System.Array():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:System.Array:Version Information">
+          <div class="SectionBox" id="C:System.Array():Version Information">
             <b>Namespace: </b>System<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 308f3060ea458ce8058c224a1cb9a3e3100bd7fa..906eaab1e5a9f15fd4cceb274c70be7fb6877c3c 100644 (file)
     <p class="Summary" id="T:System.AsyncCallback:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:System.AsyncCallback:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>AsyncCallback</b> (<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.IAsyncResult">IAsyncResult</a> ar)</div>
+      <div class="Signature" id="T:System.AsyncCallback:Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>AsyncCallback</b> (<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.IAsyncResult">IAsyncResult</a> ar)</div>
     </div>
     <div class="Remarks" id="T:System.AsyncCallback:Docs">
       <h4 class="Subsection">Parameters</h4>
index a99c87ca88f0ffac2ab85a3a379ae92e5351bfb3..edb7aa381956f919bb62ae34b1e5616b50884b5f 100644 (file)
     <p class="Summary" id="T:System.Environment.SpecialFolder:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:System.Environment.SpecialFolder:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public enum <b>Environment.SpecialFolder</b></div>
+      <div class="Signature" id="T:System.Environment.SpecialFolder:Signature">public enum <b>Environment.SpecialFolder</b></div>
     </div>
     <div class="Remarks" id="T:System.Environment.SpecialFolder:Docs">
       <h2 class="Section">Remarks</h2>
index d279fea30f49c36e47da8fddec7ea977633eabfe..f63fc35b9f2d6821d2f5c8becaa6b924a9505199 100644 (file)
     <p class="Summary" id="T:System.Environment:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:System.Environment:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public static class  <b>Environment</b></div>
+      <div class="Signature" id="T:System.Environment:Signature">public static class  <b>Environment</b></div>
     </div>
     <div class="Remarks" id="T:System.Environment:Docs">
       <h2 class="Section">Remarks</h2>
index 140bbe40ca37f9a6e31c4b85b9b59cf6c92f2a9d..e431794cd27283d46824b4d130cc36de91e7a69b 100644 (file)
@@ -74,7 +74,8 @@ class Example {
             <remarks>
                 <c>C:Mono.DocTest.DocAttribute(System.String)</c>
             </remarks>
-            <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
+            <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
         </member>
         <member name="F:Mono.DocTest.DocAttribute.Field">
             <summary>To be added.</summary>
@@ -111,8 +112,10 @@ class Example {
             <summary>To be added.</summary>
             <remarks>
                 <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" />.</remarks>
-            <exception cref="T:System.ApplicationException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
-            <exception cref="T:System.SystemException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+            <exception cref="T:System.ApplicationException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+            <exception cref="T:System.SystemException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
         </member>
         <member name="F:Mono.DocTest.DocValueType.total">
             <summary>To be added.</summary>
@@ -157,15 +160,21 @@ class Example {
                     <see cref="M:System.Collections.Generic.List{System.Int32}.Remove(`0)" />
                 </para>
             </remarks>
-            <exception cref="T:System.Exception">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
+            <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
         </member>
         <member name="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})">
             <param name="list">A <see cref="T:Mono.DocTest.Generic.MyList{System.Predicate{System.Int32}}" />.</param>
             <summary>To be added.</summary>
             <remarks>
                 <c>M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})</c>.</remarks>
-            <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-            <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+            <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+            <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />,
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
         </member>
         <member name="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})">
             <typeparam name="T">Something Else</typeparam>
@@ -173,8 +182,10 @@ class Example {
             <summary>To be added.</summary>
             <remarks>
                 <c>M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})</c>.</remarks>
-            <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-            <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+            <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+            <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
         </member>
         <member name="M:Mono.DocTest.UseLists.UseHelper``3(Mono.DocTest.Generic.MyList{``0}+Helper{``1,``2})">
             <typeparam name="T">
@@ -240,8 +251,73 @@ class Example {
             <summary>To be added.</summary>
             <remarks>
                 <c>E:Mono.DocTest.Widget.AnotherEvent</c>.</remarks>
-            <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-            <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+            <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
         </member>
         <member name="F:Mono.DocTest.Widget.array1">
             <summary>To be added.</summary>
@@ -285,7 +361,8 @@ class Example {
             <summary>To be added.</summary>
             <returns>To be added.</returns>
             <remarks>To be added.</remarks>
-            <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
+            <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
         </member>
         <member name="M:Mono.DocTest.Widget.Dynamic1(System.Collections.Generic.Dictionary{System.Object,System.String})">
             <param name="value">To be added.</param>
@@ -310,8 +387,73 @@ class Example {
             <remarks>
                 <c>E:Mono.DocTest.Widget.DynamicE1</c>
             </remarks>
-            <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-            <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+            <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
         </member>
         <member name="E:Mono.DocTest.Widget.DynamicE2">
             <summary>To be added.</summary>
@@ -691,14 +833,144 @@ class Example {
         <member name="E:Mono.DocTest.Generic.GenericBase`1.ItemChanged">
             <summary>To be added.</summary>
             <remarks>E:Mono.DocTest.Generic.GenericBase`1.ItemChanged</remarks>
-            <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-            <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+            <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
         </member>
         <member name="E:Mono.DocTest.Generic.GenericBase`1.MyEvent">
             <summary>To be added.</summary>
             <remarks>E:Mono.DocTest.Generic.GenericBase`1.MyEvent</remarks>
-            <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-            <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+            <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
         </member>
         <member name="M:Mono.DocTest.Generic.GenericBase`1.op_Explicit(`0Mono`0.`0DocTest`0.`0Generic`0.`0GenericBase`0{`0U`0})~`0U`0">
             <param name="list">Insert description here</param>
@@ -972,7 +1244,8 @@ class Example {
             <summary>To be added.</summary>
             <returns>To be added.</returns>
             <remarks>To be added.</remarks>
-            <exception cref="T:System.NotImplementedException">To be added; from: <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
+            <exception cref="T:System.NotImplementedException">To be added; from:
+          <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
         </member>
         <member name="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})">
             <typeparam name="TInput">To be added.</typeparam>
@@ -982,7 +1255,8 @@ class Example {
             <summary>To be added.</summary>
             <returns>To be added.</returns>
             <remarks>To be added.</remarks>
-            <exception cref="T:System.InvalidOperationException">To be added; from: <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
+            <exception cref="T:System.InvalidOperationException">To be added; from:
+          <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
         </member>
         <member name="M:System.Array.Resize``1(``0[]@,System.Int32)">
             <typeparam name="T">To be added.</typeparam>
@@ -990,7 +1264,8 @@ class Example {
             <param name="newSize">To be added.</param>
             <summary>To be added.</summary>
             <remarks>To be added.</remarks>
-            <exception cref="T:System.Exception">To be added; from: <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
+            <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
         </member>
         <member name="T:System.AsyncCallback">
             <param name="ar">To be added.</param>
@@ -1012,7 +1287,8 @@ class Example {
             <remarks>
                 <c>M:System.Environment.GetFolderPath(System.Environment+SpecialFolder)</c>
             </remarks>
-            <exception cref="T:System.NotSupportedException">To be added; from: <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
+            <exception cref="T:System.NotSupportedException">To be added; from:
+          <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
         </member>
         <member name="T:System.Environment+SpecialFolder">
             <summary>To be added.</summary>
index ac97a4ac9facb92580124e74d0a9eef8d05a3fd1..7c543f4beacf2f88a9ac3bc2023e465092830a6b 100644 (file)
@@ -8,8 +8,9 @@ OTHER_RES = template.c template_z.c template_main.c
 
 RESOURCE_FILES = $(OTHER_RES)
 
-LOCAL_MCS_FLAGS=-r:Mono.Posix.dll -r:ICSharpCode.SharpZipLib.dll \
-               $(OTHER_RES:%=-resource:%)
+LOCAL_MCS_FLAGS= $(OTHER_RES:%=-resource:%)
+
+LOCAL_MCS_FLAGS += -d:STATIC,NO_SYMBOL_WRITER,NO_AUTHENTICODE
 
 EXTRA_DISTFILES = $(RESOURCE_FILES)
 
index a1d2148e5f90f2048162cb45a59ac5815a73a2e5..fa8e7166019ae7e69fd01327cd4affa80addab4f 100644 (file)
 using System;
 using System.Diagnostics;
 using System.Xml;
-using System.Collections;
-using System.Reflection;
+using System.Collections.Generic;
 using System.IO;
+using System.IO.Compression;
 using System.Runtime.InteropServices;
 using System.Text;
-using Mono.Unix;
-using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
+using IKVM.Reflection;
+
+
+#if NET_4_5
+using System.Threading.Tasks;
+#endif
 
 class MakeBundle {
        static string output = "a.out";
        static string object_out = null;
-       static ArrayList link_paths = new ArrayList ();
+       static List<string> link_paths = new List<string> ();
        static bool autodeps = false;
        static bool keeptemp = false;
        static bool compile_only = false;
@@ -33,10 +37,11 @@ class MakeBundle {
        static string style = "linux";
        static bool compress;
        static bool nomain;
+       static bool? use_dos2unix = null;
        
        static int Main (string [] args)
        {
-               ArrayList sources = new ArrayList ();
+               List<string> sources = new List<string> ();
                int top = args.Length;
                link_paths.Add (".");
 
@@ -158,8 +163,8 @@ class MakeBundle {
                        Environment.Exit (1);
                }
 
-               ArrayList assemblies = LoadAssemblies (sources);
-               ArrayList files = new ArrayList ();
+               List<Assembly> assemblies = LoadAssemblies (sources);
+               List<string> files = new List<string> ();
                foreach (Assembly a in assemblies)
                        QueueAssembly (files, a.CodeBase);
                        
@@ -228,18 +233,26 @@ class MakeBundle {
                // Preallocate the strings we need.
                if (chars [0] == null) {
                        for (int i = 0; i < chars.Length; i++)
-                               chars [i] = string.Format ("\t.byte {0}\n", i.ToString ());
+                               chars [i] = string.Format ("{0}", i.ToString ());
                }
 
                while ((n = stream.Read (buffer, 0, buffer.Length)) != 0) {
-                       for (int i = 0; i < n; i++)
+                       int count = 0;
+                       for (int i = 0; i < n; i++) {
+                               if (count % 32 == 0) {
+                                       ts.Write ("\n\t.byte ");
+                               } else {
+                                       ts.Write (",");
+                               }
                                ts.Write (chars [buffer [i]]);
+                               count ++;
+                       }
                }
 
                ts.WriteLine ();
        }
        
-       static void GenerateBundles (ArrayList files)
+       static void GenerateBundles (List<string> files)
        {
                string temp_s = "temp.s"; // Path.GetTempFileName ();
                string temp_c = "temp.c";
@@ -251,17 +264,30 @@ class MakeBundle {
                        temp_o = object_out;
                
                try {
-                       ArrayList c_bundle_names = new ArrayList ();
-                       ArrayList config_names = new ArrayList ();
+                       List<string> c_bundle_names = new List<string> ();
+                       List<string[]> config_names = new List<string[]> ();
                        byte [] buffer = new byte [8192];
 
                        using (StreamWriter ts = new StreamWriter (File.Create (temp_s))) {
                        using (StreamWriter tc = new StreamWriter (File.Create (temp_c))) {
                        string prog = null;
 
+#if XAMARIN_ANDROID
                        tc.WriteLine ("/* This source code was produced by mkbundle, do not edit */");
+                       tc.WriteLine ("\n#ifndef NULL\n#define NULL (void *)0\n#endif");
+                       tc.WriteLine (@"
+typedef struct {
+       const char *name;
+       const unsigned char *data;
+       const unsigned int size;
+} MonoBundledAssembly;
+void          mono_register_bundled_assemblies (const MonoBundledAssembly **assemblies);
+void          mono_register_config_for_assembly (const char* assembly_name, const char* config_xml);
+");
+#else
                        tc.WriteLine ("#include <mono/metadata/mono-config.h>");
                        tc.WriteLine ("#include <mono/metadata/assembly.h>\n");
+#endif
 
                        if (compress) {
                                tc.WriteLine ("typedef struct _compressed_data {");
@@ -270,33 +296,58 @@ class MakeBundle {
                                tc.WriteLine ("} CompressedAssembly;\n");
                        }
 
-                       foreach (string url in files){
-                               string fname = new Uri (url).LocalPath;
-                               string aname = Path.GetFileName (fname);
-                               string encoded = aname.Replace ("-", "_").Replace (".", "_");
+                       object monitor = new object ();
 
-                               if (prog == null)
-                                       prog = aname;
-                               
-                               Console.WriteLine ("   embedding: " + fname);
-                               
+                       var streams = new Dictionary<string, Stream> ();
+                       var sizes = new Dictionary<string, long> ();
+
+                       // Do the file reading and compression in parallel
+                       Action<string> body = delegate (string url) {
+                               string fname = new Uri (url).LocalPath;
                                Stream stream = File.OpenRead (fname);
 
-                               // Compression can be parallelized
                                long real_size = stream.Length;
                                int n;
                                if (compress) {
                                        MemoryStream ms = new MemoryStream ();
-                                       DeflaterOutputStream deflate = new DeflaterOutputStream (ms);
+                                       GZipStream deflate = new GZipStream (ms, CompressionMode.Compress, leaveOpen:true);
                                        while ((n = stream.Read (buffer, 0, buffer.Length)) != 0){
                                                deflate.Write (buffer, 0, n);
                                        }
                                        stream.Close ();
-                                       deflate.Finish ();
+                                       deflate.Close ();
                                        byte [] bytes = ms.GetBuffer ();
                                        stream = new MemoryStream (bytes, 0, (int) ms.Length, false, false);
                                }
 
+                               lock (monitor) {
+                                       streams [url] = stream;
+                                       sizes [url] = real_size;
+                               }
+                       };
+
+                       //#if NET_4_5
+#if FALSE
+                       Parallel.ForEach (files, body);
+#else
+                       foreach (var url in files)
+                               body (url);
+#endif
+
+                       // The non-parallel part
+                       foreach (var url in files) {
+                               string fname = new Uri (url).LocalPath;
+                               string aname = Path.GetFileName (fname);
+                               string encoded = aname.Replace ("-", "_").Replace (".", "_");
+
+                               if (prog == null)
+                                       prog = aname;
+
+                               var stream = streams [url];
+                               var real_size = sizes [url];
+
+                               Console.WriteLine ("   embedding: " + fname);
+
                                WriteSymbol (ts, "assembly_data_" + encoded, stream.Length);
                        
                                WriteBuffer (ts, stream, buffer);
@@ -304,14 +355,14 @@ class MakeBundle {
                                if (compress) {
                                        tc.WriteLine ("extern const unsigned char assembly_data_{0} [];", encoded);
                                        tc.WriteLine ("static CompressedAssembly assembly_bundle_{0} = {{{{\"{1}\"," +
-                                                       " assembly_data_{0}, {2}}}, {3}}};",
-                                                     encoded, aname, real_size, stream.Length);
+                                                                 " assembly_data_{0}, {2}}}, {3}}};",
+                                                                 encoded, aname, real_size, stream.Length);
                                        double ratio = ((double) stream.Length * 100) / real_size;
                                        Console.WriteLine ("   compression ratio: {0:.00}%", ratio);
                                } else {
                                        tc.WriteLine ("extern const unsigned char assembly_data_{0} [];", encoded);
                                        tc.WriteLine ("static const MonoBundledAssembly assembly_bundle_{0} = {{\"{1}\", assembly_data_{0}, {2}}};",
-                                                     encoded, aname, real_size);
+                                                                 encoded, aname, real_size);
                                }
                                stream.Close ();
 
@@ -328,8 +379,8 @@ class MakeBundle {
                                } catch (FileNotFoundException) {
                                        /* we ignore if the config file doesn't exist */
                                }
-
                        }
+
                        if (config_file != null){
                                FileStream conf;
                                try {
@@ -402,9 +453,9 @@ class MakeBundle {
 
                        Stream template_stream;
                        if (compress) {
-                               template_stream = Assembly.GetAssembly (typeof(MakeBundle)).GetManifestResourceStream ("template_z.c");
+                               template_stream = System.Reflection.Assembly.GetAssembly (typeof(MakeBundle)).GetManifestResourceStream ("template_z.c");
                        } else {
-                               template_stream = Assembly.GetAssembly (typeof(MakeBundle)).GetManifestResourceStream ("template.c");
+                               template_stream = System.Reflection.Assembly.GetAssembly (typeof(MakeBundle)).GetManifestResourceStream ("template.c");
                        }
 
                        StreamReader s = new StreamReader (template_stream);
@@ -412,7 +463,7 @@ class MakeBundle {
                        tc.Write (template);
 
                        if (!nomain) {
-                               Stream template_main_stream = Assembly.GetAssembly (typeof(MakeBundle)).GetManifestResourceStream ("template_main.c");
+                               Stream template_main_stream = System.Reflection.Assembly.GetAssembly (typeof(MakeBundle)).GetManifestResourceStream ("template_main.c");
                                StreamReader st = new StreamReader (template_main_stream);
                                string maintemplate = st.ReadToEnd ();
                                tc.Write (maintemplate);
@@ -466,9 +517,9 @@ class MakeBundle {
                }
        }
        
-       static ArrayList LoadAssemblies (ArrayList sources)
+       static List<Assembly> LoadAssemblies (List<string> sources)
        {
-               ArrayList assemblies = new ArrayList ();
+               List<Assembly> assemblies = new List<Assembly> ();
                bool error = false;
                
                foreach (string name in sources){
@@ -488,19 +539,21 @@ class MakeBundle {
                return assemblies;
        }
        
-       static void QueueAssembly (ArrayList files, string codebase)
+       static readonly Universe universe = new Universe ();
+       
+       static void QueueAssembly (List<string> files, string codebase)
        {
                if (files.Contains (codebase))
                        return;
 
                files.Add (codebase);
-               Assembly a = Assembly.LoadFrom (new Uri(codebase).LocalPath);
+               Assembly a = universe.LoadFile (new Uri(codebase).LocalPath);
 
                if (!autodeps)
                        return;
                
                foreach (AssemblyName an in a.GetReferencedAssemblies ()) {
-                       a = Assembly.Load (an);
+                       a = universe.Load (an.Name);
                        QueueAssembly (files, a.CodeBase);
                }
        }
@@ -513,12 +566,12 @@ class MakeBundle {
                        char[] path_chars = { '/', '\\' };
                        
                        if (assembly.IndexOfAny (path_chars) != -1) {
-                               a = Assembly.LoadFrom (assembly);
+                               a = universe.LoadFile (assembly);
                        } else {
                                string ass = assembly;
                                if (ass.EndsWith (".dll"))
                                        ass = assembly.Substring (0, assembly.Length - 4);
-                               a = Assembly.Load (ass);
+                               a = universe.Load (ass);
                        }
                        return a;
                } catch (FileNotFoundException){
@@ -530,7 +583,7 @@ class MakeBundle {
                                        full_path += ".dll";
                                
                                try {
-                                       a = Assembly.LoadFrom (full_path);
+                                       a = universe.LoadFile (full_path);
                                        return a;
                                } catch (FileNotFoundException ff) {
                                        total_log += ff.FusionLog;
@@ -539,10 +592,10 @@ class MakeBundle {
                        }
                        Error ("Cannot find assembly `" + assembly + "'" );
                        Console.WriteLine ("Log: \n" + total_log);
-               } catch (BadImageFormatException f) {
-                       Error ("Cannot load assembly (bad file format)" + f.FusionLog);
+               } catch (IKVM.Reflection.BadImageFormatException f) {
+                       Error ("Cannot load assembly (bad file format) " + f.Message);
                } catch (FileLoadException f){
-                       Error ("Cannot load assembly " + f.FusionLog);
+                       Error ("Cannot load assembly " + f.Message);
                } catch (ArgumentNullException){
                        Error("Cannot load assembly (null argument)");
                }
@@ -588,10 +641,10 @@ class MakeBundle {
                        return;
                }
 
-               IntPtr buf = UnixMarshal.AllocHeap(8192);
+               IntPtr buf = Marshal.AllocHGlobal (8192);
                if (uname (buf) != 0){
                        Console.WriteLine ("Warning: Unable to detect OS");
-                       UnixMarshal.FreeHeap(buf);
+                       Marshal.FreeHGlobal (buf);
                        return;
                }
                string os = Marshal.PtrToStringAnsi (buf);
@@ -599,7 +652,7 @@ class MakeBundle {
                if (os == "Darwin")
                        style = "osx";
                
-               UnixMarshal.FreeHeap(buf);
+               Marshal.FreeHGlobal (buf);
        }
 
        static bool IsUnix {
@@ -615,11 +668,42 @@ class MakeBundle {
                        Console.WriteLine (cmdLine);
                        return system (cmdLine);
                }
-
+               
                // on Windows, we have to pipe the output of a
                // `cmd` interpolation to dos2unix, because the shell does not
                // strip the CRLFs generated by the native pkg-config distributed
                // with Mono.
+               //
+               // But if it's *not* on cygwin, just skip it.
+               
+               // check if dos2unix is applicable.
+               if (use_dos2unix == null) {
+                       use_dos2unix = false;
+                       try {
+                               var dos2unix = Process.Start ("dos2unix");
+                               dos2unix.StandardInput.WriteLine ("aaa");
+                               dos2unix.StandardInput.WriteLine ("\u0004");
+                               dos2unix.WaitForExit ();
+                               if (dos2unix.ExitCode == 0)
+                                       use_dos2unix = true;
+                       } catch {
+                               // ignore
+                       }
+               }
+               // and if there is no dos2unix, just run cmd /c.
+               if (use_dos2unix == false) {
+                       Console.WriteLine (cmdLine);
+                       ProcessStartInfo dos2unix = new ProcessStartInfo ();
+                       dos2unix.UseShellExecute = false;
+                       dos2unix.FileName = "cmd";
+                       dos2unix.Arguments = String.Format ("/c \"{0}\"", cmdLine);
+
+                       using (Process p = Process.Start (dos2unix)) {
+                               p.WaitForExit ();
+                               return p.ExitCode;
+                       }
+               }
+
                StringBuilder b = new StringBuilder ();
                int count = 0;
                for (int i = 0; i < cmdLine.Length; i++) {
index d9260760a461148b54052edb396ad43a88f069aa..6d249f2da70c39b68e5cc2296491cb51c33d4d11 100644 (file)
@@ -1 +1,8 @@
 mkbundle.cs
+../../../external/ikvm/reflect/*.cs
+../../../external/ikvm/reflect/Emit/*.cs
+../../../external/ikvm/reflect/Metadata/*.cs
+../../../external/ikvm/reflect/Reader/*.cs
+../../../external/ikvm/reflect/Writer/*.cs
+../../../external/ikvm/reflect/Impl/ITypeOwner.cs
+../../../external/ikvm/reflect/Impl/SymbolSupport.cs
index 7aac318bb88f91034569adbdc887bd2d593aa457..8a8e6007985718e3a48565178334a0a2cb81a211 100644 (file)
@@ -13,7 +13,8 @@ my_inflate (const Byte *compr, uLong compr_len, Byte *uncompr, uLong uncompr_len
        memset (&stream, 0, sizeof (z_stream));
        stream.next_in = (Byte *) compr;
        stream.avail_in = (uInt) compr_len;
-       err = inflateInit (&stream);
+       /* To decompress gzip format: http://stackoverflow.com/a/1838702/83444 */
+       err = inflateInit2 (&stream, 16+MAX_WBITS);
        if (err != Z_OK)
                return 1;
 
@@ -66,7 +67,7 @@ void mono_mkbundle_init ()
                buffer = (Bytef *) malloc (real_size);
                result = my_inflate ((*ptr)->assembly.data, zsize, buffer, real_size);
                if (result != 0) {
-                       fprintf (stderr, "Error %d decompresing data for %s\n", result, (*ptr)->assembly.name);
+                       fprintf (stderr, "mkbundle: Error %d decompressing data for %s\n", result, (*ptr)->assembly.name);
                        exit (1);
                }
                (*ptr)->assembly.data = buffer;
index 3da6f714bddb35d88457c5cc1d9710bb1dd1e27c..87847f849c245cf01076a68486acba9ac99eff09 100644 (file)
@@ -239,7 +239,11 @@ class MonoServiceRunner : MarshalByRefObject
                        } else {
                                service = services [0];
                        }
-       
+
+                       if (service.ExitCode != 0) {
+                               //likely due to a previous execution, so we need to reset it to default
+                               service.ExitCode = 0;
+                       }
                        call (service, "OnStart", args);
                        info (logname, "Service {0} started", service.ServiceName);
        
@@ -264,6 +268,9 @@ class MonoServiceRunner : MarshalByRefObject
                                        term.Reset ();
                                        info (logname, "Stopping service {0}", service.ServiceName);
                                        call (service, "OnStop", null);
+                                       if (service.ExitCode != 0)
+                                               error (logname, "Service {0} stopped returning a non-zero ExitCode: {1}",
+                                                      service.ServiceName, service.ExitCode);
                                        running = false;
                                }
                                else if (usr1.IsSet && service.CanPauseAndContinue) {
index f9c73859a9924bd046f1577b47e9d978561afd0d..df6d4b31c6331e6c8a11ac91d40802747c1dee77 100644 (file)
@@ -43,8 +43,15 @@ namespace Mono.Tuner {
                        return (attribute.AttributeType.Name == "LinkerSafeAttribute");
                }
 
+               const ModuleAttributes Supported = ModuleAttributes.ILOnly | ModuleAttributes.Required32Bit | 
+                       ModuleAttributes.Preferred32Bit | ModuleAttributes.StrongNameSigned;
+
                protected virtual bool IsSkipped (AssemblyDefinition assembly)
                {
+                       // Cecil can't save back mixed-mode assemblies - so we can't link them
+                       if ((assembly.MainModule.Attributes & ~Supported) != 0)
+                               return true;
+
                        if (assembly.HasCustomAttributes) {
                                foreach (var ca in assembly.CustomAttributes) {
                                        if (IsPreservedAttribute (ca))
index 3d53996a826d2453368a623272447021b60035dd..7838fcdc3ed18b188e25b0d0f6411581026dd41b 100644 (file)
@@ -37,11 +37,13 @@ SILVERLIGHT_DIR = $(mono_libdir)/mono/xbuild/Microsoft/Silverlight
 PORTABLE_DIR = $(mono_libdir)/mono/xbuild/Microsoft/Portable
 EXTRAS_DIR = $(mono_libdir)/mono/$(INSTALL_FRAMEWORK_VERSION)
 install-extras: 
-       $(MKINSTALLDIRS) $(DESTDIR)$(EXTRAS_DIR) $(DESTDIR)$(REDISTLIST_DIR) $(DESTDIR)$(XBUILD_FRAMEWORKS_DIR)/v3.0/RedistList $(DESTDIR)$(XBUILD_FRAMEWORKS_DIR)/v4.0/RedistList
+       $(MKINSTALLDIRS) $(DESTDIR)$(EXTRAS_DIR) $(DESTDIR)$(REDISTLIST_DIR) $(DESTDIR)$(XBUILD_FRAMEWORKS_DIR)/v3.0/RedistList $(DESTDIR)$(XBUILD_FRAMEWORKS_DIR)/v4.0/RedistList $(DESTDIR)$(mono_libdir)/mono/3.5 $(DESTDIR)$(mono_libdir)/mono/4.0
        $(INSTALL_DATA) xbuild/xbuild.rsp $(DESTDIR)$(mono_libdir)/mono/$(FRAMEWORK_VERSION)
-       $(INSTALL_DATA) xbuild/$(FRAMEWORK_VERSION)/Microsoft.Common.tasks $(DESTDIR)$(EXTRAS_DIR)
+       $(INSTALL_DATA) xbuild/$(INSTALL_FRAMEWORK_VERSION)/Microsoft.Common.tasks $(DESTDIR)$(EXTRAS_DIR)
+       $(INSTALL_DATA) xbuild/$(INSTALL_FRAMEWORK_VERSION)/Microsoft.Common.targets $(DESTDIR)$(EXTRAS_DIR)
        $(INSTALL_DATA) xbuild/Microsoft.Build.xsd $(DESTDIR)$(EXTRAS_DIR)
-       $(INSTALL_DATA) xbuild/$(FRAMEWORK_VERSION)/Microsoft.Common.targets $(DESTDIR)$(EXTRAS_DIR)
+       $(INSTALL_DATA) xbuild/2.0/Microsoft.Common.targets $(DESTDIR)$(mono_libdir)/mono/2.0
+       $(INSTALL_DATA) xbuild/3.5/Microsoft.Common.targets $(DESTDIR)$(mono_libdir)/mono/3.5
        $(INSTALL_DATA) xbuild/Microsoft.CSharp.targets $(DESTDIR)$(EXTRAS_DIR)
        $(INSTALL_DATA) xbuild/Microsoft.VisualBasic.targets $(DESTDIR)$(EXTRAS_DIR)
        $(INSTALL_DATA) xbuild/$(FRAMEWORK_VERSION)/FrameworkList.xml $(DESTDIR)$(REDISTLIST_DIR)
@@ -62,18 +64,21 @@ install-extras:
        sed -e 's/@SILVERLIGHT_VERSION@/2.0/g' xbuild/Microsoft.Silverlight.Common.targets > $(DESTDIR)$(SILVERLIGHT_DIR)/v2.0/Microsoft.Silverlight.Common.targets
        sed -e 's/@SILVERLIGHT_VERSION@/3.0/g' xbuild/Microsoft.Silverlight.Common.targets > $(DESTDIR)$(SILVERLIGHT_DIR)/v3.0/Microsoft.Silverlight.Common.targets
        $(MKINSTALLDIRS) $(DESTDIR)$(PORTABLE_DIR)/v4.0
-       $(INSTALL_DATA) xbuild/Microsoft.Portable.CSharp.targets $(DESTDIR)$(PORTABLE_DIR)/v4.0
+       $(MKINSTALLDIRS) $(DESTDIR)$(PORTABLE_DIR)/v4.5
+       $(INSTALL_DATA) xbuild/4.0/Microsoft.Portable.CSharp.targets $(DESTDIR)$(PORTABLE_DIR)/v4.0
+       $(INSTALL_DATA) xbuild/4.5/Microsoft.Portable.CSharp.targets $(DESTDIR)$(PORTABLE_DIR)/v4.5
+       $(INSTALL_DATA) xbuild/Microsoft.Portable.CSharp.targets $(DESTDIR)$(mono_libdir)/mono/4.0
 
 EXTRA_DISTFILES = \
        xbuild/xbuild.rsp \
        xbuild/2.0/Microsoft.Common.tasks \
        xbuild/3.5/Microsoft.Common.tasks \
        xbuild/4.0/Microsoft.Common.tasks \
-       xbuild/4.5/Microsoft.Common.tasks \
        xbuild/2.0/Microsoft.Common.targets \
        xbuild/3.5/Microsoft.Common.targets \
        xbuild/4.0/Microsoft.Common.targets \
-       xbuild/4.5/Microsoft.Common.targets \
+       xbuild/4.0/Microsoft.Portable.CSharp.targets \
+       xbuild/4.5/Microsoft.Portable.CSharp.targets \
        xbuild/2.0/FrameworkList.xml \
        xbuild/3.5/FrameworkList.xml \
        xbuild/4.0/FrameworkList.xml \
index ca18ee093313940c729539635b748c71437670e8..345609f90a9e4e250867b32f7995f443edf03b46 100644 (file)
                <AssemblySearchPaths Condition="'$(AssemblySearchPaths)' == ''">
                        {CandidateAssemblyFiles};
                        $(ReferencePath);
+                       @(AdditionalReferencePath);
                        {HintPathFromItem};
                        {TargetFrameworkDirectory};
                        {PkgConfig};
        </Target>
 
        <Target
-               Name="AssignProjectConfigurations"
+               Name="AssignProjectConfiguration"
                Condition="'@(ProjectReference)' != ''">
 
                <!-- assign configs if building a solution file -->
                ProjectReferenceWithConfigurationNonExistent: Projects non-existent on disk -->
 
        <Target Name="SplitProjectReferencesByExistent"
-               DependsOnTargets="AssignProjectConfigurations">
+               DependsOnTargets="AssignProjectConfiguration">
 
                <CreateItem Include="@(ProjectReferenceWithConfiguration)" Condition="'@(ProjectReferenceWithConfiguration)' != ''">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfigurationExistent"
                        <Output TaskParameter="Lines" ItemName="PreviousFileWrites"/>
                </ReadLinesFromFile>
 
-               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
-                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
-               </RemoveDuplicates>
-
                <!-- CopyLocal files: In case all the projects build to common output
                     directory, then other projects might depend on some of these
                     CopyLocal files, so delete only the ones under *this* project
                        <Output TaskParameter="InPath" ItemName="FileWrites"/>
                </FindUnderPath>
 
+               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
+                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
+               </RemoveDuplicates>
+
                <WriteLinesToFile
                        File="$(IntermediateOutputPath)$(CleanFile)"
                        Lines="@(CombinedFileWrites)"
        </Target>
 
        <Target Name="CleanReferencedProjects"
-               DependsOnTargets="AssignProjectConfigurations">
+               DependsOnTargets="AssignProjectConfiguration">
 
                <!-- If building from .sln.proj or from IDE, clean will get handled by them,
                     else we are building a project directly, from the command line, so
index 0605ae69d0fb42dd1c4615bbb12c35f8b11027a2..6a2c6efe85dced063d88c5c0d0a5f862d9cee795 100644 (file)
                <AssemblySearchPaths Condition="'$(AssemblySearchPaths)' == ''">
                        {CandidateAssemblyFiles};
                        $(ReferencePath);
+                       @(AdditionalReferencePath);
                        {HintPathFromItem};
                        {TargetFrameworkDirectory};
                        {PkgConfig};
        </Target>
 
        <Target
-               Name="AssignProjectConfigurations"
+               Name="AssignProjectConfiguration"
                Condition="'@(ProjectReference)' != ''">
 
                <!-- assign configs if building a solution file -->
                ProjectReferenceWithConfigurationNonExistent: Projects non-existent on disk -->
 
        <Target Name="SplitProjectReferencesByExistent"
-               DependsOnTargets="AssignProjectConfigurations">
+               DependsOnTargets="AssignProjectConfiguration">
 
                <CreateItem Include="@(ProjectReferenceWithConfiguration)" Condition="'@(ProjectReferenceWithConfiguration)' != ''">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfigurationExistent"
                        <Output TaskParameter="Lines" ItemName="PreviousFileWrites"/>
                </ReadLinesFromFile>
 
-               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
-                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
-               </RemoveDuplicates>
-
                <!-- CopyLocal files: In case all the projects build to common output
                     directory, then other projects might depend on some of these
                     CopyLocal files, so delete only the ones under *this* project
                        <Output TaskParameter="InPath" ItemName="FileWrites"/>
                </FindUnderPath>
 
+               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
+                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
+               </RemoveDuplicates>
+
                <WriteLinesToFile
                        File="$(IntermediateOutputPath)$(CleanFile)"
                        Lines="@(CombinedFileWrites)"
        </Target>
 
        <Target Name="CleanReferencedProjects"
-               DependsOnTargets="AssignProjectConfigurations">
+               DependsOnTargets="AssignProjectConfiguration">
 
                <!-- If building from .sln.proj or from IDE, clean will get handled by them,
                     else we are building a project directly, from the command line, so
index e306cd304d6d990baf1b4938a91c1d455f013e1e..86d8fb0b4f508c8fd58d02e5c379c2106d99a000 100644 (file)
@@ -80,6 +80,7 @@
                <TargetPath Condition=" '$(TargetPath)' == '' ">@(_OutDirItem->'%(FullPath)\$(TargetFileName)')</TargetPath>
                <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildProjectFullPath);$(MSBuildToolsPath)\Microsoft.Common.targets</MSBuildAllProjects>
                <KeyOriginatorFile Condition=" '$(SignAssembly)' == 'true' ">$(AssemblyOriginatorKeyFile)</KeyOriginatorFile>
+               <TargetingClr2Framework Condition="('$(TargetFrameworkIdentifier)' == '.NETFramework') and ('$(TargetFrameworkVersion)' == 'v2.0' or '$(TargetFrameworkVersion)' == 'v3.0' or '$(TargetFrameworkVersion)' == 'v3.5')">true</TargetingClr2Framework>
        </PropertyGroup>
 
        <Target Name="_ValidateEssentialProperties">
                Condition="'$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkIdentifier)' == '.NETFramework'"
                DependsOnTargets="$(GetFrameworkPathsDependsOn)">
                <GetFrameworkPath>
+                       <Output Condition="'$(TargetFrameworkVersion)' == 'v4.5'"
+                               TaskParameter="FrameworkVersion45Path"
+                               ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
                        <Output Condition="'$(TargetFrameworkVersion)' == 'v4.0'"
                                TaskParameter="FrameworkVersion40Path"
                                ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
                </CreateProperty>
 
                <Warning Text="TargetFrameworkVersion '$(TargetFrameworkVersion)' not supported by this toolset (ToolsVersion: $(MSBuildToolsVersion))."
-                       Condition="'$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
+                       Condition="'$(TargetFrameworkVersion)' != 'v4.5' and '$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
        </Target>
 
        <PropertyGroup>
                        <Output TaskParameter="TargetFrameworkMonikerDisplayName" PropertyName="TargetFrameworkMonikerDisplayName"/>
                </GetReferenceAssemblyPaths>
 
-               <CreateProperty Value="$(_TargetFrameworkDirectories);$(TargetFrameworkDirectory)">
-                       <Output TaskParameter="Value" PropertyName="TargetFrameworkDirectory"/>
-               </CreateProperty>
+               
+               <!-- Remove duplicates. -->
+               <ItemGroup>
+                       <_TargetFrameworkDirectories Include="$(_TargetFrameworkDirectories);$(TargetFrameworkDirectory)" KeepDuplicates="false" />
+               </ItemGroup>
+               <PropertyGroup>
+                       <TargetFrameworkDirectory>@(_TargetFrameworkDirectories)</TargetFrameworkDirectory>
+               </PropertyGroup>
+               
+               <ItemGroup Condition="'$(ImplicitlyExpandDesignTimeFacades)' == 'true'">
+                       <DesignTimeFacadeDirectoryRoots Include="$(TargetFrameworkDirectory)" />
+                       <DesignTimeFacadeDirectories Include="%(DesignTimeFacadeDirectoryRoots.Identity)\Facades\" Condition="Exists('%(DesignTimeFacadeDirectoryRoots.Identity)\Facades\')" />
+                       <_DesignTimeFacadeAssemblies Include="%(DesignTimeFacadeDirectories.Identity)\*.dll"/>
+               </ItemGroup>
+               
+               <PropertyGroup Condition="'@(DesignTimeFacadeDirectories)' != ''">
+                       <TargetFrameworkDirectory>$(TargetFrameworkDirectory);@(DesignTimeFacadeDirectories)</TargetFrameworkDirectory>
+               </PropertyGroup>
+               
        </Target>
 
        <PropertyGroup>
                <AssemblySearchPaths Condition="'$(AssemblySearchPaths)' == ''">
                        {CandidateAssemblyFiles};
                        $(ReferencePath);
+                       @(AdditionalReferencePath);
                        {HintPathFromItem};
                        {TargetFrameworkDirectory};
                        {PkgConfig};
                        PrepareForBuild
                </ResolveAssemblyReferencesDependsOn>
        </PropertyGroup>
+       
+       <PropertyGroup Condition="'$(TargetFrameworkMoniker)' != ''">
+               <TargetFrameworkMonikerAssemblyAttributesPath Condition="'$(TargetFrameworkMonikerAssemblyAttributesPath)' == ''">$(IntermediateOutputPath)$(TargetFrameworkMoniker).AssemblyAttribute$(DefaultLanguageSourceExtension)</TargetFrameworkMonikerAssemblyAttributesPath>
+               <GenerateTargetFrameworkAttribute Condition="'$(GenerateTargetFrameworkAttribute)' == '' and '$(TargetFrameworkMoniker)' 
+       != '' and '$(TargetingClr2Framework)' != 'true'">true</GenerateTargetFrameworkAttribute>
+       </PropertyGroup>
+       
+       <ItemGroup Condition="'$(GenerateTargetFrameworkAttribute)' == 'true'">
+               <FileWrites Include="$(TargetFrameworkMonikerAssemblyAttributesPath)" />
+       </ItemGroup>
+       
+       <Target Name="GenerateTargetFrameworkMonikerAttribute"
+               DependsOnTargets="PrepareForBuild;GetReferenceAssemblyPaths"
+               Inputs="$(MSBuildToolsPath)\Microsoft.Common.targets"
+               Outputs="$(TargetFrameworkMonikerAssemblyAttributesPath)"
+               Condition="'$(GenerateTargetFrameworkAttribute)' == 'true'">
+               
+               <WriteLinesToFile
+                       File="$(TargetFrameworkMonikerAssemblyAttributesPath)"
+                       Lines="$(TargetFrameworkMonikerAssemblyAttributeText)"
+                       Overwrite="true"
+                       ContinueOnError="true"
+                       Condition="'@(Compile)' != '' and '$(TargetFrameworkMonikerAssemblyAttributeText)' != ''"
+               />
+       </Target>
 
        <Target Name="ResolveReferences" DependsOnTargets="$(ResolveReferencesDependsOn)"/>
 
                >
                        <Output TaskParameter="ResolvedFiles" ItemName="ResolvedFiles"/>
                        <Output TaskParameter="ResolvedFiles" ItemName="ReferencePath"/>
-                       <Output TaskParameter="ResolvedDependencyFiles" ItemName="_ResolvedDependencyFiles"/>
+                       <Output TaskParameter="ResolvedDependencyFiles" ItemName="ReferenceDependencyPaths"/>
                        <Output TaskParameter="RelatedFiles" ItemName="_ReferenceRelatedPaths"/>
                        <Output TaskParameter="SatelliteFiles" ItemName="ReferenceSatellitePaths"/>
                        <Output TaskParameter="CopyLocalFiles" ItemName="ReferenceCopyLocalPaths"/>
+                       
+                       <!-- FIXME: backwards compatibility -->
+                       <Output TaskParameter="ResolvedDependencyFiles" ItemName="_ResolvedDependencyFiles"/>
                </ResolveAssemblyReference>
        </Target>
 
        <Target
-               Name="AssignProjectConfigurations"
+               Name="AssignProjectConfiguration"
                Condition="'@(ProjectReference)' != ''">
 
                <!-- assign configs if building a solution file -->
                ProjectReferenceWithConfigurationNonExistent: Projects non-existent on disk -->
 
        <Target Name="SplitProjectReferencesByExistent"
-               DependsOnTargets="AssignProjectConfigurations">
+               DependsOnTargets="AssignProjectConfiguration">
 
                <CreateItem Include="@(ProjectReferenceWithConfiguration)" Condition="'@(ProjectReferenceWithConfiguration)' != ''">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfigurationExistent"
 
        <PropertyGroup>
                <BuildDependsOn>
+                       BuildOnlySettings;
                        BeforeBuild;
                        CoreBuild;
                        AfterBuild
                </BuildDependsOn>
        </PropertyGroup>
-
+       
+       <Target Name="BuildOnlySettings"/>
        <Target Name="BeforeBuild"/>
        <Target Name="AfterBuild"/>
 
        <PropertyGroup>
                <CompileDependsOn>
                        ResolveReferences;
+                       GenerateTargetFrameworkMonikerAttribute;
                        BeforeCompile;
                        _TimestampBeforeCompile;
                        CoreCompile;
                        LicenseTarget = "$(TargetFileName)"
                        OutputDirectory = "$(IntermediateOutputPath)"
                        OutputLicense = "$(IntermediateOutputPath)$(TargetFileName).licenses"
-                       ReferencedAssemblies = "@(ReferencePath);@(_ResolvedDependencyFiles)"
+                       ReferencedAssemblies = "@(ReferencePath);@(ReferenceDependencyPaths)"
                        ToolPath = "$(LCToolPath)"
                        ToolExe = "$(LCToolExe)">
 
                        <Output TaskParameter="Lines" ItemName="PreviousFileWrites"/>
                </ReadLinesFromFile>
 
-               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
-                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
-               </RemoveDuplicates>
-
                <!-- CopyLocal files: In case all the projects build to common output
                     directory, then other projects might depend on some of these
                     CopyLocal files, so delete only the ones under *this* project
                        <Output TaskParameter="InPath" ItemName="FileWrites"/>
                </FindUnderPath>
 
+               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
+                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
+               </RemoveDuplicates>
+
                <WriteLinesToFile
                        File="$(IntermediateOutputPath)$(CleanFile)"
                        Lines="@(CombinedFileWrites)"
        </Target>
 
        <Target Name="CleanReferencedProjects"
-               DependsOnTargets="AssignProjectConfigurations">
+               DependsOnTargets="AssignProjectConfiguration">
 
                <!-- If building from .sln.proj or from IDE, clean will get handled by them,
                     else we are building a project directly, from the command line, so
                     we can safely remove the file list now -->
                <Delete Files="$(IntermediateOutputPath)$(CleanFile)" TreatErrorsAsWarnings="true" />
        </Target>
+       
+       <PropertyGroup>
+               <ImplicitlyExpandDesignTimeFacades>true</ImplicitlyExpandDesignTimeFacades>
 
+               <ResolveReferencesDependsOn>
+                       $(ResolveReferencesDependsOn);
+                       ImplicitlyExpandDesignTimeFacades
+               </ResolveReferencesDependsOn>
+
+               <ImplicitlyExpandDesignTimeFacadesDependsOn>
+                       $(ImplicitlyExpandDesignTimeFacadesDependsOn);
+                       GetReferenceAssemblyPaths
+               </ImplicitlyExpandDesignTimeFacadesDependsOn>
+       </PropertyGroup>
+       
+       <Target Name="ImplicitlyExpandDesignTimeFacades" Condition="'$(ImplicitlyExpandDesignTimeFacades)' == 'true'" DependsOnTargets="$(ImplicitlyExpandDesignTimeFacadesDependsOn)">
+       
+               <PropertyGroup>
+                       <_HasReferenceToSystemRuntime Condition="'%(_ResolvedDependencyFiles.Filename)' == 'System.Runtime'">true</_HasReferenceToSystemRuntime>
+               </PropertyGroup>
+
+               <ItemGroup Condition="'$(_HasReferenceToSystemRuntime)' == 'true'">
+                       <!-- If the user has manually referenced these assemblies, remove them so we don't end up with duplicates -->
+                       <ReferencePath Remove="@(_DesignTimeFacadeAssemblies)"/>
+                       <ReferencePath Include="%(_DesignTimeFacadeAssemblies.Identity)">
+                               <WinMDFile>false</WinMDFile>
+                               <CopyLocal>false</CopyLocal>
+                               <ResolvedFrom>ImplicitlyExpandDesignTimeFacades</ResolvedFrom>
+                       </ReferencePath>
+                       <_ResolveAssemblyReferenceResolvedFiles Include="@(ReferencePath)" Condition="'%(ReferencePath.ResolvedFrom)' == 'ImplicitlyExpandDesignTimeFacades'" />
+               </ItemGroup>
+    
+               <Message Importance="Low" Text="Including @(ReferencePath)" Condition="'%(ReferencePath.ResolvedFrom)' == 'ImplicitlyExpandDesignTimeFacades'" />
+
+       </Target>
+       
        <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportAfter\*"
                Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == 'true' and Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportAfter')"/>
 </Project>
diff --git a/mcs/tools/xbuild/xbuild/4.0/Microsoft.Portable.CSharp.targets b/mcs/tools/xbuild/xbuild/4.0/Microsoft.Portable.CSharp.targets
new file mode 100644 (file)
index 0000000..d80a9f5
--- /dev/null
@@ -0,0 +1,3 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+       <Import Project="$(MSBuildToolsPath)\Microsoft.Portable.CSharp.Targets" />    
+</Project>
diff --git a/mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.targets b/mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.targets
deleted file mode 100644 (file)
index 2118874..0000000
+++ /dev/null
@@ -1,824 +0,0 @@
-<Project DefaultTargets="Build" InitialTargets="_ValidateEssentialProperties" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-       <PropertyGroup>
-               <ImportByWildcardBeforeMicrosoftCommonTargets Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == ''">true</ImportByWildcardBeforeMicrosoftCommonTargets>
-               <ImportByWildcardAfterMicrosoftCommonTargets Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == ''">true</ImportByWildcardAfterMicrosoftCommonTargets>
-       </PropertyGroup>
-
-       <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*"
-               Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>
-
-       <PropertyGroup>
-               <TargetExt Condition="'$(OutputType)' == 'Winexe'">.exe</TargetExt>
-               <TargetExt Condition="'$(OutputType)' == 'Exe'">.exe</TargetExt>
-               <TargetExt Condition="'$(OutputType)' == 'Library'">.dll</TargetExt>
-               <TargetExt Condition="'$(OutputType)' == 'Netmodule'">.netmodule</TargetExt>
-       </PropertyGroup>
-
-       <PropertyGroup>
-               <ProjectDir Condition="'$(ProjectDir)' == ''">$(MSBuildProjectDirectory)\</ProjectDir>
-       </PropertyGroup>
-
-       <PropertyGroup>
-               <AssemblyName Condition="'$(AssemblyName)' == ''">$(RootNamespace)</AssemblyName>
-               <OutputPath Condition="'$(OutputPath)' != '' and !HasTrailingSlash('$(OutputPath)')">$(OutputPath)\</OutputPath> 
-               <OutputPath Condition=" '$(Platform)'=='' and '$(Configuration)'=='' and '$(OutputPath)'=='' ">bin\Debug\</OutputPath>
-               <WarningLevel Condition="'$(WarningLevel)' == ''" >2</WarningLevel>
-
-               <TargetFrameworkIdentifier Condition="'$(TargetFrameworkIdentifier)' == ''">.NETFramework</TargetFrameworkIdentifier>
-               <TargetFrameworkVersion Condition="'$(TargetFrameworkVersion)' == ''">v4.0</TargetFrameworkVersion>
-
-               <TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == '' and '$(TargetFrameworkProfile)' != ''">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion),Profile=$(TargetFrameworkProfile)</TargetFrameworkMoniker>
-               <TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == ''">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion)</TargetFrameworkMoniker>
-       </PropertyGroup>
-
-       <PropertyGroup>
-               <OutDir Condition="'$(OutDir)' == ''">$(OutputPath)</OutDir>
-               <OutDir Condition="'$(OutDir)' != '' and !HasTrailingSlash('$(OutDir)')">$(OutDir)\</OutDir>
-
-               <_OriginalConfiguration>$(Configuration)</_OriginalConfiguration>
-               <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-               <ConfigurationName Condition="'$(ConfigurationName)' == ''">$(Configuration)</ConfigurationName>
-
-               <_OriginalPlatform>$(Platform)</_OriginalPlatform>
-               <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-               <PlatformName Condition="'$(PlatformName)' == ''">$(Platform)</PlatformName>
-
-               <AddAdditionalExplicitAssemblyReferences Condition="'$(AddAdditionalExplicitAssemblyReferences)' == ''">true</AddAdditionalExplicitAssemblyReferences>
-               <AdditionalExplicitAssemblyReferences Condition="'$(AddAdditionalExplicitAssemblyReferences)' == 'true' and '$(TargetFrameworkVersion)' != 'v2.0' and '$(TargetFrameworkVersion)' != 'v3.0'">System.Core;$(AdditionalExplicitAssemblyReferences)</AdditionalExplicitAssemblyReferences>
-       </PropertyGroup>
-
-       <PropertyGroup>
-               <SkipCopyUnchangedFiles Condition="'$(SkipCopyUnchangedFiles)' == ''">true</SkipCopyUnchangedFiles>
-       </PropertyGroup>
-
-       <PropertyGroup>
-               <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' == ''">obj\</BaseIntermediateOutputPath>
-               <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' != '' and !HasTrailingSlash('$(BaseIntermediateOutputPath)')">$(BaseIntermediateOutputPath)\</BaseIntermediateOutputPath>
-               <CleanFile Condition="'$(CleanFile)'==''">$(MSBuildProjectFile).FilesWrittenAbsolute.txt</CleanFile>
-       </PropertyGroup>
-
-       <PropertyGroup Condition="'$(IntermediateOutputPath)' == ''">
-               <IntermediateOutputPath Condition=" '$(PlatformName)' == 'AnyCPU'">$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
-               <IntermediateOutputPath Condition=" '$(PlatformName)' != 'AnyCPU'">$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\</IntermediateOutputPath>
-       </PropertyGroup>
-
-       <PropertyGroup>
-               <IntermediateOutputPath Condition="'$(IntermediateOutputPath)' != '' and !HasTrailingSlash('$(IntermediateOutputPath)')">$(IntermediateOutputPath)\</IntermediateOutputPath>
-       </PropertyGroup>
-
-       <ItemGroup>
-               <IntermediateAssembly Include="$(IntermediateOutputPath)$(AssemblyName)$(TargetExt)" />
-
-               <!-- creating this as a item to use FullPath on it, to build TargetPath -->
-               <_OutDirItem Include="$(OutDir)"/>
-       </ItemGroup>
-
-       <PropertyGroup>
-               <TargetName Condition="'$(TargetName)' == '' ">$(AssemblyName)</TargetName>
-               <TargetFileName Condition="'$(TargetFileName)' == '' ">$(TargetName)$(TargetExt)</TargetFileName>
-               <TargetDir Condition=" '$(TargetDir)' == '' ">@(_OutDirItem->'%(FullPath)')</TargetDir>
-               <TargetPath Condition=" '$(TargetPath)' == '' ">@(_OutDirItem->'%(FullPath)\$(TargetFileName)')</TargetPath>
-               <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildProjectFullPath);$(MSBuildToolsPath)\Microsoft.Common.targets</MSBuildAllProjects>
-               <KeyOriginatorFile Condition=" '$(SignAssembly)' == 'true' ">$(AssemblyOriginatorKeyFile)</KeyOriginatorFile>
-       </PropertyGroup>
-
-       <Target Name="_ValidateEssentialProperties">
-               <Error Condition=" '$(OutputPath)' == '' and '$(SkipInvalidConfigurations)' != 'true'"
-                       Text="'OutputPath' property is not set for this project. Usually this is caused by invalid Configuration/Platform combination. Original values: Configuration: $(_OriginalConfiguration) Platform: $(_OriginalPlatform)."/>
-
-               <Warning Condition=" '$(OutputPath)' == '' and '$(SkipInvalidConfigurations)' == 'true'"
-                       Text="'OutputPath' property is not set for this project. Usually this is caused by invalid Configuration/Platform combination. Original values: Configuration: $(_OriginalConfiguration) Platform: $(_OriginalPlatform)."/>
-
-               <!-- If OutDir is specified via the command line, then the earlier check
-                    to add a trailing slash won't have any affect, so error here. -->
-               <Error
-                       Condition="'$(OutDir)' != '' and !HasTrailingSlash('$(OutDir)')"
-                       Text="OutDir property must end with a slash."/>
-       </Target>
-
-       <Target Name="PrepareForBuild">
-               <Message Importance="High" Text="Configuration: $(Configuration) Platform: $(Platform)"/>
-
-               <!-- Look for app.config, if $(AppConfig) is specified, then use that. Else look in
-                    @(None) and @(Content) -->
-               <CreateItem Include="$(AppConfig)" Condition="'$(AppConfig)' != ''"
-                       AdditionalMetadata="TargetPath=$(TargetFileName).config">
-                       <Output TaskParameter="Include" ItemName="AppConfigWithTargetPath" />
-               </CreateItem>
-
-               <FindAppConfigFile PrimaryList="@(None)" SecondaryList="@(Content)" TargetPath="$(TargetFileName).config"
-                       Condition="'$(AppConfig)' == ''">
-                       <Output TaskParameter="AppConfigFile" ItemName="AppConfigWithTargetPath"/>
-               </FindAppConfigFile>
-
-               <MakeDir 
-                       Directories="$(OutDir);$(IntermediateOutputPath);@(DocFileItem->'%(RelativeDir)')"
-               />
-       </Target>
-
-       <PropertyGroup>
-               <GetFrameworkPathsDependsOn />
-       </PropertyGroup>
-       <Target Name="GetFrameworkPaths"
-               Condition="'$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkIdentifier)' == '.NETFramework'"
-               DependsOnTargets="$(GetFrameworkPathsDependsOn)">
-               <GetFrameworkPath>
-                       <Output Condition="'$(TargetFrameworkVersion)' == 'v4.5'"
-                               TaskParameter="FrameworkVersion45Path"
-                               ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
-                       <Output Condition="'$(TargetFrameworkVersion)' == 'v4.0'"
-                               TaskParameter="FrameworkVersion40Path"
-                               ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
-                       <Output Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
-                               TaskParameter="FrameworkVersion35Path"
-                               ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
-                       <Output Condition="'$(TargetFrameworkVersion)' == 'v3.0' or '$(TargetFrameworkVersion)' == 'v3.5'" 
-                               TaskParameter="FrameworkVersion30Path"
-                               ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
-                       <Output Condition="'$(TargetFrameworkVersion)' == 'v2.0' or '$(TargetFrameworkVersion)' == 'v3.0' or '$(TargetFrameworkVersion)' == 'v3.5'" 
-                               TaskParameter="FrameworkVersion20Path"
-                               ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
-               </GetFrameworkPath>
-               <CreateProperty Value="@(_CombinedTargetFrameworkDirectoriesItem)">
-                       <Output TaskParameter="Value" PropertyName="TargetFrameworkDirectory"/>
-               </CreateProperty>
-
-               <Warning Text="TargetFrameworkVersion '$(TargetFrameworkVersion)' not supported by this toolset (ToolsVersion: $(MSBuildToolsVersion))."
-                       Condition="'$(TargetFrameworkVersion)' != 'v4.5' and '$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
-       </Target>
-
-       <PropertyGroup>
-               <GetReferenceAssemblyPathsDependsOn />
-       </PropertyGroup>
-       <Target Name="GetReferenceAssemblyPaths" DependsOnTargets="$(GetReferenceAssemblyPathsDependsOn)">
-               <!-- in case of .NETFramework, $(TargetFrameworkDirectory) would have been set by
-               GetFrameworkPaths, if it hasn't been changed, then clear it, to avoid duplicates -->
-               <CreateProperty Value="" Condition="'@(_CombinedTargetFrameworkDirectoriesItem)' == '$(TargetFrameworkDirectory)'">
-                       <Output TaskParameter="Value" PropertyName="TargetFrameworkDirectory"/>
-               </CreateProperty>
-
-               <GetReferenceAssemblyPaths
-                       Condition="'$(TargetFrameworkMoniker)' != '' and '$(_TargetFrameworkDirectories)' == ''"
-                       TargetFrameworkMoniker="$(TargetFrameworkMoniker)"
-                       RootPath="$(TargetFrameworkRootPath)">
-
-                       <Output TaskParameter="ReferenceAssemblyPaths" PropertyName="_TargetFrameworkDirectories"/>
-                       <Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="_FullFrameworkReferenceAssemblyPaths"/>
-                       <Output TaskParameter="TargetFrameworkMonikerDisplayName" PropertyName="TargetFrameworkMonikerDisplayName"/>
-               </GetReferenceAssemblyPaths>
-
-               <CreateProperty Value="$(_TargetFrameworkDirectories);$(TargetFrameworkDirectory)">
-                       <Output TaskParameter="Value" PropertyName="TargetFrameworkDirectory"/>
-               </CreateProperty>
-       </Target>
-
-       <PropertyGroup>
-               <AllowedReferenceAssemblyFileExtensions Condition=" '$(AllowedReferenceAssemblyFileExtensions)' == '' ">
-                       .exe;
-                       .dll
-               </AllowedReferenceAssemblyFileExtensions>
-
-               <AllowedReferenceRelatedFileExtensions Condition=" '$(AllowedReferenceRelatedFileExtensions)' == '' ">
-                       .mdb
-               </AllowedReferenceRelatedFileExtensions>
-
-               <AssemblySearchPaths Condition="'$(AssemblySearchPaths)' == ''">
-                       {CandidateAssemblyFiles};
-                       $(ReferencePath);
-                       {HintPathFromItem};
-                       {TargetFrameworkDirectory};
-                       {PkgConfig};
-                       {GAC};
-                       {RawFileName};
-                       $(OutDir)
-               </AssemblySearchPaths>
-
-               <ResolveReferencesDependsOn>
-                       BeforeResolveReferences;
-                       ResolveProjectReferences;
-                       ResolveAssemblyReferences;
-                       AfterResolveReferences
-               </ResolveReferencesDependsOn>
-
-               <ResolveAssemblyReferencesDependsOn>
-                       GetFrameworkPaths;
-                       GetReferenceAssemblyPaths;
-                       PrepareForBuild
-               </ResolveAssemblyReferencesDependsOn>
-       </PropertyGroup>
-
-       <Target Name="ResolveReferences" DependsOnTargets="$(ResolveReferencesDependsOn)"/>
-
-       <Target Name="BeforeResolveReferences" />
-       <Target Name="AfterResolveReferences" />
-
-       <Target Name="ResolveAssemblyReferences" DependsOnTargets="$(ResolveAssemblyReferencesDependsOn)">
-               <CreateItem Include="@(Reference)" Exclude="$(AdditionalExplicitAssemblyReferences)">
-                       <Output TaskParameter="Include" ItemName="_Reference"/>
-               </CreateItem>
-
-               <CreateItem Include="$(AdditionalExplicitAssemblyReferences)">
-                       <Output TaskParameter="Include" ItemName="_Reference"/>
-               </CreateItem>
-
-               <ResolveAssemblyReference
-                       Assemblies="@(_Reference)"
-                       AssemblyFiles="@(ChildProjectReferences)"
-                       SearchPaths="$(AssemblySearchPaths)"
-                       CandidateAssemblyFiles="@(Content);@(None)"
-                       TargetFrameworkDirectories="$(TargetFrameworkDirectory)"
-                       AllowedAssemblyExtensions="$(AllowedReferenceAssemblyFileExtensions)"
-                       AllowedRelatedFileExtensions="$(AllowedReferenceRelatedFileExtensions)"
-                       FindDependencies="true"
-                       FindSatellites="true"
-                       FindRelatedFiles="true"
-                       TargetFrameworkMoniker="$(TargetFrameworkMoniker)"
-                       TargetFrameworkMonikerDisplayName="$(TargetFrameworkMonikerDisplayName)"
-                       TargetFrameworkVersion="$(TargetFrameworkVersion)"
-               >
-                       <Output TaskParameter="ResolvedFiles" ItemName="ResolvedFiles"/>
-                       <Output TaskParameter="ResolvedFiles" ItemName="ReferencePath"/>
-                       <Output TaskParameter="ResolvedDependencyFiles" ItemName="_ResolvedDependencyFiles"/>
-                       <Output TaskParameter="RelatedFiles" ItemName="_ReferenceRelatedPaths"/>
-                       <Output TaskParameter="SatelliteFiles" ItemName="ReferenceSatellitePaths"/>
-                       <Output TaskParameter="CopyLocalFiles" ItemName="ReferenceCopyLocalPaths"/>
-               </ResolveAssemblyReference>
-       </Target>
-
-       <Target
-               Name="AssignProjectConfigurations"
-               Condition="'@(ProjectReference)' != ''">
-
-               <!-- assign configs if building a solution file -->
-               <AssignProjectConfiguration
-                       ProjectReferences = "@(ProjectReference)"
-                       SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
-                       Condition="'$(BuildingSolutionFile)' == 'true'">
-
-                       <Output TaskParameter = "AssignedProjects" ItemName = "ProjectReferenceWithConfiguration"/>
-               </AssignProjectConfiguration>
-
-               <!-- Else, just -->
-               <CreateItem Include="@(ProjectReference)" Condition="'$(BuildingSolutionFile)' != 'true'">
-                       <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfiguration"/>
-               </CreateItem>
-
-       </Target>
-
-       <!-- Split projects into 2 lists
-               ProjectReferenceWithConfigurationExistent: Projects existent on disk
-               ProjectReferenceWithConfigurationNonExistent: Projects non-existent on disk -->
-
-       <Target Name="SplitProjectReferencesByExistent"
-               DependsOnTargets="AssignProjectConfigurations">
-
-               <CreateItem Include="@(ProjectReferenceWithConfiguration)" Condition="'@(ProjectReferenceWithConfiguration)' != ''">
-                       <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfigurationExistent"
-                               Condition="Exists ('%(ProjectReferenceWithConfiguration.Identity)')"/>
-
-                       <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfigurationNonExistent"
-                               Condition="!Exists ('%(ProjectReferenceWithConfiguration.Identity)')"/>
-               </CreateItem>
-       </Target>
-
-       <Target
-               Name="ResolveProjectReferences"
-               DependsOnTargets="SplitProjectReferencesByExistent"
-       >
-               <!-- If building from a .sln.proj or from IDE, then referenced projects have already
-                    been built, so just get the target paths -->
-               <MSBuild
-                       Projects="@(ProjectReferenceWithConfigurationExistent)"
-                       Targets="GetTargetPath"
-                       Properties="%(ProjectReferenceWithConfigurationExistent.SetConfiguration); %(ProjectReferenceWithConfigurationExistent.SetPlatform)"
-                       Condition="'@(ProjectReferenceWithConfigurationExistent)' != '' and ('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true')">
-
-                       <Output TaskParameter="TargetOutputs" ItemName="ChildProjectReferences" />
-               </MSBuild>
-
-               <!-- Building a project directly, build the referenced the projects also -->
-               <MSBuild
-                       Projects="@(ProjectReferenceWithConfigurationExistent)"
-                       Properties="%(ProjectReferenceWithConfigurationExistent.SetConfiguration); %(ProjectReferenceWithConfigurationExistent.SetPlatform)"
-                       Condition="'@(ProjectReferenceWithConfigurationExistent)' != '' and '$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true' ">
-
-                       <Output TaskParameter="TargetOutputs" ItemName="ChildProjectReferences" />
-               </MSBuild>
-
-               <Warning Text="Referenced Project %(ProjectReferenceWithConfigurationNonExistent.Identity) not found, ignoring."
-                        Condition="'@(ProjectReferenceWithConfigurationNonExistent)' != ''"/>
-       </Target>
-
-       <Target Name = "CopyFilesMarkedCopyLocal">
-               <Copy
-                       SourceFiles="@(ReferenceCopyLocalPaths)"
-                       DestinationFiles="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')"
-                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
-                       <Output TaskParameter = "DestinationFiles" ItemName = "FileWritesShareable"/>
-               </Copy>
-       </Target>
-
-       <Target Name="_ComputeNonExistentFileProperty" Condition='false'>
-               <CreateProperty Value="__NonExistentSubDir__\__NonExistentFile__">
-                       <Output TaskParameter="Value" PropertyName="NonExistentFile"/>
-               </CreateProperty>
-       </Target>
-
-       <PropertyGroup>
-               <BuildDependsOn>
-                       BeforeBuild;
-                       CoreBuild;
-                       AfterBuild
-               </BuildDependsOn>
-       </PropertyGroup>
-
-       <Target Name="BeforeBuild"/>
-       <Target Name="AfterBuild"/>
-
-       <Target Name="Build" DependsOnTargets="$(BuildDependsOn)" Outputs="$(TargetPath)"/>
-
-       <PropertyGroup>
-               <CoreBuildDependsOn>
-                       PrepareForBuild;
-                       GetFrameworkPaths;
-                       GetReferenceAssemblyPaths;
-                       PreBuildEvent;
-                       ResolveReferences;
-                       CopyFilesMarkedCopyLocal;
-                       PrepareResources;
-                       Compile;
-                       PrepareForRun;
-                       DeployOutputFiles;
-                       _RecordCleanFile;
-                       PostBuildEvent
-               </CoreBuildDependsOn>
-       </PropertyGroup>
-
-       <Target
-               Name="CoreBuild"
-               DependsOnTargets="$(CoreBuildDependsOn)"
-               Outputs="$(OutDir)$(AssemblyName)$(TargetExt)">
-
-               <OnError ExecuteTargets="_TimestampAfterCompile;PostBuildEvent"
-                       Condition=" '$(RunPostBuildEvent)' == 'Always' or '$(RunPostBuildEvent)' == 'OnOutputUpdated'"/>
-
-               <OnError ExecuteTargets="_RecordCleanFile" />
-       </Target>
-
-       <PropertyGroup>
-               <CompileDependsOn>
-                       ResolveReferences;
-                       BeforeCompile;
-                       _TimestampBeforeCompile;
-                       CoreCompile;
-                       _TimestampAfterCompile;
-                       AfterCompile
-               </CompileDependsOn>
-       </PropertyGroup>
-
-       <Target Name="BeforeCompile" />
-       <Target Name="AfterCompile" />
-
-       <Target Name="Compile" DependsOnTargets="$(CompileDependsOn)"/>
-
-       <PropertyGroup>
-               <PrepareForRunDependsOn>
-                       DeployOutputFiles
-               </PrepareForRunDependsOn>
-       </PropertyGroup>
-       <Target Name="PrepareForRun" DependsOnTargets="$(PrepareForRunDependsOn)"/>
-
-       <PropertyGroup>
-               <PrepareResourcesDependsOn>
-                       AssignTargetPaths;
-                       SplitResourcesByCulture;
-                       CreateManifestResourceNames;
-                       CopyNonResxEmbeddedResources;
-                       GenerateResources;
-                       GenerateSatelliteAssemblies;
-                       CompileLicxFiles
-               </PrepareResourcesDependsOn>
-       </PropertyGroup>
-       <Target Name="PrepareResources" DependsOnTargets="$(PrepareResourcesDependsOn)" />
-
-       <Target Name="SplitResourcesByCulture" DependsOnTargets="AssignTargetPaths">
-               <!-- Extract .licx files into @(LicxFiles) -->
-               <CreateItem Include="@(EmbeddedResourceWithTargetPath)" Condition="'%(Extension)' == '.licx'">
-                       <Output TaskParameter="Include" ItemName="LicxFiles"/>
-               </CreateItem>
-
-               <!-- Split *remaining* resource files into various groups.. -->
-               <AssignCulture Files="@(EmbeddedResourceWithTargetPath)" Condition="'%(Extension)' != '.licx'">
-                       <Output TaskParameter="AssignedFilesWithNoCulture" ItemName="ResourcesWithNoCulture"/>
-                       <Output TaskParameter="AssignedFilesWithCulture" ItemName="ResourcesWithCulture"/>
-               </AssignCulture>
-
-               <CreateItem Include="@(ResourcesWithNoCulture)" Condition="'%(Extension)' == '.resx'">
-                       <Output TaskParameter="Include" ItemName="ResxWithNoCulture"/>
-               </CreateItem>
-
-               <CreateItem Include="@(ResourcesWithNoCulture)" Condition="'%(Extension)' != '.resx'">
-                       <Output TaskParameter="Include" ItemName="NonResxWithNoCulture"/>
-               </CreateItem>
-
-               <CreateItem Include="@(ResourcesWithCulture)" Condition="'%(Extension)' == '.resx'">
-                       <Output TaskParameter="Include" ItemName="ResxWithCulture"/>
-               </CreateItem>
-
-               <CreateItem Include="@(ResourcesWithCulture)" Condition="'%(Extension)' != '.resx'">
-                       <Output TaskParameter="Include" ItemName="NonResxWithCulture"/>
-               </CreateItem>
-       </Target>
-
-       <!-- Copy non-resx resources to their manifest resource names, this is what the compiler expects -->
-       <Target Name = "CopyNonResxEmbeddedResources"
-               Condition = "'@(NonResxWithCulture)' != '' or '@(NonResxWithNoCulture)' != '' or '@(ManifestNonResxWithCulture)' != '' or '@(ManifestNonResxWithNoCulture)' != ''">
-
-               <MakeDir Directories="$(IntermediateOutputPath)%(ManifestNonResxWithCulture.Culture)"/>
-               <Copy SourceFiles = "@(NonResxWithCulture)"
-                       DestinationFiles = "@(ManifestNonResxWithCulture->'$(IntermediateOutputPath)%(Identity)')"
-                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
-                       <Output TaskParameter = "DestinationFiles" ItemName = "ManifestNonResxWithCultureOnDisk"/>
-                       <Output TaskParameter = "DestinationFiles" ItemName = "FileWrites"/>
-               </Copy>
-
-               <Copy SourceFiles = "@(NonResxWithNoCulture)"
-                       DestinationFiles = "@(ManifestNonResxWithNoCulture->'$(IntermediateOutputPath)%(Identity)')"
-                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
-                       <Output TaskParameter = "DestinationFiles" ItemName = "ManifestNonResxWithNoCultureOnDisk"/>
-                       <Output TaskParameter = "DestinationFiles" ItemName = "FileWrites"/>
-               </Copy>
-       </Target>
-
-       <Target Name = "GenerateResources">
-               <GenerateResource
-                       Sources = "@(ResxWithNoCulture)"
-                       UseSourcePath = "true"
-                       OutputResources = "@(ManifestResourceWithNoCultureName->'$(IntermediateOutputPath)%(Identity).resources')"
-                       Condition = "'@(ResxWithNoCulture)' != '' ">
-
-                       <Output TaskParameter = "OutputResources" ItemName = "ManifestResourceWithNoCulture"/>
-                       <Output TaskParameter = "FilesWritten" ItemName = "FileWrites"/>
-               </GenerateResource>
-
-               <GenerateResource
-                       Sources = "@(ResxWithCulture)"
-                       UseSourcePath = "true"
-                       OutputResources = "@(ManifestResourceWithCultureName->'$(IntermediateOutputPath)%(Identity).resources')"
-                       Condition = "'@(ResxWithCulture)' != '' ">
-
-                       <Output TaskParameter = "OutputResources" ItemName = "ManifestResourceWithCulture"/>
-                       <Output TaskParameter = "FilesWritten" ItemName = "FileWrites"/>
-               </GenerateResource>
-       </Target>
-
-       <Target Name="GenerateSatelliteAssemblies"
-               Inputs="@(ManifestResourceWithCulture);@(ManifestNonResxWithCultureOnDisk)"
-               Outputs="$(IntermediateOutputPath)%(Culture)\$(AssemblyName).resources.dll" >
-               <!-- @(NonResxWithCulture) - rename files to ManifestNon.. and then use for AL -->
-               <MakeDir Directories = "$(IntermediateOutputPath)%(ManifestResourceWithCulture.Culture)" Condition = "'@(ManifestResourceWithCulture)' != ''" />
-               <MakeDir Directories = "$(IntermediateOutputPath)%(ManifestNonResxWithCultureOnDisk.Culture)" Condition = "'@(ManifestNonResxWithCultureOnDisk)' != ''" />
-
-               <AL
-                       Culture = "%(Culture)"
-                       DelaySign="$(DelaySign)"
-                       EmbedResources = "@(ManifestResourceWithCulture);@(ManifestNonResxWithCultureOnDisk)"
-                       KeyFile="$(KeyOriginatorFile)"
-                       ToolExe="$(AlToolExe)"
-                       ToolPath="$(AlToolPath)"
-                       OutputAssembly = "$(IntermediateOutputPath)%(Culture)\$(AssemblyName).resources.dll" >
-                       <Output TaskParameter="OutputAssembly" ItemName="FileWrites"/>
-               </AL>
-
-
-               <CreateItem
-                       Include = "$(IntermediateOutputPath)%(Culture)\$(AssemblyName).resources.dll"
-                       AdditionalMetadata = "Culture=%(Culture)"
-                       Condition = "'@(ManifestResourceWithCulture)' != '' or '@(ManifestNonResxWithCultureOnDisk)' != ''">
-                       <Output TaskParameter = "Include" ItemName = "IntermediateSatelliteAssemblies" />
-               </CreateItem>
-       </Target>
-
-       <PropertyGroup>
-               <CompileLicxFilesDependsOn></CompileLicxFilesDependsOn>
-       </PropertyGroup>
-
-       <Target Name = "CompileLicxFiles"
-               Condition = "'@(LicxFiles)' != ''"
-               DependsOnTargets = "$(CompileLicxFilesDependsOn)"
-               Outputs = "$(IntermediateOutputPath)$(TargetFileName).licenses">
-               <LC
-                       Sources = "@(LicxFiles)"
-                       LicenseTarget = "$(TargetFileName)"
-                       OutputDirectory = "$(IntermediateOutputPath)"
-                       OutputLicense = "$(IntermediateOutputPath)$(TargetFileName).licenses"
-                       ReferencedAssemblies = "@(ReferencePath);@(_ResolvedDependencyFiles)"
-                       ToolPath = "$(LCToolPath)"
-                       ToolExe = "$(LCToolExe)">
-
-                       <Output TaskParameter="OutputLicense" ItemName="CompiledLicenseFile"/>
-                       <Output TaskParameter="OutputLicense" ItemName="FileWrites"/>
-               </LC>
-       </Target>
-
-       <!-- Assign target paths to files that will need to be copied along with the project -->
-       <Target Name = "AssignTargetPaths">
-               <AssignTargetPath Files="@(None)" RootFolder="$(MSBuildProjectDirectory)">
-                       <Output TaskParameter="AssignedFiles" ItemName="NoneWithTargetPath"/>
-               </AssignTargetPath>
-
-               <AssignTargetPath Files="@(Content)" RootFolder="$(MSBuildProjectDirectory)">
-                       <Output TaskParameter="AssignedFiles" ItemName="ContentWithTargetPath"/>
-               </AssignTargetPath>
-
-               <AssignTargetPath Files="@(EmbeddedResource)" RootFolder="$(MSBuildProjectDirectory)">
-                       <Output TaskParameter="AssignedFiles" ItemName="EmbeddedResourceWithTargetPath"/>
-               </AssignTargetPath>
-       </Target>
-
-       <Target Name="DeployOutputFiles"
-               DependsOnTargets="PrepareResources;CoreCompile;_CopyDeployFilesToOutputDirectory;_CopyAppConfigFile">
-
-               <Copy 
-                       SourceFiles="$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb"
-                       Condition="'$(OutDir)' != '' and Exists('$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb')"
-                       DestinationFolder="$(OutDir)"
-                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" >
-                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
-               </Copy>
-
-               <Copy SourceFiles="@(IntermediateAssembly)" Condition="'$(OutDir)' != '' and Exists ('@(IntermediateAssembly)')" DestinationFolder="$(OutDir)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
-                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
-               </Copy>
-
-               <Copy
-                       SourceFiles = "@(IntermediateSatelliteAssemblies)"
-                       DestinationFiles = "@(IntermediateSatelliteAssemblies->'$(OutDir)\%(Culture)\$(AssemblyName).resources.dll')"
-                       Condition = "'@(IntermediateSatelliteAssemblies)' != ''"
-                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
-                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
-               </Copy>
-       </Target>
-
-       <Target Name="_CopyDeployFilesToOutputDirectory"
-               DependsOnTargets="GetCopyToOutputDirectoryItems;
-                       _CopyDeployFilesToOutputDirectoryAlways;
-                       _CopyDeployFilesToOutputDirectoryPreserveNewest"/>
-
-       <Target Name="_CopyDeployFilesToOutputDirectoryPreserveNewest"
-               Condition="'@(ItemsToCopyToOutputDirectoryPreserveNewest)' != ''"
-               Inputs="@(ItemsToCopyToOutputDirectoryPreserveNewest)"
-               Outputs="@(ItemsToCopyToOutputDirectoryPreserveNewest->'$(OutDir)%(TargetPath)')">
-
-               <Copy SourceFiles="@(ItemsToCopyToOutputDirectoryPreserveNewest)"
-                       DestinationFiles="@(ItemsToCopyToOutputDirectoryPreserveNewest->'$(OutDir)%(TargetPath)')"
-                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)"> 
-                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
-               </Copy>
-       </Target>
-
-       <!-- Copy if newer -->
-       <Target Name="_CopyDeployFilesToOutputDirectoryAlways"
-               Condition="'@(ItemsToCopyToOutputDirectoryAlways)' != ''">
-
-               <Copy SourceFiles="@(ItemsToCopyToOutputDirectoryAlways)"
-                       DestinationFiles="@(ItemsToCopyToOutputDirectoryAlways->'$(OutDir)%(TargetPath)')">
-                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
-               </Copy>
-       </Target>
-
-
-       <Target Name="_CopyAppConfigFile" Condition="'@(AppConfigWithTargetPath)' != ''"
-               Inputs="@(AppConfigWithTargetPath)"
-               Outputs="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')">
-
-               <Copy SourceFiles="@(AppConfigWithTargetPath)"
-                       DestinationFiles="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')">
-                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
-               </Copy>
-       </Target>
-
-       <Target Name="GetTargetPath" Outputs="$(TargetPath)"/>
-
-       <Target Name="GetCopyToOutputDirectoryItems"
-               Outputs="@(AllItemsFullPathWithTargetPath)"
-               DependsOnTargets="AssignTargetPaths;SplitProjectReferencesByExistent">
-
-               <!-- FIXME: handle .vcproj
-                    FIXME: Private ProjectReferences are honored only in 3.5
-               -->
-               <MSBuild
-                       Projects="@(ProjectReferenceWithConfigurationExistent)"
-                       Targets="GetCopyToOutputDirectoryItems"
-                       Condition="'@(ProjectReferenceWithConfigurationExistent)' != '' and '%(ProjectReferenceWithConfigurationExistent.Private)' != 'false'">
-
-                       <Output TaskParameter="TargetOutputs" ItemName="AllChildProjectItemsWithTargetPath"/>
-               </MSBuild>
-
-               <!-- Process items from child project. The outputs need to have full path
-                    as they'll be used from other projects -->
-
-               <CreateItem
-                       Include="@(AllChildProjectItemsWithTargetPath->'%(FullPath)')"
-                       Condition="'%(AllChildProjectItemsWithTargetPath.CopyToOutputDirectory)' == 'Always' or '%(AllChildProjectItemsWithTargetPath.CopyToOutputDirectory)' == 'PreserveNewest'">
-
-                       <Output TaskParameter="Include" ItemName="AllItemsFullPathWithTargetPath"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryAlways"
-                               Condition="'%(AllChildProjectItemsWithTargetPath.CopyToOutputDirectory)'=='Always'"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryPreserveNewest"
-                               Condition="'%(AllChildProjectItemsWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'"/>
-
-               </CreateItem>
-
-               <!-- Process _this_ project's items -->
-
-               <CreateItem
-                       Include="@(NoneWithTargetPath->'%(FullPath)')"
-                       Condition="'%(NoneWithTargetPath.CopyToOutputDirectory)' == 'Always' or '%(NoneWithTargetPath.CopyToOutputDirectory)' == 'PreserveNewest'">
-                       <Output TaskParameter="Include" ItemName="AllItemsFullPathWithTargetPath"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryAlways"
-                               Condition="'%(NoneWithTargetPath.CopyToOutputDirectory)'=='Always'"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryPreserveNewest"
-                               Condition="'%(NoneWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'"/>
-               </CreateItem>
-
-               <CreateItem
-                       Include="@(ContentWithTargetPath->'%(FullPath)')"
-                       Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)' == 'Always' or '%(ContentWithTargetPath.CopyToOutputDirectory)' == 'PreserveNewest'">
-                       <Output TaskParameter="Include" ItemName="AllItemsFullPathWithTargetPath"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryAlways"
-                               Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='Always'"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryPreserveNewest"
-                               Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'"/>
-               </CreateItem>
-
-               <CreateItem
-                       Include="@(EmbeddedResourceWithTargetPath->'%(FullPath)')"
-                       Condition="'%(EmbeddedResourceWithTargetPath.CopyToOutputDirectory)' == 'Always' or '%(EmbeddedResourceWithTargetPath.CopyToOutputDirectory)' == 'PreserveNewest'">
-                       <Output TaskParameter="Include" ItemName="AllItemsFullPathWithTargetPath"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryAlways"
-                               Condition="'%(EmbeddedResourceWithTargetPath.CopyToOutputDirectory)'=='Always'"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryPreserveNewest"
-                               Condition="'%(EmbeddedResourceWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'"/>
-               </CreateItem>
-
-       </Target>
-
-       <!-- Pre/Post BuildEvents -->
-       <PropertyGroup>
-               <PreBuildEventDependsOn />
-       </PropertyGroup>
-
-       <Target Name="PreBuildEvent"
-               Condition="'$(PreBuildEvent)' != ''"
-               DependsOnTargets="$(PreBuildEventDependsOn)">
-
-               <Exec WorkingDirectory="$(OutDir)" Command="$(PreBuildEvent)" />
-       </Target>
-
-       <!-- PostBuildEvent depends on $(RunPostBuildEvent)
-
-               Default: OnBuildSuccess
-               OnBuildSuccess: Run after a successful build
-               OnOutputUpdated: Run only if the output assembly got updates
-               Always: Run always
-       -->
-       <PropertyGroup>
-               <PostBuildEventDependsOn />
-       </PropertyGroup>
-
-       <!-- this gets invoked in two cases, from CoreBuildDependsOn, if the build completes
-            successfully, OR from OnError in CoreBuild, if the build failed and $(RunPostBuildEvent)
-            is 'Always' or 'OnOutputUpdated'. Invoke $(PostBuildEvent) if its either Empty (== OnBuildSuccess)
-            or OnBuildSuccess or Always OR (OnOutputUpdated and output assembly got updated) -->
-       <Target Name="PostBuildEvent"
-               Condition="'$(PostBuildEvent)' != '' and
-                       ('$(RunPostBuildEvent)' != 'OnOutputUpdated' or
-                         '$(_AssemblyModifiedTimeBeforeCompile)' != '$(_AssemblyModifiedTimeAfterCompile)')"
-               DependsOnTargets="$(PostBuildEventDependsOn)">
-
-               <Exec WorkingDirectory="$(OutDir)" Command="$(PostBuildEvent)" />
-       </Target>
-
-       <!-- Timestamp the output assemblies, required for PostBuildEvent -->
-       <Target Name="_TimestampBeforeCompile" Condition="'$(RunPostBuildEvent)' == 'OnOutputUpdated'">
-               <CreateItem Include="%(IntermediateAssembly.ModifiedTime)">
-                       <Output TaskParameter="Include" PropertyName="_AssemblyModifiedTimeBeforeCompile" />
-               </CreateItem>
-       </Target>
-       <Target Name="_TimestampAfterCompile" Condition="'$(RunPostBuildEvent)' == 'OnOutputUpdated'">
-               <CreateItem Include="%(IntermediateAssembly.ModifiedTime)">
-                       <Output TaskParameter="Include" PropertyName="_AssemblyModifiedTimeAfterCompile" />
-               </CreateItem>
-       </Target>
-
-       <!-- Rebuild -->
-       <PropertyGroup>
-               <RebuildDependsOn>
-                       BeforeRebuild;
-                       Clean;
-                       $(MSBuildProjectDefaultTargets);
-                       AfterRebuild;
-               </RebuildDependsOn>
-
-               <RebuildDependsOn Condition="'$(MSBuildProjectDefaultTargets)' == 'Rebuild'">
-                       BeforeRebuild;
-                       Clean;
-                       Build;
-                       AfterRebuild;
-               </RebuildDependsOn>
-       </PropertyGroup>
-
-       <Target Name="BeforeRebuild" />
-       <Target Name="AfterRebuild" />
-
-       <Target Name="Rebuild"
-               DependsOnTargets="$(RebuildDependsOn)"
-               Outputs="$(TargetPath)"/>
-
-       <!-- Clean -->
-       <Target Name="_RecordCleanFile"
-               DependsOnTargets="_GetCompileOutputsForClean">
-
-               <!-- add to list of previous writes for this platform/config -->
-
-               <ReadLinesFromFile File="$(IntermediateOutputPath)$(CleanFile)">
-                       <Output TaskParameter="Lines" ItemName="PreviousFileWrites"/>
-               </ReadLinesFromFile>
-
-               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
-                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
-               </RemoveDuplicates>
-
-               <!-- CopyLocal files: In case all the projects build to common output
-                    directory, then other projects might depend on some of these
-                    CopyLocal files, so delete only the ones under *this* project
-                    directory -->
-               <FindUnderPath Path="$(MSBuildProjectDirectory)" Files="@(FileWritesShareable)">
-                       <Output TaskParameter="InPath" ItemName="FileWrites"/>
-               </FindUnderPath>
-
-               <WriteLinesToFile
-                       File="$(IntermediateOutputPath)$(CleanFile)"
-                       Lines="@(CombinedFileWrites)"
-                       Overwrite="true"/>
-       </Target>
-
-       <PropertyGroup>
-               <CleanDependsOn>
-                       BeforeClean;
-                       CleanReferencedProjects;
-                       CoreClean;
-                       AfterClean
-               </CleanDependsOn>
-       </PropertyGroup>
-
-       <Target Name="_GetCompileOutputsForClean">
-               <!-- assembly and debug file in the *intermediate output path* -->
-               <CreateItem Include="@(IntermediateAssembly)" Condition="Exists('@(IntermediateAssembly)')">
-                       <Output TaskParameter="Include" ItemName="FileWrites"/>
-               </CreateItem>
-
-               <CreateItem Include="$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb"
-                       Condition="Exists('$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb')">
-                       <Output TaskParameter="Include" ItemName="FileWrites"/>
-               </CreateItem>
-       </Target>
-
-       <!-- Get the list of files written, for clean -->
-       <Target Name="_GetCleanFileWrites"
-               DependsOnTargets="_GetCompileOutputsForClean">
-               <ReadLinesFromFile File="$(IntermediateOutputPath)$(CleanFile)">
-                       <Output TaskParameter="Lines" ItemName="PreviousFileWrites"/>
-               </ReadLinesFromFile>
-       </Target>
-
-       <Target Name="CleanReferencedProjects"
-               DependsOnTargets="AssignProjectConfigurations">
-
-               <!-- If building from .sln.proj or from IDE, clean will get handled by them,
-                    else we are building a project directly, from the command line, so
-                    clean the referenced projects -->
-               <MSBuild Projects="@(ProjectReferenceWithConfigurationExistent)"
-                       Targets="Clean"
-                       Condition=" '$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true' and '@(ProjectReferenceWithConfigurationExistent)' != ''" />
-
-       </Target>
-
-       <Target Name="Clean" DependsOnTargets="$(CleanDependsOn)"/>
-
-       <!-- Override in project to run before/after clean tasks -->
-       <Target Name="BeforeClean" />
-       <Target Name="AfterClean" />
-
-       <Target Name="CoreClean" DependsOnTargets="_GetCleanFileWrites">
-               <Delete Files="@(PreviousFileWrites);@(FileWrites)" TreatErrorsAsWarnings="true"/>
-
-               <!-- all previous files written for this platform/config have been deleted,
-                    we can safely remove the file list now -->
-               <Delete Files="$(IntermediateOutputPath)$(CleanFile)" TreatErrorsAsWarnings="true" />
-       </Target>
-
-       <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportAfter\*"
-               Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == 'true' and Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportAfter')"/>
-</Project>
diff --git a/mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.tasks b/mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.tasks
deleted file mode 100644 (file)
index d326aad..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
-       <UsingTask TaskName="Microsoft.Build.Tasks.AL"                  AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.AssignTargetPath"    AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.AssignCulture"       AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.AssignProjectConfiguration"  AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.CallTarget"          AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.CombinePath"         AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Copy"                AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.CreateCSharpManifestResourceName"    AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
-       <UsingTask TaskName="Microsoft.Build.Tasks.CreateItem"          AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.CreateProperty"      AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Csc"                 AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Delete"              AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Error"               AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Exec"                AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.FindAppConfigFile"   AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.FindUnderPath"       AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.GenerateResource"    AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.GetFrameworkPath"    AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.GetFrameworkSdkPath" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.GetReferenceAssemblyPaths"   AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.LC"                  AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.MakeDir"             AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Message"             AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.MSBuild"             AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.ReadLinesFromFile"   AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.RemoveDir"           AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.RemoveDuplicates"            AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.ResolveAssemblyReference"            AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.SignFile"            AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Touch"               AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Vbc"                 AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Warning"             AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.WriteLinesToFile"    AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-</Project>
diff --git a/mcs/tools/xbuild/xbuild/4.5/Microsoft.Portable.CSharp.targets b/mcs/tools/xbuild/xbuild/4.5/Microsoft.Portable.CSharp.targets
new file mode 100644 (file)
index 0000000..d80a9f5
--- /dev/null
@@ -0,0 +1,3 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+       <Import Project="$(MSBuildToolsPath)\Microsoft.Portable.CSharp.Targets" />    
+</Project>
index 1e0c4469852ca0f8c74c0f4c8d18454a2f394548..3c378252a4643ee0679223d29642996413307b4b 100644 (file)
                <CscToolExe Condition="'$(CscToolExe)' == '' and '$(TargetFrameworkVersion)' == 'v4.0' and '$(OS)' != 'Windows_NT'">dmcs</CscToolExe>
                <CscToolExe Condition="'$(CscToolExe)' == '' and '$(TargetFrameworkVersion)' == 'v4.0' and '$(OS)' == 'Windows_NT'">dmcs.bat</CscToolExe>
        </PropertyGroup>
+       
+       <PropertyGroup>
+               <TargetFrameworkMonikerAssemblyAttributeText Condition="'$(TargetFrameworkMoniker)' != '' and '$(TargetingClr2Framework)' != 'true'">
+// &lt;autogenerated /&gt;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(&quot;$(TargetFrameworkMoniker)&quot;, FrameworkDisplayName = &quot;$(TargetFrameworkMonikerDisplayName)&quot;)]
+               </TargetFrameworkMonikerAssemblyAttributeText>
+       </PropertyGroup>
 
 </Project>
index 3a6ca011ea2feb28bb6a7e9b524f987ca013dff2..72c20ef5c24637749fcc9d53bd9e7123391241ae 100644 (file)
@@ -1,35 +1,43 @@
-<!-- Note: This is a dummy CSharp.targets file that tries to map Portable Library Project targets to something available in Mono on Mac -->
-
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-       
+
        <PropertyGroup>
-               <TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
-               <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-               <TargetFrameworkProfile></TargetFrameworkProfile>
-       </PropertyGroup>
-       
-       <PropertyGroup Condition = "Exists ('/Developer/MonoTouch/License.rtf')">
-               <TargetFrameworkIdentifier>MonoTouch</TargetFrameworkIdentifier>
-               <TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
-               <TargetFrameworkProfile></TargetFrameworkProfile>
-       </PropertyGroup>
-       
-       <PropertyGroup Condition = "Exists ('/Developer/MonoAndroid/License.rtf') And !Exists ('/Developer/MonoTouch/License.rtf')">
-               <TargetFrameworkIdentifier>MonoAndroid</TargetFrameworkIdentifier>
+               <AvailablePlatforms>Any CPU</AvailablePlatforms>
+
+               <TargetPlatformIdentifier>Portable</TargetPlatformIdentifier>
+               <TargetFrameworkIdentifier>.NETPortable</TargetFrameworkIdentifier>
+               <TargetFrameworkMonikerDisplayName>.NET Portable Subset</TargetFrameworkMonikerDisplayName>
+
+               <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
+               <NoStdLib>true</NoStdLib>
+
+               <ImplicitlyExpandTargetFramework Condition="'$(ImplicitlyExpandTargetFramework)' == '' ">true</ImplicitlyExpandTargetFramework> 
        </PropertyGroup>
-       
-       <Import Project="$(MSBuildExtensionsPath)\Novell\Novell.MonoDroid.CSharp.targets" Condition = "Exists ('/Developer/MonoAndroid/License.rtf') And !Exists ('/Developer/MonoTouch/License.rtf')"/>
-       <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.Targets" Condition = "Exists ('/Developer/MonoTouch/License.rtf') Or !Exists ('/Developer/MonoAndroid/License.rtf')"/>
+
+       <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.Targets" />
        
        <PropertyGroup>
-               <BuildDependsOn>
-                       PortableCompatWarning;
-                       $(BuildDependsOn);
-               </BuildDependsOn>
+               <ResolveReferencesDependsOn>
+                       $(ResolveReferencesDependsOn);
+                       ImplicitlyExpandTargetFramework;
+               </ResolveReferencesDependsOn>
+               
+               <ImplicitlyExpandTargetFrameworkDependsOn>
+                       $(ImplicitlyExpandTargetFrameworkDependsOn);
+                       GetReferenceAssemblyPaths
+               </ImplicitlyExpandTargetFrameworkDependsOn>
        </PropertyGroup>
        
-       <Target Name="PortableCompatWarning">
-               <Warning Text="This Portable Library Project has been built against the $(TargetFrameworkIdentifier) framework."/>
+       <Target Name="ImplicitlyExpandTargetFramework"
+               DependsOnTargets="$(ImplicitlyExpandTargetFrameworkDependsOn)">
+
+               <ItemGroup>
+                       <ReferenceAssemblyPaths Include="$(_TargetFrameworkDirectories)"/>
+                       <ReferencePath Include="%(ReferenceAssemblyPaths.Identity)\*.dll">
+                               <CopyLocal>false</CopyLocal>
+                               <ResolvedFrom>ImplicitlyExpandTargetFramework</ResolvedFrom>
+                               <IsSystemReference>True</IsSystemReference>
+                       </ReferencePath>
+               </ItemGroup>
        </Target>
-       
+
 </Project>
index ba61a124929bcd7aa2a037ffc7ff73699e1c9373..8c3c9981cc17b2461748c3415481add9403d94e2 100644 (file)
@@ -1,7 +1,7 @@
 test-local: copy-targets
 
 copy-targets:
-       for p in net_2_0 net_3_5 net_4_0 net_4_5; do \
+       for p in net_2_0 net_3_5 net_4_0; do \
                cp $(XBUILD_DIR)/xbuild/Microsoft.CSharp.targets $(topdir)/class/lib/$$p; \
                cp $(XBUILD_DIR)/xbuild/Microsoft.VisualBasic.targets $(topdir)/class/lib/$$p; \
                cp $(XBUILD_DIR)/xbuild/Microsoft.Silverlight*.targets $(topdir)/class/lib/$$p; \
@@ -9,12 +9,11 @@ copy-targets:
        cp $(XBUILD_DIR)/xbuild/2.0/Microsoft.Common.* $(topdir)/class/lib/net_2_0
        cp $(XBUILD_DIR)/xbuild/3.5/Microsoft.Common.* $(topdir)/class/lib/net_3_5
        cp $(XBUILD_DIR)/xbuild/4.0/Microsoft.Common.* $(topdir)/class/lib/net_4_0
-       cp $(XBUILD_DIR)/xbuild/4.5/Microsoft.Common.* $(topdir)/class/lib/net_4_5
 
 clean-local: clean-target-files
 
 clean-target-files:
-       for p in net_2_0 net_3_5 net_4_0 net_4_5; do \
+       for p in net_2_0 net_3_5 net_4_0; do \
                rm -f $(topdir)/class/lib/$$p/Microsoft.Common.targets; \
                rm -f $(topdir)/class/lib/$$p/Microsoft.CSharp.targets; \
                rm -f $(topdir)/class/lib/$$p/Microsoft.VisualBasic.targets; \
index 6c528bdfb9adfd4e826d13a56f1ed550405f850a..1d0c4c235733cdbb5329e14e102a60b6aa1cd847 100644 (file)
@@ -174,6 +174,7 @@ rm -rf %buildroot
 %if %sgen == yes
 %_bindir/mono-sgen
 %endif
+%_bindir/mono-boehm
 %_bindir/mono-test-install
 %_bindir/mozroots
 %_bindir/peverify
@@ -297,6 +298,7 @@ rm -rf %buildroot
 %_prefix/lib/mono/4.5/System.Json.Microsoft.dll
 %_prefix/lib/mono/4.5/System.Net.dll
 %_prefix/lib/mono/4.5/System.Net.Http.dll
+%_prefix/lib/mono/4.5/System.Net.Http.WebRequest.dll
 %_prefix/lib/mono/4.5/System.Numerics.dll
 %_prefix/lib/mono/4.5/System.Security.dll
 %_prefix/lib/mono/4.5/System.Threading.Tasks.Dataflow.dll
@@ -305,6 +307,9 @@ rm -rf %buildroot
 %_prefix/lib/mono/4.5/System.dll
 %_prefix/lib/mono/4.5/cscompmgd.dll
 %_prefix/lib/mono/4.5/mscorlib.dll*
+%_prefix/lib/mono/4.5/System.Windows.dll
+%_prefix/lib/mono/4.5/System.Xml.Serialization.dll
+%_prefix/lib/mono/4.5/Facades/*.dll
 %_prefix/lib/mono/compat-2.0/ICSharpCode.SharpZipLib.dll
 %_prefix/lib/mono/gac/Commons.Xml.Relaxng
 %_prefix/lib/mono/gac/CustomMarshalers
@@ -335,6 +340,7 @@ rm -rf %buildroot
 %_prefix/lib/mono/gac/System.IO.Compression.FileSystem
 %_prefix/lib/mono/gac/System.Net
 %_prefix/lib/mono/gac/System.Net.Http
+%_prefix/lib/mono/gac/System.Net.Http.WebRequest
 %_prefix/lib/mono/gac/System.Numerics
 %_prefix/lib/mono/gac/System.Security
 %_prefix/lib/mono/gac/System.Threading.Tasks.Dataflow
@@ -342,6 +348,8 @@ rm -rf %buildroot
 %_prefix/lib/mono/gac/System.Xml.Linq
 %_prefix/lib/mono/gac/System.Json
 %_prefix/lib/mono/gac/System.Json.Microsoft
+%_prefix/lib/mono/gac/System.Windows
+%_prefix/lib/mono/gac/System.Xml.Serialization
 %_prefix/lib/mono/gac/cscompmgd
 %_prefix/lib/mono/mono-configuration-crypto
 
@@ -391,12 +399,12 @@ Development files for libmono.
 %_libdir/pkgconfig/mono-2.pc
 
 %if %sgen == yes
-%package -n libmonosgen-2_0-0
+%package -n libmonosgen-2_0-1
 License:        LGPL v2.1 only
 Summary:       A Library for embedding Mono in your Application (sgen version)
 Group:          Development/Libraries/C and C++
 
-%description -n libmonosgen-2_0-0
+%description -n libmonosgen-2_0-1
 The Mono Project is an open development initiative that is working to
 develop an open source, Unix version of the .NET development platform.
 Its objective is to enable Unix developers to build and deploy
@@ -405,13 +413,13 @@ technologies that have been submitted to the ECMA for standardization.
 
 A Library for embedding Mono in your Application (sgen version).
 
-%files -n libmonosgen-2_0-0
+%files -n libmonosgen-2_0-1
 %defattr(-, root, root)
-%_libdir/libmonosgen-2.0.so.0*
+%_libdir/libmonosgen-2.0.so.1*
 
-%post -n libmonosgen-2_0-0 -p /sbin/ldconfig
+%post -n libmonosgen-2_0-1 -p /sbin/ldconfig
 
-%postun -n libmonosgen-2_0-0 -p /sbin/ldconfig
+%postun -n libmonosgen-2_0-1 -p /sbin/ldconfig
 
 %package -n libmonosgen-2_0-devel
 License:        LGPL v2.1 only
@@ -437,6 +445,49 @@ Development files for libmonosgen.
 %_libdir/pkgconfig/monosgen-2.pc
 %endif
 
+%package -n libmonoboehm-2_0-1
+License:        LGPL v2.1 only
+Summary:       A Library for embedding Mono in your Application (boehm version)
+Group:          Development/Libraries/C and C++
+
+%description -n libmonoboehm-2_0-1
+The Mono Project is an open development initiative that is working to
+develop an open source, Unix version of the .NET development platform.
+Its objective is to enable Unix developers to build and deploy
+cross-platform .NET applications. The project will implement various
+technologies that have been submitted to the ECMA for standardization.
+
+A Library for embedding Mono in your Application (boehm version).
+
+%files -n libmonoboehm-2_0-1
+%defattr(-, root, root)
+%_libdir/libmonoboehm-2.0.so.1*
+
+%post -n libmonoboehm-2_0-1 -p /sbin/ldconfig
+
+%postun -n libmonoboehm-2_0-1 -p /sbin/ldconfig
+
+%package -n libmonoboehm-2_0-devel
+License:        LGPL v2.1 only
+Summary:       Development files for libmonosgen
+Group:          Development/Languages/Mono
+Requires:       mono-core == %version-%release
+Requires:       libmono-2_0-devel
+
+%description -n libmonoboehm-2_0-devel
+The Mono Project is an open development initiative that is working to
+develop an open source, Unix version of the .NET development platform.
+Its objective is to enable Unix developers to build and deploy
+cross-platform .NET applications. The project will implement various
+technologies that have been submitted to the ECMA for standardization.
+
+Development files for libmonoboehm.
+
+%files -n libmonoboehm-2_0-devel
+%defattr(-, root, root)
+%_libdir/libmonoboehm-2.0.a
+%_libdir/libmonoboehm-2.0.so
+
 %if %llvm == yes
 %package -n libmono-llvm0
 License:        LGPL v2.1 only
@@ -903,6 +954,7 @@ Mono implementation of ASP.NET, Remoting and Web Services.
 %_prefix/lib/mono/4.5/System.Web.ApplicationServices.dll
 %_prefix/lib/mono/4.5/System.Web.Http.dll
 %_prefix/lib/mono/4.5/System.Web.Http.SelfHost.dll
+%_prefix/lib/mono/4.5/System.Web.Http.WebHost.dll
 %_prefix/lib/mono/4.5/System.Web.Routing.dll
 %_prefix/lib/mono/4.5/System.Web.Razor.dll
 %_prefix/lib/mono/4.5/System.Web.Services.dll
@@ -929,6 +981,7 @@ Mono implementation of ASP.NET, Remoting and Web Services.
 %_prefix/lib/mono/gac/System.Web.ApplicationServices
 %_prefix/lib/mono/gac/System.Web.Http
 %_prefix/lib/mono/gac/System.Web.Http.SelfHost
+%_prefix/lib/mono/gac/System.Web.Http.WebHost
 %_prefix/lib/mono/gac/System.Web.Routing
 %_prefix/lib/mono/gac/System.Web.Razor
 %_prefix/lib/mono/gac/System.Web.Services
@@ -1294,6 +1347,7 @@ Mono development tools.
 %_prefix/lib/mono/4.0/Microsoft.Common.targets
 %_prefix/lib/mono/4.0/Microsoft.Common.tasks
 %_prefix/lib/mono/4.0/Microsoft.VisualBasic.targets
+%_prefix/lib/mono/4.0/Microsoft.Portable.CSharp.targets
 %_prefix/lib/mono/4.0/Mono.Debugger.Soft.dll
 %_prefix/lib/mono/4.0/PEAPI.dll
 %_prefix/lib/mono/4.5/Microsoft.Build.dll
@@ -1407,7 +1461,7 @@ Requires:       libmono-2_0-devel = %version-%release
 Requires:       libmono-llvm0 = %version-%release
 %endif
 %if %sgen == yes
-Requires:       libmonosgen-2_0-0 = %version-%release
+Requires:       libmonosgen-2_0-1 = %version-%release
 Requires:       libmonosgen-2_0-devel = %version-%release
 %endif
 Requires:       mono-data = %version-%release
index 0bedf771efbd79451cb7869356d1d25599e3412f..e7700ed3a61a3439f3ec570b2ffc5e5f54a477c0 100644 (file)
@@ -1,4 +1,4 @@
-DIST_SUBDIRS = x86 ppc sparc arm s390 s390x amd64 ia64 mips
+DIST_SUBDIRS = x86 ppc sparc arm s390x amd64 ia64 mips
 
 AM_CPPFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir)
 
index 86784c0f8794b0d2b42a96bfc0c7526820573a80..593574c6b9cdd9216c8c3253c76334118d8dc795 100644 (file)
@@ -3,7 +3,7 @@ AM_CPPFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir)
 
 noinst_LTLIBRARIES = libmonoarch-arm.la
 
-BUILT_SOURCES = arm_dpimacros.h arm_fpamacros.h arm_vfpmacros.h
+BUILT_SOURCES = arm_dpimacros.h arm_vfpmacros.h
 
 
 libmonoarch_arm_la_SOURCES = $(BUILT_SOURCES) \
@@ -16,10 +16,6 @@ arm_dpimacros.h: dpiops.sh mov_macros.th dpi_macros.th cmp_macros.th
        (cd $(srcdir); bash ./dpiops.sh) > $@t
        mv $@t $@
 
-arm_fpamacros.h: fpaops.sh fpam_macros.th fpa_macros.th
-       (cd $(srcdir); bash ./fpaops.sh) > $@t
-       mv $@t $@
-
 arm_vfpmacros.h: vfpops.sh vfpm_macros.th vfp_macros.th
        (cd $(srcdir); bash ./vfpops.sh) > $@t
        mv $@t $@
@@ -27,6 +23,5 @@ arm_vfpmacros.h: vfpops.sh vfpm_macros.th vfp_macros.th
 CLEANFILES = $(BUILT_SOURCES)
 
 EXTRA_DIST = dpiops.sh mov_macros.th dpi_macros.th cmp_macros.th \
-       fpam_macros.th fpa_macros.th arm-fpa-codegen.h fpaops.sh \
        vfpm_macros.th vfp_macros.th arm-vfp-codegen.h vfpops.sh
 
index 31c457507550b27fa67ca79ba78ef9b0a6af8bdb..5a3dba02d4c70d30586a8787830b781c7d71eacf 100644 (file)
@@ -1031,12 +1031,17 @@ typedef struct {
        ARM_RORS_REG_COND(p, rd, rm, rs, ARMCOND_AL)
 #define ARM_RORS_REG_REG(p, rd, rm, rs) ARM_RORS_REG(p, rd, rm, rs)
 
+#ifdef __native_client_codegen__
+#define ARM_DBRK(p) ARM_EMIT(p, 0xE7FEDEF0)
+#else
 #define ARM_DBRK(p) ARM_EMIT(p, 0xE6000010)
+#endif
 #define ARM_IASM_DBRK() ARM_IASM_EMIT(0xE6000010)
 
 #define ARM_INC(p, reg) ARM_ADD_REG_IMM8(p, reg, reg, 1)
 #define ARM_DEC(p, reg) ARM_SUB_REG_IMM8(p, reg, reg, 1)
 
+#define ARM_MLS(p, rd, rn, rm, ra) ARM_EMIT((p), (ARMCOND_AL << 28) | (0x6 << 20) | ((rd) << 16) | ((ra) << 12) | ((rm) << 8) | (0x9 << 4) | ((rn) << 0))
 
 /* ARM V5 */
 
@@ -1095,6 +1100,13 @@ typedef union {
 #define ARM_MCR(p, coproc, opc1, rt, crn, crm, opc2) \
        ARM_MCR_COND ((p), (coproc), (opc1), (rt), (crn), (crm), (opc2), ARMCOND_AL)
 
+/* ARMv7VE */
+#define ARM_SDIV_COND(p, rd, rn, rm, cond) ARM_EMIT (p, (((cond) << 28) | (0xe << 23) | (0x1 << 20) | ((rd) << 16) | (0xf << 12) | ((rm) << 8) | (0x0 << 5) | (0x1 << 4) | ((rn) << 0)))
+#define ARM_SDIV(p, rd, rn, rm) ARM_SDIV_COND ((p), (rd), (rn), (rm), ARMCOND_AL)
+
+#define ARM_UDIV_COND(p, rd, rn, rm, cond) ARM_EMIT (p, (((cond) << 28) | (0xe << 23) | (0x3 << 20) | ((rd) << 16) | (0xf << 12) | ((rm) << 8) | (0x0 << 5) | (0x1 << 4) | ((rn) << 0)))
+#define ARM_UDIV(p, rd, rn, rm) ARM_UDIV_COND ((p), (rd), (rn), (rm), ARMCOND_AL)
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/mono/arch/arm/arm-fpa-codegen.h b/mono/arch/arm/arm-fpa-codegen.h
deleted file mode 100644 (file)
index 4389a5e..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright 2005 Novell Inc
- * Copyright 2011 Xamarin Inc
- */
-
-#ifndef __MONO_ARM_FPA_CODEGEN_H__
-#define __MONO_ARM_FPA_CODEGEN_H__
-
-#include "arm-codegen.h"
-
-enum {
-       /* FPA registers */
-       ARM_FPA_F0,
-       ARM_FPA_F1,
-       ARM_FPA_F2,
-       ARM_FPA_F3,
-       ARM_FPA_F4,
-       ARM_FPA_F5,
-       ARM_FPA_F6,
-       ARM_FPA_F7,
-
-       /* transfer length for LDF/STF (T0/T1), already shifted */
-       ARM_FPA_SINGLE = 0,
-       ARM_FPA_DOUBLE = 1 << 15,
-
-       ARM_FPA_ADF = 0 << 20,
-       ARM_FPA_MUF = 1 << 20,
-       ARM_FPA_SUF = 2 << 20,
-       ARM_FPA_RSF = 3 << 20,
-       ARM_FPA_DVF = 4 << 20,
-       ARM_FPA_RDF = 5 << 20,
-       ARM_FPA_POW = 6 << 20,
-       ARM_FPA_RPW = 7 << 20,
-       ARM_FPA_RMF = 8 << 20,
-       ARM_FPA_FML = 9 << 20,
-       ARM_FPA_FDV = 10 << 20,
-       ARM_FPA_FRD = 11 << 20,
-       ARM_FPA_POL = 12 << 20,
-
-       /* monadic */
-       ARM_FPA_MVF = (0 << 20) | (1 << 15),
-       ARM_FPA_MNF = (1 << 20) | (1 << 15),
-       ARM_FPA_ABS = (2 << 20) | (1 << 15),
-       ARM_FPA_RND = (3 << 20) | (1 << 15),
-       ARM_FPA_SQT = (4 << 20) | (1 << 15),
-       ARM_FPA_LOG = (5 << 20) | (1 << 15),
-       ARM_FPA_LGN = (6 << 20) | (1 << 15),
-       ARM_FPA_EXP = (7 << 20) | (1 << 15),
-       ARM_FPA_SIN = (8 << 20) | (1 << 15),
-       ARM_FPA_COS = (9 << 20) | (1 << 15),
-       ARM_FPA_TAN = (10 << 20) | (1 << 15),
-       ARM_FPA_ASN = (11 << 20) | (1 << 15),
-       ARM_FPA_ACS = (12 << 20) | (1 << 15),
-       ARM_FPA_ATN = (13 << 20) | (1 << 15),
-       ARM_FPA_URD = (14 << 20) | (1 << 15),
-       ARM_FPA_NRM = (15 << 20) | (1 << 15),
-
-       /* round modes */
-       ARM_FPA_ROUND_NEAREST = 0,
-       ARM_FPA_ROUND_PINF = 1,
-       ARM_FPA_ROUND_MINF = 2,
-       ARM_FPA_ROUND_ZERO = 3,
-
-       /* round precision */
-       ARM_FPA_ROUND_SINGLE = 0,
-       ARM_FPA_ROUND_DOUBLE = 1,
-
-       /* constants */
-       ARM_FPA_CONST_0 = 8,
-       ARM_FPA_CONST_1_0 = 9,
-       ARM_FPA_CONST_2_0 = 10,
-       ARM_FPA_CONST_3_0 = 11,
-       ARM_FPA_CONST_4_0 = 12,
-       ARM_FPA_CONST_5_0 = 13,
-       ARM_FPA_CONST_0_5 = 14,
-       ARM_FPA_CONST_10 = 15,
-       
-       /* compares */
-       ARM_FPA_CMF = 4,
-       ARM_FPA_CNF = 5,
-       ARM_FPA_CMFE = 6,
-       ARM_FPA_CNFE = 7,
-
-       /* CPRT ops */
-       ARM_FPA_FLT = 0,
-       ARM_FPA_FIX = 1,
-       ARM_FPA_WFS = 2,
-       ARM_FPA_RFS = 3,
-       ARM_FPA_WFC = 4,
-       ARM_FPA_RFC = 5
-};
-
-#define ARM_DEF_FPA_LDF_STF(cond,post,ls,fptype,wback,basereg,fdreg,offset)    \
-       ((offset) >= 0? (offset)>>2: -(offset)>>2)      |       \
-       ((1 << 8) | (fptype))                           |       \
-       ((fdreg) << 12)                                 |       \
-       ((basereg) << 16)                               |       \
-       ((ls) << 20)                                    |       \
-       ((wback) << 21)                                 |       \
-       (((offset) >= 0) << 23)                         |       \
-       ((wback) << 21)                                 |       \
-       ((post) << 24)                                  |       \
-       (6 << 25)                                       |       \
-       ARM_DEF_COND(cond)
-
-/* FP load and stores */
-#define ARM_FPA_LDFS_COND(p,freg,base,offset,cond)     \
-       ARM_EMIT((p), ARM_DEF_FPA_LDF_STF((cond),1,ARMOP_LDR,ARM_FPA_SINGLE,0,(base),(freg),(offset)))
-#define ARM_FPA_LDFS(p,freg,base,offset)       \
-       ARM_FPA_LDFS_COND(p,freg,base,offset,ARMCOND_AL)
-
-#define ARM_FPA_LDFD_COND(p,freg,base,offset,cond)     \
-       ARM_EMIT((p), ARM_DEF_FPA_LDF_STF((cond),1,ARMOP_LDR,ARM_FPA_DOUBLE,0,(base),(freg),(offset)))
-#define ARM_FPA_LDFD(p,freg,base,offset)       \
-       ARM_FPA_LDFD_COND(p,freg,base,offset,ARMCOND_AL)
-
-#define ARM_FPA_STFS_COND(p,freg,base,offset,cond)     \
-       ARM_EMIT((p), ARM_DEF_FPA_LDF_STF((cond),1,ARMOP_STR,ARM_FPA_SINGLE,0,(base),(freg),(offset)))
-#define ARM_FPA_STFS(p,freg,base,offset)       \
-       ARM_FPA_STFS_COND(p,freg,base,offset,ARMCOND_AL)
-
-#define ARM_FPA_STFD_COND(p,freg,base,offset,cond)     \
-       ARM_EMIT((p), ARM_DEF_FPA_LDF_STF((cond),1,ARMOP_STR,ARM_FPA_DOUBLE,0,(base),(freg),(offset)))
-#define ARM_FPA_STFD(p,freg,base,offset)       \
-       ARM_FPA_STFD_COND(p,freg,base,offset,ARMCOND_AL)
-
-#define ARM_DEF_FPA_CPDO_MONADIC(cond,op,dreg,sreg,round,prec) \
-       (1 << 8) | (14 << 24)           |       \
-       (op)                            |       \
-       ((sreg) << 0)                   |       \
-       ((round) << 5)                  |       \
-       ((dreg) << 12)                  |       \
-       ((prec) << 7)                   |       \
-       ARM_DEF_COND(cond)
-
-#define ARM_DEF_FPA_CPDO_DYADIC(cond,op,dreg,sreg1,sreg2,round,prec)   \
-       (1 << 8) | (14 << 24)           |       \
-       (op)                            |       \
-       ((sreg1) << 16)                 |       \
-       ((sreg2) << 0)                  |       \
-       ((round) << 5)                  |       \
-       ((dreg) << 12)                  |       \
-       ((prec) << 7)                   |       \
-       ARM_DEF_COND(cond)
-
-#define ARM_DEF_FPA_CMP(cond,op,sreg1,sreg2)   \
-       (1 << 4) | (1 << 8) | (15 << 12)        |       \
-       (1 << 20) | (14 << 24)                  |       \
-       (op) << 21                              |       \
-       (sreg1) << 16                           |       \
-       (sreg2)                                 |       \
-       ARM_DEF_COND(cond)
-
-#define ARM_DEF_FPA_CPRT(cond,op,fn,fm,rd,ftype,round) \
-       (1 << 4) | (1 << 8) | (14 << 24)        |       \
-       (op) << 20                              |       \
-       (fm)                                    |       \
-       (fn) << 16                              |       \
-       (rd) << 12                              |       \
-       ((round) << 5)                          |       \
-       ((ftype) << 7)                          |       \
-       ARM_DEF_COND(cond)
-
-
-#include "arm_fpamacros.h"
-
-#define ARM_FPA_RNDDZ_COND(p,dreg,sreg,cond) \
-       ARM_EMIT((p), ARM_DEF_FPA_CPDO_MONADIC((cond),ARM_FPA_RND,(dreg),(sreg),ARM_FPA_ROUND_ZERO,ARM_FPA_ROUND_DOUBLE))
-#define ARM_FPA_RNDDZ(p,dreg,sreg)      ARM_FPA_RNDD_COND(p,dreg,sreg,ARMCOND_AL)
-
-/* compares */
-#define ARM_FPA_FCMP_COND(p,op,sreg1,sreg2,cond)       \
-       ARM_EMIT(p, ARM_DEF_FPA_CMP(cond,op,sreg1,sreg2))
-#define ARM_FPA_FCMP(p,op,sreg1,sreg2) ARM_FPA_FCMP_COND(p,op,sreg1,sreg2,ARMCOND_AL)
-
-/* coprocessor register transfer */
-#define ARM_FPA_FLTD(p,fn,rd)  \
-       ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_FLT,(fn),0,(rd),ARM_FPA_ROUND_DOUBLE,ARM_FPA_ROUND_NEAREST))
-#define ARM_FPA_FLTS(p,fn,rd)  \
-       ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_FLT,(fn),0,(rd),ARM_FPA_ROUND_SINGLE,ARM_FPA_ROUND_NEAREST))
-
-#define ARM_FPA_FIXZ(p,rd,fm)  \
-       ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_FIX,0,(fm),(rd),0,ARM_FPA_ROUND_ZERO))
-
-#define ARM_FPA_WFS(p,rd)      \
-       ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_WFS,0,0,(rd),0,ARM_FPA_ROUND_NEAREST))
-
-#define ARM_FPA_RFS(p,rd)      \
-       ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_RFS,0,0,(rd),0,ARM_FPA_ROUND_NEAREST))
-
-#define ARM_FPA_WFC(p,rd)      \
-       ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_WFC,0,0,(rd),0,ARM_FPA_ROUND_NEAREST))
-
-#define ARM_FPA_RFC(p,rd)      \
-       ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_RFC,0,0,(rd),0,ARM_FPA_ROUND_NEAREST))
-
-#endif /* __MONO_ARM_FPA_CODEGEN_H__ */
-
index c4c5e3e2252b21e5318e0d3ebf4c78bb7653228e..8b56b00dbbee462d56c19c9089a64aae9687403a 100644 (file)
@@ -8,7 +8,7 @@
 #include "arm-codegen.h"
 
 enum {
-       /* FPA registers */
+       /* VFP registers */
        ARM_VFP_F0,
        ARM_VFP_F1,
        ARM_VFP_F2,
diff --git a/mono/arch/arm/fpa_macros.th b/mono/arch/arm/fpa_macros.th
deleted file mode 100644 (file)
index 036b2a0..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/* -- <Op> -- */
-
-
-/* Fd := Rn <Op> Rm */
-#define ARM_FPA_<Op>D_COND(p, rd, rn, rm, cond) \
-       ARM_EMIT((p), ARM_DEF_FPA_CPDO_DYADIC(cond,ARM_FPA_<Op>,rd,rn,rm,ARM_FPA_ROUND_NEAREST,ARM_FPA_ROUND_DOUBLE))
-#define ARM_FPA_<Op>D(p, rd, rn, rm) \
-       ARM_FPA_<Op>D_COND(p, rd, rn, rm, ARMCOND_AL)
-
-#define ARM_FPA_<Op>S_COND(p, rd, rn, rm, cond) \
-       ARM_EMIT((p), ARM_DEF_FPA_CPDO_DYADIC(cond,ARM_FPA_<Op>,rd,rn,rm,ARM_FPA_ROUND_NEAREST,ARM_FPA_ROUND_SINGLE))
-#define ARM_FPA_<Op>S(p, rd, rn, rm) \
-       ARM_FPA_<Op>S_COND(p, rd, rn, rm, ARMCOND_AL)
-
-
diff --git a/mono/arch/arm/fpam_macros.th b/mono/arch/arm/fpam_macros.th
deleted file mode 100644 (file)
index 15183c3..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/* -- <Op> -- */
-
-
-/* Fd := <Op> Rm */
-
-#define ARM_FPA_<Op>D_COND(p,dreg,sreg,cond) \
-        ARM_EMIT((p), ARM_DEF_FPA_CPDO_MONADIC((cond),ARM_FPA_<Op>,(dreg),(sreg),ARM_FPA_ROUND_NEAREST,ARM_FPA_ROUND_DOUBLE))
-#define ARM_FPA_<Op>D(p,dreg,sreg)      ARM_FPA_<Op>D_COND(p,dreg,sreg,ARMCOND_AL)
-
-#define ARM_FPA_<Op>S_COND(p,dreg,sreg,cond) \
-        ARM_EMIT((p), ARM_DEF_FPA_CPDO_MONADIC((cond),ARM_FPA_<Op>,(dreg),(sreg),ARM_FPA_ROUND_NEAREST,ARM_FPA_ROUND_SINGLE))
-#define ARM_FPA_<Op>S(p,dreg,sreg)      ARM_FPA_<Op>S_COND(p,dreg,sreg,ARMCOND_AL)
-
-
diff --git a/mono/arch/arm/fpaops.sh b/mono/arch/arm/fpaops.sh
deleted file mode 100755 (executable)
index be19876..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-DYADIC="ADF MUF SUF RSF DVF RDF POW RPW RMF FML FDV FRD POL"
-MONADIC="MVF MNF ABS RND SQT LOG EXP SIN COS TAN ASN ACS ATN URD NRM"
-
-# $1: opcode list
-# $2: template
-gen() {
-       for i in $1; do
-               sed "s/<Op>/$i/g" $2.th
-       done
-}
-
-echo -e "/* Macros for FPA ops, auto-generated from template */\n"
-
-echo -e "\n/* dyadic */\n"
-gen "$DYADIC" fpa_macros
-
-echo -e "\n/* monadic */\n"
-gen "$MONADIC" fpam_macros
-
-echo -e "\n\n"
-
-echo -e "\n/* end generated */\n"
diff --git a/mono/arch/s390/.gitignore b/mono/arch/s390/.gitignore
deleted file mode 100644 (file)
index 6abcd22..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-/Makefile.in
-/Makefile
-/.deps
-/.cvsignore
diff --git a/mono/arch/s390/ChangeLog b/mono/arch/s390/ChangeLog
deleted file mode 100644 (file)
index 9b41109..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-2007-04-12     Neale Ferguson <neale@sinenomine.net>
-       
-       * tramp.c: Add MONO_TYPE_PTR case.
-
-2005-12-13     Neale Ferguson <neale@sinenomine.net>
-
-       * s390-codegen.h: Add some new instructions (conditional jumps)
-
-2004-12-15     Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
-
-       * s390-codegen.h: Add some new instructions (CS, CDS)
-
-2004-11-15     Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
-
-       * s390-codegen.h: Minor macro modifications
-
-2004-07-30     Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
-
-       * s390-codegen.h: reworked macros for code generation.
diff --git a/mono/arch/s390/Makefile.am b/mono/arch/s390/Makefile.am
deleted file mode 100644 (file)
index d8ebb6f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-AM_CPPFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir)
-
-noinst_LTLIBRARIES = libmonoarch-s390.la
-
-libmonoarch_s390_la_SOURCES = tramp.c s390-codegen.h
-
diff --git a/mono/arch/s390/s390-codegen.h b/mono/arch/s390/s390-codegen.h
deleted file mode 100644 (file)
index 6457357..0000000
+++ /dev/null
@@ -1,696 +0,0 @@
-/*
-   Copyright (C)  2001 Radek Doulik
-*/
-
-#ifndef S390_H
-#define S390_H
-#include <glib.h>
-#include <assert.h>
-
-#define FLOAT_REGS     2       /* No. float registers for parms    */
-#define GENERAL_REGS   5       /* No. general registers for parms  */
-
-#define ARG_BASE s390_r10      /* Register for addressing arguments*/
-#define STKARG \
-       (i*(sizeof(stackval)))  /* Displacement of ith argument     */
-
-#define MINV_POS       96      /* MonoInvocation stack offset      */
-#define STACK_POS      (MINV_POS - sizeof (stackval) * sig->param_count)
-#define OBJ_POS        8
-#define TYPE_OFFSET    (G_STRUCT_OFFSET (stackval, type))
-
-#define MIN_CACHE_LINE 256
-
-/*------------------------------------------------------------------*/
-/* Sequence to add an int/long long to parameters to stack_from_data*/
-/*------------------------------------------------------------------*/
-#define ADD_ISTACK_PARM(r, i) \
-       if (reg_param < GENERAL_REGS-(r)) { \
-               s390_la (p, s390_r4, 0, STK_BASE, \
-                        local_start + (reg_param - this_flag) * sizeof(long)); \
-               reg_param += (i); \
-       } else { \
-               s390_la (p, s390_r4, 0, STK_BASE, \
-                        sz.stack_size + MINV_POS + stack_param * sizeof(long)); \
-               stack_param += (i); \
-       }
-
-/*------------------------------------------------------------------*/
-/* Sequence to add a float/double to parameters to stack_from_data  */
-/*------------------------------------------------------------------*/
-#define ADD_RSTACK_PARM(i) \
-       if (fpr_param < FLOAT_REGS) { \
-               s390_la (p, s390_r4, 0, STK_BASE, \
-                        float_pos + (fpr_param * sizeof(float) * (i))); \
-               fpr_param++; \
-       } else { \
-               stack_param += (stack_param % (i)); \
-               s390_la (p, s390_r4, 0, STK_BASE, \
-                        sz.stack_size + MINV_POS + stack_param * sizeof(float) * (i)); \
-               stack_param += (i); \
-       }
-
-/*------------------------------------------------------------------*/
-/* Sequence to add a structure ptr to parameters to stack_from_data */
-/*------------------------------------------------------------------*/
-#define ADD_TSTACK_PARM \
-       if (reg_param < GENERAL_REGS) { \
-               s390_l (p, s390_r4, 0, STK_BASE, \
-                       local_start + (reg_param - this_flag) * sizeof(long)); \
-               reg_param++; \
-       } else { \
-               s390_l (p, s390_r4, 0, STK_BASE, \
-                       sz.stack_size + MINV_POS + stack_param * sizeof(long)); \
-               stack_param++; \
-       }
-
-#define ADD_PSTACK_PARM(r, i) \
-       if (reg_param < GENERAL_REGS-(r)) { \
-               s390_la (p, s390_r4, 0, STK_BASE, \
-                        local_start + (reg_param - this_flag) * sizeof(long)); \
-               reg_param += (i); \
-       } else { \
-               s390_l (p, s390_r4, 0, STK_BASE, \
-                       sz.stack_size + MINV_POS + stack_param * sizeof(long)); \
-               stack_param++; \
-       }
-typedef enum {
-       s390_r0 = 0,
-       s390_r1,
-       s390_r2,
-       s390_r3,
-       s390_r4,
-       s390_r5,
-       s390_r6,
-       s390_r7,
-       s390_r8,
-       s390_r9,
-       s390_r10,
-       s390_r11,
-       s390_r12,
-       s390_r13,
-       s390_r14,
-       s390_r15,
-} S390IntRegister;
-
-typedef enum {
-       s390_f0 = 0,
-       s390_f1,
-       s390_f2,
-       s390_f3,
-       s390_f4,
-       s390_f5,
-       s390_f6,
-       s390_f7,
-       s390_f8,
-       s390_f9,
-       s390_f10,
-       s390_f11,
-       s390_f12,
-       s390_f13,
-       s390_f14,
-       s390_f15,
-} S390FloatRegister;
-
-typedef enum {
-       s390_a0 = 0,
-       s390_a1,
-       s390_a2,
-       s390_a3,
-       s390_a4,
-       s390_a5,
-       s390_a6,
-       s390_a7,
-       s390_a8,
-       s390_a9,
-       s390_a10,
-       s390_a11,
-       s390_a12,
-       s390_a13,
-       s390_a14,
-       s390_a15,
-} S390AccRegister;
-
-typedef enum {
-       s390_fpc = 256,
-} S390SpecialRegister;
-
-#define s390_is_imm16(val)             ((gint)val >= (gint)-(1<<15) && \
-                                        (gint)val <= (gint)((1<<15)-1))
-#define s390_is_uimm16(val)            ((gint)val >= 0 && (gint)val <= 32767)
-#define s390_is_imm12(val)             ((gint)val >= (gint)-(1<<11) && \
-                                        (gint)val <= (gint)((1<<11)-1))
-#define s390_is_uimm12(val)            ((gint)val >= 0 && (gint)val <= 4095)
-
-#define STK_BASE                       s390_r15
-#define S390_MINIMAL_STACK_SIZE                96
-#define S390_PARM_SAVE_OFFSET          8
-#define S390_REG_SAVE_OFFSET           24
-#define S390_RET_ADDR_OFFSET           56
-#define S390_FLOAT_SAVE_OFFSET         64
-
-#define S390_CC_ZR                     8
-#define S390_CC_NE                     7
-#define S390_CC_NZ                     7
-#define S390_CC_LT                     4
-#define S390_CC_GT                     2
-#define S390_CC_GE                     11
-#define S390_CC_NM                     11
-#define S390_CC_LE                     13
-#define S390_CC_OV                     1
-#define S390_CC_NO                     14
-#define S390_CC_CY                     3
-#define S390_CC_NC                     12
-#define S390_CC_UN                     15
-
-#define s390_word(addr, value) do              \
-{                                              \
-       * (guint32 *) addr = (guint32) value;   \
-       addr += sizeof(guint32);                \
-} while (0)
-
-#define s390_float(addr, value)        do              \
-{                                              \
-       * (gfloat *) addr = (gfloat) value;     \
-       addr += sizeof(gfloat);                 \
-} while (0)
-
-#define s390_llong(addr, value)        do              \
-{                                              \
-       * (guint64 *) addr = (guint64) value;   \
-       addr += sizeof(guint64);                \
-} while (0)
-
-#define s390_double(addr, value) do            \
-{                                              \
-       * (gdouble *) addr = (gdouble) value;   \
-       addr += sizeof(gdouble);                \
-} while (0)
-
-typedef struct {
-       short   op;
-} E_Format;
-
-typedef struct {
-       char    op;
-       int     im;
-} I_Format;
-
-typedef struct {
-       char    op;
-       char    r1 : 4;
-       char    r2 : 4;
-} RR_Format;
-
-typedef struct {
-       short   op;
-       char    xx;
-       char    r1 : 4;
-       char    r2 : 4;
-} RRE_Format;
-
-typedef struct {
-       short   op;
-       char    r1 : 4;
-       char    xx : 4;
-       char    r3 : 4;
-       char    r2 : 4;
-} RRF_Format_1;
-
-typedef struct {
-       short   op;
-       char    m3 : 4;
-       char    xx : 4;
-       char    r1 : 4;
-       char    r2 : 4;
-} RRF_Format_2;
-
-typedef struct {
-       short   op;
-       char    r3 : 4;
-       char    m4 : 4;
-       char    r1 : 4;
-       char    r2 : 4;
-} RRF_Format_3;
-
-typedef struct {
-       char    op;
-       char    r1 : 4;
-       char    x2 : 4;
-       char    b2 : 4;
-       short   d2 : 12;
-} RX_Format;
-
-typedef struct {
-       char    op1;
-       char    r1 : 4;
-       char    x2 : 4;
-       char    b2 : 4;
-       int     d2 : 12;
-       char    xx;
-       char    op2;
-} RXE_Format;
-
-typedef struct {
-       char    op1;
-       char    r3 : 4;
-       char    x2 : 4;
-       char    b2 : 4;
-       int     d2 : 12;
-       char    r1 : 4;
-       char    xx : 4;
-       char    op2;
-} RXF_Format;
-
-typedef struct __attribute__ ((packed)) {
-       char    op1;
-       char    r1 : 4;
-       char    x2 : 4;
-       char    b2 : 4;
-       int     d2 : 20;
-       char    op2;
-} RXY_Format;
-
-typedef struct {
-       char    op;
-       char    r1 : 4;
-       char    r3 : 4;
-       char    b2 : 4;
-       int     d2 : 12;
-} RS_Format_1;
-
-typedef struct {
-       char    op;
-       char    r1 : 4;
-       char    m3 : 4;
-       char    b2 : 4;
-       int     d2 : 12;
-} RS_Format_2;
-
-typedef struct {
-       char    op;
-       char    r1 : 4;
-       char    xx : 4;
-       char    b2 : 4;
-       int     d2 : 12;
-} RS_Format_3;
-
-typedef struct __attribute__ ((packed)) {
-       char    op1;
-       char    r1 : 4;
-       char    r3 : 4;
-       char    b2 : 4;
-       int     d2 : 20;
-       char    op2;
-} RSY_Format_1;
-
-typedef struct __attribute__ ((packed)) {
-       char    op1;
-       char    r1 : 4;
-       char    m3 : 4;
-       char    b2 : 4;
-       int     d2 : 20;
-       char    op2;
-} RSY_Format_2;
-
-typedef struct {
-       char    op1;
-       char    l1 : 4;
-       char    xx : 4;
-       char    b1 : 4;
-       int     d1 : 12;
-       char    yy;
-       char    op2;
-} RSL_Format;
-
-typedef struct {
-       char    op;
-       char    r1 : 4;
-       char    r3 : 4;
-       short   i2;
-} RSI_Format;
-
-typedef struct {
-       char    op1;
-       char    r1 : 4;
-       char    op2 : 4;
-       short   i2;
-} RI_Format;
-
-typedef struct {
-       char    op1;
-       char    r1 : 4;
-       char    r3 : 4;
-       short   i2;
-       char    xx;
-       char    op2;
-} RIE_Format;
-
-typedef struct __attribute__ ((packed)) {
-       char    op1;
-       char    r1 : 4;
-       char    op2 : 4;
-       int     i2;
-} RIL_Format_1;
-
-typedef struct __attribute__ ((packed)) {
-       char    op1;
-       char    m1 : 4;
-       char    op2 : 4;
-       int     i2;
-} RIL_Format_2;
-
-typedef struct {
-       char    op;
-       char    i2;
-       char    b1 : 4;
-       short   d1 : 12;
-} SI_Format;
-
-typedef struct __attribute__ ((packed)) {
-       char    op1;
-       char    i2;
-       char    b1 : 4;
-       int     d1 : 20;
-       char    op2;
-} SIY_Format;
-
-typedef struct {
-       short   op;
-       char    b2 : 4;
-       short   d2 : 12;
-} S_Format;
-
-typedef struct {
-       char    op;
-       char    ll;
-       char    b1 : 4;
-       short   d1 : 12;
-       char    b2 : 4;
-       short   d2 : 12;
-} SS_Format_1;
-
-typedef struct {
-       char    op;
-       char    l1 : 4;
-       char    l2 : 4;
-       char    b1 : 4; 
-       short   d1 : 12;
-       char    b2 : 4;
-       short   d2 : 12;
-} SS_Format_2;
-
-typedef struct {
-       char    op;
-       char    r1 : 4;
-       char    r3 : 4;
-       char    b1 : 4; 
-       short   d1 : 12;
-       char    b2 : 4;
-       short   d2 : 12;
-} SS_Format_3; 
-
-typedef struct {
-       char    op;
-       char    r1 : 4;
-       char    r3 : 4;
-       char    b2 : 4; 
-       short   d2 : 12;
-       char    b4 : 4;
-       short   d4 : 12;
-} SS_Format_4; 
-
-typedef struct __attribute__ ((packed)) {
-       short   op;
-       char    b1 : 4;
-       short   d1 : 12;
-       char    b2 : 4;
-       short   d2 : 12;
-} SSE_Format;
-
-#define s390_emit16(c, x) do                   \
-{                                              \
-       *((guint16 *) c) = x;                   \
-       c += sizeof(guint16);                   \
-} while(0)
-
-#define s390_emit32(c, x) do                   \
-{                                              \
-       *((guint32 *) c) = x;                   \
-       c += sizeof(guint32);                   \
-} while(0)
-
-#define S390_E(c,opc)                  s390_emit16(c,opc)
-
-#define S390_I(c,opc,imm)              s390_emit16(c, (opc << 8 | imm))
-
-#define S390_RR(c,opc,g1,g2)           s390_emit16(c, (opc << 8 | (g1) << 4 | g2))
-
-#define S390_RRE(c,opc,g1,g2)          s390_emit32(c, (opc << 16 | (g1) << 4 | g2)) 
-
-#define S390_RRF_1(c,opc,g1,g2,g3)     s390_emit32(c, (opc << 16 | (g1) << 12 | (g3) << 4 | g2))
-
-#define S390_RRF_2(c,opc,g1,k3,g2)     s390_emit32(c, (opc << 16 | (k3) << 12 | (g1) << 4 | g2))
-
-#define S390_RRF_3(c,opc,g1,g2,k4,g3)  s390_emit32(c, (opc << 16 | (g3) << 12 | (k4) << 8 | (g1) << 4 | g2))
-
-#define S390_RX(c,opc,g1,n2,s2,p2)     s390_emit32(c, (opc << 24 | (g1) << 20 | (n2) << 16 | (s2) << 12 | ((p2) & 0xfff)))
-
-#define S390_RXE(c,opc,g1,n2,s2,p2) do                         \
-{                                                              \
-       s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | n2));      \
-       s390_emit32(c, ((s2) << 28 | (((p2) & 0xfff) << 16) |   \
-                       (opc & 0xff)));                         \
-} while (0)
-
-#define S390_RXY(c,opc,g1,n2,s2,p2) do                         \
-{                                                              \
-       s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | n2));      \
-       s390_emit32(c, ((s2) << 28 | (((p2) & 0xfffff) << 8) |  \
-                       (opc & 0xff)));                         \
-} while (0)
-
-#define S390_RS_1(c,opc,g1,g3,s2,p2)   s390_emit32(c, (opc << 24 | (g1) << 20 | (g3) << 16 | (s2) << 12 | ((p2) & 0xfff))) 
-
-#define S390_RS_2(c,opc,g1,k3,s2,p2)   s390_emit32(c, (opc << 24 | (g1) << 20 | (k3) << 16 | (s2) << 12 | ((p2) & 0xfff)))
-
-#define S390_RS_3(c,opc,g1,s2,p2)      s390_emit32(c, (opc << 24 | (g1) << 20 | (s2) << 12 | ((p2) & 0xfff)))
-
-#define S390_RSY_1(c,opc,g1,g3,s2,p2) do                       \
-{                                                              \
-       s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | g3));      \
-       s390_emit32(c, ((s2) << 28 | (((p2) & 0xfffff) << 8) |  \
-                       (opc & 0xff)));                         \
-} while (0)
-
-#define S390_RSY_2(c,opc,g1,k3,s2,p2) do                       \
-{                                                              \
-       s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | k3));      \
-       s390_emit32(c, ((s2) << 28 | (((p2) & 0xfffff) << 8) |  \
-                       (opc & 0xff)));                         \
-} while (0)
-
-#define S390_RSL(c,opc,ln,s1,p1) do                            \
-{                                                              \
-       s390_emit16(c, ((opc & 0xff00) | (ln) << 4));           \
-       s390_emit32(c, ((s1) << 28 | ((s1 & 0xfff) << 16) |     \
-                       (opc & 0xff)));                         \
-} while (0)
-
-#define S390_RSI(c,opc,g1,g3,m2)       s390_emit32(c, (opc << 24 | (g1) << 20 | (g3) << 16 | (m2 & 0xffff)))
-
-#define S390_RI(c,opc,g1,m2)           s390_emit32(c, ((opc >> 4) << 24 | (g1) << 20 | (opc & 0x0f) << 16 | (m2 & 0xffff)))
-
-#define S390_RIE(c,opc,g1,g3,m2) do                            \
-{                                                              \
-       s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | g3));      \
-       s390_emit32(c, ((m2) << 16 | (opc & 0xff)));            \
-} while (0)
-
-#define S390_RIL_1(c,opc,g1,m2) do                                     \
-{                                                                      \
-       s390_emit16(c, ((opc >> 4) << 8 | (g1) << 4 | (opc & 0xf)));    \
-       s390_emit32(c, m2);                                             \
-} while (0)
-
-#define S390_RIL_2(c,opc,k1,m2) do                                     \
-{                                                                      \
-       s390_emit16(c, ((opc >> 4) << 8 | (k1) << 4 | (opc & 0xf)));    \
-       s390_emit32(c, m2);                                             \
-} while (0)
-
-#define S390_SI(c,opc,s1,p1,m2)                s390_emit32(c, (opc << 24 | (m2) << 16 | (s1) << 12 | ((p1) & 0xfff)));
-
-#define S390_SIY(c,opc,s1,p1,m2) do                            \
-{                                                              \
-       s390_emit16(c, ((opc & 0xff00) | m2));                  \
-       s390_emit32(c, ((s1) << 24 | (((p2) & 0xfffff) << 8) |  \
-                       (opc & 0xff)));                         \
-} while (0)
-
-#define S390_S(c,opc,s2,p2)    s390_emit32(c, (opc << 16 | (s2) << 12 | ((p2) & 0xfff)))
-
-#define S390_SS_1(c,opc,ln,s1,p1,s2,p2) do                     \
-{                                                              \
-       s390_emit32(c, (opc << 24 | ((ln-1) & 0xff) << 16 |     \
-                       (s1) << 12 | ((p1) & 0xfff)));          \
-       s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));          \
-} while (0)
-
-#define S390_SS_2(c,opc,n1,n2,s1,p1,s2,p2) do                  \
-{                                                              \
-       s390_emit32(c, (opc << 24 | (n1) << 16 | (n2) << 12 |   \
-                       (s1) << 12 | ((p1) & 0xfff)));          \
-       s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));          \
-} while (0)
-
-#define S390_SS_3(c,opc,g1,g3,s1,p1,s2,p2) do                  \
-{                                                              \
-       s390_emit32(c, (opc << 24 | (g1) << 16 | (g3) << 12 |   \
-                       (s1) << 12 | ((p1) & 0xfff)));          \
-       s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));          \
-} while (0)
-
-#define S390_SS_4(c,opc,g1,g3,s2,p2,s4,p4) do                  \
-{                                                              \
-       s390_emit32(c, (opc << 24 | (g1) << 16 | (g3) << 12 |   \
-                       (s2) << 12 | ((p2) & 0xfff)));          \
-       s390_emit16(c, ((s4) << 12 | ((p4) & 0xfff)));          \
-} while (0)
-
-#define S390_SSE(c,opc,s1,p1,s2,p2) do                 \
-{                                                      \
-       s390_emit16(c, opc);                            \
-       s390_emit16(c, ((s1) << 12 | ((p1) & 0xfff)));  \
-       s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));  \
-} while (0)
-
-#define s390_a(c, r, x, b, d)          S390_RX(c, 0x5a, r, x, b, d)
-#define s390_adb(c, r, x, b, d)                S390_RXE(c, 0xed1a, r, x, b, d)
-#define s390_adbr(c, r1, r2)           S390_RRE(c, 0xb31a, r1, r2)
-#define s390_aebr(c, r1, r2)           S390_RRE(c, 0xb30a, r1, r2)
-#define s390_ahi(c, r, v)              S390_RI(c, 0xa7a, r, v)
-#define s390_alc(c, r, x, b, d)                S390_RXY(c, 0xe398, r, x, b, d)
-#define s390_alcr(c, r1, r2)           S390_RRE(c, 0xb998, r1, r2)
-#define s390_al(c, r, x, b, d)         S390_RX(c, 0x5e, r, x, b, d)
-#define s390_alr(c, r1, r2)            S390_RR(c, 0x1e, r1, r2)
-#define s390_ar(c, r1, r2)             S390_RR(c, 0x1a, r1, r2)
-#define s390_basr(c, r1, r2)           S390_RR(c, 0x0d, r1, r2)
-#define s390_bctr(c, r1, r2)           S390_RR(c, 0x06, r1, r2)
-#define s390_bras(c, r, o)             S390_RI(c, 0xa75, r, o)
-#define s390_brasl(c, r, o)            S390_RIL_1(c, 0xc05, r, o)
-#define s390_brc(c, m, d)              S390_RI(c, 0xa74, m, d)
-#define s390_br(c, r)                  S390_RR(c, 0x07, 0xf, r)
-#define s390_break(c)                  S390_RR(c, 0, 0, 0)
-#define s390_c(c, r, x, b, d)          S390_RX(c, 0x59, r, x, b, d)
-#define s390_cdb(c, r, x, b, d)                S390_RXE(c, 0xed19, r, x, b, d)
-#define s390_cdbr(c, r1, r2)           S390_RRE(c, 0xb319, r1, r2)
-#define s390_cdfbr(c, r1, r2)          S390_RRE(c, 0xb395, r1, r2)
-#define s390_cds(c, r1, r2, b, d)      S390_RX(c, 0xbb, r1, r2, b, d)
-#define s390_cebr(c, r1, r2)           S390_RRE(c, 0xb309, r1, r2)
-#define s390_cfdbr(c, r1, m, r2)       S390_RRF_2(c, 0xb399, r1, m, r2)
-#define s390_chi(c, r, i)              S390_RI(c, 0xa7e, r, i)
-#define s390_cl(c, r, x, b, d)         S390_RX(c, 0x55, r, x, b, d)
-#define s390_clr(c, r1, r2)            S390_RR(c, 0x15, r1, r2)
-#define s390_cr(c, r1, r2)             S390_RR(c, 0x19, r1, r2)
-#define s390_cs(c, r1, r2, b, d)       S390_RX(c, 0xba, r1, r2, b, d)
-#define s390_ddbr(c, r1, r2)           S390_RRE(c, 0xb31d, r1, r2)
-#define s390_debr(c, r1, r2)           S390_RRE(c, 0xb30d, r1, r2)
-#define s390_didbr(c, r1, r2, m, r3)    S390_RRF_3(c, 0xb35b, r1, r2, m, r3)
-#define s390_dlr(c, r1, r2)            S390_RRE(c, 0xb997, r1, r2)
-#define s390_dr(c, r1, r2)             S390_RR(c, 0x1d, r1, r2)
-#define s390_ear(c, r1, r2)            S390_RRE(c, 0xb24f, r1, r2)
-#define s390_ic(c, r, x, b, d)         S390_RX(c, 0x43, r, x, b, d)
-#define s390_icm(c, r, m, b, d)                S390_RX(c, 0xbf, r, m, b, d)
-#define s390_jc(c, m, d)               s390_brc(c, m, d)
-#define s390_j(c,d)                    s390_brc(c, S390_CC_UN, d)
-#define s390_jcl(c, m, d)              S390_RIL_2(c, 0xc04, m, d)
-#define s390_je(c, d)                  s390_brc(c, S390_CC_EQ, d)
-#define s390_jeo(c, d)                 s390_brc(c, S390_CC_ZR|S390_CC_OV, d)
-#define s390_jh(c, d)                  s390_brc(c, S390_CC_GT, d)
-#define s390_jho(c, d)                 s390_brc(c, S390_CC_GT|S390_CC_OV, d)
-#define s390_jl(c, d)                  s390_brc(c, S390_CC_LT, d)
-#define s390_jlo(c, d)                 s390_brc(c, S390_CC_LT|S390_CC_OV, d)
-#define s390_jm(c, d)                  s390_brc(c, S390_CC_LT, d)
-#define s390_jne(c, d)                 s390_brc(c, S390_CC_NZ, d)
-#define s390_jnh(c, d)                 s390_brc(c, S390_CC_LE, d)
-#define s390_jnl(c, d)                 s390_brc(c, S390_CC_GE, d)
-#define s390_jnz(c, d)                 s390_brc(c, S390_CC_NZ, d)
-#define s390_jo(c, d)                  s390_brc(c, S390_CC_OV, d)
-#define s390_jno(c, d)                 s390_brc(c, S390_CC_NO, d)
-#define s390_jp(c, d)                  s390_brc(c, S390_CC_GT, d)
-#define s390_jz(c, d)                  s390_brc(c, S390_CC_ZR, d)
-#define s390_jcy(c, d)                 s390_brc(c, S390_CC_CY, d)
-#define s390_jnc(c, d)                 s390_brc(c, S390_CC_NC, d)
-#define s390_la(c, r, x, b, d)         S390_RX(c, 0x41, r, x, b, d)
-#define s390_lam(c, r1, r2, b, d)      S390_RS_1(c, 0x9a, r1, r2, b, d)
-#define s390_larl(c, r, o)             S390_RIL_1(c, 0xc00, r, o)
-#define s390_lcdbr(c, r1, r2)          S390_RRE(c, 0xb313, r1, r2)
-#define s390_lcr(c, r1, r2)            S390_RR(c, 0x13, r1, r2)
-#define s390_l(c, r, x, b, d)          S390_RX(c, 0x58, r, x, b, d)
-#define s390_ld(c, f, x, b, d)         S390_RX(c, 0x68, f, x, b, d)
-#define s390_ldeb(c, r, x, b, d)       S390_RXE(c, 0xed04, r, x, b, d)
-#define s390_ldebr(c, r1, r2)          S390_RRE(c, 0xb304, r1, r2)
-#define s390_ldr(c, r1, r2)            S390_RR(c, 0x28, r1, r2)
-#define s390_le(c, f, x, b, d)         S390_RX(c, 0x78, f, x, b, d)
-#define s390_ledbr(c, r1, r2)          S390_RRE(c, 0xb344, r1, r2)
-#define s390_ler(c, r1, r2)            S390_RR(c, 0x38, r1, r2)
-#define s390_lh(c, r, x, b, d)         S390_RX(c, 0x48, r, x, b, d)
-#define s390_lhi(c, r, v)              S390_RI(c, 0xa78, r, v)
-#define s390_lm(c, r1, r2, b, d)       S390_RS_1(c, 0x98, r1, r2, b, d)
-#define s390_lndbr(c, r1, r2)          S390_RRE(c, 0xb311, r1, r2)
-#define s390_lnr(c, r1, r2)            S390_RR(c, 0x11, r1, r2)
-#define s390_lpr(c, r1, r2)            S390_RR(c, 0x10, r1, r2)
-#define s390_lr(c, r1, r2)             S390_RR(c, 0x18, r1, r2)
-#define s390_ltr(c, r1, r2)            S390_RR(c, 0x12, r1, r2)
-#define s390_lzdr(c, r)                S390_RRE(c, 0xb375, r, 0)
-#define s390_lzer(c, r)                S390_RRE(c, 0xb374, r, 0)
-#define s390_m(c, r, x, b, d)          S390_RX(c, 0x5c, r, x, b, d)
-#define s390_mdbr(c, r1, r2)           S390_RRE(c, 0xb31c, r1, r2)
-#define s390_meebr(c, r1, r2)          S390_RRE(c, 0xb317, r1, r2)
-#define s390_mlr(c, r1, r2)            S390_RRE(c, 0xb996, r1, r2)
-#define s390_mr(c, r1, r2)             S390_RR(c, 0x1c, r1, r2)
-#define s390_ms(c, r, x, b, d)         S390_RX(c, 0x71, r, x, b, d)
-#define s390_msr(c, r1, r2)            S390_RRE(c, 0xb252, r1, r2)
-#define s390_mvc(c, l, b1, d1, b2, d2) S390_SS_1(c, 0xd2, l, b1, d1, b2, d2)
-#define s390_mvcl(c, r1, r2)           S390_RR(c, 0x0e, r1, r2)
-#define s390_mvcle(c, r1, r3, d2, b2)  S390_RS_1(c, 0xa8, r1, r3, d2, b2)
-#define s390_n(c, r, x, b, d)          S390_RX(c, 0x54, r, x, b, d)
-#define s390_nilh(c, r, v)             S390_RI(c, 0xa56, r, v)
-#define s390_nill(c, r, v)             S390_RI(c, 0xa57, r, v)
-#define s390_nr(c, r1, r2)             S390_RR(c, 0x14, r1, r2)
-#define s390_o(c, r, x, b, d)          S390_RX(c, 0x56, r, x, b, d)
-#define s390_or(c, r1, r2)             S390_RR(c, 0x16, r1, r2)
-#define s390_s(c, r, x, b, d)          S390_RX(c, 0x5b, r, x, b, d)
-#define s390_sdb(c, r, x, b, d)                S390_RXE(c, 0xed1b, r, x, b, d)
-#define s390_sdbr(c, r1, r2)           S390_RRE(c, 0xb31b, r1, r2)
-#define s390_sebr(c, r1, r2)           S390_RRE(c, 0xb30b, r1, r2)
-#define s390_sla(c, r, b, d)           S390_RS_3(c, 0x8b, r, b, d) 
-#define s390_slb(c, r, x, b, d)                S390_RXY(c, 0xe399, r, x, b, d)
-#define s390_slbr(c, r1, r2)           S390_RRE(c, 0xb999, r1, r2)
-#define s390_sl(c, r, x, b, d)         S390_RX(c, 0x5f, r, x, b, d)
-#define s390_slda(c, r, b, d)          S390_RS_3(c, 0x8f, r, b, d) 
-#define s390_sldl(c, r, b, d)          S390_RS_3(c, 0x8d, r, b, d) 
-#define s390_sll(c, r, b, d)           S390_RS_3(c, 0x89, r, b, d) 
-#define s390_slr(c, r1, r2)            S390_RR(c, 0x1f, r1, r2)
-#define s390_sqdbr(c, r1, r2)          S390_RRE(c, 0xb315, r1, r2)
-#define s390_sqebr(c, r1, r2)          S390_RRE(c, 0xb314, r1, r2)
-#define s390_sra(c, r, b, d)           S390_RS_3(c, 0x8a, r, b, d) 
-#define s390_sr(c, r1, r2)             S390_RR(c, 0x1b, r1, r2)
-#define s390_srda(c, r, b, d)          S390_RS_3(c, 0x8e, r, b, d) 
-#define s390_srdl(c, r, b, d)          S390_RS_3(c, 0x8c, r, b, d) 
-#define s390_srl(c, r, b, d)           S390_RS_3(c, 0x88, r, b, d) 
-#define s390_stam(c, r1, r2, b, d)     S390_RS_1(c, 0x9b, r1, r2, b, d)
-#define s390_stc(c, r, x, b, d)                S390_RX(c, 0x42, r, x, b, d)
-#define s390_stcm(c, r, m, b, d)       S390_RX(c, 0xbe, r, m, b, d)
-#define s390_st(c, r, x, b, d)         S390_RX(c, 0x50, r, x, b, d)
-#define s390_std(c, f, x, b, d)                S390_RX(c, 0x60, f, x, b, d)
-#define s390_ste(c, f, x, b, d)                S390_RX(c, 0x70, f, x, b, d)
-#define s390_stfpc(c, b, d)            S390_S(c, 0xb29c, b, d)
-#define s390_sth(c, r, x, b, d)                S390_RX(c, 0x40, r, x, b, d)
-#define s390_stm(c, r1, r2, b, d)      S390_RS_1(c, 0x90, r1, r2, b, d)
-#define s390_tcdb(c, r, x, b, d)       S390_RXE(c, 0xed11, r, x, b, d)
-#define s390_tceb(c, r, x, b, d)       S390_RXE(c, 0xed10, r, x, b, d)
-#define s390_x(c, r, x, b, d)          S390_RX(c, 0x57, r, x, b, d)
-#define s390_xr(c, r1, r2)             S390_RR(c, 0x17, r1, r2)
-#endif
diff --git a/mono/arch/s390/tramp.c b/mono/arch/s390/tramp.c
deleted file mode 100644 (file)
index 475a4bf..0000000
+++ /dev/null
@@ -1,1154 +0,0 @@
-/*------------------------------------------------------------------*/
-/*                                                                 */
-/* Name        - tramp.c                                           */
-/*                                                                 */
-/* Function    - Create trampolines to invoke arbitrary functions.  */
-/*                                                                 */
-/* Name               - Neale Ferguson.                                    */
-/*                                                                 */
-/* Date        - October, 2002                                     */
-/*                                                                 */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-/*------------------------------------------------------------------*/
-/*                 D e f i n e s                                    */
-/*------------------------------------------------------------------*/
-
-#define PROLOG_INS     24      /* Size of emitted prolog           */
-#define CALL_INS       4       /* Size of emitted call             */
-#define EPILOG_INS     18      /* Size of emitted epilog           */
-
-#define DEBUG(x)
-
-/*========================= End of Defines =========================*/
-
-/*------------------------------------------------------------------*/
-/*                 I n c l u d e s                                  */
-/*------------------------------------------------------------------*/
-
-#ifdef NEED_MPROTECT
-# include <sys/mman.h>
-# include <limits.h>    /* for PAGESIZE */
-# ifndef PAGESIZE
-#  define PAGESIZE 4096
-# endif
-#endif
-
-#include "config.h"
-#include <stdlib.h>
-#include <string.h>
-#include "s390-codegen.h"
-#include "mono/metadata/class.h"
-#include "mono/metadata/tabledefs.h"
-#include "mono/interpreter/interp.h"
-#include "mono/metadata/appdomain.h"
-#include "mono/metadata/marshal.h"
-
-/*========================= End of Includes ========================*/
-
-/*------------------------------------------------------------------*/
-/*                 T y p e d e f s                                  */
-/*------------------------------------------------------------------*/
-
-/*------------------------------------------------------------------*/
-/* Structure used to accummulate size of stack, code, and locals    */
-/*------------------------------------------------------------------*/
-typedef struct {
-       guint stack_size,
-             local_size,
-             code_size,
-             retStruct;
-} size_data;   
-
-/*========================= End of Typedefs ========================*/
-\f
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - add_general                                       */
-/*                                                                  */
-/* Function    - Determine code and stack size incremements for a  */
-/*               parameter.                                        */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static void inline
-add_general (guint *gr, size_data *sz, gboolean simple)
-{
-       if (simple) {
-               if (*gr >= GENERAL_REGS) {
-                       sz->stack_size += sizeof(long);
-                       sz->code_size  += 12;    
-               } else {
-                       sz->code_size += 8;    
-               }
-       } else {
-               if (*gr >= GENERAL_REGS - 1) {
-                       sz->stack_size += 8 + (sz->stack_size % 8);
-                       sz->code_size  += 10;   
-               } else {
-                       sz->code_size += 8;
-               }
-               (*gr) ++;
-       }
-       (*gr) ++;
-}
-
-/*========================= End of Function ========================*/
-\f
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - calculate_sizes                                   */
-/*                                                                  */
-/* Function    - Determine the amount of space required for code   */
-/*               and stack. In addition determine starting points  */
-/*               for stack-based parameters, and area for struct-  */
-/*               ures being returned on the stack.                 */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static void inline
-calculate_sizes (MonoMethodSignature *sig, size_data *sz, 
-                gboolean string_ctor)
-{
-       guint i, fr, gr, size;
-       guint32 simpletype, align;
-
-       fr             = 0;
-       gr             = 2;
-       sz->retStruct  = 0;
-       sz->stack_size = S390_MINIMAL_STACK_SIZE;
-       sz->code_size  = (PROLOG_INS + CALL_INS + EPILOG_INS);
-       sz->local_size = 0;
-
-       if (sig->hasthis) {
-               add_general (&gr, sz, TRUE);
-       }
-
-       /*----------------------------------------------------------*/
-       /* We determine the size of the return code/stack in case we*/
-       /* need to reserve a register to be used to address a stack */
-       /* area that the callee will use.                           */
-       /*----------------------------------------------------------*/
-
-       if (sig->ret->byref || string_ctor) {
-               sz->code_size += 8;
-       } else {
-               simpletype = sig->ret->type;
-enum_retvalue:
-               switch (simpletype) {
-               case MONO_TYPE_BOOLEAN:
-               case MONO_TYPE_I1:
-               case MONO_TYPE_U1:
-               case MONO_TYPE_I2:
-               case MONO_TYPE_U2:
-               case MONO_TYPE_CHAR:
-               case MONO_TYPE_I4:
-               case MONO_TYPE_U4:
-               case MONO_TYPE_I:
-               case MONO_TYPE_U:
-               case MONO_TYPE_CLASS:
-               case MONO_TYPE_OBJECT:
-               case MONO_TYPE_R4:
-               case MONO_TYPE_R8:
-               case MONO_TYPE_SZARRAY:
-               case MONO_TYPE_ARRAY:
-               case MONO_TYPE_PTR:
-               case MONO_TYPE_STRING:
-                       sz->code_size += 4;
-                       break;
-               case MONO_TYPE_I8:
-                       sz->code_size += 4;
-                       break;
-               case MONO_TYPE_VALUETYPE:
-                       if (sig->ret->data.klass->enumtype) {
-                               simpletype = sig->ret->data.klass->enum_basetype->type;
-                               goto enum_retvalue;
-                       }
-                       gr++;
-                       if (sig->pinvoke)
-                               size = mono_class_native_size (sig->ret->data.klass, &align);
-                       else
-                               size = mono_class_value_size (sig->ret->data.klass, &align);
-                       if (align > 1)
-                               sz->code_size += 10;
-                       switch (size) {
-                               /*----------------------------------*/
-                               /* On S/390, structures of size 1,  */
-                               /* 2, 4, and 8 bytes are returned   */
-                               /* in (a) register(s).              */
-                               /*----------------------------------*/
-                               case 1:
-                               case 2:
-                               case 4:
-                               case 8:
-                                       sz->code_size  += 16;
-                                       sz->stack_size += 4;
-                                       break;
-                               default:
-                                       sz->retStruct   = 1;
-                                       sz->code_size  += 32;
-                       }
-                        break;
-               case MONO_TYPE_VOID:
-                       break;
-               default:
-                       g_error ("tramp: cannot handle as return value 0x%x", sig->ret->type);
-               }
-       }
-
-       /*----------------------------------------------------------*/
-       /* We determine the size of the parameter code and stack    */
-       /* requirements by checking the types and sizes of the      */
-       /* parameters.                                              */
-       /*----------------------------------------------------------*/
-
-       for (i = 0; i < sig->param_count; ++i) {
-               if (sig->params [i]->byref) {
-                       add_general (&gr, sz, TRUE);
-                       continue;
-               }
-               simpletype = sig->params [i]->type;
-       enum_calc_size:
-               switch (simpletype) {
-               case MONO_TYPE_BOOLEAN:
-               case MONO_TYPE_CHAR:
-               case MONO_TYPE_I1:
-               case MONO_TYPE_U1:
-               case MONO_TYPE_I2:
-               case MONO_TYPE_U2:
-               case MONO_TYPE_I4:
-               case MONO_TYPE_U4:
-               case MONO_TYPE_I:
-               case MONO_TYPE_U:
-               case MONO_TYPE_PTR:
-               case MONO_TYPE_CLASS:
-               case MONO_TYPE_OBJECT:
-               case MONO_TYPE_STRING:
-                       add_general (&gr, sz, TRUE);
-                       break;
-               case MONO_TYPE_SZARRAY:
-                       add_general (&gr, sz, TRUE);
-                       break;
-               case MONO_TYPE_VALUETYPE:
-                       if (sig->params [i]->data.klass->enumtype) {
-                               simpletype = sig->params [i]->data.klass->enum_basetype->type;
-                               goto enum_calc_size;
-                       }
-                       if (sig->pinvoke)
-                               size = mono_class_native_size (sig->params [i]->data.klass, &align);
-                       else
-                               size = mono_class_value_size (sig->params [i]->data.klass, &align);
-                       DEBUG(printf("%d typesize: %d (%d)\n",i,size,align));
-                       switch (size) {
-                               /*----------------------------------*/
-                               /* On S/390, structures of size 1,  */
-                               /* 2, 4, and 8 bytes are passed in  */
-                               /* (a) register(s).                 */
-                               /*----------------------------------*/
-                               case 0:
-                               case 1:
-                               case 2:
-                               case 4:
-                                       add_general(&gr, sz, TRUE);
-                                       break;
-                               case 8:
-                                       add_general(&gr, sz, FALSE);
-                                       break;
-                               default:
-                                       sz->local_size += (size + (size % align));
-                                       sz->code_size  += 40;
-                       }
-                       break;
-               case MONO_TYPE_I8:
-                       add_general (&gr, sz, FALSE);
-                       break;
-               case MONO_TYPE_R4:
-                       if (fr < FLOAT_REGS) {
-                               sz->code_size += 4;
-                               fr++;
-                       }
-                       else {
-                               sz->code_size  += 4;
-                               sz->stack_size += 8;
-                       }
-                       break;
-               case MONO_TYPE_R8:
-                       if (fr < FLOAT_REGS) {
-                               sz->code_size += 4;
-                               fr++;
-                       } else {
-                               sz->code_size  += 4;
-                               sz->stack_size += 8 + (sz->stack_size % 8);
-                       }
-                       break;
-               default:
-                       g_error ("Can't trampoline 0x%x", sig->params [i]->type);
-               }
-       }
-
-
-       /* align stack size to 8 */
-       DEBUG (printf ("      stack size: %d (%d)\n"
-                      "       code size: %d\n" 
-                      "      local size: %d\n",
-                     (sz->stack_size + 8) & ~8, sz->stack_size, 
-                     (sz->code_size),(sz->local_size + 8) & ~8));
-       sz->stack_size = (sz->stack_size + 8) & ~8;
-       sz->local_size = (sz->local_size + 8) & ~8;
-}
-
-/*========================= End of Function ========================*/
-\f
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - emit_prolog                                       */
-/*                                                                  */
-/* Function    - Create the instructions that implement the stand- */
-/*               ard function prolog according to the S/390 ABI.   */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static inline guint8 *
-emit_prolog (guint8 *p, MonoMethodSignature *sig, size_data *sz)
-{
-       guint stack_size;
-
-       stack_size = sz->stack_size + sz->local_size;
-
-       /* function prolog */
-       s390_stm (p, s390_r6, STK_BASE, STK_BASE, 24);
-       s390_l   (p, s390_r7, 0, STK_BASE, MINV_POS);
-       s390_lr  (p, s390_r11, STK_BASE);
-       s390_ahi (p, STK_BASE, -stack_size);
-       s390_st  (p, s390_r11, 0, STK_BASE, 0);
-
-       /*-----------------------------------------*/
-       /* Save:                                   */
-       /* - address of "callme"                   */
-       /* - address of "retval"                   */
-       /* - address of "arguments"                */
-       /*-----------------------------------------*/
-       s390_lr  (p, s390_r9, s390_r2);
-       s390_lr  (p, s390_r8, s390_r3);
-       s390_lr  (p, s390_r10, s390_r5);
-
-       return p;
-}
-
-/*========================= End of Function ========================*/
-\f
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - emit_save_parameters                              */
-/*                                                                  */
-/* Function    - Create the instructions that load registers with  */ 
-/*               parameters, place others on the stack according   */
-/*               to the S/390 ABI.                                 */
-/*                                                                  */
-/*               The resulting function takes the form:            */
-/*               void func (void (*callme)(), void *retval,        */
-/*                          void *this_obj, stackval *arguments);  */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-inline static guint8*
-emit_save_parameters (guint8 *p, MonoMethodSignature *sig, size_data *sz)
-{
-       guint i, fr, gr, act_strs, align, 
-             stack_par_pos, size, local_pos;
-       guint32 simpletype;
-
-       /*----------------------------------------------------------*/
-       /* If a structure on stack is being returned, reserve r2    */ 
-       /* to point to an area where it can be passed.              */
-       /*----------------------------------------------------------*/
-       if (sz->retStruct)
-               gr    = 1;
-       else
-               gr    = 0;
-       fr            = 0;
-       act_strs      = 0;
-       stack_par_pos = S390_MINIMAL_STACK_SIZE;
-       local_pos     = sz->stack_size;
-
-       if (sig->hasthis) {
-               s390_lr (p, s390_r2 + gr, s390_r4);
-               gr++;
-       }
-
-       act_strs = 0;
-       for (i = 0; i < sig->param_count; ++i) {
-               DEBUG(printf("par: %d type: %d ref: %d\n",i,sig->params[i]->type,sig->params[i]->byref));
-               if (sig->params [i]->byref) {
-                       if (gr < GENERAL_REGS) {
-                               s390_l  (p, s390_r2 + gr, 0, ARG_BASE, STKARG);
-                               gr ++;
-                       } else {
-                               s390_l  (p, s390_r0, 0, ARG_BASE, STKARG);
-                               s390_st (p, s390_r0, 0, STK_BASE, stack_par_pos);
-                               stack_par_pos += sizeof(long);
-                       }
-                       continue;
-               }
-               simpletype = sig->params [i]->type;
-       enum_calc_size:
-               switch (simpletype) {
-               case MONO_TYPE_BOOLEAN:
-               case MONO_TYPE_I1:
-               case MONO_TYPE_U1:
-               case MONO_TYPE_I2:
-               case MONO_TYPE_U2:
-               case MONO_TYPE_CHAR:
-               case MONO_TYPE_I4:
-               case MONO_TYPE_U4:
-               case MONO_TYPE_I:
-               case MONO_TYPE_U:
-               case MONO_TYPE_PTR:
-               case MONO_TYPE_CLASS:
-               case MONO_TYPE_OBJECT:
-               case MONO_TYPE_STRING:
-               case MONO_TYPE_SZARRAY:
-                       if (gr < GENERAL_REGS) {
-                               s390_l  (p, s390_r2 + gr, 0, ARG_BASE, STKARG);
-                               gr ++;
-                       } else {
-                               s390_l  (p, s390_r0, 0, ARG_BASE, STKARG);
-                               s390_st (p, s390_r0, 0, STK_BASE, stack_par_pos);
-                               stack_par_pos += sizeof(long);
-                       }
-                       break;
-               case MONO_TYPE_VALUETYPE:
-                       if (sig->params [i]->data.klass->enumtype) {
-                               simpletype = sig->params [i]->data.klass->enum_basetype->type;
-                               goto enum_calc_size;
-                       }
-                       if (sig->pinvoke) 
-                               size = mono_class_native_size (sig->params [i]->data.klass, &align);
-                       else
-                               size = mono_class_value_size (sig->params [i]->data.klass, &align);
-                       DEBUG(printf("parStruct - size %d pinvoke: %d\n",size,sig->pinvoke));
-                       switch (size) {
-                               case 0:
-                               case 1:
-                               case 2:
-                               case 4:
-                                       if (gr < GENERAL_REGS) {
-                                               s390_l  (p, s390_r2 + gr, 0,ARG_BASE, STKARG);
-                                               s390_l  (p, s390_r2 + gr, 0, s390_r2 + gr, 0);
-                                               gr++;
-                                       } else {
-                                               stack_par_pos += (stack_par_pos % align);
-                                               s390_l  (p, s390_r10, 0,ARG_BASE, STKARG);
-                                               s390_l  (p, s390_r10, 0, s390_r10, 0);
-                                               s390_st (p, s390_r10, 0, STK_BASE, stack_par_pos);
-                                               stack_par_pos += sizeof(long);
-                                       }
-                                       break;
-                               case 8:
-                                       if (gr < GENERAL_REGS-1) {
-                                               s390_l  (p, s390_r2 + gr, 0, ARG_BASE, STKARG);
-                                               s390_lm (p, s390_r2 + gr, s390_r3 + gr, s390_r2 + gr, 0);
-                                       } else {
-                                               stack_par_pos += (stack_par_pos % align);
-                                               s390_l   (p, s390_r10, 0, ARG_BASE, STKARG);
-                                               s390_mvc (p, sizeof(long long), STK_BASE, stack_par_pos, s390_r10, 0);
-                                               stack_par_pos += sizeof(long long);
-                                       }
-                                       break;  
-                               default:
-                                       if (size <= 256) {
-                                               local_pos += (local_pos % align);
-                                               s390_l   (p, s390_r13, 0, ARG_BASE, STKARG);
-                                               s390_mvc (p, size, STK_BASE, local_pos, s390_r13, 0);
-                                               s390_la  (p, s390_r13, 0, STK_BASE, local_pos);
-                                               local_pos += size;
-                                       } else {
-                                               local_pos += (local_pos % align);
-                                               s390_bras (p, s390_r13, 4);
-                                               s390_word (p, size);
-                                               s390_l    (p, s390_r1, 0, s390_r13, 0);
-                                               s390_l    (p, s390_r0, 0, ARG_BASE, STKARG);
-                                               s390_lr   (p, s390_r14, s390_r12);
-                                               s390_la   (p, s390_r12, 0, STK_BASE, local_pos);
-                                               s390_lr   (p, s390_r13, s390_r1);
-                                               s390_mvcl (p, s390_r12, s390_r0);
-                                               s390_lr   (p, s390_r12, s390_r14);
-                                               s390_la   (p, s390_r13, 0, STK_BASE, local_pos);
-                                               local_pos += size;
-                                       }
-                                       if (gr < GENERAL_REGS) {
-                                               s390_lr (p, s390_r2 + gr, s390_r13);
-                                               gr++;
-                                       } else {
-                                               s390_st (p, s390_r13, 0, STK_BASE, stack_par_pos);
-                                               stack_par_pos += sizeof(long);
-                                       }
-                       }
-                       break;
-               case MONO_TYPE_I8:
-                       if (gr < GENERAL_REGS-1) {
-                               s390_lm  (p, s390_r2 + gr, s390_r2 + gr + 1, ARG_BASE, STKARG); 
-                               gr += 2;
-                       } else {
-                               *(guint32 *) p += 7;
-                               *(guint32 *) p &= ~7;
-                               s390_mvc (p, sizeof(long long), STK_BASE, stack_par_pos, ARG_BASE, STKARG); 
-                               stack_par_pos += sizeof(long long) + (stack_par_pos % sizeof(long long));
-                       }
-                       break;
-               case MONO_TYPE_R4:
-                       if (fr < FLOAT_REGS) {
-                               s390_le  (p, s390_r0 + fr, 0, ARG_BASE, STKARG);
-                               fr++;
-                       } else {
-                               s390_mvc  (p, sizeof(float), STK_BASE, stack_par_pos, ARG_BASE, STKARG);
-                               stack_par_pos += sizeof(float);
-                       }
-                       break;
-               case MONO_TYPE_R8:
-                       if (fr < FLOAT_REGS) {
-                               s390_ld  (p, s390_r0 + fr, 0, ARG_BASE, STKARG);
-                               fr++;
-                       } else {
-                               *(guint32 *) p += 7;
-                               *(guint32 *) p &= ~7;
-                               s390_mvc  (p, sizeof(double), STK_BASE, stack_par_pos, ARG_BASE, STKARG);
-                               stack_par_pos += sizeof(long long) + (stack_par_pos % sizeof(long long));
-                       }
-                       break;
-               default:
-                       g_error ("Can't trampoline 0x%x", sig->params [i]->type);
-               }
-       }
-
-       /*----------------------------------------------------------*/
-       /* If we're returning a structure but not in a register     */ 
-       /* then point the result area for the called routine        */
-       /*----------------------------------------------------------*/
-       if (sz->retStruct) {
-               s390_l  (p, s390_r2, 0, s390_r8, 0);
-       }
-
-       return p;
-}
-
-/*========================= End of Function ========================*/
-\f
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - alloc_code_memory                                 */
-/*                                                                  */
-/* Function    - Allocate space to place the emitted code.         */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static inline guint8 *
-alloc_code_memory (guint code_size)
-{
-       guint8 *p;
-
-#ifdef NEED_MPROTECT
-       p = g_malloc (code_size + PAGESIZE - 1);
-
-       /* Align to a multiple of PAGESIZE, assumed to be a power of two */
-       p = (char *)(((int) p + PAGESIZE-1) & ~(PAGESIZE-1));
-#else
-       p = g_malloc (code_size);
-#endif
-       DEBUG (printf ("           align: %p (%d)\n", p, (guint)p % 4));
-
-       return p;
-}
-
-/*========================= End of Function ========================*/
-\f
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - emit_call_and_store_retval                        */
-/*                                                                  */
-/* Function    - Emit code that will implement the call to the     */
-/*               desired function, and unload the result according */
-/*               to the S390 ABI for the type of value returned    */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static inline guint8 *
-emit_call_and_store_retval (guint8 *p, MonoMethodSignature *sig, 
-                           size_data *sz, gboolean string_ctor)
-{
-       guint32 simpletype;
-       guint   retSize, align;
-
-       /* call "callme" */
-       s390_basr (p, s390_r14, s390_r9); 
-
-       /* get return value */
-       if (sig->ret->byref || string_ctor) {
-               s390_st (p, s390_r2, 0, s390_r8, 0);
-       } else {
-               simpletype = sig->ret->type;
-enum_retvalue:
-               switch (simpletype) {
-               case MONO_TYPE_BOOLEAN:
-               case MONO_TYPE_I1:
-               case MONO_TYPE_U1:
-                       s390_stc (p, s390_r2, 0, s390_r8, 0);
-                       break;
-               case MONO_TYPE_I2:
-               case MONO_TYPE_U2:
-               case MONO_TYPE_CHAR:
-                       s390_sth (p, s390_r2, 0, s390_r8, 0);
-                       break;
-               case MONO_TYPE_I4:
-               case MONO_TYPE_U4:
-               case MONO_TYPE_I:
-               case MONO_TYPE_U:
-               case MONO_TYPE_CLASS:
-               case MONO_TYPE_OBJECT:
-               case MONO_TYPE_SZARRAY:
-               case MONO_TYPE_ARRAY:
-               case MONO_TYPE_STRING:
-                       s390_st (p, s390_r2, 0, s390_r8, 0);
-                       break;
-               case MONO_TYPE_R4:
-                       s390_ste (p, s390_f0, 0, s390_r8, 0);
-                       break;
-               case MONO_TYPE_R8:
-                       s390_std (p, s390_f0, 0, s390_r8, 0);
-                       break;
-               case MONO_TYPE_I8:
-                       s390_stm (p, s390_r2, s390_r3, s390_r8, 0);
-                       break;
-               case MONO_TYPE_VALUETYPE:
-                       if (sig->ret->data.klass->enumtype) {
-                               simpletype = sig->ret->data.klass->enum_basetype->type;
-                               goto enum_retvalue;
-                       }
-                       if (sig->pinvoke) 
-                               retSize = mono_class_native_size (sig->ret->data.klass, &align);
-                       else
-                               retSize = mono_class_value_size (sig->ret->data.klass, &align);
-printf("Returning %d bytes for type %d (%d)\n",retSize,simpletype,sig->pinvoke);
-                       switch(retSize) {
-                       case 0:
-                               break;
-                       case 1:
-                               s390_stc (p, s390_r2, 0, s390_r8, 0);
-                               break;
-                       case 2:
-                               s390_sth (p, s390_r2, 0, s390_r8, 0);
-                               break;
-                       case 4:
-                               s390_st (p, s390_r2, 0, s390_r8, 0);
-                               break;
-                       case 8:
-                               s390_stm (p, s390_r2, s390_r3, s390_r8, 0);
-                               break;
-                       default: ;
-                               /*------------------------------------------*/
-                               /* The callee has already placed the result */
-                               /* in the required area                     */
-                               /*------------------------------------------*/
-                               break;
-                       }
-                       break;
-               case MONO_TYPE_VOID:
-                       break;
-               default:
-                       g_error ("Can't handle as return value 0x%x", 
-                                sig->ret->type);
-               }
-       }
-
-       return p;
-}
-
-/*========================= End of Function ========================*/
-\f
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - emit_epilog                                       */
-/*                                                                  */
-/* Function    - Create the instructions that implement the stand- */
-/*               ard function epilog according to the S/390 ABI.   */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static inline guint8 *
-emit_epilog (guint8 *p, MonoMethodSignature *sig, size_data *sz)
-{
-       /* function epilog */
-       s390_l   (p, STK_BASE, 0, STK_BASE, 0);
-       s390_l   (p, s390_r4, 0, STK_BASE, 56);
-       s390_lm  (p, s390_r6, STK_BASE, STK_BASE, 24);
-       s390_br  (p, s390_r4);
-
-       return p;
-}
-
-/*========================= End of Function ========================*/
-\f
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_create_trampoline.                      */
-/*                                                                  */
-/* Function    - Create the code that will allow a mono method to  */
-/*               invoke a system subroutine.                       */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-MonoPIFunc
-mono_arch_create_trampoline (MonoMethodSignature *sig, gboolean string_ctor)
-{
-       guint8 *p, *code_buffer;
-       size_data sz;
-
-       DEBUG (printf ("\nPInvoke [start emiting]\n"));
-       calculate_sizes (sig, &sz, string_ctor);
-
-       p = code_buffer = alloc_code_memory (sz.code_size);
-       p = emit_prolog (p, sig, &sz);
-       p = emit_save_parameters (p, sig, &sz);
-       p = emit_call_and_store_retval (p, sig, &sz, string_ctor);
-       p = emit_epilog (p, sig, &sz);
-
-#ifdef NEED_MPROTECT
-       if (mprotect (code_buffer, 1024, PROT_READ | PROT_WRITE | PROT_EXEC)) {
-               g_error ("Cannot mprotect trampoline\n");
-       }
-#endif
-
-       DEBUG (printf ("emited code size: %d\n", p - code_buffer));
-
-       DEBUG (printf ("PInvoke [end emiting]\n"));
-
-       return (MonoPIFunc) code_buffer;
-}
-
-/*========================= End of Function ========================*/
-\f
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_create_method_pointer                   */
-/*                                                                  */
-/* Function    - Returns a pointer to a native function that can   */
-/*               be used to call the specified method.             */
-/*                                                                  */
-/*               The function created will receive the arguments   */
-/*               according to the calling convention specified in  */
-/*                in the method.                                   */
-/*                                                                 */
-/*               This function works by creating a MonoInvocation  */
-/*               structure, filling the fields in and calling      */
-/*               ves_exec_method() on it.                          */
-/*                                                                 */
-/* Logic:                                                          */
-/* ------                                                          */
-/*  mono_arch_create_method_pointer (MonoMethod *method)           */
-/*     create the unmanaged->managed wrapper                       */
-/*     register it with mono_jit_info_table_add()                  */
-/*                                                                 */
-/*  What does the unmanaged->managed wrapper do?                   */
-/*     allocate a MonoInvocation structure (inv) on the stack      */
-/*      allocate an array of stackval on the stack with length =    */
-/*          method->signature->param_count + 1 [call it stack_args] */
-/*     set inv->ex, inv->ex_handler, inv->parent to NULL           */
-/*     set inv->method to method                                   */
-/*     if method is an instance method, set inv->obj to the        */
-/*         'this' argument (the first argument) else set to NULL   */
-/*     for each argument to the method call:                       */
-/*             stackval_from_data (sig->params[i], &stack_args[i], */
-/*                                 arg, sig->pinvoke);             */
-/*             Where:                                              */
-/*             ------                                              */
-/*             sig             - is method->signature              */
-/*             &stack_args[i]  - is the pointer to the ith element */
-/*                               in the stackval array             */
-/*             arg             - is a pointer to the argument re-  */
-/*                               ceived by the function according  */
-/*                               to the call convention. If it     */
-/*                               gets passed in a register, save   */
-/*                               on the stack first.               */
-/*                                                                 */
-/*     set inv->retval to the address of the last element of       */
-/*         stack_args [recall we allocated param_count+1 of them]  */
-/*     call ves_exec_method(inv)                                   */
-/*     copy the returned value from inv->retval where the calling  */
-/*         convention expects to find it on return from the wrap-  */
-/*         per [if it's a structure, use stackval_to_data]         */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-void *
-mono_arch_create_method_pointer (MonoMethod *method)
-{
-       MonoMethodSignature *sig;
-       MonoJitInfo *ji;
-       guint8 *p, *code_buffer;
-       guint i, align = 0, simple_type, retSize, reg_save = 0,
-               stackval_arg_pos, local_pos, float_pos,
-               local_start, reg_param = 0, stack_param,
-               this_flag, arg_pos, fpr_param, parSize;
-       guint32 simpletype;
-       size_data sz;
-       int *vtbuf, cpos, vt_cur;
-
-       sz.code_size   = 1024;
-       sz.stack_size  = 1024;
-       stack_param     = 0;
-       fpr_param       = 0;
-       arg_pos         = 0;
-
-       sig = method->signature;
-
-       p = code_buffer = g_malloc (sz.code_size);
-
-       DEBUG (printf ("\nDelegate [start emiting] %s at 0x%08x\n", 
-                      method->name,p));
-
-       /*----------------------------------------------------------*/ 
-       /* prolog                                                   */
-       /*----------------------------------------------------------*/ 
-       s390_stm (p, s390_r6, STK_BASE, STK_BASE, 24);
-       s390_l   (p, s390_r7, 0, STK_BASE, MINV_POS);
-       s390_lr  (p, s390_r0, STK_BASE);
-       s390_ahi (p, STK_BASE, -(sz.stack_size+MINV_POS));
-       s390_st  (p, s390_r0, 0, STK_BASE, 0);
-       s390_la  (p, s390_r8, 0, STK_BASE, 4);
-       s390_lr  (p, s390_r10, s390_r8);
-       s390_lhi (p, s390_r9, sz.stack_size+92);
-       s390_lhi (p, s390_r11, 0);
-       s390_mvcl(p, s390_r8, s390_r10);
-
-       /*----------------------------------------------------------*/ 
-       /* Let's fill MonoInvocation - first zero some fields       */
-       /*----------------------------------------------------------*/ 
-       s390_lhi (p, s390_r0, 0);
-       s390_st  (p, s390_r0, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, ex)));
-       s390_st  (p, s390_r0, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, ex_handler)));
-       s390_st  (p, s390_r0, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, parent)));
-       s390_lhi (p, s390_r0, 1);
-       s390_st  (p, s390_r0, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, invoke_trap)));
-
-       /*----------------------------------------------------------*/ 
-       /* set method pointer                                       */
-       /*----------------------------------------------------------*/ 
-       s390_bras (p, s390_r13, 4);
-       s390_word (p, method);
-       s390_l    (p, s390_r0, 0, s390_r13, 0);
-       s390_st   (p, s390_r0, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, method)));
-
-       local_start = local_pos = MINV_POS + 
-                     sizeof (MonoInvocation) + (sig->param_count + 1) * sizeof (stackval);
-       this_flag   = (sig->hasthis ? 1 : 0);
-
-       /*----------------------------------------------------------*/
-       /* if we are returning a structure, checks it's length to   */
-       /* see if there's a "hidden" parameter that points to the   */
-       /* area. If necessary save this hidden parameter for later  */
-       /*----------------------------------------------------------*/
-       if (MONO_TYPE_ISSTRUCT(sig->ret)) {
-               if (sig->pinvoke) 
-                       retSize = mono_class_native_size (sig->ret->data.klass, &align);
-               else
-                       retSize = mono_class_value_size (sig->ret->data.klass, &align);
-               switch(retSize) {
-                       case 0:
-                       case 1:
-                       case 2:
-                       case 4:
-                       case 8:
-                               sz.retStruct = 0;
-                               break;
-                       default:
-                               sz.retStruct = 1;
-                               s390_lr(p, s390_r8, s390_r2);
-                               reg_save = 1;
-               }
-       } else  {
-               reg_save = 0;
-       }
-
-       if (this_flag) {
-               s390_st  (p, s390_r2 + reg_save, 0, STK_BASE, 
-                         (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, obj)));
-               reg_param++;
-       } else {
-               s390_st (p, s390_r2 + reg_save, 0, STK_BASE, local_pos);
-               local_pos += sizeof(int);
-               s390_st (p, s390_r0, 0, STK_BASE, 
-                        (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, obj)));
-       }
-
-       s390_stm (p, s390_r3 + reg_param, s390_r6, STK_BASE, local_pos);
-       local_pos += 4 * sizeof(long);
-       float_pos  = local_pos;
-       s390_std (p, s390_f0, 0, STK_BASE, local_pos);
-       local_pos += sizeof(double);
-       s390_std (p, s390_f2, 0, STK_BASE, local_pos);
-       local_pos += sizeof(double);
-
-       /*----------------------------------------------------------*/ 
-       /* prepare space for valuetypes                             */
-       /*----------------------------------------------------------*/ 
-       vt_cur = local_pos;
-       vtbuf  = alloca (sizeof(int)*sig->param_count);
-       cpos   = 0;
-       for (i = 0; i < sig->param_count; i++) {
-               MonoType *type = sig->params [i];
-               vtbuf [i] = -1;
-               DEBUG(printf("par: %d type: %d ref: %d\n",i,type->type,type->byref));
-               if (type->type == MONO_TYPE_VALUETYPE) {
-                       MonoClass *klass = type->data.klass;
-                       gint size;
-
-                       if (klass->enumtype)
-                               continue;
-                       size = mono_class_native_size (klass, &align);
-                       cpos += align - 1;
-                       cpos &= ~(align - 1);
-                       vtbuf [i] = cpos;
-                       cpos += size;
-               }
-       }
-       cpos += 3;
-       cpos &= ~3;
-
-       local_pos += cpos;
-
-       /*----------------------------------------------------------*/ 
-       /* set MonoInvocation::stack_args                           */
-       /*----------------------------------------------------------*/ 
-       stackval_arg_pos = MINV_POS + sizeof (MonoInvocation);
-       s390_la  (p, s390_r0, 0, STK_BASE, stackval_arg_pos);
-       s390_st  (p, s390_r0, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, stack_args)));
-
-       /*----------------------------------------------------------*/ 
-       /* add stackval arguments                                   */  
-       /*----------------------------------------------------------*/ 
-       for (i = 0; i < sig->param_count; ++i) {
-               if (sig->params [i]->byref) {
-                       ADD_ISTACK_PARM(0, 1);
-               } else {
-                       simple_type = sig->params [i]->type;
-               enum_savechk:
-                       switch (simple_type) {
-                       case MONO_TYPE_I8:
-                               ADD_ISTACK_PARM(-1, 2);
-                               break;
-                       case MONO_TYPE_R4:
-                               ADD_RSTACK_PARM(1);
-                               break;
-                       case MONO_TYPE_R8:
-                               ADD_RSTACK_PARM(2);
-                               break;
-                       case MONO_TYPE_VALUETYPE:
-                               if (sig->params [i]->data.klass->enumtype) {
-                                       simple_type = sig->params [i]->data.klass->enum_basetype->type;
-                                       goto enum_savechk;
-                               }
-                               if (sig->pinvoke)
-                                       parSize = mono_class_native_size (sig->params [i]->data.klass, &align);
-                               else
-                                       parSize = mono_class_value_size (sig->params [i]->data.klass, &align);
-                               switch(parSize) {
-                               case 0:
-                               case 1:
-                               case 2:
-                               case 4:
-                                       ADD_PSTACK_PARM(0, 1);
-                                       break;
-                               case 8:
-                                       ADD_PSTACK_PARM(-1, 2);
-                                       break;
-                               default:
-                                       ADD_TSTACK_PARM;
-                               }
-                               break;
-                       default:
-                               ADD_ISTACK_PARM(0, 1);
-                       }
-               }
-                               
-               if (vtbuf [i] >= 0) {
-                       s390_la  (p, s390_r3, 0, STK_BASE, vt_cur);
-                       s390_st  (p, s390_r3, 0, STK_BASE, stackval_arg_pos);
-                       s390_la  (p, s390_r3, 0, STK_BASE, stackval_arg_pos);
-                       vt_cur += vtbuf [i];
-               } else {
-                       s390_la  (p, s390_r3, 0, STK_BASE, stackval_arg_pos);
-               }
-
-               /*--------------------------------------*/
-               /* Load the parameter registers for the */
-               /* call to stackval_from_data           */
-               /*--------------------------------------*/
-               s390_bras (p, s390_r13, 8);
-               s390_word (p, sig->params [i]);
-               s390_word (p, sig->pinvoke);
-               s390_word (p, stackval_from_data);
-               s390_l    (p, s390_r2, 0, s390_r13, 0);
-
-               s390_l    (p, s390_r5, 0, s390_r13, 4);
-
-               s390_l    (p, s390_r1, 0, s390_r13, 8);
-               s390_basr (p, s390_r14, s390_r1);
-
-               stackval_arg_pos += sizeof(stackval);
-
-               /* fixme: alignment */
-               DEBUG (printf ("arg_pos %d --> ", arg_pos));
-               if (sig->pinvoke)
-                       arg_pos += mono_type_native_stack_size (sig->params [i], &align);
-               else
-                       arg_pos += mono_type_stack_size (sig->params [i], &align);
-               
-               DEBUG (printf ("%d\n", stackval_arg_pos));
-       }
-
-       /*----------------------------------------------------------*/ 
-       /* Set return area pointer.                                 */
-       /*----------------------------------------------------------*/ 
-       s390_la (p, s390_r10, 0, STK_BASE, stackval_arg_pos);
-       s390_st (p, s390_r10, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, retval)));
-       if (sig->ret->type == MONO_TYPE_VALUETYPE && !sig->ret->byref) {
-               MonoClass *klass  = sig->ret->data.klass;
-               if (!klass->enumtype) {
-                       s390_la (p, s390_r9, 0, s390_r10, sizeof(stackval));
-                       s390_st (p, s390_r9, 0,STK_BASE, stackval_arg_pos);
-                       stackval_arg_pos += sizeof(stackval);
-               }
-       }
-
-       /*----------------------------------------------------------*/ 
-       /* call ves_exec_method                                     */
-       /*----------------------------------------------------------*/ 
-       s390_bras (p, s390_r13, 4);
-       s390_word (p, ves_exec_method);
-       s390_l    (p, s390_r1, 0, s390_r13, 0);
-       s390_la   (p, s390_r2, 0, STK_BASE, MINV_POS);
-       s390_basr (p, s390_r14, s390_r1);
-
-       /*----------------------------------------------------------*/ 
-       /* move retval from stackval to proper place (r3/r4/...)    */
-       /*----------------------------------------------------------*/ 
-       DEBUG(printf("retType: %d byRef: %d\n",sig->ret->type,sig->ret->byref));
-       if (sig->ret->byref) {
-               DEBUG (printf ("ret by ref\n"));
-               s390_st (p, s390_r2, 0, s390_r10, 0);
-       } else {
-       enum_retvalue:
-DEBUG(printf("Returns: %d\n",sig->ret->type));
-               switch (sig->ret->type) {
-               case MONO_TYPE_VOID:
-                       break;
-               case MONO_TYPE_BOOLEAN:
-               case MONO_TYPE_U1:
-                       s390_lhi (p, s390_r2, 0);
-                       s390_ic  (p, s390_r2, 0, s390_r10, 0);
-                       break;
-               case MONO_TYPE_I2:
-               case MONO_TYPE_U2:
-                       s390_lh (p, s390_r2, 0,s390_r10, 0);
-                       break;
-               case MONO_TYPE_I4:
-               case MONO_TYPE_U4:
-               case MONO_TYPE_I:
-               case MONO_TYPE_U:
-               case MONO_TYPE_OBJECT:
-               case MONO_TYPE_STRING:
-               case MONO_TYPE_CLASS:
-                       s390_l (p, s390_r2, 0, s390_r10, 0);
-                       break;
-               case MONO_TYPE_I8:
-                       s390_lm (p, s390_r2, s390_r3, s390_r10, 0);
-                       break;
-               case MONO_TYPE_R4:
-                       s390_le (p, s390_f0, 0, s390_r10, 0);
-                       break;
-               case MONO_TYPE_R8:
-                       s390_ld (p, s390_f0, 0, s390_r10, 0);
-                       break;
-               case MONO_TYPE_VALUETYPE:
-                       if (sig->ret->data.klass->enumtype) {
-                               simpletype = sig->ret->data.klass->enum_basetype->type;
-                               goto enum_retvalue;
-                       }
-                       /*---------------------------------*/
-                       /* Call stackval_to_data to return */
-                       /* the structure                   */
-                       /*---------------------------------*/
-                       s390_bras (p, s390_r13, 8);
-                       s390_word (p, sig->ret);
-                       s390_word (p, sig->pinvoke);
-                       s390_word (p, stackval_to_data);
-                       s390_l    (p, s390_r2, 0, s390_r13, 0);
-                       s390_l    (p, s390_r3, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, retval)));
-                       if (sz.retStruct) {     
-                               /*------------------------------------------*/
-                               /* Get stackval_to_data to set result area  */
-                               /*------------------------------------------*/
-                               s390_lr (p, s390_r4, s390_r8);
-                       } else {                
-                               /*------------------------------------------*/
-                               /* Give stackval_to_data a temp result area */
-                               /*------------------------------------------*/ 
-                               s390_la (p, s390_r4, 0, STK_BASE, stackval_arg_pos);
-                       }
-                       s390_l    (p, s390_r5, 0,s390_r13, 4);
-                       s390_l    (p, s390_r1, 0, s390_r13, 8);
-                       s390_basr (p, s390_r14, s390_r1);
-                       switch (retSize) {
-                               case 0:
-                                       break;
-                               case 1:
-                                       s390_lhi (p, s390_r2, 0);
-                                       s390_ic  (p, s390_r2, 0, s390_r10, 0);
-                                       break;
-                               case 2:
-                                       s390_lh (p, s390_r2, 0, s390_r10, 0);
-                                       break;
-                               case 4:
-                                       s390_l (p, s390_r2, 0, s390_r10, 0);
-                                       break;
-                               case 8:
-                                       s390_lm (p, s390_r2, s390_r3, s390_r10, 0);
-                                       break;
-                               default: ;
-                                       /*-------------------------------------------------*/
-                                       /* stackval_to_data has placed data in result area */
-                                       /*-------------------------------------------------*/
-                                       break;
-                       }
-                       break;
-               default:
-                       g_error ("Type 0x%x not handled yet in thunk creation", 
-                                sig->ret->type);
-                       break;
-               }
-       }
-
-       /*----------------------------------------------------------*/ 
-       /* epilog                                                   */
-       /*----------------------------------------------------------*/ 
-       s390_l   (p, STK_BASE, 0, STK_BASE, 0);
-       s390_l   (p, s390_r4, 0, STK_BASE, S390_RET_ADDR_OFFSET);
-       s390_lm  (p, s390_r6, STK_BASE, STK_BASE, S390_REG_SAVE_OFFSET);
-       s390_br  (p, s390_r4);
-
-       DEBUG (printf ("emited code size: %d\n", p - code_buffer));
-
-       DEBUG (printf ("Delegate [end emiting]\n"));
-
-       ji = g_new0 (MonoJitInfo, 1);
-       ji->method = method;
-       ji->code_size = p - code_buffer;
-       ji->code_start = code_buffer;
-
-       mono_jit_info_table_add (mono_get_root_domain (), ji);
-
-       return ji->code_start;
-}
-
-/*========================= End of Function ========================*/
index d3292bffb907295510f3f20f3602fc1955d63153..3677b2d95b1b8f0f91b0d4517e71590e98bd901a 100644 (file)
@@ -593,11 +593,14 @@ typedef struct {
 #define s390_basr(c, r1, r2)           S390_RR(c, 0x0d, r1, r2)
 #define s390_bctr(c, r1, r2)           S390_RR(c, 0x06, r1, r2)
 #define s390_bctrg(c, r1, r2)          S390_RRE(c, 0xb946, r1, r2)
+#define s390_bnzr(c, r)                        S390_RR(c, 0x07, 0x07, r)
 #define s390_bras(c, r, o)             S390_RI(c, 0xa75, r, o)
 #define s390_brasl(c, r, o)            S390_RIL_1(c, 0xc05, r, o)
 #define s390_brc(c, m, d)              S390_RI(c, 0xa74, m, d)
+#define s390_brcl(c, m, d)             S390_RIL_2(c, 0xc04, m, d)
 #define s390_br(c, r)                  S390_RR(c, 0x07, 0xf, r)
 #define s390_break(c)                  S390_RR(c, 0, 0, 0)
+#define s390_bzr(c, r)                 S390_RR(c, 0x07, 0x08, r)
 #define s390_c(c, r, x, b, d)          S390_RX(c, 0x59, r, x, b, d)
 #define s390_cdb(c, r, x, b, d)                S390_RXE(c, 0xed19, r, x, b, d)
 #define s390_cdbr(c, r1, r2)           S390_RRE(c, 0xb319, r1, r2)
@@ -636,7 +639,7 @@ typedef struct {
 #define s390_icy(c, r, x, b, d)                S390_RXY(c, 0xe373, r, x, b, d)
 #define s390_j(c,d)                    s390_brc(c, S390_CC_UN, d)
 #define s390_jc(c, m, d)               s390_brc(c, m, d)
-#define s390_jcl(c, m, d)              S390_RIL_2(c, 0xc04, m, d)
+#define s390_jcl(c, m, d)              s390_brcl(c, m, d)
 #define s390_jcy(c, d)                 s390_brc(c, S390_CC_CY, d)
 #define s390_je(c, d)                  s390_brc(c, S390_CC_EQ, d)
 #define s390_jeo(c, d)                 s390_brc(c, S390_CC_ZR|S390_CC_OV, d)
@@ -654,6 +657,24 @@ typedef struct {
 #define s390_jno(c, d)                 s390_brc(c, S390_CC_NO, d)
 #define s390_jp(c, d)                  s390_brc(c, S390_CC_GT, d)
 #define s390_jz(c, d)                  s390_brc(c, S390_CC_ZR, d)
+#define s390_jg(c,d)                   s390_brcl(c, S390_CC_UN, d)
+#define s390_jgcy(c, d)                        s390_brcl(c, S390_CC_CY, d)
+#define s390_jge(c, d)                 s390_brcl(c, S390_CC_EQ, d)
+#define s390_jgeo(c, d)                        s390_brcl(c, S390_CC_ZR|S390_CC_OV, d)
+#define s390_jgh(c, d)                 s390_brcl(c, S390_CC_GT, d)
+#define s390_jgho(c, d)                        s390_brcl(c, S390_CC_GT|S390_CC_OV, d)
+#define s390_jgl(c, d)                 s390_brcl(c, S390_CC_LT, d)
+#define s390_jglo(c, d)                        s390_brcl(c, S390_CC_LT|S390_CC_OV, d)
+#define s390_jgm(c, d)                 s390_brcl(c, S390_CC_LT, d)
+#define s390_jgnc(c, d)                        s390_brcl(c, S390_CC_NC, d)
+#define s390_jgne(c, d)                        s390_brcl(c, S390_CC_NZ, d)
+#define s390_jgnh(c, d)                        s390_brcl(c, S390_CC_LE, d)
+#define s390_jgnl(c, d)                        s390_brcl(c, S390_CC_GE, d)
+#define s390_jgnz(c, d)                        s390_brcl(c, S390_CC_NZ, d)
+#define s390_jgo(c, d)                 s390_brcl(c, S390_CC_OV, d)
+#define s390_jgno(c, d)                        s390_brcl(c, S390_CC_NO, d)
+#define s390_jgp(c, d)                 s390_brcl(c, S390_CC_GT, d)
+#define s390_jgz(c, d)                 s390_brcl(c, S390_CC_ZR, d)
 #define s390_l(c, r, x, b, d)          S390_RX(c, 0x58, r, x, b, d)
 #define s390_ly(c, r, x, b, d)         S390_RXY(c, 0xe358, r, x, b, d)
 #define s390_la(c, r, x, b, d)         S390_RX(c, 0x41, r, x, b, d)
index fd2c528c862a53d37690e797fdb51c96c2b6e235..ced466eaf1407c509f05e76eca52389a7a38d575 100644 (file)
@@ -814,6 +814,14 @@ typedef union {
                x86_imm_emit32 ((inst), (imm)); \
        } while (0)
 
+#define x86_test_mem_imm8(inst,mem,imm)        \
+       do {    \
+               x86_codegen_pre(&(inst), 7); \
+               *(inst)++ = (unsigned char)0xf6;        \
+               x86_mem_emit ((inst), 0, (mem));        \
+               x86_imm_emit8 ((inst), (imm));  \
+       } while (0)
+
 #define x86_test_mem_imm(inst,mem,imm) \
        do {    \
                x86_codegen_pre(&(inst), 10); \
index 327218e168622d90b3a8d686033d49c66aa6b4cf..72e528d2e31ca5491ccac8f9a1112c6ace3591af 100644 (file)
@@ -29,6 +29,11 @@ extern int isinf (double);
 
 #endif
 
+#if defined(__native_client__) && defined(__GLIBC__)
+volatile int __nacl_thread_suspension_needed = 0;
+void __nacl_suspend_thread_if_needed() {}
+#endif
+
 void
 dump_table_assembly (MonoImage *m)
 {
index c0d6e0ddf76f145297ea360505cee60aa3555aac..07cc6d663bc3482eaa6a4a86e40b502b8a6e6d9a 100644 (file)
@@ -11,7 +11,6 @@ libwapiincludedir = $(includedir)/mono-$(API_VER)/mono/io-layer
 
 OTHER_H = \
        access.h        \
-       atomic.h        \
        collection.h    \
        context.h       \
        critical-sections.h     \
@@ -23,7 +22,6 @@ OTHER_H = \
        io-portability.h        \
        macros.h        \
        messages.h      \
-       mono-mutex.h    \
        mutexes.h       \
        processes.h     \
        security.h      \
@@ -41,8 +39,6 @@ OTHER_H = \
 
 OTHER_SRC = \
        access.h                \
-       atomic.c                \
-       atomic.h                \
        collection.c            \
        collection.h            \
        context.c               \
@@ -73,8 +69,6 @@ OTHER_SRC = \
        mutexes.c               \
        mutexes.h               \
        mutex-private.h         \
-       mono-mutex.c            \
-       mono-mutex.h            \
        posix.c                 \
        processes.c             \
        processes.h             \
diff --git a/mono/io-layer/atomic.c b/mono/io-layer/atomic.c
deleted file mode 100644 (file)
index 07732fd..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * atomic.c:  Workarounds for atomic operations for platforms that dont have
- *           really atomic asm functions in atomic.h
- *
- * Author:
- *     Dick Porter (dick@ximian.com)
- *
- * (C) 2002 Ximian, Inc.
- */
-
-#include <config.h>
-#include <glib.h>
-#include <pthread.h>
-
-#include "mono/io-layer/wapi.h"
-
-#ifndef WAPI_ATOMIC_ASM
-
-static pthread_mutex_t spin = PTHREAD_MUTEX_INITIALIZER;
-static mono_once_t spin_once=MONO_ONCE_INIT;
-
-static void spin_init(void)
-{
-       g_warning("Using non-atomic functions!  Expect race conditions when using process-shared handles!");
-}
-
-gint32 InterlockedCompareExchange(volatile gint32 *dest, gint32 exch,
-                                 gint32 comp)
-{
-       gint32 old;
-       int ret;
-       
-       mono_once(&spin_once, spin_init);
-       
-       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
-                             (void *)&spin);
-       ret = pthread_mutex_lock(&spin);
-       g_assert (ret == 0);
-       
-       old= *dest;
-       if(old==comp) {
-               *dest=exch;
-       }
-       
-       ret = pthread_mutex_unlock(&spin);
-       g_assert (ret == 0);
-       
-       pthread_cleanup_pop (0);
-
-       return(old);
-}
-
-gpointer InterlockedCompareExchangePointer(volatile gpointer *dest,
-                                          gpointer exch, gpointer comp)
-{
-       gpointer old;
-       int ret;
-       
-       mono_once(&spin_once, spin_init);
-       
-       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
-                             (void *)&spin);
-       ret = pthread_mutex_lock(&spin);
-       g_assert (ret == 0);
-       
-       old= *dest;
-       if(old==comp) {
-               *dest=exch;
-       }
-       
-       ret = pthread_mutex_unlock(&spin);
-       g_assert (ret == 0);
-       
-       pthread_cleanup_pop (0);
-
-       return(old);
-}
-
-gint32 InterlockedIncrement(volatile gint32 *dest)
-{
-       gint32 ret;
-       int thr_ret;
-       
-       mono_once(&spin_once, spin_init);
-       
-       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
-                             (void *)&spin);
-       thr_ret = pthread_mutex_lock(&spin);
-       g_assert (thr_ret == 0);
-
-       (*dest)++;
-       ret= *dest;
-       
-       thr_ret = pthread_mutex_unlock(&spin);
-       g_assert (thr_ret == 0);
-       
-       pthread_cleanup_pop (0);
-       
-       return(ret);
-}
-
-gint32 InterlockedDecrement(volatile gint32 *dest)
-{
-       gint32 ret;
-       int thr_ret;
-       
-       mono_once(&spin_once, spin_init);
-       
-       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
-                             (void *)&spin);
-       thr_ret = pthread_mutex_lock(&spin);
-       g_assert (thr_ret == 0);
-       
-       (*dest)--;
-       ret= *dest;
-       
-       thr_ret = pthread_mutex_unlock(&spin);
-       g_assert (thr_ret == 0);
-       
-       pthread_cleanup_pop (0);
-       
-       return(ret);
-}
-
-gint32 InterlockedExchange(volatile gint32 *dest, gint32 exch)
-{
-       gint32 ret;
-       int thr_ret;
-       
-       mono_once(&spin_once, spin_init);
-       
-       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
-                             (void *)&spin);
-       thr_ret = pthread_mutex_lock(&spin);
-       g_assert (thr_ret == 0);
-
-       ret=*dest;
-       *dest=exch;
-       
-       thr_ret = pthread_mutex_unlock(&spin);
-       g_assert (thr_ret == 0);
-       
-       pthread_cleanup_pop (0);
-       
-       return(ret);
-}
-
-gpointer InterlockedExchangePointer(volatile gpointer *dest, gpointer exch)
-{
-       gpointer ret;
-       int thr_ret;
-       
-       mono_once(&spin_once, spin_init);
-       
-       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
-                             (void *)&spin);
-       thr_ret = pthread_mutex_lock(&spin);
-       g_assert (thr_ret == 0);
-       
-       ret=*dest;
-       *dest=exch;
-       
-       thr_ret = pthread_mutex_unlock(&spin);
-       g_assert (thr_ret == 0);
-       
-       pthread_cleanup_pop (0);
-       
-       return(ret);
-}
-
-gint32 InterlockedExchangeAdd(volatile gint32 *dest, gint32 add)
-{
-       gint32 ret;
-       int thr_ret;
-       
-       mono_once(&spin_once, spin_init);
-       
-       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
-                             (void *)&spin);
-       thr_ret = pthread_mutex_lock(&spin);
-       g_assert (thr_ret == 0);
-
-       ret= *dest;
-       *dest+=add;
-       
-       thr_ret = pthread_mutex_unlock(&spin);
-       g_assert (thr_ret == 0);
-
-       pthread_cleanup_pop (0);
-
-       return(ret);
-}
-
-#endif
diff --git a/mono/io-layer/atomic.h b/mono/io-layer/atomic.h
deleted file mode 100644 (file)
index 6d2f767..0000000
+++ /dev/null
@@ -1,1222 +0,0 @@
-/*
- * atomic.h:  Atomic operations
- *
- * Author:
- *     Dick Porter (dick@ximian.com)
- *
- * (C) 2002 Ximian, Inc.
- * Copyright 2012 Xamarin Inc
- */
-
-#ifndef _WAPI_ATOMIC_H_
-#define _WAPI_ATOMIC_H_
-
-#if defined(__NetBSD__)
-#include <sys/param.h>
-
-#if __NetBSD_Version__ > 499004000
-#include <sys/atomic.h>
-#define HAVE_ATOMIC_OPS
-#endif
-
-#endif
-
-#include <glib.h>
-
-#include "mono/io-layer/wapi.h"
-
-#if defined(__NetBSD__) && defined(HAVE_ATOMIC_OPS)
-
-#define WAPI_ATOMIC_ASM
-static inline gint32 InterlockedCompareExchange(volatile gint32 *dest,
-       gint32 exch, gint32 comp)
-{
-       return atomic_cas_32((uint32_t*)dest, comp, exch);
-}
-
-static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer exch, gpointer comp)
-{
-       return atomic_cas_ptr(dest, comp, exch);
-}
-
-static inline gint32 InterlockedIncrement(volatile gint32 *val)
-{
-       return atomic_inc_32_nv((uint32_t*)val);
-}
-
-static inline gint32 InterlockedDecrement(volatile gint32 *val)
-{
-       return atomic_dec_32_nv((uint32_t*)val);
-}
-
-static inline gint32 InterlockedExchange(volatile gint32 *val, gint32 new_val)
-{
-       return atomic_swap_32((uint32_t*)val, new_val);
-}
-
-static inline gpointer InterlockedExchangePointer(volatile gpointer *val,
-               gpointer new_val)
-{
-       return atomic_swap_ptr(val, new_val);
-}
-
-static inline gint32 InterlockedExchangeAdd(volatile gint32 *val, gint32 add)
-{
-       return atomic_add_32_nv((uint32_t*)val, add) - add;
-}
-
-#elif defined(__i386__) || defined(__x86_64__)
-#define WAPI_ATOMIC_ASM
-
-/*
- * NB: The *Pointer() functions here assume that
- * sizeof(pointer)==sizeof(gint32)
- *
- * NB2: These asm functions assume 486+ (some of the opcodes dont
- * exist on 386).  If this becomes an issue, we can get configure to
- * fall back to the non-atomic C versions of these calls.
- */
-
-static inline gint32 InterlockedCompareExchange(volatile gint32 *dest,
-                                               gint32 exch, gint32 comp)
-{
-       gint32 old;
-
-       __asm__ __volatile__ ("lock; cmpxchgl %2, %0"
-                             : "=m" (*dest), "=a" (old)
-                             : "r" (exch), "m" (*dest), "a" (comp));   
-       return(old);
-}
-
-static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer exch, gpointer comp)
-{
-       gpointer old;
-
-       __asm__ __volatile__ ("lock; "
-#if defined(__x86_64__)  && !defined(__native_client__)
-                             "cmpxchgq"
-#else
-                             "cmpxchgl"
-#endif
-                             " %2, %0"
-                             : "=m" (*dest), "=a" (old)
-                             : "r" (exch), "m" (*dest), "a" (comp));   
-
-       return(old);
-}
-
-static inline gint32 InterlockedIncrement(volatile gint32 *val)
-{
-       gint32 tmp;
-       
-       __asm__ __volatile__ ("lock; xaddl %0, %1"
-                             : "=r" (tmp), "=m" (*val)
-                             : "0" (1), "m" (*val));
-
-       return(tmp+1);
-}
-
-static inline gint32 InterlockedDecrement(volatile gint32 *val)
-{
-       gint32 tmp;
-       
-       __asm__ __volatile__ ("lock; xaddl %0, %1"
-                             : "=r" (tmp), "=m" (*val)
-                             : "0" (-1), "m" (*val));
-
-       return(tmp-1);
-}
-
-/*
- * See
- * http://msdn.microsoft.com/library/en-us/dnmag00/html/win320700.asp?frame=true
- * for the reasons for using cmpxchg and a loop here.
- *
- * That url is no longer valid, but it's still in the google cache at the
- * moment: http://www.google.com/search?q=cache:http://msdn.microsoft.com/library/en-us/dnmag00/html/win320700.asp?frame=true
- *
- * For the time being, http://msdn.microsoft.com/msdnmag/issues/0700/Win32/
- * might work.  Bet it will change soon enough though.
- */
-static inline gint32 InterlockedExchange(volatile gint32 *val, gint32 new_val)
-{
-       gint32 ret;
-       
-       __asm__ __volatile__ ("1:; lock; cmpxchgl %2, %0; jne 1b"
-                             : "=m" (*val), "=a" (ret)
-                             : "r" (new_val), "m" (*val), "a" (*val));
-
-       return(ret);
-}
-
-static inline gpointer InterlockedExchangePointer(volatile gpointer *val,
-                                                 gpointer new_val)
-{
-       gpointer ret;
-       
-       __asm__ __volatile__ ("1:; lock; "
-#if defined(__x86_64__)  && !defined(__native_client__)
-                             "cmpxchgq"
-#else
-                             "cmpxchgl"
-#endif
-                             " %2, %0; jne 1b"
-                             : "=m" (*val), "=a" (ret)
-                             : "r" (new_val), "m" (*val), "a" (*val));
-
-       return(ret);
-}
-
-static inline gint32 InterlockedExchangeAdd(volatile gint32 *val, gint32 add)
-{
-       gint32 ret;
-       
-       __asm__ __volatile__ ("lock; xaddl %0, %1"
-                             : "=r" (ret), "=m" (*val)
-                             : "0" (add), "m" (*val));
-       
-       return(ret);
-}
-
-#elif (defined(sparc) || defined (__sparc__)) && defined(__GNUC__)
-#define WAPI_ATOMIC_ASM
-
-G_GNUC_UNUSED 
-static inline gint32 InterlockedCompareExchange(volatile gint32 *_dest, gint32 _exch, gint32 _comp)
-{
-       register volatile gint32 *dest asm("g1") = _dest;
-       register gint32 comp asm("o4") = _comp;
-       register gint32 exch asm("o5") = _exch;
-
-       __asm__ __volatile__(
-               /* cas [%%g1], %%o4, %%o5 */
-               ".word 0xdbe0500c"
-               : "=r" (exch)
-               : "0" (exch), "r" (dest), "r" (comp)
-               : "memory");
-
-       return exch;
-}
-
-G_GNUC_UNUSED 
-static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *_dest, gpointer _exch, gpointer _comp)
-{
-       register volatile gpointer *dest asm("g1") = _dest;
-       register gpointer comp asm("o4") = _comp;
-       register gpointer exch asm("o5") = _exch;
-
-       __asm__ __volatile__(
-#ifdef SPARCV9
-               /* casx [%%g1], %%o4, %%o5 */
-               ".word 0xdbf0500c"
-#else
-               /* cas [%%g1], %%o4, %%o5 */
-               ".word 0xdbe0500c"
-#endif
-               : "=r" (exch)
-               : "0" (exch), "r" (dest), "r" (comp)
-               : "memory");
-
-       return exch;
-}
-
-G_GNUC_UNUSED 
-static inline gint32 InterlockedIncrement(volatile gint32 *_dest)
-{
-       register volatile gint32 *dest asm("g1") = _dest;
-       register gint32 tmp asm("o4");
-       register gint32 ret asm("o5");
-
-       __asm__ __volatile__(
-               "1:     ld      [%%g1], %%o4\n\t"
-               "       add     %%o4, 1, %%o5\n\t"
-               /*      cas     [%%g1], %%o4, %%o5 */
-               "       .word   0xdbe0500c\n\t"
-               "       cmp     %%o4, %%o5\n\t"
-               "       bne     1b\n\t"
-               "        add    %%o5, 1, %%o5"
-               : "=&r" (tmp), "=&r" (ret)
-               : "r" (dest)
-               : "memory", "cc");
-
-        return ret;
-}
-
-G_GNUC_UNUSED 
-static inline gint32 InterlockedDecrement(volatile gint32 *_dest)
-{
-       register volatile gint32 *dest asm("g1") = _dest;
-       register gint32 tmp asm("o4");
-       register gint32 ret asm("o5");
-
-       __asm__ __volatile__(
-               "1:     ld      [%%g1], %%o4\n\t"
-               "       sub     %%o4, 1, %%o5\n\t"
-               /*      cas     [%%g1], %%o4, %%o5 */
-               "       .word   0xdbe0500c\n\t"
-               "       cmp     %%o4, %%o5\n\t"
-               "       bne     1b\n\t"
-               "        sub    %%o5, 1, %%o5"
-               : "=&r" (tmp), "=&r" (ret)
-               : "r" (dest)
-               : "memory", "cc");
-
-        return ret;
-}
-
-G_GNUC_UNUSED
-static inline gint32 InterlockedExchange(volatile gint32 *_dest, gint32 exch)
-{
-       register volatile gint32 *dest asm("g1") = _dest;
-       register gint32 tmp asm("o4");
-       register gint32 ret asm("o5");
-
-       __asm__ __volatile__(
-               "1:     ld      [%%g1], %%o4\n\t"
-               "       mov     %3, %%o5\n\t"
-               /*      cas     [%%g1], %%o4, %%o5 */
-               "       .word   0xdbe0500c\n\t"
-               "       cmp     %%o4, %%o5\n\t"
-               "       bne     1b\n\t"
-               "        nop"
-               : "=&r" (tmp), "=&r" (ret)
-               : "r" (dest), "r" (exch)
-               : "memory", "cc");
-
-        return ret;
-}
-
-G_GNUC_UNUSED
-static inline gpointer InterlockedExchangePointer(volatile gpointer *_dest, gpointer exch)
-{
-       register volatile gpointer *dest asm("g1") = _dest;
-       register gpointer tmp asm("o4");
-       register gpointer ret asm("o5");
-
-       __asm__ __volatile__(
-#ifdef SPARCV9
-               "1:     ldx     [%%g1], %%o4\n\t"
-#else
-               "1:     ld      [%%g1], %%o4\n\t"
-#endif
-               "       mov     %3, %%o5\n\t"
-#ifdef SPARCV9
-               /*      casx    [%%g1], %%o4, %%o5 */
-               "       .word   0xdbf0500c\n\t"
-#else
-               /*      cas     [%%g1], %%o4, %%o5 */
-               "       .word   0xdbe0500c\n\t"
-#endif
-               "       cmp     %%o4, %%o5\n\t"
-               "       bne     1b\n\t"
-               "        nop"
-               : "=&r" (tmp), "=&r" (ret)
-               : "r" (dest), "r" (exch)
-               : "memory", "cc");
-
-        return ret;
-}
-
-G_GNUC_UNUSED
-static inline gint32 InterlockedExchangeAdd(volatile gint32 *_dest, gint32 add)
-{
-       register volatile gint32 *dest asm("g1") = _dest;
-       register gint32 tmp asm("o4");
-       register gint32 ret asm("o5");
-
-       __asm__ __volatile__(
-               "1:     ld      [%%g1], %%o4\n\t"
-               "       add     %%o4, %3, %%o5\n\t"
-               /*      cas     [%%g1], %%o4, %%o5 */
-               "       .word   0xdbe0500c\n\t"
-               "       cmp     %%o4, %%o5\n\t"
-               "       bne     1b\n\t"
-               "        add    %%o5, %3, %%o5"
-               : "=&r" (tmp), "=&r" (ret)
-               : "r" (dest), "r" (add)
-               : "memory", "cc");
-
-        return ret;
-}
-
-#elif __s390__
-
-#define WAPI_ATOMIC_ASM
-
-static inline gint32 
-InterlockedCompareExchange(volatile gint32 *dest,
-                          gint32 exch, gint32 comp)
-{
-       gint32 old;
-
-       __asm__ __volatile__ ("\tLA\t1,%0\n"
-                             "\tLR\t%1,%3\n"
-                             "\tCS\t%1,%2,0(1)\n"
-                             : "+m" (*dest), "=&r" (old)
-                             : "r" (exch), "r" (comp)
-                             : "1", "cc");     
-       return(old);
-}
-
-#ifndef __s390x__
-static inline gpointer
-InterlockedCompareExchangePointer(volatile gpointer *dest,
-                          gpointer exch, gpointer comp)
-{
-       gpointer old;
-
-       __asm__ __volatile__ ("\tLA\t1,%0\n"
-                             "\tLR\t%1,%3\n"
-                             "\tCS\t%1,%2,0(1)\n"
-                             : "+m" (*dest), "=&r" (old)
-                             : "r" (exch), "r" (comp)
-                             : "1", "cc");     
-       return(old);
-}
-# else
-static inline gpointer 
-InterlockedCompareExchangePointer(volatile gpointer *dest, 
-                                 gpointer exch, 
-                                 gpointer comp)
-{
-       gpointer old;
-
-       __asm__ __volatile__ ("\tLA\t1,%0\n"
-                             "\tLGR\t%1,%3\n"
-                             "\tCSG\t%1,%2,0(1)\n"
-                             : "+m" (*dest), "=&r" (old)
-                             : "r" (exch), "r" (comp)
-                             : "1", "cc");
-
-       return(old);
-}
-# endif
-
-# ifndef __s390x__
-static inline gint32 
-InterlockedIncrement(volatile gint32 *val)
-{
-       gint32 tmp;
-       
-       __asm__ __volatile__ ("\tLA\t2,%1\n"
-                             "0:\tL\t%0,%1\n"
-                             "\tLR\t1,%0\n"
-                             "\tAHI\t1,1\n"
-                             "\tCS\t%0,1,0(2)\n"
-                             "\tJNZ\t0b\n"
-                             "\tLR\t%0,1"
-                             : "=r" (tmp), "+m" (*val)
-                             : : "1", "2", "cc");
-
-       return(tmp);
-}
-# else
-static inline gint32 
-InterlockedIncrement(volatile gint32 *val)
-{
-       gint32 tmp;
-       
-       __asm__ __volatile__ ("\tLA\t2,%1\n"
-                             "0:\tLGF\t%0,%1\n"
-                             "\tLGFR\t1,%0\n"
-                             "\tAGHI\t1,1\n"
-                             "\tCS\t%0,1,0(2)\n"
-                             "\tJNZ\t0b\n"
-                             "\tLGFR\t%0,1"
-                             : "=r" (tmp), "+m" (*val)
-                             : : "1", "2", "cc");
-
-       return(tmp);
-}
-# endif
-
-# ifndef __s390x__
-static inline gint32 
-InterlockedDecrement(volatile gint32 *val)
-{
-       gint32 tmp;
-       
-       __asm__ __volatile__ ("\tLA\t2,%1\n"
-                             "0:\tL\t%0,%1\n"
-                             "\tLR\t1,%0\n"
-                             "\tAHI\t1,-1\n"
-                             "\tCS\t%0,1,0(2)\n"
-                             "\tJNZ\t0b\n"
-                             "\tLR\t%0,1"
-                             : "=r" (tmp), "+m" (*val)
-                             : : "1", "2", "cc");
-
-       return(tmp);
-}
-# else
-static inline gint32 
-InterlockedDecrement(volatile gint32 *val)
-{
-       gint32 tmp;
-       
-       __asm__ __volatile__ ("\tLA\t2,%1\n"
-                             "0:\tLGF\t%0,%1\n"
-                             "\tLGFR\t1,%0\n"
-                             "\tAGHI\t1,-1\n"
-                             "\tCS\t%0,1,0(2)\n"
-                             "\tJNZ\t0b\n"
-                             "\tLGFR\t%0,1"
-                             : "=r" (tmp), "+m" (*val)
-                             : : "1", "2", "cc");
-
-       return(tmp);
-}
-# endif
-
-static inline gint32 
-InterlockedExchange(volatile gint32 *val, gint32 new_val)
-{
-       gint32 ret;
-       
-       __asm__ __volatile__ ("\tLA\t1,%0\n"
-                             "0:\tL\t%1,%0\n"
-                             "\tCS\t%1,%2,0(1)\n"
-                             "\tJNZ\t0b"
-                             : "+m" (*val), "=&r" (ret)
-                             : "r" (new_val)
-                             : "1", "cc");
-
-       return(ret);
-}
-
-# ifndef __s390x__
-static inline gpointer 
-InterlockedExchangePointer(volatile gpointer *val, gpointer new_val)
-{
-       gpointer ret;
-       
-       __asm__ __volatile__ ("\tLA\t1,%0\n"
-                             "0:\tL\t%1,%0\n"
-                             "\tCS\t%1,%2,0(1)\n"
-                             "\tJNZ\t0b"
-                             : "+m" (*val), "=&r" (ret)
-                             : "r" (new_val)
-                             : "1", "cc");
-
-       return(ret);
-}
-# else
-static inline gpointer
-InterlockedExchangePointer(volatile gpointer *val, gpointer new_val)
-{
-       gpointer ret;
-       
-       __asm__ __volatile__ ("\tLA\t1,%0\n"
-                             "0:\tLG\t%1,%0\n"
-                             "\tCSG\t%1,%2,0(1)\n"
-                             "\tJNZ\t0b"
-                             : "+m" (*val), "=&r" (ret)
-                             : "r" (new_val)
-                             : "1", "cc");
-
-       return(ret);
-}
-# endif
-
-# ifndef __s390x__
-static inline gint32 
-InterlockedExchangeAdd(volatile gint32 *val, gint32 add)
-{
-       gint32 ret;
-
-       __asm__ __volatile__ ("\tLA\t2,%1\n"
-                             "0:\tL\t%0,%1\n"
-                             "\tLR\t1,%0\n"
-                             "\tAR\t1,%2\n"
-                             "\tCS\t%0,1,0(2)\n"
-                             "\tJNZ\t0b"
-                             : "=&r" (ret), "+m" (*val)
-                             : "r" (add) 
-                             : "1", "2", "cc");
-       
-       return(ret);
-}
-# else
-static inline gint32 
-InterlockedExchangeAdd(volatile gint32 *val, gint32 add)
-{
-       gint32 ret;
-
-       __asm__ __volatile__ ("\tLA\t2,%1\n"
-                             "0:\tLGF\t%0,%1\n"
-                             "\tLGFR\t1,%0\n"
-                             "\tAGR\t1,%2\n"
-                             "\tCS\t%0,1,0(2)\n"
-                             "\tJNZ\t0b"
-                             : "=&r" (ret), "+m" (*val)
-                             : "r" (add) 
-                             : "1", "2", "cc");
-       
-       return(ret);
-}
-# endif
-
-#elif defined(__mono_ppc__)
-#define WAPI_ATOMIC_ASM
-
-#ifdef G_COMPILER_CODEWARRIOR
-static inline gint32 InterlockedIncrement(volatile register gint32 *val)
-{
-       gint32 result = 0, tmp;
-       register gint32 result = 0;
-       register gint32 tmp;
-
-       asm
-       {
-               @1:
-                       lwarx   tmp, 0, val
-                       addi    result, tmp, 1
-                       stwcx.  result, 0, val
-                       bne-    @1
-       }
-       return result;
-}
-
-static inline gint32 InterlockedDecrement(register volatile gint32 *val)
-{
-       register gint32 result = 0;
-       register gint32 tmp;
-
-       asm
-       {
-               @1:
-                       lwarx   tmp, 0, val
-                       addi    result, tmp, -1
-                       stwcx.  result, 0, val
-                       bne-    @1
-       }
-
-       return result;
-}
-#define InterlockedCompareExchangePointer(dest,exch,comp) (void*)InterlockedCompareExchange((volatile gint32 *)(dest), (gint32)(exch), (gint32)(comp))
-
-static inline gint32 InterlockedCompareExchange(volatile register gint32 *dest, register gint32 exch, register gint32 comp)
-{
-       register gint32 tmp = 0;
-
-       asm
-       {
-               @1:
-                       lwarx   tmp, 0, dest
-                       cmpw    tmp, comp
-                       bne-    @2
-                       stwcx.  exch, 0, dest
-                       bne-    @1
-               @2:
-       }
-
-       return tmp;
-}
-static inline gint32 InterlockedExchange(register volatile gint32 *dest, register gint32 exch)
-{
-       register gint32 tmp = 0;
-
-       asm
-       {
-               @1:
-                       lwarx   tmp, 0, dest
-                       stwcx.  exch, 0, dest
-                       bne-    @1
-       }
-
-       return tmp;
-}
-#define InterlockedExchangePointer(dest,exch) (void*)InterlockedExchange((volatile gint32 *)(dest), (gint32)(exch))
-#else
-
-#if defined(__mono_ppc64__) && !defined(__mono_ilp32__)
-#define LDREGX "ldarx"
-#define STREGCXD "stdcx."
-#define CMPREG "cmpd"
-#else
-#define LDREGX "lwarx"
-#define STREGCXD "stwcx."
-#define CMPREG "cmpw"
-#endif
-
-static inline gint32 InterlockedIncrement(volatile gint32 *val)
-{
-       gint32 result = 0, tmp;
-
-       __asm__ __volatile__ ("\n1:\n\t"
-                             "lwarx  %0, 0, %2\n\t"
-                             "addi   %1, %0, 1\n\t"
-                              "stwcx. %1, 0, %2\n\t"
-                             "bne-   1b"
-                             : "=&b" (result), "=&b" (tmp): "r" (val): "cc", "memory");
-       return result + 1;
-}
-
-static inline gint32 InterlockedDecrement(volatile gint32 *val)
-{
-       gint32 result = 0, tmp;
-
-       __asm__ __volatile__ ("\n1:\n\t"
-                             "lwarx  %0, 0, %2\n\t"
-                             "addi   %1, %0, -1\n\t"
-                              "stwcx. %1, 0, %2\n\t"
-                             "bne-   1b"
-                             : "=&b" (result), "=&b" (tmp): "r" (val): "cc", "memory");
-       return result - 1;
-}
-
-static inline gpointer InterlockedCompareExchangePointer (volatile gpointer *dest,
-                                               gpointer exch, gpointer comp)
-{
-       gpointer tmp = NULL;
-
-       __asm__ __volatile__ ("\n1:\n\t"
-                            LDREGX " %0, 0, %1\n\t"
-                            CMPREG " %0, %2\n\t" 
-                            "bne-    2f\n\t"
-                            STREGCXD " %3, 0, %1\n\t"
-                            "bne-    1b\n"
-                            "2:"
-                            : "=&r" (tmp)
-                            : "b" (dest), "r" (comp), "r" (exch): "cc", "memory");
-       return(tmp);
-}
-
-static inline gint32 InterlockedCompareExchange(volatile gint32 *dest,
-                                               gint32 exch, gint32 comp) {
-       gint32 tmp = 0;
-
-       __asm__ __volatile__ ("\n1:\n\t"
-                            "lwarx   %0, 0, %1\n\t"
-                            "cmpw    %0, %2\n\t" 
-                            "bne-    2f\n\t"
-                            "stwcx.  %3, 0, %1\n\t"
-                            "bne-    1b\n"
-                            "2:"
-                            : "=&r" (tmp)
-                            : "b" (dest), "r" (comp), "r" (exch): "cc", "memory");
-       return(tmp);
-}
-
-static inline gint32 InterlockedExchange(volatile gint32 *dest, gint32 exch)
-{
-       gint32 tmp = 0;
-
-       __asm__ __volatile__ ("\n1:\n\t"
-                             "lwarx  %0, 0, %2\n\t"
-                             "stwcx. %3, 0, %2\n\t"
-                             "bne    1b"
-                             : "=r" (tmp) : "0" (tmp), "b" (dest), "r" (exch): "cc", "memory");
-       return(tmp);
-}
-
-static inline gpointer InterlockedExchangePointer (volatile gpointer *dest, gpointer exch)
-{
-       gpointer tmp = NULL;
-
-       __asm__ __volatile__ ("\n1:\n\t"
-                             LDREGX " %0, 0, %2\n\t"
-                             STREGCXD " %3, 0, %2\n\t"
-                             "bne    1b"
-                             : "=r" (tmp) : "0" (tmp), "b" (dest), "r" (exch): "cc", "memory");
-       return(tmp);
-}
-
-static inline gint32 InterlockedExchangeAdd(volatile gint32 *dest, gint32 add)
-{
-        gint32 result, tmp;
-        __asm__ __volatile__ ("\n1:\n\t"
-                              "lwarx  %0, 0, %2\n\t"
-                              "add    %1, %0, %3\n\t"
-                              "stwcx. %1, 0, %2\n\t"
-                              "bne    1b"
-                              : "=&r" (result), "=&r" (tmp)
-                              : "r" (dest), "r" (add) : "cc", "memory");
-        return(result);
-}
-
-#undef LDREGX
-#undef STREGCXD
-#undef CMPREG
-
-#endif /* !G_COMPILER_CODEWARRIOR */
-
-#elif defined(__arm__)
-#define WAPI_ATOMIC_ASM
-
-/*
- * Atomic operations on ARM doesn't contain memory barriers, and the runtime code
- * depends on this, so we add them explicitly.
- */
-
-static inline gint32 InterlockedCompareExchange(volatile gint32 *dest, gint32 exch, gint32 comp)
-{
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7S__)
-       gint32 ret, tmp;
-       __asm__ __volatile__ (  "1:\n"
-                               "dmb\n"
-                               "mov    %0, #0\n"
-                               "ldrex %1, [%2]\n"
-                               "teq    %1, %3\n"
-                               "it eq\n"
-                               "strexeq %0, %4, [%2]\n"
-                               "teq %0, #0\n"
-                               "bne 1b\n"
-                               "dmb\n"
-                               : "=&r" (tmp), "=&r" (ret)
-                               : "r" (dest), "r" (comp), "r" (exch)
-                               : "memory", "cc");
-
-       return ret;
-#else
-       gint32 a, b;
-
-       __asm__ __volatile__ (    "0:\n\t"
-                                 "ldr %1, [%2]\n\t"
-                                 "cmp %1, %4\n\t"
-                                 "mov %0, %1\n\t"
-                                 "bne 1f\n\t"
-                                 "swp %0, %3, [%2]\n\t"
-                                 "cmp %0, %1\n\t"
-                                 "swpne %3, %0, [%2]\n\t"
-                                 "bne 0b\n\t"
-                                 "1:"
-                                 : "=&r" (a), "=&r" (b)
-                                 : "r" (dest), "r" (exch), "r" (comp)
-                                 : "cc", "memory");
-
-       return a;
-#endif
-}
-
-static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer exch, gpointer comp)
-{
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7S__)
-       gpointer ret, tmp;
-       __asm__ __volatile__ (
-                               "dmb\n"
-                               "1:\n"
-                               "mov    %0, #0\n"
-                               "ldrex %1, [%2]\n"
-                               "teq    %1, %3\n"
-                               "it eq\n"
-                               "strexeq %0, %4, [%2]\n"
-                               "teq %0, #0\n"
-                               "bne 1b\n"
-                               "dmb\n"
-                               : "=&r" (tmp), "=&r" (ret)
-                               : "r" (dest), "r" (comp), "r" (exch)
-                               : "memory", "cc");
-
-       return ret;
-#else
-       gpointer a, b;
-
-       __asm__ __volatile__ (    "0:\n\t"
-                                 "ldr %1, [%2]\n\t"
-                                 "cmp %1, %4\n\t"
-                                 "mov %0, %1\n\t"
-                                 "bne 1f\n\t"
-                                 "swpeq %0, %3, [%2]\n\t"
-                                 "cmp %0, %1\n\t"
-                                 "swpne %3, %0, [%2]\n\t"
-                                 "bne 0b\n\t"
-                                 "1:"
-                                 : "=&r" (a), "=&r" (b)
-                                 : "r" (dest), "r" (exch), "r" (comp)
-                                 : "cc", "memory");
-
-       return a;
-#endif
-}
-
-static inline gint32 InterlockedIncrement(volatile gint32 *dest)
-{
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7S__)
-       gint32 ret, flag;
-       __asm__ __volatile__ (
-                               "dmb\n"
-                               "1:\n"
-                               "ldrex %0, [%2]\n"
-                               "add %0, %0, %3\n"
-                               "strex %1, %0, [%2]\n"
-                               "teq %1, #0\n"
-                               "bne 1b\n"
-                               "dmb\n"
-                               : "=&r" (ret), "=&r" (flag)
-                               : "r" (dest), "r" (1)
-                               : "memory", "cc");
-
-       return ret;
-#else
-       gint32 a, b, c;
-
-       __asm__ __volatile__ (  "0:\n\t"
-                               "ldr %0, [%3]\n\t"
-                               "add %1, %0, %4\n\t"
-                               "swp %2, %1, [%3]\n\t"
-                               "cmp %0, %2\n\t"
-                               "swpne %1, %2, [%3]\n\t"
-                               "bne 0b"
-                               : "=&r" (a), "=&r" (b), "=&r" (c)
-                               : "r" (dest), "r" (1)
-                               : "cc", "memory");
-
-       return b;
-#endif
-}
-
-static inline gint32 InterlockedDecrement(volatile gint32 *dest)
-{
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7S__)
-       gint32 ret, flag;
-       __asm__ __volatile__ (
-                               "dmb\n"
-                               "1:\n"
-                               "ldrex %0, [%2]\n"
-                               "sub %0, %0, %3\n"
-                               "strex %1, %0, [%2]\n"
-                               "teq %1, #0\n"
-                               "bne 1b\n"
-                               "dmb\n"
-                               : "=&r" (ret), "=&r" (flag)
-                               : "r" (dest), "r" (1)
-                               : "memory", "cc");
-
-       return ret;
-#else
-       gint32 a, b, c;
-
-       __asm__ __volatile__ (  "0:\n\t"
-                               "ldr %0, [%3]\n\t"
-                               "add %1, %0, %4\n\t"
-                               "swp %2, %1, [%3]\n\t"
-                               "cmp %0, %2\n\t"
-                               "swpne %1, %2, [%3]\n\t"
-                               "bne 0b"
-                               : "=&r" (a), "=&r" (b), "=&r" (c)
-                               : "r" (dest), "r" (-1)
-                               : "cc", "memory");
-
-       return b;
-#endif
-}
-
-static inline gint32 InterlockedExchange(volatile gint32 *dest, gint32 exch)
-{
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7S__)
-       gint32 ret, flag;
-       __asm__ __volatile__ (
-                                 "dmb\n"
-                             "1:\n"
-                             "ldrex %0, [%3]\n"
-                             "strex %1, %2, [%3]\n"
-                             "teq %1, #0\n"
-                             "bne 1b\n"
-                                 "dmb\n"
-                             : "=&r" (ret), "=&r" (flag)
-                             : "r" (exch), "r" (dest)
-                             : "memory", "cc");
-       return ret;
-#else
-       gint32 a;
-
-       __asm__ __volatile__ (  "swp %0, %2, [%1]"
-                               : "=&r" (a)
-                               : "r" (dest), "r" (exch));
-
-       return a;
-#endif
-}
-
-static inline gpointer InterlockedExchangePointer(volatile gpointer *dest, gpointer exch)
-{
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7S__)
-       gpointer ret, flag;
-       __asm__ __volatile__ (
-                                 "dmb\n"
-                             "1:\n"
-                             "ldrex %0, [%3]\n"
-                             "strex %1, %2, [%3]\n"
-                             "teq %1, #0\n"
-                             "bne 1b\n"
-                                 "dmb\n"
-                             : "=&r" (ret), "=&r" (flag)
-                             : "r" (exch), "r" (dest)
-                             : "memory", "cc");
-       return ret;
-#else
-       gpointer a;
-
-       __asm__ __volatile__ (  "swp %0, %2, [%1]"
-                               : "=&r" (a)
-                               : "r" (dest), "r" (exch));
-
-       return a;
-#endif
-}
-
-static inline gint32 InterlockedExchangeAdd(volatile gint32 *dest, gint32 add)
-{
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7S__)
-       gint32 ret, tmp, flag;
-       __asm__ __volatile__ (
-                               "dmb\n"
-                               "1:\n"
-                               "ldrex %0, [%3]\n"
-                               "add %1, %0, %4\n"
-                               "strex %2, %1, [%3]\n"
-                               "teq %2, #0\n"
-                               "bne 1b\n"
-                               "dmb\n"
-                               : "=&r" (ret), "=&r" (tmp), "=&r" (flag)
-                               : "r" (dest), "r" (add)
-                               : "memory", "cc");
-
-       return ret;
-#else
-       int a, b, c;
-
-       __asm__ __volatile__ (  "0:\n\t"
-                               "ldr %0, [%3]\n\t"
-                               "add %1, %0, %4\n\t"
-                               "swp %2, %1, [%3]\n\t"
-                               "cmp %0, %2\n\t"
-                               "swpne %1, %2, [%3]\n\t"
-                               "bne 0b"
-                               : "=&r" (a), "=&r" (b), "=&r" (c)
-                               : "r" (dest), "r" (add)
-                               : "cc", "memory");
-
-       return a;
-#endif
-}
-
-#elif defined(__ia64__)
-#define WAPI_ATOMIC_ASM
-
-#ifdef __INTEL_COMPILER
-#include <ia64intrin.h>
-#endif
-
-static inline gint32 InterlockedCompareExchange(gint32 volatile *dest,
-                                               gint32 exch, gint32 comp)
-{
-       gint32 old;
-       guint64 real_comp;
-
-#ifdef __INTEL_COMPILER
-       old = _InterlockedCompareExchange (dest, exch, comp);
-#else
-       /* cmpxchg4 zero extends the value read from memory */
-       real_comp = (guint64)(guint32)comp;
-       asm volatile ("mov ar.ccv = %2 ;;\n\t"
-                                 "cmpxchg4.acq %0 = [%1], %3, ar.ccv\n\t"
-                                 : "=r" (old) : "r" (dest), "r" (real_comp), "r" (exch));
-#endif
-
-       return(old);
-}
-
-static inline gpointer InterlockedCompareExchangePointer(gpointer volatile *dest,
-                                               gpointer exch, gpointer comp)
-{
-       gpointer old;
-
-#ifdef __INTEL_COMPILER
-       old = _InterlockedCompareExchangePointer (dest, exch, comp);
-#else
-       asm volatile ("mov ar.ccv = %2 ;;\n\t"
-                                 "cmpxchg8.acq %0 = [%1], %3, ar.ccv\n\t"
-                                 : "=r" (old) : "r" (dest), "r" (comp), "r" (exch));
-#endif
-
-       return(old);
-}
-
-static inline gint32 InterlockedIncrement(gint32 volatile *val)
-{
-#ifdef __INTEL_COMPILER
-       return _InterlockedIncrement (val);
-#else
-       gint32 old;
-
-       do {
-               old = *val;
-       } while (InterlockedCompareExchange (val, old + 1, old) != old);
-
-       return old + 1;
-#endif
-}
-
-static inline gint32 InterlockedDecrement(gint32 volatile *val)
-{
-#ifdef __INTEL_COMPILER
-       return _InterlockedDecrement (val);
-#else
-       gint32 old;
-
-       do {
-               old = *val;
-       } while (InterlockedCompareExchange (val, old - 1, old) != old);
-
-       return old - 1;
-#endif
-}
-
-static inline gint32 InterlockedExchange(gint32 volatile *dest, gint32 new_val)
-{
-#ifdef __INTEL_COMPILER
-       return _InterlockedExchange (dest, new_val);
-#else
-       gint32 res;
-
-       do {
-               res = *dest;
-       } while (InterlockedCompareExchange (dest, new_val, res) != res);
-
-       return res;
-#endif
-}
-
-static inline gpointer InterlockedExchangePointer(gpointer volatile *dest, gpointer new_val)
-{
-#ifdef __INTEL_COMPILER
-       return (gpointer)_InterlockedExchange64 ((gint64*)dest, (gint64)new_val);
-#else
-       gpointer res;
-
-       do {
-               res = *dest;
-       } while (InterlockedCompareExchangePointer (dest, new_val, res) != res);
-
-       return res;
-#endif
-}
-
-static inline gint32 InterlockedExchangeAdd(gint32 volatile *val, gint32 add)
-{
-       gint32 old;
-
-#ifdef __INTEL_COMPILER
-       old = _InterlockedExchangeAdd (val, add);
-#else
-       do {
-               old = *val;
-       } while (InterlockedCompareExchange (val, old + add, old) != old);
-
-       return old;
-#endif
-}
-
-#elif defined(__mips__)
-#define WAPI_ATOMIC_ASM
-
-#if SIZEOF_REGISTER == 8
-#error "Not implemented."
-#endif
-
-static inline gint32 InterlockedIncrement(volatile gint32 *val)
-{
-       gint32 tmp, result = 0;
-
-       __asm__ __volatile__ ("    .set    mips32\n"
-                             "1:  ll      %0, %2\n"
-                             "    addu    %1, %0, 1\n"
-                              "    sc      %1, %2\n"
-                             "    beqz    %1, 1b\n"
-                             "    .set    mips0\n"
-                             : "=&r" (result), "=&r" (tmp), "=m" (*val)
-                             : "m" (*val));
-       return result + 1;
-}
-
-static inline gint32 InterlockedDecrement(volatile gint32 *val)
-{
-       gint32 tmp, result = 0;
-
-       __asm__ __volatile__ ("    .set    mips32\n"
-                             "1:  ll      %0, %2\n"
-                             "    subu    %1, %0, 1\n"
-                              "    sc      %1, %2\n"
-                             "    beqz    %1, 1b\n"
-                             "    .set    mips0\n"
-                             : "=&r" (result), "=&r" (tmp), "=m" (*val)
-                             : "m" (*val));
-       return result - 1;
-}
-
-static inline gint32 InterlockedCompareExchange(volatile gint32 *dest,
-                                               gint32 exch, gint32 comp) {
-       gint32 old, tmp;
-
-       __asm__ __volatile__ ("    .set    mips32\n"
-                             "1:  ll      %0, %2\n"
-                             "    bne     %0, %5, 2f\n"
-                             "    move    %1, %4\n"
-                              "    sc      %1, %2\n"
-                             "    beqz    %1, 1b\n"
-                             "2:  .set    mips0\n"
-                             : "=&r" (old), "=&r" (tmp), "=m" (*dest)
-                             : "m" (*dest), "r" (exch), "r" (comp));
-       return(old);
-}
-
-static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer exch, gpointer comp)
-{
-       return (gpointer)(InterlockedCompareExchange((volatile gint32 *)(dest), (gint32)(exch), (gint32)(comp)));
-}
-
-static inline gint32 InterlockedExchange(volatile gint32 *dest, gint32 exch)
-{
-       gint32 result, tmp;
-
-       __asm__ __volatile__ ("    .set    mips32\n"
-                             "1:  ll      %0, %2\n"
-                             "    move    %1, %4\n"
-                              "    sc      %1, %2\n"
-                             "    beqz    %1, 1b\n"
-                             "    .set    mips0\n"
-                             : "=&r" (result), "=&r" (tmp), "=m" (*dest)
-                             : "m" (*dest), "r" (exch));
-       return(result);
-}
-
-static inline gpointer InterlockedExchangePointer(volatile gpointer *dest, gpointer exch)
-{
-       return (gpointer)InterlockedExchange((volatile gint32 *)(dest), (gint32)(exch));
-}
-
-static inline gint32 InterlockedExchangeAdd(volatile gint32 *dest, gint32 add)
-{
-        gint32 result, tmp;
-
-       __asm__ __volatile__ ("    .set    mips32\n"
-                             "1:  ll      %0, %2\n"
-                             "    addu    %1, %0, %4\n"
-                              "    sc      %1, %2\n"
-                             "    beqz    %1, 1b\n"
-                             "    .set    mips0\n"
-                             : "=&r" (result), "=&r" (tmp), "=m" (*dest)
-                             : "m" (*dest), "r" (add));
-        return result;
-}
-
-#else
-
-extern gint32 InterlockedCompareExchange(volatile gint32 *dest, gint32 exch, gint32 comp);
-extern gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer exch, gpointer comp);
-extern gint32 InterlockedIncrement(volatile gint32 *dest);
-extern gint32 InterlockedDecrement(volatile gint32 *dest);
-extern gint32 InterlockedExchange(volatile gint32 *dest, gint32 exch);
-extern gpointer InterlockedExchangePointer(volatile gpointer *dest, gpointer exch);
-extern gint32 InterlockedExchangeAdd(volatile gint32 *dest, gint32 add);
-
-#if defined(__hppa__)
-#define WAPI_ATOMIC_ASM
-#endif
-
-#endif
-
-#endif /* _WAPI_ATOMIC_H_ */
index 9e118a35814f4cba69c91001c5868547a8b10914..9190d2d908707062bb63581e0946e65ab12f45a7 100644 (file)
@@ -17,6 +17,7 @@
 #include <mono/io-layer/wapi.h>
 #include <mono/io-layer/collection.h>
 #include <mono/io-layer/handles-private.h>
+#include <mono/utils/atomic.h>
 
 #if 0
 // #define DEBUG(...) g_message(__VA_ARGS__)
index 44ce544d35b2e688fe8f8d6997eebb6670b09229..d9ba58bd859b9cf27b54931dd8a1ae72dcd371ac 100644 (file)
 #include <mono/io-layer/wapi.h>
 #include <mono/io-layer/critical-section-private.h>
 
-#include "mono-mutex.h"
+#include <mono/utils/mono-mutex.h>
 
 /* A critical section is really just like a lightweight mutex. It
  * can't be waited for, and doesn't have a handle.
  */
 
-/* According to the MSDN docs, the Microsoft implementation spins a
- * number of times then waits for a semaphore.  I could implement that
- * here but I'd need a mutex around the critical section structure
- * anyway.  So I may as well just use a pthread mutex.
- */
-static mono_once_t attr_key_once=MONO_ONCE_INIT;
-static mono_mutexattr_t attr;
-
-static void attr_init(void)
-{
-       int ret;
-       
-       ret = mono_mutexattr_init(&attr);
-       g_assert (ret == 0);
-       
-       ret = mono_mutexattr_settype(&attr, MONO_MUTEX_RECURSIVE);
-       g_assert (ret == 0);
-}
-
-void _wapi_critical_section_cleanup (void)
-{
-       mono_mutexattr_destroy (&attr);
-}
-
 /**
  * InitializeCriticalSection:
  * @section: The critical section to initialise
@@ -55,8 +31,7 @@ void InitializeCriticalSection(WapiCriticalSection *section)
 {
        int ret;
        
-       mono_once(&attr_key_once, attr_init);
-       ret = mono_mutex_init(&section->mutex, &attr);
+       ret = mono_mutex_init_recursive (&section->mutex);
        g_assert (ret == 0);
 }
 
index 6926e7687c7c518a0dfd5df9570a6b8a90bfa90c..aa7bad248be58a1c2d255d99a110cf80c4595370 100644 (file)
@@ -13,7 +13,7 @@
 #include <glib.h>
 #include <pthread.h>
 
-#include "mono-mutex.h"
+#include <mono/utils/mono-mutex.h>
 
 G_BEGIN_DECLS
 
index 04ef0782b2c9f1e4c461ae06bfd04d4f6b964fdf..e45fff4bcdda3efa2f323e8b5f72240d22b18683 100644 (file)
@@ -180,6 +180,9 @@ errno_to_WSA (guint32 code, const gchar *function_name)
 #ifdef EHOSTDOWN
        case EHOSTDOWN: result = WSAEHOSTDOWN; break;
 #endif
+#ifdef ENETDOWN
+       case ENETDOWN: result = WSAENETDOWN; break;
+#endif 
        case ENODEV: result = WSAENETDOWN; break;
        default:
                sys_error = strerror (code);
index aa61229e46799889b0a37f1ac4a9965f7b24505a..5b3ec44b193410d51fe8ebd500e2035ba0c1b56a 100644 (file)
@@ -14,7 +14,7 @@
 #include <glib.h>
 #include <pthread.h>
 
-#include <mono/io-layer/mono-mutex.h>
+#include <mono/utils/mono-mutex.h>
 
 extern struct _WapiHandleOps _wapi_event_ops;
 extern struct _WapiHandleOps _wapi_namedevent_ops;
index 5c072aafd9ef1603b820fe03904df144d29a3363..fa3ae9d637c6f1469fa08e95e3f4a4d25426420c 100644 (file)
 #include <mono/io-layer/handles-private.h>
 #include <mono/io-layer/misc-private.h>
 
-#include <mono/io-layer/mono-mutex.h>
-
 #include <mono/io-layer/event-private.h>
 
+#include <mono/utils/mono-mutex.h>
 #if 0
 #define DEBUG(...) g_message(__VA_ARGS__)
 #else
index 5949b3a06bea3a6e3edc66808baa888754922fc9..2c046cff891d426a2bee5b1a5f2d1a6eb30496e7 100644 (file)
@@ -13,7 +13,6 @@
 #include <config.h>
 #include <glib.h>
 #include <errno.h>
-#include <signal.h>
 #include <string.h>
 #include <sys/types.h>
 
@@ -21,6 +20,7 @@
 #include <mono/io-layer/misc-private.h>
 #include <mono/io-layer/collection.h>
 #include <mono/io-layer/shared.h>
+#include <mono/utils/atomic.h>
 
 #define _WAPI_PRIVATE_MAX_SLOTS                (1024 * 16)
 #define _WAPI_PRIVATE_HANDLES(x) (_wapi_private_handles [x / _WAPI_HANDLE_INITIAL_COUNT][x % _WAPI_HANDLE_INITIAL_COUNT])
index cab7e849c6a2ac324da3d52fbf5b0367d242b670..e64a437be7f514ec96c001998e263e76322d574f 100644 (file)
@@ -13,6 +13,7 @@
 #include <pthread.h>
 #include <errno.h>
 #include <unistd.h>
+#include <signal.h>
 #include <string.h>
 #include <sys/types.h>
 #ifdef HAVE_SYS_SOCKET_H
 #include <mono/io-layer/wapi.h>
 #include <mono/io-layer/wapi-private.h>
 #include <mono/io-layer/handles-private.h>
-#include <mono/io-layer/mono-mutex.h>
 #include <mono/io-layer/misc-private.h>
 #include <mono/io-layer/shared.h>
 #include <mono/io-layer/collection.h>
 #include <mono/io-layer/process-private.h>
 #include <mono/io-layer/critical-section-private.h>
 
+#include <mono/utils/mono-mutex.h>
 #undef DEBUG_REFS
 
 #if 0
@@ -173,7 +174,7 @@ pid_t _wapi_getpid (void)
 }
 
 
-static mono_mutex_t scan_mutex = MONO_MUTEX_INITIALIZER;
+static mono_mutex_t scan_mutex;
 
 static void handle_cleanup (void)
 {
@@ -279,12 +280,15 @@ wapi_init (void)
        if (_wapi_shm_enabled ())
                _wapi_collection_init ();
 #endif
+       _wapi_io_init ();
+       mono_mutex_init (&scan_mutex);
 
        _wapi_global_signal_handle = _wapi_handle_new (WAPI_HANDLE_EVENT, NULL);
 
        _wapi_global_signal_cond = &_WAPI_PRIVATE_HANDLES (GPOINTER_TO_UINT (_wapi_global_signal_handle)).signal_cond;
        _wapi_global_signal_mutex = &_WAPI_PRIVATE_HANDLES (GPOINTER_TO_UINT (_wapi_global_signal_handle)).signal_mutex;
 
+
        /* Using g_atexit here instead of an explicit function call in
         * a cleanup routine lets us cope when a third-party library
         * calls exit (eg if an X client loses the connection to its
@@ -300,7 +304,6 @@ wapi_cleanup (void)
        
        _wapi_has_shut_down = TRUE;
 
-       _wapi_critical_section_cleanup ();
        _wapi_error_cleanup ();
        _wapi_thread_cleanup ();
 }
@@ -336,7 +339,7 @@ static void _wapi_handle_init (struct _WapiHandleUnshared *handle,
                thr_ret = pthread_cond_init (&handle->signal_cond, NULL);
                g_assert (thr_ret == 0);
                                
-               thr_ret = mono_mutex_init (&handle->signal_mutex, NULL);
+               thr_ret = mono_mutex_init (&handle->signal_mutex);
                g_assert (thr_ret == 0);
 
                if (handle_specific != NULL) {
@@ -1761,6 +1764,9 @@ gboolean _wapi_handle_get_or_set_share (dev_t device, ino_t inode,
  */
 static void _wapi_handle_check_share_by_pid (struct _WapiFileShare *share_info)
 {
+#if defined(__native_client__)
+       g_assert_not_reached ();
+#else
        if (kill (share_info->opened_by_pid, 0) == -1 &&
            (errno == ESRCH ||
             errno == EPERM)) {
@@ -1772,6 +1778,7 @@ static void _wapi_handle_check_share_by_pid (struct _WapiFileShare *share_info)
 
                _wapi_free_share_info (share_info);
        }
+#endif
 }
 
 #ifdef __linux__
index 2c62d7183d675f24483b8fde9260add76c37164d..014c9a9738295a6c149e877e5c2b5aedf2ac072e 100644 (file)
@@ -36,4 +36,8 @@
 #include "mono/io-layer/uglify.h"
 #endif /* HOST_WIN32 */
 
+#ifdef __native_client__
+#include "mono/metadata/nacl-stub.h"
+#endif
+
 #endif /* _MONO_IOLAYER_IOLAYER_H_ */
index ee56ec26e2179944d20a97f398fd33249ed5f857..b9674955380f25eadf513556862ec3e54f9ea919 100644 (file)
 #include <utime.h>
 #include <sys/stat.h>
 
-#include <mono/io-layer/mono-mutex.h>
 #include <mono/io-layer/error.h>
 #include <mono/io-layer/wapi_glob.h>
 #include <mono/io-layer/io-portability.h>
 #include <mono/utils/mono-io-portability.h>
+
+#include <mono/utils/mono-mutex.h>
+
 #undef DEBUG
 
 int _wapi_open (const char *pathname, int flags, mode_t mode)
index 3e61f0cfbbd9eada6d0323ce76ecb52cb7e3f411..579c48dd89ed4fbd4cf3af2c99aecb7ac8e90307 100755 (executable)
@@ -708,6 +708,8 @@ static gboolean file_setendoffile(gpointer handle)
        }
 #endif
 
+/* Native Client has no ftruncate function, even in standalone sel_ldr. */
+#ifndef __native_client__
        /* always truncate, because the extend write() adds an extra
         * byte to the end of the file
         */
@@ -722,6 +724,7 @@ static gboolean file_setendoffile(gpointer handle)
                _wapi_set_last_error_from_errno ();
                return(FALSE);
        }
+#endif
                
        return(TRUE);
 }
@@ -1512,6 +1515,13 @@ gpointer CreateFile(const gunichar2 *name, guint32 fileaccess,
                
                return(INVALID_HANDLE_VALUE);
        }
+#ifdef __native_client__
+       /* Workaround: Native Client currently returns the same fake inode
+        * for all files, so do a simple hash on the filename so we don't
+        * use the same share info for each file.
+        */
+       statbuf.st_ino = g_str_hash(filename);
+#endif
 
        if (share_check (&statbuf, sharemode, fileaccess,
                         &file_handle.share_info, fd) == FALSE) {
@@ -2067,7 +2077,7 @@ replace_cleanup:
  * Return value: the handle, or %INVALID_HANDLE_VALUE on error
  */
 
-static mono_mutex_t stdhandle_mutex = MONO_MUTEX_INITIALIZER;
+static mono_mutex_t stdhandle_mutex;
 
 gpointer GetStdHandle(WapiStdHandle stdhandle)
 {
@@ -2746,6 +2756,7 @@ retry:
                goto retry;
        }
 
+#ifndef __native_client__
        result = _wapi_lstat (filename, &linkbuf);
        if (result != 0) {
                DEBUG ("%s: lstat failed: %s", __func__, filename);
@@ -2753,6 +2764,7 @@ retry:
                g_free (filename);
                goto retry;
        }
+#endif
 
        utf8_filename = mono_utf8_from_external (filename);
        if (utf8_filename == NULL) {
@@ -2776,7 +2788,11 @@ retry:
        else
                create_time = buf.st_ctime;
        
+#ifdef __native_client__
+       find_data->dwFileAttributes = _wapi_stat_to_file_attributes (utf8_filename, &buf, NULL);
+#else
        find_data->dwFileAttributes = _wapi_stat_to_file_attributes (utf8_filename, &buf, &linkbuf);
+#endif
 
        _wapi_time_t_to_filetime (create_time, &find_data->ftCreationTime);
        _wapi_time_t_to_filetime (buf.st_atime, &find_data->ftLastAccessTime);
@@ -2999,14 +3015,20 @@ guint32 GetFileAttributes (const gunichar2 *name)
                return (INVALID_FILE_ATTRIBUTES);
        }
 
+#ifndef __native_client__
        result = _wapi_lstat (utf8_name, &linkbuf);
        if (result != 0) {
                _wapi_set_last_path_error_from_errno (NULL, utf8_name);
                g_free (utf8_name);
                return (INVALID_FILE_ATTRIBUTES);
        }
+#endif
        
+#ifdef __native_client__
+       ret = _wapi_stat_to_file_attributes (utf8_name, &buf, NULL);
+#else
        ret = _wapi_stat_to_file_attributes (utf8_name, &buf, &linkbuf);
+#endif
        
        g_free (utf8_name);
 
@@ -3203,6 +3225,12 @@ extern guint32 GetCurrentDirectory (guint32 length, gunichar2 *buffer)
        glong count;
        gsize bytes;
 
+#ifdef __native_client__
+       gchar *path = g_get_current_dir ();
+       if (length < strlen(path) + 1 || path == NULL)
+               return 0;
+       memcpy (buffer, path, strlen(path) + 1);
+#else
        if (getcwd ((char*)buffer, length) == NULL) {
                if (errno == ERANGE) { /*buffer length is not big enough */ 
                        gchar *path = g_get_current_dir (); /*FIXME g_get_current_dir doesn't work with broken paths and calling it just to know the path length is silly*/
@@ -3216,6 +3244,7 @@ extern guint32 GetCurrentDirectory (guint32 length, gunichar2 *buffer)
                _wapi_set_last_error_from_errno ();
                return 0;
        }
+#endif
 
        utf16_path = mono_unicode_from_external ((gchar*)buffer, &bytes);
        count = (bytes/2)+1;
@@ -4227,3 +4256,10 @@ GetVolumeInformation (const gunichar2 *path, gunichar2 *volumename, int volumesi
        return status;
 }
 #endif
+
+
+void
+_wapi_io_init (void)
+{
+       mono_mutex_init (&stdhandle_mutex);
+}
index 6d7c6f575c412a4386d4473f7a7178b4f9305906..e8627764812f3e98632ca244254d96fa7efc823d 100644 (file)
@@ -224,6 +224,9 @@ extern gboolean UnlockFile (gpointer handle, guint32 offset_low,
                            guint32 length_high);
 extern gboolean GetVolumeInformation (const gunichar2 *path, gunichar2 *volumename, int volumesize, int *outserial, int *maxcomp, int *fsflags, gunichar2 *fsbuffer, int fsbuffersize);
 
+
+extern void _wapi_io_init (void);
+
 G_END_DECLS
 
 #endif /* _WAPI_IO_H_ */
index b8e08b3d36f475d1a7e7be888629155979a8632f..f2fd8a422b90115200cee95bef33423e9231bffa 100644 (file)
 
 #include <glib.h>
 
+#if defined(__native_client__)
+#include <mono/metadata/nacl-stub.h>
+#endif
+
 #define MAKEWORD(low, high) ((guint16)(((guint8)(low)) | \
                                       ((guint16)((guint8)(high))) << 8))
 #define MAKELONG(low, high) ((guint32)(((guint16)(low)) | \
diff --git a/mono/io-layer/mono-mutex.c b/mono/io-layer/mono-mutex.c
deleted file mode 100644 (file)
index f5152c2..0000000
+++ /dev/null
@@ -1,357 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * mono-mutex.h: Portability wrappers around POSIX Mutexes
- *
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2002 Ximian, Inc. (www.ximian.com)
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <assert.h>
-#include <sys/time.h>
-
-#include "mono-mutex.h"
-
-
-#ifndef HAVE_PTHREAD_MUTEX_TIMEDLOCK
-/* Android does not implement pthread_mutex_timedlock(), but does provide an
- * unusual declaration: http://code.google.com/p/android/issues/detail?id=7807
- */
-#ifdef PLATFORM_ANDROID
-#define CONST_NEEDED
-#else
-#define CONST_NEEDED const
-#endif
-
-int pthread_mutex_timedlock (pthread_mutex_t *mutex,
-                           CONST_NEEDED struct timespec *timeout);
-int
-pthread_mutex_timedlock (pthread_mutex_t *mutex, CONST_NEEDED struct timespec *timeout)
-{
-       struct timeval timenow;
-       struct timespec sleepytime;
-       int retcode;
-       
-       /* This is just to avoid a completely busy wait */
-       sleepytime.tv_sec = 0;
-       sleepytime.tv_nsec = 10000000;  /* 10ms */
-       
-       while ((retcode = pthread_mutex_trylock (mutex)) == EBUSY) {
-               gettimeofday (&timenow, NULL);
-               
-               if (timenow.tv_sec >= timeout->tv_sec &&
-                   (timenow.tv_usec * 1000) >= timeout->tv_nsec) {
-                       return ETIMEDOUT;
-               }
-               
-               nanosleep (&sleepytime, NULL);
-       }
-       
-       return retcode;
-}
-#endif /* HAVE_PTHREAD_MUTEX_TIMEDLOCK */
-
-
-int
-mono_once (mono_once_t *once, void (*once_init) (void))
-{
-       int thr_ret;
-       
-       if (!once->complete) {
-               pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
-                                     (void *)&once->mutex);
-               thr_ret = pthread_mutex_lock (&once->mutex);
-               g_assert (thr_ret == 0);
-               
-               if (!once->complete) {
-                       once_init ();
-                       once->complete = TRUE;
-               }
-               thr_ret = pthread_mutex_unlock (&once->mutex);
-               g_assert (thr_ret == 0);
-               
-               pthread_cleanup_pop (0);
-       }
-       
-       return 0;
-}
-
-
-#ifdef USE_MONO_MUTEX
-
-int
-mono_mutexattr_init (mono_mutexattr_t *attr)
-{
-       memset (attr, 0, sizeof (mono_mutexattr_t));
-       return 0;
-}
-
-int
-mono_mutexattr_settype (mono_mutexattr_t *attr, int type)
-{
-       attr->type = type;
-       return 0;
-}
-
-int
-mono_mutexattr_gettype (mono_mutexattr_t *attr, int *type)
-{
-       *type = attr->type;
-       return 0;
-}
-
-int
-mono_mutexattr_setpshared (mono_mutexattr_t *attr, int pshared)
-{
-       attr->shared = pshared;
-       return 0;
-}
-
-int
-mono_mutexattr_getpshared (mono_mutexattr_t *attr, int *pshared)
-{
-       *pshared = attr->shared;
-       return 0;
-}
-
-int
-mono_mutexattr_setprotocol (mono_mutexattr_t *attr, int protocol)
-{
-       attr->protocol = protocol;
-       return 0;
-}
-
-int
-mono_mutexattr_getprotocol (mono_mutexattr_t *attr, int *protocol)
-{
-       *protocol = attr->protocol;
-       return 0;
-}
-
-int
-mono_mutexattr_setprioceiling (mono_mutexattr_t *attr, int prioceiling)
-{
-       attr->priority = prioceiling;
-       return 0;
-}
-
-int
-mono_mutexattr_getprioceiling (mono_mutexattr_t *attr, int *prioceiling)
-{
-       *prioceiling = attr->priority;
-       return 0;
-}
-
-int
-mono_mutexattr_destroy (mono_mutexattr_t *attr)
-{
-       return 0;
-}
-
-
-int
-mono_mutex_init (mono_mutex_t *mutex, const mono_mutexattr_t *attr)
-{
-       int ret;
-       int thr_ret;
-       
-       mutex->waiters = 0;
-       mutex->depth = 0;
-       mutex->owner = MONO_THREAD_NONE;
-       
-       if (!attr || attr->type == MONO_MUTEX_NORMAL) {
-               mutex->type = MONO_MUTEX_NORMAL;
-               ret = pthread_mutex_init (&mutex->mutex, NULL);
-       } else {
-               mutex->type = MONO_MUTEX_RECURSIVE;
-               ret = pthread_mutex_init (&mutex->mutex, NULL);
-               thr_ret = pthread_cond_init (&mutex->cond, NULL);
-               g_assert (thr_ret == 0);
-       }
-       
-       return(ret);
-}
-
-int
-mono_mutex_lock (mono_mutex_t *mutex)
-{
-       pthread_t id;
-       
-       switch (mutex->type) {
-       case MONO_MUTEX_NORMAL:
-               return pthread_mutex_lock (&mutex->mutex);
-       case MONO_MUTEX_RECURSIVE:
-               id = pthread_self ();
-               if (pthread_mutex_lock (&mutex->mutex) != 0)
-                       return EINVAL;
-               
-               while (1) {
-                       if (pthread_equal (mutex->owner, MONO_THREAD_NONE)) {
-                               mutex->owner = id;
-                               mutex->depth = 1;
-                               break;
-                       } else if (pthread_equal (mutex->owner, id)) {
-                               mutex->depth++;
-                               break;
-                       } else {
-                               mutex->waiters++;
-                               if (pthread_cond_wait (&mutex->cond, &mutex->mutex) != 0)
-                                       return EINVAL;
-                               mutex->waiters--;
-                       }
-               }
-               
-               return pthread_mutex_unlock (&mutex->mutex);
-       }
-       
-       return EINVAL;
-}
-
-int
-mono_mutex_trylock (mono_mutex_t *mutex)
-{
-       pthread_t id;
-       
-       switch (mutex->type) {
-       case MONO_MUTEX_NORMAL:
-               return pthread_mutex_trylock (&mutex->mutex);
-       case MONO_MUTEX_RECURSIVE:
-               id = pthread_self ();
-               
-               if (pthread_mutex_lock (&mutex->mutex) != 0)
-                       return EINVAL;
-               
-               if (!pthread_equal (mutex->owner, MONO_THREAD_NONE) &&
-                   !pthread_equal (mutex->owner, id)) {
-                       pthread_mutex_unlock (&mutex->mutex);
-                       return EBUSY;
-               }
-               
-               while (1) {
-                       if (pthread_equal (mutex->owner, MONO_THREAD_NONE)) {
-                               mutex->owner = id;
-                               mutex->depth = 1;
-                               break;
-                       } else {
-                               mutex->depth++;
-                               break;
-                       }
-               }
-               
-               return pthread_mutex_unlock (&mutex->mutex);
-       }
-       
-       return EINVAL;
-}
-
-int
-mono_mutex_timedlock (mono_mutex_t *mutex, const struct timespec *timeout)
-{
-       pthread_t id;
-       
-       switch (mutex->type) {
-       case MONO_MUTEX_NORMAL:
-               return pthread_mutex_timedlock (&mutex->mutex, timeout);
-       case MONO_MUTEX_RECURSIVE:
-               id = pthread_self ();
-               
-               if (pthread_mutex_timedlock (&mutex->mutex, timeout) != 0)
-                       return ETIMEDOUT;
-               
-               while (1) {
-                       if (pthread_equal (mutex->owner, MONO_THREAD_NONE)) {
-                               mutex->owner = id;
-                               mutex->depth = 1;
-                               break;
-                       } else if (pthread_equal (mutex->owner, id)) {
-                               mutex->depth++;
-                               break;
-                       } else {
-                               mutex->waiters++;
-                               if (pthread_cond_timedwait (&mutex->cond, &mutex->mutex, timeout) != 0)
-                                       return ETIMEDOUT;
-                               mutex->waiters--;
-                       }
-               }
-               
-               return pthread_mutex_unlock (&mutex->mutex);
-       }
-       
-       return EINVAL;
-}
-
-int
-mono_mutex_unlock (mono_mutex_t *mutex)
-{
-       int thr_ret;
-       
-       switch (mutex->type) {
-       case MONO_MUTEX_NORMAL:
-               return pthread_mutex_unlock (&mutex->mutex);
-       case MONO_MUTEX_RECURSIVE:
-               if (pthread_mutex_lock (&mutex->mutex) != 0)
-                       return EINVAL;
-               
-               if (pthread_equal (mutex->owner, pthread_self())) {
-                       /* Not owned by this thread */
-                       pthread_mutex_unlock (&mutex->mutex);
-                       return EPERM;
-               }
-               
-               mutex->depth--;
-               if (mutex->depth == 0) {
-                       mutex->owner = MONO_THREAD_NONE;
-                       if (mutex->waiters > 0) {
-                               thr_ret = pthread_cond_signal (&mutex->cond);
-                               g_assert (thr_ret == 0);
-                       }
-               }
-               
-               return pthread_mutex_unlock (&mutex->mutex);
-       }
-       
-       return EINVAL;
-}
-
-int
-mono_mutex_destroy (mono_mutex_t *mutex)
-{
-       int ret = 0;
-       int thr_ret;
-       
-       switch (mutex->type) {
-       case MONO_MUTEX_NORMAL:
-               ret = pthread_mutex_destroy (&mutex->mutex);
-               break;
-       case MONO_MUTEX_RECURSIVE:
-               if ((ret = pthread_mutex_destroy (&mutex->mutex)) == 0) {
-                       thr_ret = pthread_cond_destroy (&mutex->cond);
-                       g_assert (thr_ret == 0);
-               }
-       }
-       
-       return ret;
-}
-
-
-int
-mono_cond_wait (pthread_cond_t *cond, mono_mutex_t *mutex)
-{
-       return pthread_cond_wait (cond, &mutex->mutex);
-}
-
-int
-mono_cond_timedwait (pthread_cond_t *cond, mono_mutex_t *mutex, const struct timespec *timeout)
-{
-       return pthread_cond_timedwait (cond, &mutex->mutex, timeout);
-}
-
-#endif /* USE_MONO_MUTEX */
diff --git a/mono/io-layer/mono-mutex.h b/mono/io-layer/mono-mutex.h
deleted file mode 100644 (file)
index b01c4fe..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * mono-mutex.h: Portability wrappers around POSIX Mutexes
- *
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2002 Ximian, Inc. (www.ximian.com)
- */
-
-
-#ifndef __MONO_MUTEX_H__
-#define __MONO_MUTEX_H__
-
-#include <glib.h>
-#ifdef HAVE_PTHREAD_H
-#include <pthread.h>
-#endif
-#include <time.h>
-
-G_BEGIN_DECLS
-
-#ifndef HOST_WIN32
-
-typedef struct {
-       pthread_mutex_t mutex;
-       gboolean complete;
-} mono_once_t;
-
-#define MONO_ONCE_INIT { PTHREAD_MUTEX_INITIALIZER, FALSE }
-
-int mono_once (mono_once_t *once, void (*once_init) (void));
-
-
-#ifdef USE_MONO_MUTEX
-
-#define MONO_THREAD_NONE ((pthread_t)~0)
-
-/* mutex types... */
-enum {
-       MONO_MUTEX_NORMAL,
-       MONO_MUTEX_RECURSIVE,
-       MONO_MUTEX_ERRORCHECK = MONO_MUTEX_NORMAL,
-       MONO_MUTEX_DEFAULT = MONO_MUTEX_NORMAL
-};
-
-/* mutex protocol attributes... */
-enum {
-       MONO_THREAD_PRIO_NONE,
-       MONO_THREAD_PRIO_INHERIT,
-       MONO_THREAD_PRIO_PROTECT,
-};
-
-/* mutex process sharing attributes... */
-enum {
-       MONO_THREAD_PROCESS_PRIVATE,
-       MONO_THREAD_PROCESS_SHARED
-};
-
-typedef struct _mono_mutexattr_t {
-       int type     : 1;
-       int shared   : 1;
-       int protocol : 2;
-       int priority : 28;
-} mono_mutexattr_t;
-
-typedef struct _mono_mutex_t {
-       int type;
-       pthread_t owner;
-       short waiters;
-       short depth;
-       pthread_mutex_t mutex;
-       pthread_cond_t cond;
-} mono_mutex_t;
-
-/* static initializers */
-#define MONO_MUTEX_INITIALIZER { 0, MONO_THREAD_NONE, 0, 0, PTHREAD_MUTEX_INITIALIZER, 0 }
-#define MONO_RECURSIVE_MUTEX_INITIALIZER { 0, MONO_THREAD_NONE, 0, 0, PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER }
-
-int mono_mutexattr_init (mono_mutexattr_t *attr);
-int mono_mutexattr_settype (mono_mutexattr_t *attr, int type);
-int mono_mutexattr_gettype (mono_mutexattr_t *attr, int *type);
-int mono_mutexattr_setpshared (mono_mutexattr_t *attr, int pshared);
-int mono_mutexattr_getpshared (mono_mutexattr_t *attr, int *pshared);
-int mono_mutexattr_setprotocol (mono_mutexattr_t *attr, int protocol);
-int mono_mutexattr_getprotocol (mono_mutexattr_t *attr, int *protocol);
-int mono_mutexattr_setprioceiling (mono_mutexattr_t *attr, int prioceiling);
-int mono_mutexattr_getprioceiling (mono_mutexattr_t *attr, int *prioceiling);
-int mono_mutexattr_destroy (mono_mutexattr_t *attr);
-
-
-int mono_mutex_init (mono_mutex_t *mutex, const mono_mutexattr_t *attr);
-int mono_mutex_lock (mono_mutex_t *mutex);
-int mono_mutex_trylock (mono_mutex_t *mutex);
-int mono_mutex_timedlock (mono_mutex_t *mutex, const struct timespec *timeout);
-int mono_mutex_unlock (mono_mutex_t *mutex);
-int mono_mutex_destroy (mono_mutex_t *mutex);
-
-#define mono_cond_init(cond,attr) pthread_cond_init (cond, attr)
-int mono_cond_wait (pthread_cond_t *cond, mono_mutex_t *mutex);
-int mono_cond_timedwait (pthread_cond_t *cond, mono_mutex_t *mutex, const struct timespec *timeout);
-#define mono_cond_signal(cond) pthread_cond_signal (cond)
-#define mono_cond_broadcast(cond) pthread_cond_broadcast (cond)
-#define mono_cond_destroy(cond)
-
-#else /* system is equipped with a fully-functional pthread mutex library */
-
-#define MONO_MUTEX_NORMAL             PTHREAD_MUTEX_NORMAL
-#define MONO_MUTEX_RECURSIVE          PTHREAD_MUTEX_RECURSIVE
-#define MONO_MUTEX_ERRORCHECK         PTHREAD_MUTEX_NORMAL
-#define MONO_MUTEX_DEFAULT            PTHREAD_MUTEX_NORMAL
-
-#define MONO_THREAD_PRIO_NONE         PTHREAD_PRIO_NONE
-#define MONO_THREAD_PRIO_INHERIT      PTHREAD_PRIO_INHERIT
-#define MONO_THREAD_PRIO_PROTECT      PTHREAD_PRIO_PROTECT
-
-#define MONO_THREAD_PROCESS_PRIVATE   PTHREAD_PROCESS_PRIVATE
-#define MONO_THREAD_PROCESS_SHARED    PTHREAD_PROCESS_SHARED
-
-typedef pthread_mutex_t mono_mutex_t;
-typedef pthread_mutexattr_t mono_mutexattr_t;
-typedef pthread_cond_t mono_cond_t;
-
-#define MONO_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
-#define MONO_RECURSIVE_MUTEX_INITIALIZER PTHREAD_RECURSIVE_MUTEX_INITIALIZER
-#define MONO_COND_INITIALIZER PTHREAD_COND_INITIALIZER
-
-#define mono_mutexattr_init(attr) pthread_mutexattr_init (attr)
-#define mono_mutexattr_settype(attr,type) pthread_mutexattr_settype (attr, type)
-#define mono_mutexattr_gettype(attr,type) pthread_mutexattr_gettype (attr, type)
-#define mono_mutexattr_setpshared(attr,pshared) pthread_mutexattr_setpshared (attr, pshared)
-#define mono_mutexattr_getpshared(attr,pshared) pthread_mutexattr_getpshared (attr, pshared)
-#define mono_mutexattr_setprotocol(attr,protocol) pthread_mutexattr_setprotocol (attr, protocol)
-#define mono_mutexattr_getprotocol(attr,protocol) pthread_mutexattr_getprotocol (attr, protocol)
-#define mono_mutexattr_setprioceiling(attr,prioceiling) pthread_mutexattr_setprioceiling (attr, prioceiling)
-#define mono_mutexattr_getprioceiling(attr,prioceiling) pthread_mutexattr_getprioceiling (attr, prioceiling)
-#define mono_mutexattr_destroy(attr) pthread_mutexattr_destroy (attr)
-
-#define mono_mutex_init(mutex,attr) pthread_mutex_init (mutex, attr)
-#define mono_mutex_lock(mutex) pthread_mutex_lock (mutex)
-#define mono_mutex_trylock(mutex) pthread_mutex_trylock (mutex)
-#define mono_mutex_timedlock(mutex,timeout) pthread_mutex_timedlock (mutex, timeout)
-#define mono_mutex_unlock(mutex) pthread_mutex_unlock (mutex)
-#define mono_mutex_destroy(mutex) pthread_mutex_destroy (mutex)
-
-#define mono_cond_init(cond,attr) pthread_cond_init (cond,attr)
-#define mono_cond_wait(cond,mutex) pthread_cond_wait (cond, mutex)
-#define mono_cond_timedwait(cond,mutex,timeout) pthread_cond_timedwait (cond, mutex, timeout)
-#define mono_cond_signal(cond) pthread_cond_signal (cond)
-#define mono_cond_broadcast(cond) pthread_cond_broadcast (cond)
-#define mono_cond_destroy(cond)
-
-#endif /* USE_MONO_MUTEX */
-
-/* This is a function so it can be passed to pthread_cleanup_push -
- * that is a macro and giving it a macro as a parameter breaks.
- */
-G_GNUC_UNUSED
-static inline int mono_mutex_unlock_in_cleanup (mono_mutex_t *mutex)
-{
-       return(mono_mutex_unlock (mutex));
-}
-
-#else
-
-typedef CRITICAL_SECTION mono_mutex_t;
-typedef HANDLE mono_cond_t;
-
-#define mono_mutex_init(mutex,attr) InitializeCriticalSection((mutex))
-#define mono_mutex_lock(mutex) EnterCriticalSection((mutex))
-#define mono_mutex_trylock(mutex) TryEnterCriticalSection((mutex))
-#define mono_mutex_unlock(mutex)  LeaveCriticalSection((mutex))
-#define mono_mutex_destroy(mutex) DeleteCriticalSection((mutex))
-
-
-#define mono_cond_init(cond,attr) do{*(cond) = CreateEvent(NULL,FALSE,FALSE,NULL); } while (0)
-#define mono_cond_wait(cond,mutex) WaitForSingleObject(*(cond),INFINITE)
-#define mono_cond_timedwait(cond,mutex,timeout) WaitForSingleObject(*(cond),timeout)
-#define mono_cond_signal(cond) SetEvent(*(cond))
-#define mono_cond_broadcast(cond) (!SetEvent(*(cond)))
-#define mono_cond_destroy(cond) CloseHandle(*(cond))
-
-#define MONO_COND_INITIALIZER NULL
-#endif
-
-G_END_DECLS
-
-#endif /* __MONO_MUTEX_H__ */
index 074a5f79672d717b5eabc53007cbad594f6aecea..7ef9c43e24b7df29ba52e572aceb9acf1fa0e07f 100644 (file)
@@ -17,8 +17,8 @@
 #include <mono/io-layer/wapi-private.h>
 #include <mono/io-layer/misc-private.h>
 #include <mono/io-layer/handles-private.h>
-#include <mono/io-layer/mono-mutex.h>
 #include <mono/io-layer/mutex-private.h>
+#include <mono/utils/mono-mutex.h>
 
 #if 0
 #define DEBUG(...) g_message(__VA_ARGS__)
index ab0f1195cf0cb88dba8707d7a342610a6ad11427..d29ea3c185cc4fd9bf9c24ec552492da97747d86 100644 (file)
@@ -68,7 +68,6 @@
 #include <mono/io-layer/wapi-private.h>
 #include <mono/io-layer/handles-private.h>
 #include <mono/io-layer/misc-private.h>
-#include <mono/io-layer/mono-mutex.h>
 #include <mono/io-layer/process-private.h>
 #include <mono/io-layer/threads.h>
 #include <mono/utils/strenc.h>
@@ -76,6 +75,7 @@
 #include <mono/io-layer/timefuncs-private.h>
 #include <mono/utils/mono-time.h>
 #include <mono/utils/mono-membar.h>
+#include <mono/utils/mono-mutex.h>
 
 /* The process' environment strings */
 #if defined(__APPLE__) && !defined (__arm__)
@@ -378,7 +378,8 @@ gboolean ShellExecuteEx (WapiShellExecuteInfo *sei)
                                     sei->lpDirectory, NULL, &process_info);
                g_free (args);
                if (!ret){
-                       SetLastError (ERROR_INVALID_DATA);
+                       if (GetLastError () != ERROR_OUTOFMEMORY)
+                               SetLastError (ERROR_INVALID_DATA);
                        return FALSE;
                }
        }
@@ -564,6 +565,7 @@ gboolean CreateProcess (const gunichar2 *appname, const gunichar2 *cmdline,
        int startup_pipe [2] = {-1, -1};
        int dummy;
        struct MonoProcess *mono_process;
+       gboolean fork_failed = FALSE;
        
        mono_once (&process_ops_once, process_ops_init);
        mono_once (&process_sig_chld_once, process_add_sigchld_handler);
@@ -965,14 +967,15 @@ gboolean CreateProcess (const gunichar2 *appname, const gunichar2 *cmdline,
        if (pid == -1) {
                /* Error */
                SetLastError (ERROR_OUTOFMEMORY);
-               _wapi_handle_unref (handle);
+               ret = FALSE;
+               fork_failed = TRUE;
                goto cleanup;
        } else if (pid == 0) {
                /* Child */
                
                if (startup_pipe [0] != -1) {
                        /* Wait until the parent has updated it's internal data */
-                       read (startup_pipe [0], &dummy, 1);
+                       ssize_t _i G_GNUC_UNUSED = read (startup_pipe [0], &dummy, 1);
                        DEBUG ("%s: child: parent has completed its setup", __func__);
                        close (startup_pipe [0]);
                        close (startup_pipe [1]);
@@ -1070,9 +1073,12 @@ gboolean CreateProcess (const gunichar2 *appname, const gunichar2 *cmdline,
 cleanup:
        _wapi_handle_unlock_shared_handles ();
 
+       if (fork_failed)
+               _wapi_handle_unref (handle);
+
        if (startup_pipe [1] != -1) {
                /* Write 1 byte, doesn't matter what */
-               write (startup_pipe [1], startup_pipe, 1);
+               ssize_t _i G_GNUC_UNUSED = write (startup_pipe [1], startup_pipe, 1);
                close (startup_pipe [0]);
                close (startup_pipe [1]);
        }
index 8b4bb0ebcca6599b727ef5feb5d3b1f6791dd09f..229e313070fafd1dca012819feedce3f8864e04a 100644 (file)
 #include <mono/io-layer/wapi-private.h>
 #include <mono/io-layer/misc-private.h>
 #include <mono/io-layer/handles-private.h>
-#include <mono/io-layer/mono-mutex.h>
 #include <mono/io-layer/semaphore-private.h>
 
+#include <mono/utils/mono-mutex.h>
+
 #if 0
 #define DEBUG(...) g_message(__VA_ARGS__)
 #else
index 9e70e8c5aec0da235fd4fd3bfa61a499e0eeabeb..26e6bd81d19b339069fb7da8c97fca69d21f593e 100644 (file)
@@ -18,7 +18,7 @@
 #include <string.h>
 #include <unistd.h>
 
-#ifdef HAVE_SYS_SEM_H
+#if defined(HAVE_SYS_SEM_H) && !(defined(__native_client__) && defined(__GLIBC__))
 #  include <sys/sem.h>
 #else
 #  define DISABLE_SHARED_HANDLES
@@ -51,10 +51,10 @@ static gpointer wapi_storage [16];
 static void
 noshm_semaphores_init (void)
 {
-       int i;
+       int i;
 
-       for (i = 0; i < _WAPI_SHARED_SEM_COUNT; i++) 
-               mono_mutex_init (&noshm_sems [i], NULL);
+       for (i = 0; i < _WAPI_SHARED_SEM_COUNT; i++) 
+               mono_mutex_init (&noshm_sems [i]);
 }
 
 static int
index 285a1798e743ea5830b977d38824340088af206e..a659d3763e80bdf39e8a7758d740738c36e937c1 100644 (file)
@@ -902,6 +902,7 @@ guint32 _wapi_socket(int domain, int type, int protocol, void *unused,
        if (fd == -1 && domain == AF_INET && type == SOCK_RAW &&
            protocol == 0) {
                /* Retry with protocol == 4 (see bug #54565) */
+               // https://bugzilla.novell.com/show_bug.cgi?id=MONO54565
                socket_handle.protocol = 4;
                fd = socket (AF_INET, SOCK_RAW, 4);
        }
@@ -927,6 +928,7 @@ guint32 _wapi_socket(int domain, int type, int protocol, void *unused,
 
        /* .net seems to set this by default for SOCK_STREAM, not for
         * SOCK_DGRAM (see bug #36322)
+        * https://bugzilla.novell.com/show_bug.cgi?id=MONO36322
         *
         * It seems winsock has a rather different idea of what
         * SO_REUSEADDR means.  If it's set, then a new socket can be
@@ -937,6 +939,7 @@ guint32 _wapi_socket(int domain, int type, int protocol, void *unused,
         * behaves as though any other system would when SO_REUSEADDR
         * is true, so we don't need to do anything else here.  See
         * bug 53992.
+        * https://bugzilla.novell.com/show_bug.cgi?id=MONO53992
         */
        {
                int ret, true = 1;
@@ -1291,13 +1294,13 @@ WSAIoctl (guint32 fd, gint32 command,
                        keepalivetime /= 1000;
                        if (keepalivetime == 0 || rem >= 500)
                                keepalivetime++;
-                       ret = setsockopt (fd, SOL_TCP, TCP_KEEPIDLE, &keepalivetime, sizeof (uint32_t));
+                       ret = setsockopt (fd, IPPROTO_TCP, TCP_KEEPIDLE, &keepalivetime, sizeof (uint32_t));
                        if (ret == 0) {
                                rem = keepaliveinterval % 1000;
                                keepaliveinterval /= 1000;
                                if (keepaliveinterval == 0 || rem >= 500)
                                        keepaliveinterval++;
-                               ret = setsockopt (fd, SOL_TCP, TCP_KEEPINTVL, &keepaliveinterval, sizeof (uint32_t));
+                               ret = setsockopt (fd, IPPROTO_TCP, TCP_KEEPINTVL, &keepaliveinterval, sizeof (uint32_t));
                        }
                        if (ret != 0) {
                                gint errnum = errno;
index 7981ef23466f4fd0d47701202822d1eee19d83f7..bae70ee147255a7b7216a9da7717e74188fa0257 100644 (file)
 #include <mono/io-layer/wapi.h>
 #include <mono/io-layer/handles-private.h>
 #include <mono/io-layer/wapi-private.h>
-#include <mono/io-layer/mono-mutex.h>
 #include <mono/io-layer/misc-private.h>
 
+#include <mono/utils/mono-mutex.h>
+
 #if 0
 #define DEBUG(...) g_message(__VA_ARGS__)
 #else
index bc98c870468c73e28a1e624880608d87051a8f15..db051decf8413e65468d0614bac5381d32376105 100644 (file)
@@ -15,7 +15,6 @@
 #include <mono/io-layer/handles.h>
 #include <mono/io-layer/io.h>
 #include <mono/io-layer/access.h>
-#include <mono/io-layer/atomic.h>
 #include <mono/io-layer/context.h>
 #include <mono/io-layer/critical-sections.h>
 #include <mono/io-layer/error.h>
index b5d6d6c551181d3a322bf3f8f49a783c6fec3b83..e623d71ce3142f7d6b6136fab960c61802f45631 100644 (file)
 #include <mono/io-layer/wapi-private.h>
 #include <mono/io-layer/handles-private.h>
 #include <mono/io-layer/misc-private.h>
-#include <mono/io-layer/mono-mutex.h>
 #include <mono/io-layer/thread-private.h>
 #include <mono/io-layer/mutex-private.h>
-#include <mono/io-layer/atomic.h>
 
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/gc_wrapper.h>
+#include <mono/utils/atomic.h>
+#include <mono/utils/mono-mutex.h>
 
 #ifdef HAVE_VALGRIND_MEMCHECK_H
 #include <valgrind/memcheck.h>
@@ -198,8 +198,14 @@ void _wapi_thread_signal_self (guint32 exitstatus)
  * by ExitThread()
 */
 static void thread_exit (guint32 exitstatus, gpointer handle) G_GNUC_NORETURN;
+#if defined(__native_client__)
+void nacl_shutdown_gc_thread(void);
+#endif
 static void thread_exit (guint32 exitstatus, gpointer handle)
 {
+#if defined(__native_client__)
+       nacl_shutdown_gc_thread();
+#endif
        _wapi_thread_set_termination_details (handle, exitstatus);
        
        /* Call pthread_exit() to call destructors and really exit the
@@ -980,7 +986,7 @@ void wapi_interrupt_thread (gpointer thread_handle)
                /* Try again */
        }
 
-       WAIT_DEBUG (printf ("%p: state -> INTERRUPTED.\n", thread_handle->id););
+       WAIT_DEBUG (printf ("%p: state -> INTERRUPTED.\n", thread->id););
 
        if (!wait_handle)
                /* Not waiting */
@@ -1034,7 +1040,7 @@ gpointer wapi_prepare_interrupt_thread (gpointer thread_handle)
                /* Try again */
        }
 
-       WAIT_DEBUG (printf ("%p: state -> INTERRUPTED.\n", thread_handle->id););
+       WAIT_DEBUG (printf ("%p: state -> INTERRUPTED.\n", thread->id););
 
        return wait_handle;
 }
index fdf0a99143a8cd4191f1b8ccea8b084ae4dc1c2d..0b5cfe5ffe1fdaf3c3bee441d4824af18c0694bd 100644 (file)
@@ -343,3 +343,8 @@ endif
 EXTRA_DIST = make-bundle.pl sample-bundle $(win32_sources) $(unix_sources) $(null_sources) runtime.h \
                tpool-poll.c tpool-epoll.c tpool-kqueue.c Makefile.am.in
 
+if HAS_EXTENSION_MODULE
+else
+Makefile.am: Makefile.am.in
+       cp $< $@
+endif
index a5acdb14639c061746e00721648f0856c9af6935..e12c117ee7634fad6b26617c19494f0150a09f2e 100644 (file)
@@ -60,6 +60,8 @@
 #include <mono/utils/mono-stdlib.h>
 #include <mono/utils/mono-io-portability.h>
 #include <mono/utils/mono-error-internals.h>
+#include <mono/utils/atomic.h>
+#include <mono/utils/mono-memory-model.h>
 #ifdef HOST_WIN32
 #include <direct.h>
 #endif
@@ -92,8 +94,6 @@ CRITICAL_SECTION mono_strtod_mutex;
 static gunichar2 process_guid [36];
 static gboolean process_guid_set = FALSE;
 
-static gboolean shutting_down = FALSE;
-
 static gboolean no_exec = FALSE;
 
 static MonoAssembly *
@@ -347,8 +347,6 @@ mono_context_init (MonoDomain *domain)
 void
 mono_runtime_cleanup (MonoDomain *domain)
 {
-       shutting_down = TRUE;
-
        mono_attach_cleanup ();
 
        /* This ends up calling any pending pending (for at most 2 seconds) */
@@ -381,33 +379,6 @@ mono_runtime_quit ()
                quit_function (mono_get_root_domain (), NULL);
 }
 
-/** 
- * mono_runtime_set_shutting_down:
- *
- * Invoked by System.Environment.Exit to flag that the runtime
- * is shutting down.
- */
-void
-mono_runtime_set_shutting_down (void)
-{
-       shutting_down = TRUE;
-}
-
-/**
- * mono_runtime_is_shutting_down:
- *
- * Returns whether the runtime has been flagged for shutdown.
- *
- * This is consumed by the P:System.Environment.HasShutdownStarted
- * property.
- *
- */
-gboolean
-mono_runtime_is_shutting_down (void)
-{
-       return shutting_down;
-}
-
 /**
  * mono_domain_create_appdomain:
  * @friendly_name: The friendly name of the appdomain to create
@@ -2011,6 +1982,9 @@ ves_icall_System_AppDomain_InternalUnload (gint32 domain_id)
         */
        if (g_getenv ("MONO_NO_UNLOAD"))
                return;
+#ifdef __native_client__
+       return;
+#endif
 
        mono_domain_unload (domain);
 }
@@ -2196,10 +2170,26 @@ zero_static_data (MonoVTable *vtable)
 }
 
 typedef struct unload_data {
+       gboolean done;
        MonoDomain *domain;
        char *failure_reason;
+       gint32 refcount;
 } unload_data;
 
+static void
+unload_data_unref (unload_data *data)
+{
+       gint32 count;
+       do {
+               mono_atomic_load_acquire (count, gint32, &data->refcount);
+               g_assert (count >= 1 && count <= 2);
+               if (count == 1) {
+                       g_free (data);
+                       return;
+               }
+       } while (InterlockedCompareExchange (&data->refcount, count, count - 1) != count);
+}
+
 static void
 deregister_reflection_info_roots_nspace_table (gpointer key, gpointer value, gpointer image)
 {
@@ -2273,7 +2263,8 @@ unload_thread_main (void *arg)
        int i;
 
        /* Have to attach to the runtime so shutdown can wait for this thread */
-       thread = mono_thread_attach (mono_get_root_domain ());
+       /* Force it to be attached to avoid racing during shutdown. */
+       thread = mono_thread_attach_full (mono_get_root_domain (), TRUE);
 
        /* 
         * FIXME: Abort our parent thread last, so we can return a failure 
@@ -2281,18 +2272,18 @@ unload_thread_main (void *arg)
         */
        if (!mono_threads_abort_appdomain_threads (domain, -1)) {
                data->failure_reason = g_strdup_printf ("Aborting of threads in domain %s timed out.", domain->friendly_name);
-               return 1;
+               goto failure;
        }
 
        if (!mono_thread_pool_remove_domain_jobs (domain, -1)) {
                data->failure_reason = g_strdup_printf ("Cleanup of threadpool jobs of domain %s timed out.", domain->friendly_name);
-               return 1;
+               goto failure;
        }
 
        /* Finalize all finalizable objects in the doomed appdomain */
        if (!mono_domain_finalize (domain, -1)) {
                data->failure_reason = g_strdup_printf ("Finalization of domain %s timed out.", domain->friendly_name);
-               return 1;
+               goto failure;
        }
 
        /* Clear references to our vtables in class->runtime_info.
@@ -2338,9 +2329,16 @@ unload_thread_main (void *arg)
 
        mono_gc_collect (mono_gc_max_generation ());
 
+       mono_atomic_store_release (&data->done, TRUE);
+       unload_data_unref (data);
        mono_thread_detach (thread);
-
        return 0;
+
+failure:
+       mono_atomic_store_release (&data->done, TRUE);
+       unload_data_unref (data);
+       mono_thread_detach (thread);
+       return 1;
 }
 
 /*
@@ -2383,10 +2381,9 @@ mono_domain_try_unload (MonoDomain *domain, MonoObject **exc)
 {
        HANDLE thread_handle;
        gsize tid;
-       guint32 res;
        MonoAppDomainState prev_state;
        MonoMethod *method;
-       unload_data thread_data;
+       unload_data *thread_data;
        MonoDomain *caller_domain = mono_domain_get ();
 
        /* printf ("UNLOAD STARTING FOR %s (%p) IN THREAD 0x%x.\n", domain->friendly_name, domain, GetCurrentThreadId ()); */
@@ -2426,8 +2423,11 @@ mono_domain_try_unload (MonoDomain *domain, MonoObject **exc)
        }
        mono_domain_set (caller_domain, FALSE);
 
-       thread_data.domain = domain;
-       thread_data.failure_reason = NULL;
+       thread_data = g_new0 (unload_data, 1);
+       thread_data->domain = domain;
+       thread_data->failure_reason = NULL;
+       thread_data->done = FALSE;
+       thread_data->refcount = 2; /*Must be 2: unload thread + initiator */
 
        /*The managed callback finished successfully, now we start tearing down the appdomain*/
        domain->state = MONO_APPDOMAIN_UNLOADING;
@@ -2443,7 +2443,7 @@ mono_domain_try_unload (MonoDomain *domain, MonoObject **exc)
 #if 0
        thread_handle = mono_create_thread (NULL, 0, unload_thread_main, &thread_data, 0, &tid);
 #else
-       thread_handle = mono_create_thread (NULL, 0, (LPTHREAD_START_ROUTINE)unload_thread_main, &thread_data, CREATE_SUSPENDED, &tid);
+       thread_handle = mono_create_thread (NULL, 0, (LPTHREAD_START_ROUTINE)unload_thread_main, thread_data, CREATE_SUSPENDED, &tid);
        if (thread_handle == NULL) {
                return;
        }
@@ -2451,25 +2451,28 @@ mono_domain_try_unload (MonoDomain *domain, MonoObject **exc)
 #endif
 
        /* Wait for the thread */       
-       while ((res = WaitForSingleObjectEx (thread_handle, INFINITE, TRUE) == WAIT_IO_COMPLETION)) {
+       while (!thread_data->done && WaitForSingleObjectEx (thread_handle, INFINITE, TRUE) == WAIT_IO_COMPLETION) {
                if (mono_thread_internal_has_appdomain_ref (mono_thread_internal_current (), domain) && (mono_thread_interruption_requested ())) {
                        /* The unload thread tries to abort us */
                        /* The icall wrapper will execute the abort */
                        CloseHandle (thread_handle);
+                       unload_data_unref (thread_data);
                        return;
                }
        }
        CloseHandle (thread_handle);
 
-       if (thread_data.failure_reason) {
+       if (thread_data->failure_reason) {
                /* Roll back the state change */
                domain->state = MONO_APPDOMAIN_CREATED;
 
-               g_warning ("%s", thread_data.failure_reason);
+               g_warning ("%s", thread_data->failure_reason);
 
-               *exc = (MonoObject *) mono_get_exception_cannot_unload_appdomain (thread_data.failure_reason);
+               *exc = (MonoObject *) mono_get_exception_cannot_unload_appdomain (thread_data->failure_reason);
 
-               g_free (thread_data.failure_reason);
-               thread_data.failure_reason = NULL;
+               g_free (thread_data->failure_reason);
+               thread_data->failure_reason = NULL;
        }
+
+       unload_data_unref (thread_data);
 }
index 62490819b1bee62f1eb735bb6c22a6df5d90929a..607dde5037b1c2a01d5007d50316c9cb17759310 100644 (file)
@@ -34,6 +34,7 @@
 #include <mono/metadata/reflection.h>
 #include <mono/metadata/coree.h>
 #include <mono/utils/mono-io-portability.h>
+#include <mono/utils/atomic.h>
 
 #ifndef HOST_WIN32
 #include <sys/types.h>
@@ -54,6 +55,7 @@ typedef struct  {
 /* the default search path is empty, the first slot is replaced with the computed value */
 static const char*
 default_path [] = {
+       NULL,
        NULL,
        NULL
 };
@@ -254,10 +256,10 @@ static void
 check_path_env (void)
 {
        const char* path;
-#ifdef __native_client__
-       path = nacl_mono_path;
-#else
        path = g_getenv ("MONO_PATH");
+#ifdef __native_client__
+       if (!path)
+               path = nacl_mono_path;
 #endif
        if (!path || assemblies_path != NULL)
                return;
@@ -643,6 +645,7 @@ mono_set_rootdir (void)
                gchar buf[4096];
                guint buf_size = sizeof (buf);
  
+               name = NULL;
                if (_NSGetExecutablePath (buf, &buf_size) == 0)
                        name = g_strdup (buf);
  
@@ -850,6 +853,8 @@ static KeyRemapEntry key_remap_table[] = {
        { "System.ComponentModel.Composition", WINFX_KEY, ECMA_KEY },
        { "System.ComponentModel.DataAnnotations", "ddd0da4d3e678217", WINFX_KEY },
        { "System.Core", SILVERLIGHT_KEY, ECMA_KEY },
+       // FIXME: MS uses MSFINAL_KEY for .NET 4.5
+       { "System.Net", SILVERLIGHT_KEY, ECMA_KEY },
        { "System.Numerics", WINFX_KEY, ECMA_KEY },
        { "System.Runtime.Serialization", SILVERLIGHT_KEY, ECMA_KEY },
        { "System.ServiceModel", WINFX_KEY, ECMA_KEY },
@@ -1015,6 +1020,7 @@ mono_assembly_load_reference (MonoImage *image, int index)
                MonoTableInfo *t = &image->tables [MONO_TABLE_ASSEMBLYREF];
        
                image->references = g_new0 (MonoAssembly *, t->rows + 1);
+               image->nreferences = t->rows;
        }
        reference = image->references [index];
        mono_assemblies_unlock ();
@@ -2781,7 +2787,10 @@ mono_assembly_load_corlib (const MonoRuntimeInfo *runtime, MonoImageOpenStatus *
        }
        corlib = load_in_path (corlib_file, default_path, status, FALSE);
        g_free (corlib_file);
-
+       
+       if (corlib && !strcmp (runtime->framework_version, "4.5"))
+               default_path [1] = g_strdup_printf ("%s/mono/4.5/Facades", default_path [0]);
+               
        return corlib;
 }
 
index e8ff58a98ca020adbdf5c9782d7ce0f32da4504a..f79bc9ba09298fb5c45256604176caeb6b76eb79 100644 (file)
@@ -74,7 +74,7 @@ mono_gc_base_init (void)
         * we used to do this only when running on valgrind,
         * but it happens also in other setups.
         */
-#if defined(HAVE_PTHREAD_GETATTR_NP) && defined(HAVE_PTHREAD_ATTR_GETSTACK)
+#if defined(HAVE_PTHREAD_GETATTR_NP) && defined(HAVE_PTHREAD_ATTR_GETSTACK) && !defined(__native_client__)
        {
                size_t size;
                void *sstart;
@@ -911,11 +911,10 @@ mono_gc_is_critical_method (MonoMethod *method)
  */
 
 MonoMethod*
-mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box)
+mono_gc_get_managed_allocator (MonoClass *klass, gboolean for_box)
 {
        int offset = -1;
        int atype;
-       MonoClass *klass = vtable->klass;
        MONO_THREAD_VAR_OFFSET (GC_thread_tls, offset);
 
        /*g_print ("thread tls: %d\n", offset);*/
@@ -923,10 +922,12 @@ mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box)
                return NULL;
        if (!SMALL_ENOUGH (klass->instance_size))
                return NULL;
-       if (mono_class_has_finalizer (klass) || klass->marshalbyref || (mono_profiler_get_events () & MONO_PROFILE_ALLOCATIONS))
+       if (mono_class_has_finalizer (klass) || mono_class_is_marshalbyref (klass) || (mono_profiler_get_events () & MONO_PROFILE_ALLOCATIONS))
                return NULL;
        if (klass->rank)
                return NULL;
+       if (mono_class_is_open_constructed_type (&klass->byval_arg))
+               return NULL;
        if (klass->byval_arg.type == MONO_TYPE_STRING) {
                atype = ATYPE_STRING;
        } else if (!klass->has_references) {
@@ -949,7 +950,7 @@ mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box)
 }
 
 MonoMethod*
-mono_gc_get_managed_array_allocator (MonoVTable *vtable, int rank)
+mono_gc_get_managed_array_allocator (MonoClass *klass)
 {
        return NULL;
 }
@@ -996,13 +997,13 @@ mono_gc_is_critical_method (MonoMethod *method)
 }
 
 MonoMethod*
-mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box)
+mono_gc_get_managed_allocator (MonoClass *klass, gboolean for_box)
 {
        return NULL;
 }
 
 MonoMethod*
-mono_gc_get_managed_array_allocator (MonoVTable *vtable, int rank)
+mono_gc_get_managed_array_allocator (MonoClass *klass)
 {
        return NULL;
 }
@@ -1145,6 +1146,19 @@ void mono_gc_set_skip_thread (gboolean value)
 {
 }
 
+void
+mono_gc_register_for_finalization (MonoObject *obj, void *user_data)
+{
+       guint offset = 0;
+
+#ifndef GC_DEBUG
+       /* This assertion is not valid when GC_DEBUG is defined */
+       g_assert (GC_base (obj) == (char*)obj - offset);
+#endif
+
+       GC_REGISTER_FINALIZER_NO_ORDER ((char*)obj - offset, user_data, GUINT_TO_POINTER (offset), NULL, NULL);
+}
+
 /*
  * These will call the redefined versions in libgc.
  */
index 18d05e989f61413badeca37b42db64d173457a81..2fa919ace45a39e93e76fd53e254056a6adf30a5 100644 (file)
@@ -711,7 +711,7 @@ typedef struct {
 #define MONO_SIZEOF_REMOTE_CLASS (sizeof (MonoRemoteClass) - MONO_ZERO_LEN_ARRAY * SIZEOF_VOID_P)
 
 typedef struct {
-       gulong new_object_count;
+       guint64 new_object_count;
        gulong initialized_class_count;
        gulong generic_vtable_count;
        gulong used_class_count;
@@ -1097,13 +1097,6 @@ typedef struct {
        MonoClass *internals_visible_class;
        MonoClass *generic_ilist_class;
        MonoClass *generic_nullable_class;
-#ifndef DISABLE_COM
-       MonoClass *variant_class;
-       MonoClass *com_object_class;
-       MonoClass *com_interop_proxy_class;
-       MonoClass *iunknown_class;
-       MonoClass *idispatch_class;
-#endif
        MonoClass *safehandle_class;
        MonoClass *handleref_class;
        MonoClass *attribute_class;
@@ -1128,6 +1121,39 @@ mono_install_remoting_trampoline (MonoRemotingTrampoline func) MONO_INTERNAL;
 #define mono_object_is_transparent_proxy(object) (((MonoObject*)object)->vtable->klass == mono_defaults.transparent_proxy_class)
 #endif
 
+
+#define GENERATE_GET_CLASS_WITH_CACHE_DECL(shortname) \
+MonoClass* mono_class_get_##shortname##_class (void);
+
+#define GENERATE_GET_CLASS_WITH_CACHE(shortname,namespace,name) \
+MonoClass*     \
+mono_class_get_##shortname##_class (void)      \
+{      \
+       static MonoClass *tmp_class;    \
+       MonoClass *class = tmp_class;   \
+       if (!class) {   \
+               class = mono_class_from_name (mono_defaults.corlib, #namespace, #name); \
+               g_assert (class);       \
+               mono_memory_barrier (); \
+               tmp_class = class;      \
+       }       \
+       return class;   \
+}
+
+#define GENERATE_STATIC_GET_CLASS_WITH_CACHE(shortname,namespace,name) \
+static GENERATE_GET_CLASS_WITH_CACHE (shortname,namespace,name)
+
+
+#ifndef DISABLE_COM
+
+GENERATE_GET_CLASS_WITH_CACHE_DECL (interop_proxy)
+GENERATE_GET_CLASS_WITH_CACHE_DECL (idispatch)
+GENERATE_GET_CLASS_WITH_CACHE_DECL (iunknown)
+GENERATE_GET_CLASS_WITH_CACHE_DECL (com_object)
+GENERATE_GET_CLASS_WITH_CACHE_DECL (variant)
+
+#endif
+
 extern MonoDefaults mono_defaults MONO_INTERNAL;
 
 void
@@ -1283,6 +1309,9 @@ mono_method_can_access_method_full (MonoMethod *method, MonoMethod *called, Mono
 gboolean
 mono_method_can_access_field_full (MonoMethod *method, MonoClassField *field, MonoClass *context_klass) MONO_INTERNAL;
 
+gboolean
+mono_class_can_access_class (MonoClass *access_class, MonoClass *target_class) MONO_INTERNAL;
+
 MonoClass *
 mono_class_get_generic_type_definition (MonoClass *klass) MONO_INTERNAL;
 
index 70654da524914038567ca8a687a5191ae4dfa562..06f589934a0fff09509fad7b9aadaf66ce430506 100644 (file)
@@ -16,9 +16,6 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#if !HOST_WIN32
-#include <mono/io-layer/atomic.h>
-#endif
 #include <mono/metadata/image.h>
 #include <mono/metadata/assembly.h>
 #include <mono/metadata/metadata.h>
@@ -44,6 +41,7 @@
 #include <mono/utils/mono-error-internals.h>
 #include <mono/utils/mono-logger-internal.h>
 #include <mono/utils/mono-memory-model.h>
+#include <mono/utils/atomic.h>
 MonoStats mono_stats;
 
 gboolean mono_print_vtable = FALSE;
@@ -55,7 +53,7 @@ guint32 classes_size, class_ext_size;
 /* Function supplied by the runtime to find classes by name using information from the AOT file */
 static MonoGetClassFromName get_class_from_name = NULL;
 
-static MonoClass * mono_class_create_from_typedef (MonoImage *image, guint32 type_token);
+static MonoClass * mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError *error);
 static gboolean mono_class_get_cached_class_info (MonoClass *klass, MonoCachedClassInfo *res);
 static gboolean can_access_type (MonoClass *access_klass, MonoClass *member_klass);
 static MonoMethod* find_method_in_metadata (MonoClass *klass, const char *name, int param_count, int flags);
@@ -219,8 +217,15 @@ mono_class_from_typeref (MonoImage *image, guint32 type_token)
                                guint32 string_offset = mono_metadata_decode_row_col (&enclosing->image->tables [MONO_TABLE_TYPEDEF], class_nested - 1, MONO_TYPEDEF_NAME);
                                const char *nname = mono_metadata_string_heap (enclosing->image, string_offset);
 
-                               if (strcmp (nname, name) == 0)
-                                       return mono_class_create_from_typedef (enclosing->image, MONO_TOKEN_TYPE_DEF | class_nested);
+                               if (strcmp (nname, name) == 0) {
+                                       MonoClass *res = mono_class_create_from_typedef (enclosing->image, MONO_TOKEN_TYPE_DEF | class_nested, &error);
+                                       if (!mono_error_ok (&error)) {
+                                               mono_loader_set_error_from_mono_error (&error);
+                                               mono_error_cleanup (&error); /*FIXME don't swallow error message.*/
+                                               return NULL;
+                                       }
+                                       return res;
+                               }
 
                                i = mono_metadata_nesting_typedef (enclosing->image, enclosing->type_token, i + 1);
                        }
@@ -1421,6 +1426,52 @@ mono_class_setup_fields (MonoClass *class)
        MonoGenericContainer *container = NULL;
        MonoClass *gtd = class->generic_class ? mono_class_get_generic_type_definition (class) : NULL;
 
+       /*
+        * FIXME: We have a race condition here.  It's possible that this function returns
+        * to its caller with `instance_size` set to `0` instead of the actual size.  This
+        * is not a problem when the function is called recursively on the same class,
+        * because the size will be initialized by the outer invocation.  What follows is a
+        * description of how it can occur in other cases, too.  There it is a problem,
+        * because it can lead to the GC being asked to allocate an object of size `0`,
+        * which SGen chokes on.  The race condition is triggered infrequently by
+        * `tests/sgen-suspend.cs`.
+        *
+        * This function is called for a class whenever one of its subclasses is inited.
+        * For example, it's called for every subclass of Object.  What it does is this:
+        *
+        *     if (class->setup_fields_called)
+        *         return;
+        *     ...
+        *     class->instance_size = 0;
+        *     ...
+        *     class->setup_fields_called = 1;
+        *     ... critical point
+        *     class->instance_size = actual_instance_size;
+        *
+        * The last two steps are sometimes reversed, but that only changes the way in which
+        * the race condition works.
+        *
+        * Assume thread A goes through this function and makes it to the critical point.
+        * Now thread B runs the function and, since `setup_fields_called` is set, returns
+        * immediately, but `instance_size` is incorrect.
+        *
+        * The other case looks like this:
+        *
+        *     if (class->setup_fields_called)
+        *         return;
+        *     ... critical point X
+        *     class->instance_size = 0;
+        *     ... critical point Y
+        *     class->instance_size = actual_instance_size;
+        *     ...
+        *     class->setup_fields_called = 1;
+        *
+        * Assume thread A goes through the function and makes it to critical point X.  Now
+        * thread B runs through the whole of the function, returning, assuming
+        * `instance_size` is set.  At that point thread A gets to run and makes it to
+        * critical point Y, at which time `instance_size` is `0` again, invalidating thread
+        * B's assumption.
+        */
        if (class->setup_fields_called)
                return;
 
@@ -1498,6 +1549,7 @@ mono_class_setup_fields (MonoClass *class)
                mono_memory_barrier ();
                class->size_inited = 1;
                class->fields_inited = 1;
+               class->setup_fields_called = 1;
                return;
        }
 
@@ -3739,8 +3791,9 @@ check_interface_method_override (MonoClass *class, MonoMethod *im, MonoMethod *c
                        mono_secman_inheritancedemand_method (cm, im);
                }
 
-               if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
+               if (mono_security_core_clr_enabled ())
                        mono_security_core_clr_check_override (class, cm, im);
+
                TRACE_INTERFACE_VTABLE (printf ("[NAME CHECK OK]"));
                if (is_wcf_hack_disabled () && !mono_method_can_access_method_full (cm, im, NULL)) {
                        char *body_name = mono_method_full_name (cm, TRUE);
@@ -3824,9 +3877,9 @@ check_interface_method_override (MonoClass *class, MonoMethod *im, MonoMethod *c
                        mono_secman_inheritancedemand_method (cm, im);
                }
 
-               if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
+               if (mono_security_core_clr_enabled ())
                        mono_security_core_clr_check_override (class, cm, im);
-               
+
                TRACE_INTERFACE_VTABLE (printf ("[INJECTED INTERFACE CHECK OK]"));
                if (is_wcf_hack_disabled () && !mono_method_can_access_method_full (cm, im, NULL)) {
                        char *body_name = mono_method_full_name (cm, TRUE);
@@ -4056,7 +4109,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
        int i, max_vtsize = 0, max_iid, cur_slot = 0;
        GPtrArray *ifaces = NULL;
        GHashTable *override_map = NULL;
-       gboolean security_enabled = mono_is_security_manager_active ();
+       gboolean security_enabled = mono_security_enabled ();
        MonoMethod *cm;
        gpointer class_iter;
 #if (DEBUG_INTERFACE_VTABLE_CODE|TRACE_INTERFACE_VTABLE_CODE)
@@ -4228,7 +4281,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
 
                        g_hash_table_insert (override_map, overrides [i * 2], overrides [i * 2 + 1]);
 
-                       if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
+                       if (mono_security_core_clr_enabled ())
                                mono_security_core_clr_check_override (class, vtable [dslot], decl);
                }
        }
@@ -4408,7 +4461,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                                                        mono_secman_inheritancedemand_method (cm, m1);
                                                }
 
-                                               if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
+                                               if (mono_security_core_clr_enabled ())
                                                        mono_security_core_clr_check_override (class, cm, m1);
 
                                                slot = mono_method_get_vtable_slot (m1);
@@ -4469,7 +4522,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                                mono_method_full_name (overrides [i * 2 + 1], 1), overrides [i * 2 + 1]));
                        g_hash_table_insert (override_map, decl, overrides [i * 2 + 1]);
 
-                       if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
+                       if (mono_security_core_clr_enabled ())
                                mono_security_core_clr_check_override (class, vtable [decl->slot], decl);
                }
        }
@@ -4896,7 +4949,7 @@ mono_class_init (MonoClass *class)
        }
 
        /* CAS - SecurityAction.InheritanceDemand */
-       if (mono_is_security_manager_active () && class->parent && (class->parent->flags & TYPE_ATTRIBUTE_HAS_SECURITY)) {
+       if (mono_security_enabled () && class->parent && (class->parent->flags & TYPE_ATTRIBUTE_HAS_SECURITY)) {
                mono_secman_inheritancedemand_class (class, class->parent);
        }
 
@@ -5079,7 +5132,7 @@ mono_class_init (MonoClass *class)
                setup_interface_offsets (class, 0, TRUE);
        }
 
-       if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
+       if (mono_security_core_clr_enabled ())
                mono_security_core_clr_check_inheritance (class);
 
        if (mono_loader_get_last_error ()) {
@@ -5305,7 +5358,7 @@ mono_class_setup_mono_type (MonoClass *class)
 
 #ifndef DISABLE_COM
 /*
- * COM initialization (using mono_init_com_types) is delayed until needed. 
+ * COM initialization is delayed until needed.
  * However when a [ComImport] attribute is present on a type it will trigger
  * the initialization. This is not a problem unless the BCL being executed 
  * lacks the types that COM depends on (e.g. Variant on Silverlight).
@@ -5314,7 +5367,7 @@ static void
 init_com_from_comimport (MonoClass *class)
 {
        /* we don't always allow COM initialization under the CoreCLR (e.g. Moonlight does not require it) */
-       if ((mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)) {
+       if (mono_security_core_clr_enabled ()) {
                /* but some other CoreCLR user could requires it for their platform (i.e. trusted) code */
                if (!mono_security_core_clr_determine_platform_image (class->image)) {
                        /* but it can not be made available for application (i.e. user code) since all COM calls
@@ -5324,8 +5377,8 @@ init_com_from_comimport (MonoClass *class)
                        return;
                }
        }
+
        /* FIXME : we should add an extra checks to ensure COM can be initialized properly before continuing */
-       mono_init_com_types ();
 }
 #endif /*DISABLE_COM*/
 
@@ -5358,7 +5411,7 @@ mono_class_setup_parent (MonoClass *class, MonoClass *parent)
                if (MONO_CLASS_IS_IMPORT (class)) {
                        init_com_from_comimport (class);
                        if (parent == mono_defaults.object_class)
-                               parent = mono_defaults.com_object_class;
+                               parent = mono_class_get_com_object_class ();
                }
 #endif
                if (!parent) {
@@ -5475,10 +5528,34 @@ fix_gclass_incomplete_instantiation (MonoClass *gclass, void *user_data)
        return TRUE;
 }
 
+static void
+mono_class_set_failure_and_error (MonoClass *class, MonoError *error, const char *msg)
+{
+       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup (msg));
+       mono_error_set_type_load_class (error, class, msg);
+}
+
+static void
+mono_class_set_failure_from_loader_error (MonoClass *class, MonoError *error, char *msg)
+{
+       MonoLoaderError *lerror = mono_loader_get_last_error ();
+
+       if (lerror) {
+               set_failure_from_loader_error (class, lerror);
+               mono_error_set_from_loader_error (error);
+               if (msg)
+                       g_free (msg);
+       } else {
+               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, msg);
+               mono_error_set_type_load_class (error, class, msg);
+       }
+}
+
 /**
  * mono_class_create_from_typedef:
  * @image: image where the token is valid
  * @type_token:  typedef token
+ * @error:  used to return any error found while creating the type
  *
  * Create the MonoClass* representing the specified type token.
  * @type_token must be a TypeDef token.
@@ -5486,7 +5563,7 @@ fix_gclass_incomplete_instantiation (MonoClass *gclass, void *user_data)
  * FIXME: don't return NULL on failure, just the the caller figure it out.
  */
 static MonoClass *
-mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
+mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError *error)
 {
        MonoTableInfo *tt = &image->tables [MONO_TABLE_TYPEDEF];
        MonoClass *class, *parent = NULL;
@@ -5500,13 +5577,19 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
        guint32 field_last, method_last;
        guint32 nesting_tokeen;
 
-       if (mono_metadata_token_table (type_token) != MONO_TABLE_TYPEDEF || tidx > tt->rows)
+       mono_error_init (error);
+
+       if (mono_metadata_token_table (type_token) != MONO_TABLE_TYPEDEF || tidx > tt->rows) {
+               mono_error_set_bad_image (error, image, "Invalid typedef token %x", type_token);
+               g_assert (!mono_loader_get_last_error ());
                return NULL;
+       }
 
        mono_loader_lock ();
 
        if ((class = mono_internal_hash_table_lookup (&image->class_cache, GUINT_TO_POINTER (type_token)))) {
                mono_loader_unlock ();
+               g_assert (!mono_loader_get_last_error ());
                return class;
        }
 
@@ -5557,19 +5640,18 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
                }
                parent = mono_class_get_full (image, parent_token, context);
 
-               if (parent == NULL){
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not load parent type"));
-                       mono_loader_clear_error ();
+               if (parent == NULL) {
+                       mono_class_set_failure_from_loader_error (class, error, g_strdup_printf ("Could not load parent, token is %x", parent_token));
                        goto parent_failure;
                }
 
                for (tmp = parent; tmp; tmp = tmp->parent) {
                        if (tmp == class) {
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Cycle found while resolving parent"));
+                               mono_class_set_failure_and_error (class, error, "Cycle found while resolving parent");
                                goto parent_failure;
                        }
                        if (class->generic_container && tmp->generic_class && tmp->generic_class->container_class == class) {
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Parent extends generic instance of this type"));
+                               mono_class_set_failure_and_error (class, error, "Parent extends generic instance of this type");
                                goto parent_failure;
                        }
                }
@@ -5588,11 +5670,13 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
         * so it has to come after setup_mono_type ().
         */
        if ((nesting_tokeen = mono_metadata_nested_in_typedef (image, type_token))) {
-               class->nested_in = mono_class_create_from_typedef (image, nesting_tokeen);
-               if (!class->nested_in) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not load nestedin type"));
+               class->nested_in = mono_class_create_from_typedef (image, nesting_tokeen, error);
+               if (!mono_error_ok (error)) {
+                       /*FIXME implement a mono_class_set_failure_from_mono_error */
+                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup (mono_error_get_message (error)));
                        mono_loader_unlock ();
                        mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
+                       g_assert (!mono_loader_get_last_error ());
                        return NULL;
                }
        }
@@ -5610,7 +5694,7 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
        if (!class->enumtype) {
                if (!mono_metadata_interfaces_from_typedef_full (
                            image, type_token, &interfaces, &icount, FALSE, context)){
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not load interfaces"));
+                       mono_class_set_failure_from_loader_error (class, error, g_strdup ("Could not load interfaces"));
                        mono_loader_unlock ();
                        mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
                        return NULL;
@@ -5660,9 +5744,10 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
                if (!enum_basetype) {
                        /*set it to a default value as the whole runtime can't handle this to be null*/
                        class->cast_class = class->element_class = mono_defaults.int32_class;
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                       mono_class_set_failure_and_error (class, error, "Could not enum basetype");
                        mono_loader_unlock ();
                        mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
+                       g_assert (!mono_loader_get_last_error ());
                        return NULL;
                }
                class->cast_class = class->element_class = mono_class_from_mono_type (enum_basetype);
@@ -5674,12 +5759,10 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
         * work.
         */
        if (class->generic_container && !mono_metadata_load_generic_param_constraints_full (image, type_token, class->generic_container)){
-               char *class_name = g_strdup_printf("%s.%s", class->name_space, class->name);
-               char *error = concat_two_strings_with_zero (class->image, class_name, class->image->assembly_name);
-               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, error);
-               g_free (class_name);
+               mono_class_set_failure_from_loader_error (class, error, g_strdup ("Could not load generic parameter constraints"));
                mono_loader_unlock ();
                mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
+               g_assert (!mono_loader_get_last_error ());
                return NULL;
        }
 
@@ -5691,6 +5774,7 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
        mono_loader_unlock ();
 
        mono_profiler_class_loaded (class, MONO_PROFILE_OK);
+       g_assert (!mono_loader_get_last_error ());
 
        return class;
 
@@ -5698,8 +5782,8 @@ parent_failure:
        mono_class_setup_mono_type (class);
        mono_loader_unlock ();
        mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
+       g_assert (!mono_loader_get_last_error ());
        return NULL;
-
 }
 
 /** is klass Nullable<T>? */
@@ -7003,7 +7087,13 @@ mono_class_get_full (MonoImage *image, guint32 type_token, MonoGenericContext *c
 
        switch (type_token & 0xff000000){
        case MONO_TOKEN_TYPE_DEF:
-               class = mono_class_create_from_typedef (image, type_token);
+               class = mono_class_create_from_typedef (image, type_token, &error);
+               if (!mono_error_ok (&error)) {
+                       mono_loader_set_error_from_mono_error (&error);
+                       /*FIXME don't swallow the error message*/
+                       mono_error_cleanup (&error);
+                       return NULL;
+               }
                break;          
        case MONO_TOKEN_TYPE_REF:
                class = mono_class_from_typeref (image, type_token);
@@ -8731,6 +8821,7 @@ mono_class_get_interfaces (MonoClass* klass, gpointer *iter)
 MonoClass*
 mono_class_get_nested_types (MonoClass* klass, gpointer *iter)
 {
+       MonoError error;
        GList *item;
        int i;
 
@@ -8746,9 +8837,11 @@ mono_class_get_nested_types (MonoClass* klass, gpointer *iter)
                                MonoClass* nclass;
                                guint32 cols [MONO_NESTED_CLASS_SIZE];
                                mono_metadata_decode_row (&klass->image->tables [MONO_TABLE_NESTEDCLASS], i - 1, cols, MONO_NESTED_CLASS_SIZE);
-                               nclass = mono_class_create_from_typedef (klass->image, MONO_TOKEN_TYPE_DEF | cols [MONO_NESTED_CLASS_NESTED]);
-                               if (!nclass) {
-                                       mono_loader_clear_error ();
+                               nclass = mono_class_create_from_typedef (klass->image, MONO_TOKEN_TYPE_DEF | cols [MONO_NESTED_CLASS_NESTED], &error);
+                               if (!mono_error_ok (&error)) {
+                                       /*FIXME don't swallow the error message*/
+                                       mono_error_cleanup (&error);
+
                                        i = mono_metadata_nesting_typedef (klass->image, klass->type_token, i + 1);
                                        continue;
                                }
@@ -9244,6 +9337,7 @@ mono_class_get_exception_for_failure (MonoClass *klass)
        gpointer exception_data = mono_class_get_exception_data (klass);
 
        switch (klass->exception_type) {
+#ifndef DISABLE_SECURITY
        case MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND: {
                MonoDomain *domain = mono_domain_get ();
                MonoSecurityManager* secman = mono_security_manager_get_methods ();
@@ -9260,6 +9354,7 @@ mono_class_get_exception_for_failure (MonoClass *klass)
                mono_runtime_invoke (secman->inheritsecurityexception, NULL, args, &exc);
                return (MonoException*) exc;
        }
+#endif
        case MONO_EXCEPTION_TYPE_LOAD: {
                MonoString *name;
                MonoException *ex;
@@ -9394,7 +9489,7 @@ can_access_internals (MonoAssembly *accessing, MonoAssembly* accessed)
 
        /* extra safety under CoreCLR - the runtime does not verify the strongname signatures
         * anywhere so untrusted friends are not safe to access platform's code internals */
-       if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR) {
+       if (mono_security_core_clr_enabled ()) {
                if (!mono_security_core_clr_can_access_internals (accessing->image, accessed->image))
                        return FALSE;
        }
@@ -9719,6 +9814,21 @@ mono_method_can_access_field_full (MonoMethod *method, MonoClassField *field, Mo
        return TRUE;
 }
 
+/*
+ * mono_class_can_access_class:
+ * @source_class: The source class 
+ * @target_class: The accessed class
+ * 
+ * This function returns is @target_class is visible to @source_class
+ * 
+ * Returns: TRUE if source have proper visibility and acessibility to target
+ */
+gboolean
+mono_class_can_access_class (MonoClass *source_class, MonoClass *target_class)
+{
+       return can_access_type (source_class, target_class);
+}
+
 /**
  * mono_type_is_valid_enum_basetype:
  * @type: The MonoType to check
@@ -9941,16 +10051,8 @@ mono_field_resolve_type (MonoClassField *field, MonoError *error)
                /* FIELD signature == 0x06 */
                g_assert (*sig == 0x06);
                field->type = mono_metadata_parse_type_full (image, container, MONO_PARSE_FIELD, cols [MONO_FIELD_FLAGS], sig + 1, &sig);
-               if (!field->type) {
-                       MonoLoaderError *lerror = mono_loader_get_last_error ();
-
-                       mono_error_set_type_load_class (error, class, "Could not load field %s type", field->name);
-                       if (lerror)
-                               set_failure_from_loader_error (class, lerror);
-                       else
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
-                       mono_loader_clear_error ();
-               }
+               if (!field->type)
+                       mono_class_set_failure_from_loader_error (class, error, g_strdup_printf ("Could not load field %s type", field->name));
        }
 }
 
index 15c5ec9bf5b4fb922630fba62cab00bf2325fdbb..d9a625e56b806c92fa175084398d08bd551a9940 100644 (file)
@@ -32,6 +32,8 @@
 #include "mono/metadata/attrdefs.h"
 #include "mono/metadata/gc-internal.h"
 #include "mono/utils/mono-counters.h"
+#include "mono/utils/strenc.h"
+#include "mono/utils/atomic.h"
 #include <string.h>
 #include <errno.h>
 
@@ -83,6 +85,13 @@ static CRITICAL_SECTION cominterop_mutex;
 #define STDCALL
 #endif
 
+GENERATE_GET_CLASS_WITH_CACHE (interop_proxy, Mono.Interop, ComInteropProxy)
+GENERATE_GET_CLASS_WITH_CACHE (idispatch,     Mono.Interop, IDispatch)
+GENERATE_GET_CLASS_WITH_CACHE (iunknown,      Mono.Interop, IUnknown)
+
+GENERATE_GET_CLASS_WITH_CACHE (com_object, System, __ComObject)
+GENERATE_GET_CLASS_WITH_CACHE (variant,    System, Variant)
+
 /* Upon creation of a CCW, only allocate a weak handle and set the
  * reference count to 0. If the unmanaged client code decides to addref and
  * hold onto the CCW, I then allocate a strong handle. Once the reference count
@@ -262,7 +271,7 @@ cominterop_object_is_rcw (MonoObject *obj)
                return FALSE;
 
        klass = mono_object_class (real_proxy);
-       return (klass && klass == mono_defaults.com_interop_proxy_class);
+       return (klass && klass == mono_class_get_interop_proxy_class ());
 }
 
 static int
@@ -581,9 +590,6 @@ mono_cominterop_emit_ptr_to_object_conv (MonoMethodBuilder *mb, MonoType *type,
                int real_proxy;
                guint32 pos_null = 0, pos_ccw = 0, pos_end = 0;
                MonoClass *klass = NULL; 
-               
-               /* COM types are initialized lazily */
-               mono_init_com_types ();
 
                klass = mono_class_from_mono_type (type);
 
@@ -617,7 +623,7 @@ mono_cominterop_emit_ptr_to_object_conv (MonoMethodBuilder *mb, MonoType *type,
 
                mono_mb_emit_ldloc (mb, 0);
                mono_mb_emit_byte (mb, CEE_LDIND_I);
-               mono_mb_emit_ptr (mb, &mono_defaults.com_object_class->byval_arg);
+               mono_mb_emit_ptr (mb, &mono_class_get_com_object_class ()->byval_arg);
                mono_mb_emit_icall (mb, cominterop_type_from_handle);
                mono_mb_emit_managed_call (mb, com_interop_proxy_get_proxy, NULL);
                mono_mb_emit_managed_call (mb, get_transparent_proxy, NULL);
@@ -659,10 +665,6 @@ mono_cominterop_emit_object_to_ptr_conv (MonoMethodBuilder *mb, MonoType *type,
        case MONO_MARSHAL_CONV_OBJECT_IDISPATCH:
        case MONO_MARSHAL_CONV_OBJECT_IUNKNOWN: {
                guint32 pos_null = 0, pos_rcw = 0, pos_end = 0;
-               /* COM types are initialized lazily */
-               mono_init_com_types ();
-
 
                mono_mb_emit_ldloc (mb, 1);
                mono_mb_emit_icon (mb, 0);
@@ -703,14 +705,14 @@ mono_cominterop_emit_object_to_ptr_conv (MonoMethodBuilder *mb, MonoType *type,
                        static MonoProperty* iunknown = NULL;
                        
                        if (!iunknown)
-                               iunknown = mono_class_get_property_from_name (mono_defaults.com_object_class, "IUnknown");
+                               iunknown = mono_class_get_property_from_name (mono_class_get_com_object_class (), "IUnknown");
                        mono_mb_emit_managed_call (mb, iunknown->get, NULL);
                }
                else if (conv == MONO_MARSHAL_CONV_OBJECT_IDISPATCH) {
                        static MonoProperty* idispatch = NULL;
                        
                        if (!idispatch)
-                               idispatch = mono_class_get_property_from_name (mono_defaults.com_object_class, "IDispatch");
+                               idispatch = mono_class_get_property_from_name (mono_class_get_com_object_class (), "IDispatch");
                        mono_mb_emit_managed_call (mb, idispatch->get, NULL);
                }
                else {
@@ -730,9 +732,9 @@ mono_cominterop_emit_object_to_ptr_conv (MonoMethodBuilder *mb, MonoType *type,
                if (conv == MONO_MARSHAL_CONV_OBJECT_INTERFACE)
                        mono_mb_emit_ptr (mb, mono_type_get_class (type));
                else if (conv == MONO_MARSHAL_CONV_OBJECT_IUNKNOWN)
-                       mono_mb_emit_ptr (mb, mono_defaults.iunknown_class);
+                       mono_mb_emit_ptr (mb, mono_class_get_iunknown_class ());
                else if (conv == MONO_MARSHAL_CONV_OBJECT_IDISPATCH)
-                       mono_mb_emit_ptr (mb, mono_defaults.idispatch_class);
+                       mono_mb_emit_ptr (mb, mono_class_get_idispatch_class ());
                else
                        g_assert_not_reached ();
                mono_mb_emit_icall (mb, cominterop_get_ccw);
@@ -870,8 +872,6 @@ mono_cominterop_get_native_wrapper (MonoMethod *method)
        if ((res = mono_marshal_find_in_cache (cache, method)))
                return res;
 
-       mono_init_com_types ();
-
        if (!method->klass->vtable)
                mono_class_setup_vtable (method->klass);
        
@@ -893,7 +893,7 @@ mono_cominterop_get_native_wrapper (MonoMethod *method)
                        static MonoMethod *ctor = NULL;
 
                        if (!ctor)
-                               ctor = mono_class_get_method_from_name (mono_defaults.com_object_class, ".ctor", 0);
+                               ctor = mono_class_get_method_from_name (mono_class_get_com_object_class (), ".ctor", 0);
                        mono_mb_emit_ldarg (mb, 0);
                        mono_mb_emit_managed_call (mb, ctor, NULL);
                        mono_mb_emit_byte (mb, CEE_RET);
@@ -1089,9 +1089,6 @@ mono_cominterop_emit_marshal_com_interface (EmitMarshalContext *m, int argnum,
        if (!marshal_release)
                marshal_release = mono_class_get_method_from_name (mono_defaults.marshal_class, "Release", 1);
 
-       /* COM types are initialized lazily */
-       mono_init_com_types ();
-
        switch (action) {
        case MARSHAL_ACTION_CONV_IN: {
                guint32 pos_null = 0;
@@ -1392,6 +1389,9 @@ typedef struct
 #define MONO_S_OK 0x00000000L
 #define MONO_E_NOINTERFACE 0x80004002L
 #define MONO_E_NOTIMPL 0x80004001L
+#define MONO_E_INVALIDARG          0x80070057L
+#define MONO_E_DISP_E_UNKNOWNNAME  0x80020006L
+#define MONO_E_DISPID_UNKNOWN      (gint32)-1
 
 int
 ves_icall_System_Runtime_InteropServices_Marshal_AddRefInternal (gpointer pUnk)
@@ -1433,13 +1433,13 @@ cominterop_get_idispatch_for_object (MonoObject* object)
 
        if (cominterop_object_is_rcw (object)) {
                return cominterop_get_interface (((MonoComInteropProxy*)((MonoTransparentProxy*)object)->rp)->com_object, 
-                       mono_defaults.idispatch_class, TRUE);
+                       mono_class_get_idispatch_class (), TRUE);
        }
        else {
                MonoClass* klass = mono_object_class (object);
                if (!cominterop_can_support_dispatch (klass) )
                        cominterop_raise_hr_exception (MONO_E_NOINTERFACE);
-               return cominterop_get_ccw (object, mono_defaults.idispatch_class);
+               return cominterop_get_ccw (object, mono_class_get_idispatch_class ());
        }
 }
 
@@ -1450,8 +1450,6 @@ ves_icall_System_Runtime_InteropServices_Marshal_GetIUnknownForObjectInternal (M
        if (!object)
                return NULL;
 
-       mono_init_com_types ();
-
        if (cominterop_object_is_rcw (object)) {
                MonoClass *klass = NULL;
                MonoRealProxy* real_proxy = NULL;
@@ -1470,7 +1468,7 @@ ves_icall_System_Runtime_InteropServices_Marshal_GetIUnknownForObjectInternal (M
                }
 
                klass = mono_object_class (real_proxy);
-               if (klass != mono_defaults.com_interop_proxy_class) {
+               if (klass != mono_class_get_interop_proxy_class ()) {
                        g_assert_not_reached ();
                        return NULL;
                }
@@ -1483,7 +1481,7 @@ ves_icall_System_Runtime_InteropServices_Marshal_GetIUnknownForObjectInternal (M
                return ((MonoComInteropProxy*)real_proxy)->com_object->iunknown;
        }
        else {
-               return cominterop_get_ccw (object, mono_defaults.iunknown_class);
+               return cominterop_get_ccw (object, mono_class_get_iunknown_class ());
        }
 #else
        g_assert_not_reached ();
@@ -1512,8 +1510,6 @@ void*
 ves_icall_System_Runtime_InteropServices_Marshal_GetIDispatchForObjectInternal (MonoObject* object)
 {
 #ifndef DISABLE_COM
-       mono_init_com_types ();
-
        return cominterop_get_idispatch_for_object (object);
 #else
        g_assert_not_reached ();
@@ -1898,10 +1894,10 @@ cominterop_get_ccw (MonoObject* object, MonoClass* itf)
        }
 
        iface = itf;
-       if (iface == mono_defaults.iunknown_class) {
+       if (iface == mono_class_get_iunknown_class ()) {
                start_slot = 3;
        }
-       else if (iface == mono_defaults.idispatch_class) {
+       else if (iface == mono_class_get_idispatch_class ()) {
                start_slot = 7;
        }
        else {
@@ -2303,7 +2299,7 @@ cominterop_ccw_getfreethreadedmarshaler (MonoCCW* ccw, MonoObject* object, gpoin
        if (!ccw->free_marshaler) {
                int ret = 0;
                gpointer tunk;
-               tunk = cominterop_get_ccw (object, mono_defaults.iunknown_class);
+               tunk = cominterop_get_ccw (object, mono_class_get_iunknown_class ());
                ret = CoCreateFreeThreadedMarshaler (tunk, (LPUNKNOWN*)&ccw->free_marshaler);
        }
                
@@ -2339,19 +2335,19 @@ cominterop_ccw_queryinterface (MonoCCWInterface* ccwe, guint8* riid, gpointer* p
                mono_thread_attach (mono_get_root_domain ());
 
        /* handle IUnknown special */
-       if (cominterop_class_guid_equal (riid, mono_defaults.iunknown_class)) {
-               *ppv = cominterop_get_ccw (object, mono_defaults.iunknown_class);
+       if (cominterop_class_guid_equal (riid, mono_class_get_iunknown_class ())) {
+               *ppv = cominterop_get_ccw (object, mono_class_get_iunknown_class ());
                /* remember to addref on QI */
                cominterop_ccw_addref (*ppv);
                return MONO_S_OK;
        }
 
        /* handle IDispatch special */
-       if (cominterop_class_guid_equal (riid, mono_defaults.idispatch_class)) {
+       if (cominterop_class_guid_equal (riid, mono_class_get_idispatch_class ())) {
                if (!cominterop_can_support_dispatch (klass))
                        return MONO_E_NOINTERFACE;
                
-               *ppv = cominterop_get_ccw (object, mono_defaults.idispatch_class);
+               *ppv = cominterop_get_ccw (object, mono_class_get_idispatch_class ());
                /* remember to addref on QI */
                cominterop_ccw_addref (*ppv);
                return MONO_S_OK;
@@ -2397,7 +2393,12 @@ cominterop_ccw_queryinterface (MonoCCWInterface* ccwe, guint8* riid, gpointer* p
 static int STDCALL 
 cominterop_ccw_get_type_info_count (MonoCCWInterface* ccwe, guint32 *pctinfo)
 {
-       return MONO_E_NOTIMPL;
+       if(!pctinfo)
+               return MONO_E_INVALIDARG;
+
+       *pctinfo = 1;
+
+       return MONO_S_OK;
 }
 
 static int STDCALL 
@@ -2411,7 +2412,32 @@ cominterop_ccw_get_ids_of_names (MonoCCWInterface* ccwe, gpointer riid,
                                                                                         gunichar2** rgszNames, guint32 cNames,
                                                                                         guint32 lcid, gint32 *rgDispId)
 {
-       return MONO_E_NOTIMPL;
+       int i,ret = MONO_S_OK;
+       MonoMethod* method;
+       gchar* methodname;
+       MonoClass *klass = NULL;
+       MonoCCW* ccw = ccwe->ccw;
+       MonoObject* object = mono_gchandle_get_target (ccw->gc_handle);
+
+       g_assert (object);
+       klass = mono_object_class (object);
+
+       if (!mono_domain_get ())
+               mono_thread_attach (mono_get_root_domain ());
+
+       for (i=0; i < cNames; i++) {
+               methodname = mono_unicode_to_external (rgszNames[i]);
+
+               method = mono_class_get_method_from_name(klass, methodname, -1);
+               if (method)
+                       rgDispId[i] = (gint32)method->token;
+               else {
+                       rgDispId[i] = MONO_E_DISPID_UNKNOWN;
+                       ret = MONO_E_DISP_E_UNKNOWNNAME;
+               }
+       }
+
+       return ret;
 }
 
 static int STDCALL 
@@ -2640,8 +2666,6 @@ mono_cominterop_emit_marshal_safearray (EmitMarshalContext *m, int argnum, MonoT
 {
        MonoMethodBuilder *mb = m->mb;
 
-       mono_init_com_types ();
-       
        switch (action) {
 
        case MARSHAL_ACTION_CONV_IN: {
@@ -2718,7 +2742,7 @@ mono_cominterop_emit_marshal_safearray (EmitMarshalContext *m, int argnum, MonoT
                                get_native_variant_for_object = mono_class_get_method_from_name (mono_defaults.marshal_class, "GetNativeVariantForObject", 2);
                        g_assert (get_native_variant_for_object);
 
-                       elem_var =  mono_mb_add_local (mb, &mono_defaults.variant_class->byval_arg);
+                       elem_var =  mono_mb_add_local (mb, &mono_class_get_variant_class ()->byval_arg);
                        mono_mb_emit_ldloc_addr (mb, elem_var);
 
                        mono_mb_emit_managed_call (mb, get_native_variant_for_object, NULL);
@@ -2729,7 +2753,7 @@ mono_cominterop_emit_marshal_safearray (EmitMarshalContext *m, int argnum, MonoT
                        mono_mb_emit_icall (mb, mono_marshal_safearray_set_value);
 
                        if (!variant_clear)
-                               variant_clear = mono_class_get_method_from_name (mono_defaults.variant_class, "Clear", 0);
+                               variant_clear = mono_class_get_method_from_name (mono_class_get_variant_class (), "Clear", 0);
 
                        mono_mb_emit_ldloc_addr (mb, elem_var);
                        mono_mb_emit_managed_call (mb, variant_clear, NULL);
index 6b940f3edfb4e85920a526d0cc56a6fa868e273f..7e0d598a2820635795a691bd69ca99f0869e5264 100644 (file)
@@ -46,7 +46,8 @@ ves_icall_System_ConsoleDriver_Isatty (HANDLE handle)
 {
        MONO_ARCH_SAVE_REGS;
 
-       return (GetFileType (handle) == FILE_TYPE_CHAR);
+       DWORD mode;
+       return GetConsoleMode (handle, &mode) != 0;
 }
 
 MonoBoolean
index 9d6a10c953b5c9c52b7163529ad1fafc471683b6..f8cc9249a17318b93c37eeabe2a8b5afd3e94cc5 100644 (file)
 
 
 static const DateTimeFormatEntry datetime_format_entries [] = {
-       {1, 14, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {14,270,0,0,0,0,0,0,0,0,0,0,0,0},{1,281,0,0,0,0,0,0},{35,301,0,0,0,0,0,0,0,0,0,0},{23,307,0,0,0,0,0,0,0}},
-       {316, 335, 350, 365, 377, 55, 393, 405, {417, 430, 451, 466, 477, 496, 507}, {520, 525, 530, 535, 540, 545, 550}, {555, 558, 561, 564, 567, 558, 564}, {570, 583, 600, 609, 620, 627, 634, 641, 654, 673, 690, 705, 0}, {570, 583, 600, 609, 620, 627, 634, 641, 654, 673, 690, 705, 0}, {722, 728, 600, 738, 620, 627, 634, 746, 754, 764, 772, 782, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {335,792,808,824,0,0,0,0,0,0,0,0,0,0},{316,841,859,884,0,0,0,0},{365,908,0,0,0,0,0,0,0,0,0,0},{350,919,0,0,0,0,0,0,0}},
-       {933, 270, 307, 301, 959, 55, 973, 978, {983, 992, 1000, 1008, 1017, 1024, 1034}, {1043, 1046, 1049, 1052, 1055, 1058, 1061}, {1064, 1066, 1068, 1070, 1072, 1074, 1076}, {1078, 1084, 1091, 1097, 1103, 1108, 1113, 1120, 1126, 1135, 1143, 1152, 0}, {1161, 1170, 1180, 1189, 1199, 1207, 1215, 1225, 1235, 1247, 1259, 1271, 0}, {1283, 1288, 1091, 1294, 1103, 1108, 1299, 1304, 1308, 1313, 1318, 1323, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1328,1339,1347,1354,1363,0,0,0,0,0,0,0},{933,1372,1388,0,0,0,0,0},{301,1404,1409,0,0,0,0,0,0,0,0,0},{307,1420,1428,0,0,0,0,0,0}},
-       {1445, 1467, 1420, 1404, 1476, 1492, 1505, 1512, {1519, 1529, 1539, 1549, 1559, 1569, 1579}, {1589, 1596, 1603, 1610, 1617, 1624, 1631}, {1638, 1642, 1646, 1650, 1654, 1658, 1662}, {1666, 1673, 1680, 1687, 1694, 1701, 1708, 1715, 1722, 1729, 1736, 1746, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1666, 1673, 1680, 1687, 1694, 1701, 1708, 1715, 1722, 1729, 1736, 1746, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1467,1819,1828,1328,1837,1848,1859,1866,1873,1880,0,0,0,0},{1445,1889,1916,0,0,0,0,0},{1404,301,1943,1951,0,0,0,0,0,0,0,0},{1420,307,1960,1971,0,0,0,0,0}},
-       {1445, 1467, 1420, 1404, 1476, 1492, 1505, 1512, {1519, 1529, 1539, 1549, 1559, 1569, 1579}, {1589, 1596, 1603, 1610, 1617, 1624, 1631}, {1638, 1642, 1646, 1650, 1654, 1658, 1662}, {1666, 1673, 1680, 1687, 1694, 1701, 1708, 1715, 1722, 1729, 1736, 1746, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1666, 1673, 1680, 1687, 1694, 1701, 1708, 1715, 1722, 1729, 1736, 1746, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1467,1819,1828,1328,1837,1848,1859,1866,1873,1880,0,0,0,0},{1445,1889,1916,0,0,0,0,0},{1404,301,1943,1951,0,0,0,0,0,0,0,0},{1420,307,1960,1971,0,0,0,0,0}},
-       {1983, 1996, 1420, 1404, 2005, 55, 2015, 2020, {2025, 2033, 2043, 2051, 2059, 2068, 2075}, {2082, 2085, 2088, 2092, 2095, 2099, 2103}, {2106, 2108, 2110, 2113, 2115, 2108, 2113}, {2118, 2124, 2130, 2138, 2144, 2152, 2160, 2170, 2176, 2184, 2192, 2201, 0}, {2210, 2216, 2223, 2231, 2237, 2245, 2253, 2263, 2176, 2269, 2277, 2287, 0}, {2296, 2299, 2302, 2305, 2308, 2311, 2314, 2317, 2320, 2323, 2327, 2331, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {1996,2335,1328,1819,1859,0,0,0,0,0,0,0,0,0},{1983,0,0,0,0,0,0,0},{1404,301,2342,2350,0,0,0,0,0,0,0,0},{1420,307,2355,2366,0,0,0,0,0}},
-       {1983, 2374, 307, 301, 2005, 2385, 2393, 2398, {2403, 2411, 2418, 2426, 2433, 2441, 2448}, {2456, 2461, 2465, 2469, 2473, 2477, 2481}, {2113, 2486, 2488, 2490, 2488, 2492, 2494}, {2496, 2503, 2511, 2517, 2523, 2527, 2532, 2537, 2544, 2554, 2562, 2571, 0}, {2496, 2503, 2511, 2517, 2523, 2527, 2532, 2537, 2544, 2554, 2562, 2571, 0}, {2580, 2584, 2588, 2592, 2523, 2596, 2600, 2604, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 2624, 268, {2374,1354,1328,2626,0,0,0,0,0,0,0,0,0,0},{1983,2637,0,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {2651, 2670, 307, 301, 2005, 55, 2681, 2687, {2694, 2702, 2709, 2718, 2727, 2738, 2746}, {2754, 2757, 2760, 2763, 2766, 2769, 2772}, {2113, 2486, 2775, 2486, 2775, 2492, 2113}, {2777, 2784, 2792, 2798, 2804, 2808, 2813, 2818, 2825, 2835, 2843, 2852, 0}, {2777, 2784, 2792, 2798, 2804, 2808, 2813, 2818, 2825, 2835, 2843, 2852, 0}, {2861, 2865, 2869, 2874, 2804, 2878, 2882, 2886, 2890, 2894, 2898, 2902, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {2670,2906,1363,2918,2926,1996,1328,0,0,0,0,0,0,0},{2651,1983,2933,0,0,0,0,0},{301,1404,2350,2945,0,0,0,0,0,0,0,0},{307,2956,2970,2985,0,0,0,0,0}},
-       {2992, 3010, 3019, 3030, 2005, 55, 3038, 3045, {3052, 3067, 3082, 3093, 3108, 3121, 3140}, {3155, 3162, 3169, 3176, 3183, 3190, 3197}, {3204, 3207, 3210, 3210, 3213, 3213, 3216}, {3219, 3240, 3263, 3278, 3295, 3306, 3321, 3336, 3355, 3378, 3397, 3416, 0}, {3437, 3458, 3481, 3496, 3513, 3524, 3539, 3554, 3573, 3596, 3615, 3634, 0}, {3655, 3662, 3669, 3676, 3683, 3690, 3699, 3708, 3715, 3722, 3729, 3736, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {3010,270,1347,14,3743,1328,0,0,0,0,0,0,0,0},{2992,3755,0,0,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {3767, 3787, 3019, 3030, 44, 3796, 3804, 3807, {3810, 3817, 3824, 3832, 3842, 3851, 3858}, {3867, 3871, 3875, 3879, 3883, 3887, 3891}, {2113, 2486, 2488, 3895, 2488, 2492, 2113}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {2861, 2865, 3951, 2874, 3920, 2878, 2882, 2886, 2890, 3955, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3787,3963,3970,3979,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {4028, 270, 1420, 1404, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 266, 268, {270,14,1339,1347,1354,1363,1328,2906,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{1404,301,1409,0,0,0,0,0,0,0,0,0},{1420,307,1428,0,0,0,0,0,0}},
-       {4303, 1996, 1420, 1404, 2005, 4320, 4332, 4336, {4340, 4352, 4364, 4374, 4388, 4398, 4410}, {4421, 4424, 4427, 4430, 4433, 4436, 4439}, {2113, 2486, 2488, 4442, 2488, 2108, 2494}, {4444, 4453, 4462, 4472, 4481, 4490, 4499, 4509, 4516, 4524, 4532, 4542, 0}, {4551, 4562, 4573, 4585, 4596, 4607, 4618, 4630, 4639, 4649, 4659, 4671, 0}, {4682, 4688, 4694, 4701, 4707, 4713, 4719, 4726, 4730, 4735, 4740, 4747, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {1996,2670,2926,1328,0,0,0,0,0,0,0,0,0,0},{4303,4753,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {4771, 270, 307, 301, 2005, 4788, 3804, 3807, {4795, 4804, 4810, 4816, 4825, 4831, 4840}, {4847, 4852, 4857, 4862, 4867, 4872, 4877}, {2775, 2494, 2486, 2486, 4155, 4157, 2113}, {4882, 4890, 4899, 4904, 4910, 4914, 4919, 4927, 4933, 4943, 1143, 4951, 0}, {4882, 4890, 4899, 4904, 4910, 4914, 4919, 4927, 4933, 4943, 1143, 4951, 0}, {4961, 4967, 4899, 4974, 4910, 4914, 4979, 4927, 4985, 1313, 1318, 4991, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 266, 268, {270,14,1363,1354,1328,0,0,0,0,0,0,0,0,0},{4771,4997,3755,0,0,0,0,0},{301,1404,5006,5012,5022,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {5030, 270, 307, 301, 2005, 55, 5048, 5061, {5072, 5090, 5104, 5122, 5140, 5158, 5174}, {5188, 5200, 5212, 5224, 5236, 5248, 5260}, {5267, 5270, 5273, 5276, 5279, 5282, 5285}, {5288, 5299, 5312, 5319, 5330, 5337, 5346, 5355, 5368, 5381, 5396, 5409, 0}, {5288, 5299, 5312, 5319, 5330, 5337, 5346, 5355, 5368, 5381, 5396, 5409, 0}, {5420, 5429, 5312, 5438, 5330, 5447, 5456, 5465, 5474, 5483, 5492, 5501, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,5510,14,1,1354,2374,5523,1328,5536,5553,0,0,0,0},{5030,5510,5563,5585,5536,0,0,0},{301,35,0,0,0,0,0,0,0,0,0,0},{307,23,0,0,0,0,0,0,0}},
-       {5606, 5620, 1420, 1404, 5632, 5643, 5651, 5655, {5659, 5669, 5677, 5682, 5689, 5702, 5710}, {4157, 5718, 4442, 5720, 5724, 2108, 5727}, {4157, 5718, 4442, 5731, 5724, 2108, 5731}, {5734, 5742, 5751, 5760, 5769, 5776, 5784, 5792, 5802, 5813, 2562, 2571, 0}, {5734, 5742, 5751, 5760, 5769, 5776, 5784, 5792, 5802, 5813, 2562, 2571, 0}, {5822, 1288, 5827, 5834, 5840, 5846, 5852, 5858, 5863, 5870, 1318, 5875, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {5620,5880,1328,5894,0,0,0,0,0,0,0,0,0,0},{5606,0,0,0,0,0,0,0},{1404,301,3030,0,0,0,0,0,0,0,0,0},{1420,307,3019,0,0,0,0,0,0}},
-       {1983, 1996, 307, 301, 2005, 2385, 5903, 5908, {5913, 5924, 5935, 5949, 5963, 5975, 5987}, {5999, 6003, 6008, 6013, 6018, 6022, 6027}, {1076, 6031, 6033, 6031, 6036, 6036, 1066}, {6038, 6046, 4899, 6055, 6062, 6067, 6074, 6081, 2544, 5813, 6089, 6099, 0}, {6038, 6046, 4899, 6055, 6062, 6067, 6074, 6081, 2544, 5813, 6089, 6099, 0}, {2580, 2584, 2588, 2592, 6062, 6108, 6113, 6118, 2608, 2612, 6124, 6129, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {1996,1363,6133,6145,1328,6158,0,0,0,0,0,0,0,0},{1983,2637,0,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {4771, 270, 307, 301, 2005, 55, 6167, 6170, {6173, 6182, 6190, 6199, 6210, 6219, 6228}, {4127, 4131, 2588, 6235, 6239, 6243, 6247}, {2775, 2494, 2486, 2486, 6251, 4157, 2113}, {6253, 6261, 6270, 6276, 6283, 6290, 6297, 6304, 6311, 6321, 6329, 6338, 0}, {6347, 6355, 4173, 6364, 6371, 6378, 6385, 4196, 6392, 6402, 1143, 6410, 0}, {6419, 2584, 2588, 2592, 6423, 6427, 6431, 4242, 6435, 6439, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,3743,14,6443,1347,1328,0,0,0,0,0,0,0,0},{4771,6451,3755,0,0,0,0,0},{301,1404,2350,5006,0,0,0,0,0,0,0,0},{307,2366,6460,0,0,0,0,0,0}},
-       {1445, 1837, 1420, 1404, 1476, 1492, 6469, 6476, {6483, 6493, 6503, 6513, 6523, 6533, 6543}, {1638, 6553, 6557, 6561, 6565, 6569, 6573}, {1638, 6553, 6557, 6561, 6565, 6569, 6573}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1837,1880,1866,1467,6577,6596,6613,1328,0,0,0,0,0,0},{1445,6634,6658,6685,0,0,0,0},{1404,301,1943,1951,0,0,0,0,0,0,0,0},{1420,307,1960,1971,0,0,0,0,0}},
-       {6714, 1328, 1960, 1943, 6743, 6760, 6774, 6781, {6788, 6798, 6808, 6818, 6828, 6838, 6848}, {6858, 6862, 6866, 6870, 6874, 6878, 6882}, {6858, 6862, 6866, 6870, 6874, 6878, 6882}, {6886, 6891, 6896, 6901, 6906, 6911, 6916, 6921, 6926, 6931, 6937, 6943, 0}, {6886, 6891, 6896, 6901, 6906, 6911, 6916, 6921, 6926, 6931, 6937, 6943, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1328,5894,1859,1819,0,0,0,0,0,0,0,0,0,0},{6714,6949,6973,7000,7022,7053,0,0},{1943,1951,1404,301,0,0,0,0,0,0,0,0},{1960,1971,1420,307,0,0,0,0,0}},
-       {4771, 7079, 1420, 1404, 2005, 55, 973, 978, {7088, 7095, 7103, 7111, 7120, 7130, 7138}, {7147, 4424, 7150, 7153, 7156, 7159, 7162}, {7165, 2486, 2775, 3895, 2775, 4157, 7165}, {7167, 7175, 7184, 2517, 7190, 2527, 2532, 7194, 2544, 2554, 2562, 2571, 0}, {7167, 7175, 7184, 2517, 7190, 2527, 2532, 7194, 2544, 2554, 2562, 2571, 0}, {2580, 2584, 7203, 2592, 7190, 2596, 2600, 2604, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 2624, 268, {7079,2335,1354,14,1363,2906,1328,0,0,0,0,0,0,0},{4771,6451,3755,4997,0,0,0,0},{1404,301,2350,7207,7219,0,0,0,0,0,0,0},{1420,307,7231,7246,0,0,0,0,0}},
-       {1983, 2670, 307, 301, 2005, 2385, 973, 978, {2403, 2411, 2418, 2426, 2433, 2441, 2448}, {7261, 7266, 7270, 7274, 7278, 7282, 7286}, {2113, 2486, 2488, 2490, 2488, 2492, 2494}, {2496, 2503, 4899, 2517, 4910, 2527, 2532, 2537, 2544, 2554, 2562, 6099, 0}, {2496, 2503, 4899, 2517, 4910, 2527, 2532, 2537, 2544, 2554, 2562, 6099, 0}, {2580, 2584, 2588, 2592, 4910, 2596, 2600, 2604, 2608, 2612, 2616, 6129, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 790, 268, {2670,1363,2926,1328,2906,0,0,0,0,0,0,0,0,0},{1983,2637,0,0,0,0,0,0},{301,1404,7291,5006,0,0,0,0,0,0,0,0},{307,1420,7302,6460,0,0,0,0,0}},
-       {3755, 1328, 307, 301, 2005, 4788, 3804, 3807, {7316, 7326, 7340, 7347, 7354, 7363, 2075}, {7371, 7378, 7383, 7387, 7392, 7397, 7401}, {2106, 2108, 3895, 7406, 7409, 2108, 2113}, {7411, 7420, 7425, 7432, 2523, 7442, 7451, 7458, 7468, 7478, 2192, 7491, 0}, {7501, 7510, 7517, 7523, 7532, 7537, 7545, 7551, 7560, 7570, 7584, 7594, 0}, {7602, 7606, 2588, 7610, 2523, 7614, 7618, 7622, 7626, 7630, 7635, 7639, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 2624, 268, {1328,5894,0,0,0,0,0,0,0,0,0,0,0,0},{3755,5510,0,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {7643, 270, 307, 301, 4057, 7671, 3804, 3807, {4072, 7684, 7698, 7711, 7724, 7737, 4119}, {4127, 7749, 7753, 7757, 7761, 7765, 4148}, {2775, 2113, 2488, 7769, 7769, 2113, 2113}, {7771, 7779, 7789, 1097, 7796, 7801, 7807, 4196, 7813, 7822, 7830, 7839, 0}, {7771, 7779, 7789, 1097, 7796, 7801, 7807, 4196, 7813, 7822, 7830, 7839, 0}, {2580, 7848, 2588, 4238, 4910, 2596, 2600, 4242, 6435, 7852, 2616, 7856, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,3010,1347,1354,2374,2335,7079,1363,2670,2906,2926,1996,1328},{7643,4281,0,0,0,0,0,0},{301,0,0,0,0,0,0,0,0,0,0,0},{307,0,0,0,0,0,0,0,0}},
-       {2992, 270, 307, 301, 2005, 55, 7860, 7863, {7866, 7875, 4810, 7885, 7893, 7901, 7910}, {7916, 7919, 4424, 7923, 7926, 7930, 2103}, {2775, 6251, 2486, 2486, 6251, 4157, 2113}, {7933, 7941, 4899, 7948, 7955, 7960, 7970, 7978, 7984, 7994, 2562, 2571, 0}, {7933, 7941, 4899, 7948, 7955, 7960, 7970, 7978, 7984, 7994, 2562, 2571, 0}, {8002, 8009, 4899, 4974, 7955, 8015, 8022, 7978, 8027, 1313, 1318, 5875, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1339,8033,1347,270,1328,0,0,0,0,0,0,0},{2992,3755,4997,0,0,0,0,0},{301,1404,8041,8053,8064,8072,8082,8091,2945,8097,8105,8110},{307,1420,8113,8128,2970,2956,8142,8155,2985}},
-       {3755, 2670, 307, 301, 2005, 4788, 3804, 3807, {8167, 8177, 8182, 8189, 8198, 8202, 8209}, {8220, 8223, 8226, 2763, 8229, 8232, 8235}, {2775, 2494, 2486, 2486, 4155, 4157, 2113}, {8239, 8248, 8258, 8265, 4910, 8273, 8279, 2537, 8285, 8296, 8306, 8316, 0}, {8239, 8248, 8258, 8265, 4910, 8273, 8279, 2537, 8285, 8296, 8306, 8316, 0}, {8326, 8331, 4857, 8336, 4910, 8341, 8346, 5858, 4985, 1313, 1318, 5875, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1996,1328,0,0,0,0,0,0,0,0,0,0,0},{3755,0,0,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {841, 2670, 1420, 1404, 2005, 3796, 8351, 8371, {8397, 8420, 451, 8443, 8454, 8469, 8484}, {8499, 8504, 8509, 8514, 8519, 8524, 8529}, {8534, 8537, 8534, 8540, 8543, 8537, 8540}, {8546, 8559, 8574, 8583, 8596, 8603, 8612, 8621, 8634, 8651, 8666, 8679, 0}, {8694, 8707, 8722, 8733, 8746, 8753, 8762, 8771, 8786, 8803, 8818, 8831, 0}, {8846, 8854, 8574, 8864, 8596, 8603, 8612, 8872, 8880, 8890, 8898, 8908, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,2926,14,1328,0,0,0,0,0,0,0,0,0},{841,316,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {8916, 8930, 1420, 1404, 44, 2385, 3804, 3807, {8940, 8949, 8961, 8968, 8976, 8986, 8992}, {8999, 9003, 9007, 9011, 9015, 9020, 9024}, {9028, 9030, 9032, 1076, 9034, 9030, 1076}, {9037, 9047, 9056, 9064, 9072, 9080, 9087, 9094, 9102, 2192, 9108, 9116, 0}, {9125, 9135, 9144, 9152, 9160, 9168, 9175, 9182, 9191, 7584, 9197, 9207, 0}, {9216, 9220, 9225, 9230, 9234, 7618, 9238, 9242, 9246, 7635, 9250, 9254, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {8930,9258,6133,9266,9278,9288,9298,1328,0,0,0,0,0,0},{8916,9310,9325,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {1983, 9345, 1420, 1404, 2005, 55, 9356, 9367, {9378, 9386, 9395, 9402, 9409, 9418, 2075}, {2082, 2085, 9425, 2092, 9428, 9432, 2103}, {2106, 2108, 9435, 2113, 9437, 2108, 2113}, {5734, 5742, 9440, 6055, 9446, 6108, 6113, 2537, 2544, 5813, 2562, 2571, 0}, {9451, 9460, 7517, 9470, 9478, 9484, 9490, 9496, 9504, 9514, 9523, 9532, 0}, {2580, 2584, 2588, 2592, 9446, 6108, 6113, 2604, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 9541, 268, {9345,1996,9544,2926,2670,1363,1328,0,0,0,0,0,0,0},{1983,2637,0,0,0,0,0,0},{1404,301,2350,0,0,0,0,0,0,0,0,0},{1420,307,2366,0,0,0,0,0,0}},
-       {1328, 1328, 9553, 9564, 9572, 3796, 9580, 9583, {9586, 9593, 9602, 9611, 9623, 9631, 9640}, {9650, 9654, 3951, 9659, 9664, 9668, 9672}, {2775, 5718, 2486, 2486, 9676, 2108, 2113}, {9678, 9684, 4899, 9691, 2523, 9697, 9705, 9712, 9718, 9726, 9732, 9740, 0}, {9678, 9684, 4899, 9691, 2523, 9697, 9705, 9712, 9718, 9726, 9732, 9740, 0}, {2861, 9748, 3951, 9752, 9756, 9760, 9764, 9768, 9672, 9772, 9776, 9781, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 2624, 268, {1328,5894,0,0,0,0,0,0,0,0,0,0,0,0},{1328,0,0,0,0,0,0,0},{9564,301,0,0,0,0,0,0,0,0,0,0},{9553,307,0,0,0,0,0,0,0}},
-       {9785, 1328, 307, 301, 2005, 9803, 9816, 9819, {9822, 9830, 9838, 2426, 2433, 2441, 9845}, {9853, 9858, 9863, 2469, 2473, 2477, 9867}, {2113, 2486, 2488, 2490, 2488, 2492, 2494}, {7167, 7175, 4899, 2517, 2523, 2527, 2532, 9872, 2544, 2554, 2562, 2571, 0}, {7167, 7175, 4899, 2517, 2523, 2527, 2532, 9872, 2544, 2554, 2562, 2571, 0}, {2580, 2584, 2588, 2592, 2523, 2596, 2600, 2604, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 2624, 268, {1328,5894,0,0,0,0,0,0,0,0,0,0,0,0},{9785,9880,0,0,0,0,0,0},{301,1404,9903,0,0,0,0,0,0,0,0,0},{307,1420,9913,0,0,0,0,0,0}},
-       {3755, 3010, 1420, 1404, 2005, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1347,14,270,9926,9937,1328,0,0,0,0,0,0,0},{3755,9949,9965,0,0,0,0,0},{1404,301,3030,35,0,0,0,0,0,0,0,0},{1420,307,3019,23,0,0,0,0,0}},
-       {10007, 2670, 307, 301, 2005, 55, 3804, 3807, {10025, 10031, 10041, 10047, 10058, 10068, 10073}, {10083, 10087, 10091, 10095, 10100, 10104, 10108}, {2108, 2108, 2113, 10112, 2108, 7409, 7409}, {10115, 10120, 10127, 10132, 10138, 10145, 10153, 10160, 10169, 10176, 10181, 10188, 0}, {10115, 10120, 10127, 10132, 10138, 10145, 10153, 10160, 10169, 10176, 10181, 10188, 0}, {10196, 10200, 3951, 10205, 3920, 10209, 10213, 10217, 10222, 10226, 10230, 10234, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,1328,0,0,0,0,0,0,0,0,0,0,0},{10007,5510,0,0,0,0,0,0},{301,0,0,0,0,0,0,0,0,0,0,0},{307,0,0,0,0,0,0,0,0}},
-       {4014, 270, 3019, 3030, 44, 55, 10238, 10243, {10250, 10261, 10268, 10277, 10284, 10297, 10306}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {10315, 10326, 10337, 10346, 10357, 10362, 10369, 10380, 10389, 10400, 10413, 10424, 0}, {10315, 10326, 10337, 10346, 10357, 10362, 10369, 10380, 10389, 10400, 10413, 10424, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {5510, 270, 1420, 1404, 2005, 55, 3804, 3807, {10435, 10442, 10448, 10455, 10460, 10466, 10472}, {10478, 10482, 10486, 10490, 10494, 10498, 10502}, {2486, 2113, 2113, 10506, 4442, 4155, 2113}, {10508, 10516, 10525, 2798, 10531, 2808, 2813, 10535, 2825, 2835, 2843, 10543, 0}, {10508, 10516, 10525, 2798, 10531, 2808, 2813, 10535, 2825, 2835, 2843, 10543, 0}, {2861, 2865, 3951, 2874, 10531, 2878, 2882, 10552, 2890, 2894, 2898, 10556, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {10560, 2670, 1420, 1404, 10578, 4788, 10594, 10599, {10604, 10617, 10636, 10653, 10666, 10679, 10696}, {10709, 8504, 8509, 8514, 8519, 8524, 8529}, {10714, 8537, 8534, 8540, 8543, 8537, 8540}, {10717, 10730, 10741, 10758, 10773, 10788, 10803, 10816, 10831, 10848, 10863, 10880, 0}, {10895, 10906, 10919, 10934, 10947, 10960, 10973, 10984, 10997, 11012, 11025, 11044, 0}, {11057, 11064, 11071, 11078, 11085, 11092, 11099, 11106, 11113, 11120, 11127, 11134, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,1328,0,0,0,0,0,0,0,0,0,0,0},{10560,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {3755, 2670, 1420, 1404, 2005, 4788, 11141, 11154, {11167, 11182, 11203, 11218, 11231, 11244, 11259}, {520, 525, 11272, 535, 11277, 545, 550}, {555, 558, 11282, 564, 567, 558, 564}, {11285, 11302, 11311, 11326, 11343, 11358, 11373, 11386, 11401, 11418, 11439, 11456, 0}, {11285, 11302, 11311, 11326, 620, 11358, 11373, 11386, 11401, 11418, 11439, 11456, 0}, {11471, 11478, 11485, 11492, 11499, 11506, 11513, 11520, 11527, 11534, 11541, 11548, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 790, 268, {2670,1363,1328,0,0,0,0,0,0,0,0,0,0,0},{3755,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {1983, 1996, 1420, 1404, 2005, 2385, 2015, 11555, {11560, 11568, 11579, 11585, 11591, 11600, 2075}, {8999, 9003, 2473, 11606, 9015, 9020, 11610}, {9028, 9030, 1068, 1076, 9034, 9030, 1076}, {2496, 2503, 9440, 2517, 2523, 11614, 11620, 11626, 2544, 2554, 2562, 2571, 0}, {2496, 2503, 9440, 2517, 2523, 11614, 11620, 11626, 2544, 2554, 2562, 2571, 0}, {2580, 2584, 2588, 2592, 2523, 2596, 2600, 11633, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {1996,2926,9345,2670,9544,1363,11637,1328,0,0,0,0,0,0},{1983,2637,2651,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {11648, 11667, 1420, 1404, 11677, 2385, 11693, 11698, {11703, 11714, 11725, 11736, 11747, 11758, 11764}, {2108, 9676, 2488, 4442, 2106, 10506, 2494}, {2108, 9676, 2488, 4442, 2106, 10506, 2494}, {11773, 11781, 11790, 11797, 4910, 11804, 11810, 2537, 2544, 11816, 2562, 11825, 0}, {11773, 11781, 11790, 11797, 4910, 11804, 11810, 2537, 2544, 11816, 2562, 11825, 0}, {11835, 11840, 11790, 2592, 4910, 11804, 11810, 2604, 11846, 2612, 2616, 11851, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {11667,2670,1363,1328,0,0,0,0,0,0,0,0,0,0},{11648,11856,2651,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {11876, 5620, 1420, 1404, 5632, 2385, 11903, 11920, {11934, 11945, 11955, 11964, 11975, 11987, 11998}, {12008, 12011, 12014, 12017, 12020, 12023, 12026}, {2113, 2108, 2490, 2488, 7409, 2108, 2113}, {12029, 12039, 2511, 12050, 12059, 12065, 12073, 12081, 12089, 12100, 12109, 12119, 0}, {12029, 12039, 2511, 12050, 12059, 12065, 12073, 12081, 12089, 12100, 12109, 12119, 0}, {4961, 1288, 2511, 8336, 12059, 12129, 12135, 5858, 4985, 5870, 1318, 5875, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {5620,12141,1328,0,0,0,0,0,0,0,0,0,0,0},{11876,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {12151, 1848, 307, 301, 12173, 12188, 12200, 11555, {12206, 12218, 12230, 12242, 12256, 12271, 12284}, {12298, 12011, 12301, 12017, 12304, 12307, 12310}, {2113, 2108, 12314, 2488, 4442, 2108, 9437}, {12316, 12323, 12331, 12337, 12346, 12355, 12365, 12371, 12382, 12392, 12399, 12409, 0}, {12417, 12424, 12432, 12438, 12447, 12456, 12466, 12472, 12483, 12493, 12500, 12510, 0}, {12518, 12524, 12529, 12534, 12539, 12544, 12549, 12555, 12561, 12567, 12573, 12580, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {1848,1328,0,0,0,0,0,0,0,0,0,0,0,0},{12151,0,0,0,0,0,0,0},{301,0,0,0,0,0,0,0,0,0,0,0},{307,0,0,0,0,0,0,0,0}},
-       {3755, 1363, 1420, 1404, 2005, 3796, 12587, 12599, {12611, 12626, 12641, 12656, 12673, 12692, 12703}, {12714, 12721, 12728, 12735, 12742, 12749, 12756}, {0, 0, 0, 0, 0, 0, 0}, {12763, 12774, 8574, 12787, 8596, 12798, 12805, 8621, 12812, 12827, 12840, 12851, 0}, {12763, 12774, 8574, 12787, 8596, 12798, 12805, 8621, 12812, 12827, 12840, 12851, 0}, {12864, 12871, 12878, 12885, 8596, 12798, 12805, 12892, 12899, 12906, 12913, 12920, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 790, 268, {1363,1328,0,0,0,0,0,0,0,0,0,0,0,0},{3755,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,0,0,0,0,0,0,0,0}},
-       {3767, 3979, 23, 35, 44, 3796, 12927, 12947, {12964, 12977, 12990, 13006, 13023, 13038, 13047}, {12964, 12977, 12990, 13006, 13023, 13038, 13047}, {13056, 13059, 13062, 13065, 13068, 13071, 13074}, {13077, 13090, 13101, 13110, 13121, 13126, 13135, 13146, 13153, 13168, 13179, 13192, 0}, {13205, 13220, 13101, 13110, 13233, 13126, 13240, 13146, 13153, 13168, 13179, 13192, 0}, {13077, 13090, 13101, 13110, 13121, 13126, 13135, 13146, 13153, 13168, 13179, 13192, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {3979,3970,0,0,0,0,0,0,0,0,0,0,0,0},{3767,4000,0,0,0,0,0,0},{35,301,0,0,0,0,0,0,0,0,0,0},{23,307,0,0,0,0,0,0,0}},
-       {5510, 270, 3019, 3030, 2005, 55, 13253, 13256, {13259, 13272, 13282, 13291, 13301, 13312, 13323}, {13335, 13338, 13343, 13348, 13353, 13358, 13363}, {13335, 13368, 13371, 13374, 13377, 13380, 13383}, {13386, 13399, 13410, 13420, 13431, 13443, 13455, 13468, 13480, 13493, 13508, 13529, 0}, {13386, 13399, 13410, 13420, 13431, 13443, 13455, 13468, 13480, 13493, 13508, 13529, 0}, {13548, 13554, 13560, 13566, 13572, 13578, 13584, 13590, 13596, 13602, 13609, 13616, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 266, 268, {270,14,1354,2374,1328,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {13623, 2670, 1420, 1404, 44, 4788, 13636, 13644, {13652, 13665, 13686, 13705, 13726, 13745, 13758}, {13769, 13776, 13783, 13790, 13797, 13804, 13811}, {0, 0, 0, 0, 0, 0, 0}, {13818, 13833, 13848, 13857, 13868, 13879, 13892, 13905, 13920, 13939, 13958, 13975, 0}, {13818, 13833, 13848, 13857, 13868, 13879, 13892, 13905, 13920, 13939, 13958, 13975, 0}, {13994, 14001, 14008, 14015, 14022, 14029, 14036, 14043, 14050, 14057, 14064, 14071, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,14078,270,14088,3743,1328,0,0,0,0,0,0,0},{13623,2992,14099,5510,14118,14129,14141,14158},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {3755, 2670, 1420, 1404, 2005, 4788, 0, 0, {14176, 14182, 14196, 14219, 14233, 14249, 14256}, {14265, 14268, 14273, 14279, 14283, 7409, 14288}, {251, 239, 241, 243, 245, 247, 249}, {14292, 14299, 10127, 14306, 3920, 14312, 14318, 14324, 14331, 14340, 14348, 14355, 0}, {14292, 14299, 10127, 14306, 3920, 14312, 14318, 14324, 14331, 14340, 14348, 14355, 0}, {14362, 7848, 2588, 2592, 14366, 14370, 14374, 14378, 14382, 2612, 14386, 14390, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 790, 268, {2670,1363,2926,14,1328,0,0,0,0,0,0,0,0,0},{3755,5510,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {14394, 1837, 1420, 301, 14421, 3796, 3804, 3807, {14437, 14445, 14456, 14466, 14477, 14486, 14495}, {14505, 14508, 14511, 14514, 14517, 14520, 14523}, {14526, 2486, 12314, 2494, 12314, 2490, 14526}, {14528, 14538, 14546, 14554, 14562, 14570, 14577, 14585, 14593, 14600, 14606, 14613, 0}, {14528, 14538, 14546, 14554, 14562, 14570, 14577, 14585, 14593, 14600, 14606, 14613, 0}, {14621, 14625, 2588, 14629, 4910, 14633, 14637, 14641, 14645, 14649, 14653, 14657, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {1837,1328,0,0,0,0,0,0,0,0,0,0,0,0},{14394,0,0,0,0,0,0,0},{301,0,0,0,0,0,0,0,0,0,0,0},{1420,307,1428,0,0,0,0,0,0}},
-       {14099, 2670, 307, 301, 2005, 55, 14661, 14682, {14699, 430, 451, 8443, 14712, 14729, 14740}, {14753, 14761, 14769, 14775, 14783, 14791, 14799}, {555, 558, 561, 564, 567, 558, 564}, {14807, 583, 600, 609, 14822, 14829, 14838, 641, 654, 673, 690, 705, 0}, {14807, 583, 600, 609, 14822, 14829, 14838, 641, 654, 673, 690, 705, 0}, {14847, 14855, 14863, 738, 14822, 14871, 14879, 746, 754, 764, 772, 14887, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,1328,0,0,0,0,0,0,0,0,0,0,0},{14099,0,0,0,0,0,0,0},{301,0,0,0,0,0,0,0,0,0,0,0},{307,0,0,0,0,0,0,0,0}},
-       {5510, 1837, 23, 35, 2005, 55, 0, 0, {14899, 14906, 14917, 14926, 14935, 14942, 14953}, {14963, 14967, 14971, 14975, 14979, 14982, 14986}, {0, 0, 0, 0, 0, 0, 0}, {14990, 15000, 15009, 15017, 15026, 15039, 15051, 15058, 15065, 15072, 15082, 15094, 0}, {14990, 15000, 15009, 15017, 15026, 15039, 15051, 15058, 15065, 15072, 15082, 15094, 0}, {15107, 15111, 15115, 15119, 15123, 15127, 15131, 15135, 15139, 15143, 15147, 15151, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1837,1880,1328,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{35,3030,301,0,0,0,0,0,0,0,0,0},{23,3019,307,0,0,0,0,0,0}},
-       {5510, 1837, 23, 35, 2005, 55, 0, 0, {15155, 15160, 15166, 15176, 15188, 15196, 15207}, {15216, 15220, 15224, 15228, 15232, 15236, 15240}, {0, 0, 0, 0, 0, 0, 0}, {15244, 15254, 15264, 15271, 15278, 2808, 15283, 15290, 15297, 15306, 15314, 15322, 0}, {15244, 15254, 15264, 15271, 15278, 2808, 15283, 15290, 15297, 15306, 15314, 15322, 0}, {2861, 2865, 14986, 15330, 15334, 2878, 2882, 15338, 2890, 2894, 2898, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1837,1880,1328,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{35,3030,301,0,0,0,0,0,0,0,0,0},{23,3019,307,0,0,0,0,0,0}},
-       {5510, 1837, 23, 35, 2005, 55, 3804, 3807, {15346, 15352, 15363, 15176, 15373, 15196, 15207}, {15382, 15386, 15390, 15228, 15232, 15236, 15240}, {2113, 2486, 15394, 2488, 2113, 5718, 2486}, {15396, 15406, 15417, 15424, 15433, 15439, 15445, 15453, 15461, 15472, 15482, 15491, 0}, {15500, 15254, 15509, 15515, 15278, 2808, 15283, 15290, 15522, 15306, 15314, 15322, 0}, {2861, 2865, 15532, 2874, 15334, 2878, 2882, 15338, 2890, 2894, 2898, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1837,1880,1328,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{35,3030,301,0,0,0,0,0,0,0,0,0},{23,3019,307,0,0,0,0,0,0}},
-       {5510, 1837, 23, 35, 2005, 55, 15536, 15540, {15544, 15551, 15559, 15567, 15576, 15586, 15593}, {2754, 8226, 2760, 15602, 2766, 15605, 2772}, {2113, 2486, 2775, 3895, 2775, 4157, 2113}, {15608, 15617, 15627, 2798, 10531, 15633, 15639, 15645, 2825, 2835, 2843, 10543, 0}, {15608, 15617, 15627, 2798, 10531, 15633, 15639, 15645, 2825, 2835, 2843, 10543, 0}, {2861, 2865, 3951, 2874, 10531, 2878, 2882, 2886, 2890, 2894, 2898, 10556, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1837,1880,1328,15654,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{35,3030,301,0,0,0,0,0,0,0,0,0},{23,3019,307,0,0,0,0,0,0}},
-       {15666, 2670, 1420, 1404, 2005, 15698, 15704, 15720, {15742, 15758, 15783, 15811, 15839, 15867, 15895}, {15914, 15924, 15934, 15944, 15954, 15964, 15974}, {15984, 15988, 15992, 15988, 15996, 16000, 16004}, {16008, 16030, 16058, 16074, 16093, 16109, 16128, 16144, 16166, 16197, 16225, 16250, 0}, {16008, 16030, 16058, 16074, 16093, 16109, 16128, 16144, 16166, 16197, 16225, 16250, 0}, {16278, 16288, 16298, 16308, 16318, 16328, 16338, 16348, 16358, 16368, 16378, 16388, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,2926,14,1328,0,0,0,0,0,0,0,0,0},{15666,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {1983, 2374, 307, 301, 2005, 2385, 16398, 16403, {5913, 16408, 16419, 16429, 16439, 16449, 16463}, {5999, 6003, 16475, 16480, 16484, 16489, 16494}, {2113, 2486, 2488, 2486, 5718, 2492, 2494}, {2496, 2503, 4899, 6055, 4910, 2527, 2532, 2537, 2544, 2554, 2562, 6099, 0}, {2496, 2503, 4899, 6055, 4910, 2527, 2532, 2537, 2544, 2554, 2562, 6099, 0}, {2580, 2584, 2588, 2592, 4910, 2596, 2600, 2604, 2608, 2612, 2616, 6129, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 2624, 268, {2374,1354,1328,0,0,0,0,0,0,0,0,0,0,0},{1983,0,0,0,0,0,0,0},{301,5006,0,0,0,0,0,0,0,0,0,0},{307,6460,0,0,0,0,0,0,0}},
-       {5510, 2374, 307, 301, 44, 55, 16498, 16526, {16548, 16567, 16586, 16608, 16627, 16661, 16686}, {16705, 16716, 16727, 16741, 16752, 16763, 16780}, {16791, 16795, 16802, 16809, 16816, 16823, 16830}, {16834, 16850, 16866, 16882, 16901, 16908, 16918, 16934, 16950, 16972, 16994, 17013, 0}, {16834, 16850, 16866, 16882, 16901, 16908, 16918, 16934, 16950, 16972, 16994, 17013, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,1354,2335,2926,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {17035, 270, 307, 301, 2005, 17059, 17072, 17075, {17078, 17087, 17096, 17106, 17116, 17126, 17138}, {17146, 17151, 17155, 17159, 17163, 17168, 17173}, {17177, 2488, 2488, 9676, 17177, 17180, 2113}, {17183, 17190, 17195, 2798, 17201, 17207, 17214, 17220, 17228, 17238, 17246, 17255, 0}, {17183, 17190, 17195, 2798, 17201, 17207, 17214, 17220, 17228, 17238, 17246, 17255, 0}, {2861, 17265, 3951, 2874, 17269, 17273, 17278, 17282, 17286, 17290, 2898, 17294, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,1328,17299,7079,3010,0,0,0,0,0,0,0,0,0},{17035,17308,9937,0,0,0,0,0},{301,3030,1404,35,0,0,0,0,0,0,0,0},{307,3019,1420,23,0,0,0,0,0}},
-       {17326, 2670, 307, 301, 2005, 17344, 17358, 17363, {17368, 17380, 17391, 17405, 17417, 17427, 17437}, {17448, 17453, 17458, 17463, 17468, 17473, 17478}, {2113, 4157, 2486, 6251, 2775, 15394, 2494}, {17483, 17500, 17513, 17527, 17540, 17553, 17566, 17580, 17592, 17606, 17620, 17634, 0}, {17483, 17500, 17513, 17527, 17540, 17553, 17566, 17580, 17592, 17606, 17620, 17634, 0}, {17647, 17654, 17659, 17664, 17668, 17673, 17678, 17683, 17688, 17695, 17700, 17706, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {2670,1363,2926,1328,0,0,0,0,0,0,0,0,0,0},{17326,0,0,0,0,0,0,0},{301,1404,5006,0,0,0,0,0,0,0,0,0},{307,1420,6460,0,0,0,0,0,0}},
-       {3755, 270, 307, 301, 2005, 55, 973, 978, {17711, 17725, 17735, 17746, 17760, 17771, 17782}, {17795, 17800, 17805, 17812, 17818, 17824, 17830}, {2775, 2494, 2486, 7409, 2775, 12314, 2113}, {17835, 17843, 17851, 17858, 17867, 17877, 17887, 17893, 17901, 17916, 17934, 17942, 0}, {17835, 17843, 17851, 17858, 17867, 17877, 17887, 17893, 17901, 17916, 17934, 17942, 0}, {17950, 17954, 17851, 17960, 17964, 17969, 17887, 17975, 17980, 17987, 17994, 17999, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1347,2926,1328,0,0,0,0,0,0,0,0,0},{3755,5510,9937,9926,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {5510, 270, 1420, 1404, 2005, 55, 18004, 18007, {18011, 18016, 10448, 10455, 18022, 18029, 10472}, {18036, 18040, 10486, 10490, 18044, 10498, 10502}, {12314, 14526, 2113, 10506, 4442, 4155, 2113}, {10508, 10516, 18048, 2798, 10531, 2878, 18052, 18058, 2825, 2835, 2843, 18063, 0}, {10508, 10516, 18048, 2798, 10531, 2878, 18052, 18058, 2825, 2835, 2843, 18063, 0}, {2861, 2865, 18048, 2874, 10531, 2878, 2882, 18058, 2890, 2894, 2898, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {18072, 2670, 1420, 1404, 2005, 4788, 0, 0, {18090, 18105, 18122, 18139, 18154, 18171, 18180}, {18191, 18197, 18203, 18209, 18215, 18221, 18227}, {239, 0, 0, 245, 247, 249, 251}, {18233, 18246, 18257, 18270, 18281, 18292, 18305, 18316, 18327, 18344, 18355, 18368, 0}, {18233, 18387, 18257, 18270, 18281, 18292, 18305, 18316, 18327, 18344, 18355, 18368, 0}, {18398, 18406, 18414, 18422, 18430, 18438, 18446, 18454, 18462, 18470, 18478, 18486, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 790, 268, {2670,1363,2926,14,1328,0,0,0,0,0,0,0,0,0},{18072,18496,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {18515, 1363, 1420, 1404, 18535, 4788, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {1363,1328,0,0,0,0,0,0,0,0,0,0,0,0},{18515,0,0,0,0,0,0,0},{1404,0,0,0,0,0,0,0,0,0,0,0},{1420,0,0,0,0,0,0,0,0}},
-       {3767, 3787, 3019, 3030, 44, 3796, 18551, 18559, {18567, 18576, 18585, 18593, 18602, 18611, 18618}, {18627, 18630, 18633, 18636, 18639, 18643, 18646}, {241, 243, 245, 247, 12314, 14526, 239}, {10508, 10516, 18649, 18655, 10531, 2808, 18052, 18662, 15297, 18669, 15314, 18676, 0}, {10508, 10516, 18649, 18655, 10531, 2808, 18052, 18662, 15297, 18669, 15314, 18676, 0}, {2861, 2865, 18048, 2874, 10531, 2878, 2882, 18684, 2890, 2894, 2898, 10556, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3787,3963,3970,3979,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {18688, 18706, 307, 301, 2005, 18717, 0, 0, {18724, 18739, 18754, 18769, 18786, 18803, 18812}, {18823, 18830, 18837, 18844, 18851, 18858, 18865}, {18872, 18875, 8540, 8543, 8537, 18878, 18881}, {12763, 12774, 8574, 12787, 8596, 12798, 12805, 8621, 12812, 12827, 12840, 12851, 0}, {12763, 12774, 8574, 12787, 8596, 12798, 12805, 8621, 12812, 12827, 12840, 12851, 0}, {12864, 12871, 12878, 12885, 8596, 12798, 12805, 12892, 12899, 12906, 12913, 12920, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {18706,1363,2926,14,1328,0,0,0,0,0,0,0,0,0},{18688,3755,5510,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {5510, 1354, 6460, 5006, 44, 55, 18884, 18912, {18934, 18953, 18972, 18997, 19016, 19050, 19075}, {19094, 19104, 19114, 19130, 19140, 19165, 19181}, {19191, 19195, 19202, 19206, 19213, 19220, 19227}, {19231, 19259, 19293, 19309, 19328, 19335, 19345, 19361, 19377, 19408, 19430, 19452, 0}, {19231, 19259, 19293, 19309, 19328, 19335, 19345, 19361, 19377, 19408, 19430, 19452, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 2624, 268, {1354,2335,2926,2374,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{5006,2350,19477,19486,0,0,0,0,0,0,0,0},{6460,2366,19494,19506,0,0,0,0,0}},
-       {10007, 1354, 1971, 1951, 44, 55, 19517, 19549, {19581, 19597, 19616, 19638, 19657, 19676, 19704}, {19732, 19740, 19751, 19765, 19776, 19787, 19804}, {19818, 19822, 19829, 19836, 19846, 19853, 19866}, {19873, 19889, 19908, 19921, 19940, 19947, 19957, 19973, 19986, 20002, 20021, 20037, 0}, {19873, 19889, 19908, 19921, 19940, 19947, 19957, 19973, 19986, 20002, 20021, 20037, 0}, {239, 241, 243, 245, 19940, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1354,2335,2926,2374,1328,0,0,0,0,0,0,0,0,0},{10007,3755,0,0,0,0,0,0},{1951,1943,1404,301,0,0,0,0,0,0,0,0},{1971,1960,1420,307,0,0,0,0,0}},
-       {5510, 1354, 307, 301, 44, 55, 20053, 20094, {20135, 20154, 20173, 20195, 20214, 20236, 20261}, {20280, 20290, 20300, 20313, 20323, 20336, 20352}, {20362, 20366, 20373, 20380, 20387, 20394, 20401}, {20405, 20433, 20461, 20477, 20496, 20503, 20513, 20529, 20545, 20573, 20595, 20617, 0}, {20405, 20433, 20461, 20477, 20496, 20503, 20513, 20529, 20545, 20573, 20595, 20617, 0}, {20642, 20661, 20461, 20477, 20496, 20503, 20513, 20529, 20680, 20696, 20712, 20722, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1354,2335,2926,2374,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {5510, 1354, 307, 301, 44, 55, 7860, 20735, {20738, 20757, 20776, 20801, 20820, 20842, 20867}, {20886, 20896, 20906, 20922, 20932, 20945, 20961}, {20971, 20975, 20982, 20986, 20993, 21000, 21007}, {21011, 21033, 21064, 21086, 21105, 21112, 21122, 21138, 21154, 21185, 21207, 21229, 0}, {21011, 21033, 21064, 21086, 21105, 21112, 21122, 21138, 21154, 21185, 21207, 21229, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1354,2335,2926,2374,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {5510, 2374, 307, 301, 2005, 55, 21254, 21279, {21304, 21323, 21345, 21370, 21386, 21408, 21427}, {21437, 21444, 21451, 21458, 21465, 21472, 21479}, {21437, 21444, 21451, 21458, 21465, 21472, 21479}, {21483, 21499, 21524, 21543, 21562, 21569, 21582, 21595, 21614, 21645, 21670, 21692, 0}, {21483, 21499, 21524, 21543, 21562, 21569, 21582, 21717, 21614, 21645, 21670, 21692, 0}, {21736, 21744, 21758, 21772, 21562, 21569, 21582, 21783, 21791, 21805, 21816, 21824, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,1354,2335,2926,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {5510, 1354, 307, 301, 44, 55, 21835, 21866, {21891, 21913, 21935, 21960, 21982, 22007, 22035}, {22057, 22067, 22077, 22090, 22100, 22113, 22129}, {22139, 22143, 22150, 22154, 22161, 22168, 22175}, {22179, 22195, 22220, 22239, 22261, 22268, 22281, 22294, 22313, 22344, 22369, 22388, 0}, {22179, 22195, 22220, 22239, 22261, 22268, 22281, 22294, 22313, 22344, 22369, 22388, 0}, {22413, 22420, 243, 22436, 22261, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1354,2335,2926,2374,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {5510, 1354, 307, 301, 44, 55, 3804, 3807, {22452, 22471, 22490, 22512, 22531, 22553, 22578}, {22597, 22602, 22610, 22618, 22626, 22634, 22642}, {22653, 22657, 22664, 22671, 22678, 22685, 22692}, {22696, 22712, 22737, 22756, 22778, 22785, 22798, 22811, 22830, 22858, 22883, 22905, 0}, {22696, 22712, 22737, 22756, 22778, 22785, 22798, 22811, 22830, 22858, 22883, 22905, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1354,2335,2926,2374,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {5510, 1354, 6460, 5006, 44, 55, 22930, 22949, {22980, 23005, 23036, 23064, 23089, 23117, 23151}, {23176, 23195, 23220, 23236, 23255, 23274, 23293}, {23303, 23310, 23317, 23324, 23331, 23344, 23351}, {23355, 23374, 23402, 23430, 23455, 23468, 23484, 23497, 23522, 23559, 23587, 23609, 0}, {23355, 23374, 23402, 23430, 23455, 23468, 23484, 23497, 23522, 23559, 23587, 23609, 0}, {23634, 23644, 23663, 23679, 23455, 23468, 23484, 23695, 23702, 23727, 23743, 23753, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1354,2335,2926,2374,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{5006,2350,19477,19486,0,0,0,0,0,0,0,0},{6460,2366,19494,19506,0,0,0,0,0}},
-       {23766, 2374, 1960, 1943, 23785, 55, 23793, 23821, {23843, 23862, 23881, 23906, 23925, 23959, 23984}, {24003, 19104, 19114, 19130, 24013, 24038, 19181}, {0, 0, 0, 0, 0, 0, 0}, {24054, 24079, 24110, 24126, 19328, 19335, 19345, 24145, 24161, 24192, 24214, 24236, 0}, {24054, 24079, 24110, 24126, 19328, 19335, 19345, 24145, 24161, 24192, 24214, 24236, 0}, {24261, 24274, 24110, 24126, 19328, 19335, 19345, 24293, 24300, 24316, 24332, 24342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,0,0,0,0,0,0,0,0,0,0,0,0,0},{23766,0,0,0,0,0,0,0},{1943,1951,0,0,0,0,0,0,0,0,0,0},{1960,1971,0,0,0,0,0,0,0}},
-       {5510, 2374, 307, 301, 44, 55, 3804, 3807, {16548, 16567, 24355, 16608, 24377, 16661, 16686}, {24399, 24409, 24419, 24432, 24442, 24455, 24471}, {16791, 16795, 16802, 16809, 16816, 16823, 16830}, {24481, 24506, 16866, 24537, 24556, 16908, 24563, 24576, 24592, 24617, 24639, 24667, 0}, {24481, 24506, 16866, 24537, 24556, 16908, 24563, 24576, 24592, 24617, 24639, 24667, 0}, {24689, 24702, 16866, 24721, 24556, 16908, 24563, 24737, 24744, 257, 24766, 24788, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,1354,2335,2926,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {24804, 24825, 1420, 1404, 24834, 4788, 0, 0, {24851, 24858, 24869, 24882, 24895, 24906, 24919}, {24930, 24935, 24940, 24945, 24950, 24955, 24960}, {0, 0, 0, 0, 0, 0, 0}, {24965, 24980, 24989, 24996, 25009, 25016, 25027, 25036, 25045, 25052, 25063, 25074, 0}, {24965, 24980, 24989, 24996, 25009, 25016, 25027, 25036, 25045, 25052, 25063, 25074, 0}, {25085, 25092, 25099, 25106, 25113, 25120, 25127, 25134, 25141, 25148, 25155, 25162, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 790, 268, {24825,1328,0,0,0,0,0,0,0,0,0,0,0,0},{24804,0,0,0,0,0,0,0},{1404,0,0,0,0,0,0,0,0,0,0,0},{1420,0,0,0,0,0,0,0,0}},
-       {25169, 1467, 307, 301, 25212, 25219, 25245, 25267, {25292, 25320, 25348, 25385, 25416, 25450, 25475}, {25509, 25525, 25541, 25566, 25585, 25607, 25626}, {25648, 25655, 25662, 25669, 25676, 25683, 25687}, {25697, 25731, 25768, 25802, 25836, 25867, 25904, 25941, 25981, 26015, 26049, 26098, 0}, {25697, 25731, 25768, 25802, 25836, 25867, 25904, 25941, 25981, 26015, 26049, 26098, 0}, {26147, 26160, 26173, 26186, 26199, 26212, 26225, 26238, 26251, 26264, 26280, 26296, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1467,1819,1828,1848,1328,1837,1859,1866,1873,0,0,0,0,0},{25169,26312,0,0,0,0,0,0},{301,0,0,0,0,0,0,0,0,0,0,0},{307,0,0,0,0,0,0,0,0}},
-       {5510, 270, 307, 301, 2005, 55, 0, 0, {26360, 26369, 26379, 26391, 26404, 26413, 26425}, {26437, 26441, 26446, 26450, 26454, 26458, 26462}, {2113, 2494, 2486, 2486, 14526, 6251, 2113}, {26466, 26473, 26482, 26489, 2804, 26496, 26504, 26515, 26520, 26525, 26532, 26541, 0}, {26466, 26473, 26482, 26489, 2804, 26496, 26549, 26515, 26520, 26525, 26532, 26541, 0}, {26559, 26563, 26446, 26568, 2804, 26572, 26576, 26515, 26520, 26580, 26584, 26589, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 0, 266, 268, {270,14,1347,2926,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,35,3030,0,0,0,0,0,0,0,0},{307,1420,23,3019,0,0,0,0,0}},
-       {3755, 1328, 307, 26594, 26602, 26637, 26673, 26689, {26705, 26739, 26770, 26801, 26823, 26866, 26894}, {26919, 26926, 26930, 26934, 26941, 26951, 26958}, {0, 0, 0, 0, 0, 0, 0}, {26962, 26975, 26994, 27007, 27020, 27033, 27052, 27071, 27084, 27100, 27113, 27138, 0}, {26962, 26975, 26994, 27007, 27020, 27033, 27052, 27071, 27084, 27100, 27113, 27138, 0}, {27151, 27155, 27159, 27163, 27167, 27171, 27175, 27179, 27183, 27187, 27194, 27201, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1328,0,0,0,0,0,0,0,0,0,0,0,0,0},{3755,9949,0,0,0,0,0,0},{26594,0,0,0,0,0,0,0,0,0,0,0},{307,0,0,0,0,0,0,0,0}},
-       {5510, 270, 307, 26594, 2005, 55, 27208, 27233, {27258, 27283, 27302, 27330, 27349, 27374, 27393}, {27415, 27423, 27428, 27433, 27438, 27446, 27454}, {0, 0, 0, 0, 0, 0, 0}, {27459, 27478, 27494, 27507, 27520, 27542, 27561, 27583, 27599, 27615, 27628, 27644, 0}, {27459, 27478, 27494, 27507, 27520, 27542, 27561, 27583, 27599, 27615, 27628, 27644, 0}, {27660, 27669, 27678, 27690, 27700, 27709, 27721, 27730, 27739, 27748, 27757, 27766, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,1328,0,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{26594,0,0,0,0,0,0,0,0,0,0,0},{307,0,0,0,0,0,0,0,0}},
-       {4028, 270, 1420, 1404, 4057, 55, 973, 978, {27775, 27783, 27788, 27795, 27805, 27811, 27818}, {27826, 27830, 3951, 27834, 27839, 27843, 27847}, {2775, 2494, 2486, 2486, 4153, 4157, 2113}, {27852, 27860, 6270, 27869, 27875, 27880, 27886, 6304, 27892, 27901, 27909, 27918, 0}, {27852, 27860, 6270, 27869, 27875, 27880, 27886, 6304, 27892, 27901, 27909, 27918, 0}, {27927, 2865, 3951, 27931, 2804, 27935, 27940, 18684, 17286, 27944, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1339,1347,1354,1363,1328,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{1404,301,35,1409,0,0,0,0,0,0,0,0},{1420,307,23,1428,0,0,0,0,0}},
-       {5510, 2374, 307, 301, 44, 55, 27948, 27960, {27972, 16567, 28000, 16608, 24377, 16661, 16686}, {24399, 24409, 24419, 24432, 24442, 24455, 24471}, {0, 0, 0, 0, 0, 0, 0}, {24481, 24506, 16866, 24537, 24556, 16908, 24563, 28019, 28035, 28063, 24639, 24667, 0}, {24481, 24506, 16866, 24537, 24556, 16908, 24563, 28019, 28035, 28063, 24639, 24667, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,1354,2335,2926,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {28085, 1328, 3019, 3030, 28133, 3796, 28143, 28155, {28164, 28180, 28196, 28224, 28240, 28283, 28308}, {28336, 28346, 28356, 28363, 28373, 28389, 28402}, {28412, 28416, 28420, 28424, 28428, 28441, 28448}, {28455, 28474, 28499, 28518, 28543, 28556, 28569, 28582, 28604, 28638, 28663, 28691, 0}, {28455, 28474, 28499, 28518, 28543, 28556, 28569, 28582, 28604, 28638, 28663, 28691, 0}, {28719, 28726, 28736, 28518, 28543, 28556, 28569, 28749, 28759, 28772, 28782, 28795, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 2624, 268, {1328,1837,1880,270,14,0,0,0,0,0,0,0,0,0},{28085,0,0,0,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {28808, 3010, 3019, 3030, 2005, 28840, 28854, 28864, {28877, 28887, 28894, 28907, 28917, 28927, 28937}, {28877, 28887, 28947, 28907, 28917, 28927, 28937}, {28957, 28961, 28965, 28969, 28973, 28977, 28981}, {28985, 29001, 29017, 29027, 29040, 29047, 29054, 29064, 29077, 29096, 29115, 29131, 0}, {28985, 29001, 29017, 29027, 29040, 29047, 29054, 29064, 29077, 29096, 29115, 29131, 0}, {29147, 29157, 29017, 29167, 29040, 29047, 29054, 29177, 29187, 29197, 29207, 29217, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1328,0,0,0,0,0,0,0,0,0,0,0,0},{28808,0,0,0,0,0,0,0},{3030,0,0,0,0,0,0,0,0,0,0,0},{3019,0,0,0,0,0,0,0,0}},
-       {4014, 2374, 1420, 1404, 44, 55, 29227, 29237, {29250, 29257, 29263, 29270, 29276, 29282, 29290}, {29300, 29304, 29308, 29312, 29316, 29320, 29324}, {12314, 12314, 12314, 12314, 12314, 12314, 12314}, {29330, 29339, 29348, 29353, 29359, 29365, 29371, 29378, 29384, 29393, 29402, 29410, 0}, {29330, 29339, 29348, 29353, 29359, 29365, 29371, 29378, 29384, 29393, 29402, 29410, 0}, {29419, 29423, 3951, 29427, 3920, 29431, 29435, 29439, 29444, 29448, 29454, 29458, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,1354,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{1404,301,29462,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {3767, 3787, 3019, 3030, 29468, 3796, 29478, 29519, {29560, 29579, 29598, 29623, 29642, 29664, 29689}, {29708, 24409, 29718, 24432, 29734, 24455, 24471}, {29747, 29751, 29755, 29759, 29763, 29767, 29771}, {16834, 29775, 16866, 29803, 24556, 29822, 16918, 16934, 29832, 29863, 29885, 29910, 0}, {16834, 29775, 16866, 29803, 24556, 29822, 16918, 16934, 29832, 29863, 29885, 29910, 0}, {29935, 29942, 16866, 29952, 24556, 29822, 29968, 29981, 29988, 30004, 30020, 30033, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3787,3963,3970,3979,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {270, 14, 3019, 3030, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {30046, 30053, 30062, 30077, 30088, 30097, 30104, 30111, 30118, 30129, 30142, 30155, 0}, {30046, 30053, 30062, 30077, 30088, 30097, 30104, 30111, 30118, 30129, 30142, 30155, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {14,270,0,0,0,0,0,0,0,0,0,0,0,0},{270,1,281,30160,0,0,0,0},{3030,1404,0,0,0,0,0,0,0,0,0,0},{3019,1420,0,0,0,0,0,0,0}},
-       {3767, 3787, 3019, 3030, 44, 3796, 3804, 3807, {30178, 30185, 27788, 30191, 30202, 30210, 30219}, {30226, 27830, 3951, 30230, 30234, 30238, 10502}, {2494, 2494, 2486, 2486, 5718, 15394, 2113}, {30242, 30248, 30256, 27869, 30262, 30267, 30273, 6304, 30279, 30289, 30297, 30307, 0}, {30242, 30248, 30256, 27869, 30262, 30267, 30273, 6304, 30279, 30289, 30297, 30307, 0}, {30317, 30321, 3951, 27931, 3920, 30325, 30329, 18684, 17286, 2894, 30333, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3787,3963,3970,3979,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {3767, 3010, 3019, 3030, 44, 3796, 0, 0, {30337, 30344, 30352, 30359, 30366, 30374, 30382}, {30389, 30392, 30395, 30398, 30401, 30404, 30407}, {2494, 2494, 2488, 2494, 12314, 4155, 12314}, {30410, 30418, 30428, 30434, 30442, 30447, 30452, 30457, 30464, 18669, 30472, 30480, 0}, {30410, 30418, 30428, 30434, 30442, 30447, 30452, 30457, 30464, 18669, 30472, 30480, 0}, {2861, 30488, 3951, 30492, 3920, 29431, 29435, 30496, 3891, 2894, 30500, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1347,14,270,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {3767, 3010, 3019, 3030, 44, 3796, 30504, 30515, {30525, 30543, 30558, 30580, 30593, 30607, 30624}, {30648, 30656, 30661, 30580, 30593, 30673, 30680}, {0, 0, 0, 0, 0, 0, 0}, {30694, 30716, 30732, 30752, 30766, 30783, 30798, 30815, 30829, 30842, 30861, 30875, 0}, {30694, 30716, 30732, 30752, 30766, 30783, 30798, 30815, 30829, 30842, 30861, 30875, 0}, {30894, 30909, 30918, 30931, 30938, 30948, 30956, 30966, 30973, 30979, 30991, 30998, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1347,14,270,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {5510, 1837, 23, 35, 2005, 55, 0, 0, {31010, 31018, 14917, 14926, 14935, 31029, 31039}, {15382, 14967, 14971, 14975, 14979, 15236, 31048}, {0, 0, 0, 0, 0, 0, 0}, {31052, 31061, 31071, 31079, 10531, 3924, 31087, 31093, 31102, 31111, 31120, 31129, 0}, {31052, 31061, 31071, 31079, 10531, 3924, 31087, 31093, 31102, 31111, 31120, 31129, 0}, {2861, 2865, 14986, 31138, 10531, 2878, 2882, 18684, 17286, 2894, 31142, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1837,1880,1328,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{35,3030,301,0,0,0,0,0,0,0,0,0},{23,3019,307,0,0,0,0,0,0}},
-       {1983, 2374, 307, 301, 2005, 2385, 31146, 31151, {31156, 31163, 31178, 31192, 31208, 31223, 31239}, {6247, 31254, 2588, 31258, 31262, 31266, 31270}, {2113, 12314, 2486, 2108, 2113, 2488, 12314}, {7167, 7175, 31274, 31281, 31288, 2527, 2532, 31293, 31303, 31314, 31323, 31333, 0}, {7167, 7175, 31274, 31281, 31288, 2527, 2532, 31293, 31303, 31314, 31323, 31333, 0}, {2580, 2584, 2588, 2592, 2523, 2596, 2600, 2604, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,1354,1328,2626,0,0,0,0,0,0,0,0,0,0},{1983,2637,0,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {3767, 3010, 3019, 3030, 44, 3796, 31343, 31348, {31353, 31369, 31377, 31385, 31394, 31406, 31416}, {31426, 31432, 31438, 31442, 31446, 31454, 3891}, {0, 0, 0, 0, 0, 0, 0}, {31461, 31474, 31488, 31497, 31503, 31507, 31512, 31520, 15297, 31533, 15314, 15322, 0}, {31461, 31474, 31488, 31497, 31503, 31507, 31512, 31520, 15297, 31533, 15314, 15322, 0}, {31542, 2865, 31546, 15330, 31503, 31550, 2882, 31554, 2890, 31562, 2898, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1347,14,270,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {31568, 1467, 1420, 1943, 31592, 31609, 31623, 31630, {31637, 31647, 31657, 31667, 31677, 31687, 31697}, {31707, 31714, 31721, 31728, 31735, 31742, 31749}, {31756, 31760, 31764, 31768, 31772, 31776, 31780}, {31784, 31791, 31798, 31805, 31812, 31819, 31826, 31833, 31840, 31847, 31854, 31864, 0}, {31784, 31791, 31798, 31805, 31812, 31819, 31826, 31833, 31840, 31847, 31854, 31864, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1467,1819,1828,1848,1328,1837,0,0,0,0,0,0,0,0},{31568,31874,31904,0,0,0,0,0},{1943,1404,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {4771, 270, 307, 301, 2005, 4788, 0, 0, {26437, 27830, 31934, 31941, 31951, 31956, 31963}, {31970, 4131, 31974, 4862, 31979, 31984, 31989}, {4421, 31994, 31997, 32000, 32003, 32006, 32009}, {32012, 32019, 31934, 32030, 32036, 32040, 32049, 32056, 32061, 32070, 8220, 32075, 0}, {32012, 32019, 31934, 32030, 32036, 32040, 32049, 32056, 32061, 32070, 8220, 32075, 0}, {32081, 32085, 32092, 26568, 32036, 32097, 32102, 32056, 32107, 32070, 8220, 32112, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1363,1354,1328,0,0,0,0,0,0,0,0,0},{4771,4997,3755,0,0,0,0,0},{301,1404,5006,5012,5022,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {32116, 270, 307, 301, 2005, 4788, 0, 0, {32144, 32152, 32159, 32167, 32177, 32185, 1034}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {32196, 32204, 1091, 1097, 4910, 32213, 32218, 1120, 1126, 32225, 1143, 32234, 0}, {32196, 32204, 1091, 1097, 4910, 32213, 32218, 1120, 1126, 32225, 1143, 32234, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1363,1354,1328,0,0,0,0,0,0,0,0,0},{32116,0,0,0,0,0,0,0},{301,1404,5006,5012,5022,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {4771, 270, 307, 301, 2005, 4788, 32243, 32248, {32253, 32261, 32271, 32281, 32290, 32300, 32308}, {32318, 32322, 32327, 32331, 32335, 32339, 32343}, {2113, 2486, 2775, 2486, 2775, 2492, 2113}, {2777, 2784, 2792, 2798, 2804, 2808, 2813, 32347, 32356, 32367, 32376, 32386, 0}, {2777, 2784, 2792, 2798, 2804, 2808, 2813, 32347, 32356, 32367, 32376, 32386, 0}, {2861, 2865, 2869, 2874, 2804, 2878, 2882, 2886, 2890, 2894, 2898, 2902, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,1363,1354,1328,0,0,0,0,0,0,0,0,0},{4771,4997,3755,0,0,0,0,0},{301,1404,5006,5012,5022,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {32396, 32414, 1420, 1404, 32425, 3796, 32441, 32446, {32451, 32476, 32505, 32530, 32543, 32558, 32575}, {32590, 32595, 32600, 32605, 32610, 32615, 8529}, {32620, 32620, 32623, 8540, 8543, 32620, 8540}, {32626, 32645, 32660, 32682, 32702, 32718, 32734, 32748, 32774, 32798, 32815, 32832, 0}, {32626, 32645, 32660, 32682, 32702, 32718, 32734, 32748, 32774, 32798, 32815, 32832, 0}, {32849, 32858, 32867, 32881, 32895, 32907, 32919, 32929, 32945, 32959, 32966, 32973, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {32414,32980,2926,3970,32989,0,0,0,0,0,0,0,0,0},{32396,33000,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {3767, 3787, 3019, 3030, 44, 3796, 0, 0, {33019, 33031, 33042, 33054, 33066, 33076, 33088}, {33103, 33108, 33113, 33118, 33123, 33128, 33133}, {0, 0, 0, 0, 0, 0, 0}, {33138, 33147, 33159, 33167, 33172, 33182, 33189, 33198, 33205, 33211, 33220, 33231, 0}, {33138, 33147, 33159, 33167, 33172, 33182, 33189, 33198, 33205, 33211, 33220, 33231, 0}, {33239, 33244, 33249, 33254, 33259, 33264, 33269, 33123, 33274, 33279, 33284, 33289, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3787,3963,3970,3979,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {5510, 270, 307, 301, 2005, 55, 6031, 6036, {33294, 33307, 33315, 33324, 33334, 33344, 33353}, {33365, 33369, 33373, 33377, 33381, 33385, 33389}, {2775, 2494, 2486, 7409, 12314, 5718, 2113}, {33393, 33407, 33418, 33427, 33438, 33450, 33464, 33476, 33489, 33502, 33514, 33527, 0}, {33393, 33407, 33418, 33427, 33438, 33450, 33464, 33476, 33489, 33502, 33514, 33527, 0}, {33541, 33546, 33552, 33558, 33563, 33569, 33575, 33580, 33586, 33591, 17994, 33597, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 0, 266, 268, {270,14,1347,2926,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,35,3030,0,0,0,0,0,0,0,0},{307,1420,23,3019,0,0,0,0,0}},
-       {1, 14, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {14,270,0,0,0,0,0,0,0,0,0,0,0,0},{1,281,0,0,0,0,0,0},{35,301,0,0,0,0,0,0,0,0,0,0},{23,307,0,0,0,0,0,0,0}},
-       {316, 335, 350, 365, 377, 55, 393, 405, {417, 430, 451, 466, 477, 496, 507}, {520, 525, 530, 535, 540, 545, 550}, {555, 558, 561, 564, 567, 558, 564}, {570, 583, 600, 609, 620, 627, 634, 641, 654, 673, 690, 705, 0}, {570, 583, 600, 609, 620, 627, 634, 641, 654, 673, 690, 705, 0}, {722, 728, 600, 738, 620, 627, 634, 746, 754, 764, 772, 782, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {335,792,808,824,0,0,0,0,0,0,0,0,0,0},{316,841,859,884,0,0,0,0},{365,908,0,0,0,0,0,0,0,0,0,0},{350,919,0,0,0,0,0,0,0}},
-       {933, 270, 307, 301, 959, 55, 973, 978, {983, 992, 1000, 1008, 1017, 1024, 1034}, {1043, 1046, 1049, 1052, 1055, 1058, 1061}, {1064, 1066, 1068, 1070, 1072, 1074, 1076}, {1078, 1084, 1091, 1097, 1103, 1108, 1113, 1120, 1126, 1135, 1143, 1152, 0}, {1161, 1170, 1180, 1189, 1199, 1207, 1215, 1225, 1235, 1247, 1259, 1271, 0}, {1283, 1288, 1091, 1294, 1103, 1108, 1299, 1304, 1308, 1313, 1318, 1323, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1328,1339,1347,1354,1363,0,0,0,0,0,0,0},{933,1372,1388,0,0,0,0,0},{301,1404,1409,0,0,0,0,0,0,0,0,0},{307,1420,1428,0,0,0,0,0,0}},
-       {1445, 1467, 1971, 1951, 1476, 1492, 1505, 1512, {1519, 1529, 1539, 1549, 1559, 1569, 1579}, {33603, 33610, 33617, 33624, 33631, 33638, 33645}, {1638, 1642, 1646, 1650, 1654, 1658, 1662}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1467,1837,1328,0,0,0,0,0,0,0,0,0,0,0},{1445,6634,0,0,0,0,0,0},{1951,1943,301,1404,0,0,0,0,0,0,0,0},{1971,1960,307,1420,0,0,0,0,0}},
-       {1983, 1996, 1420, 1404, 2005, 55, 2015, 2020, {2025, 2033, 2043, 2051, 2059, 2068, 2075}, {2082, 2085, 2088, 2092, 2095, 2099, 2103}, {2106, 2108, 2110, 2113, 2115, 2108, 2113}, {2118, 2124, 2130, 2138, 2144, 2152, 2160, 2170, 2176, 2184, 2192, 2201, 0}, {2210, 2216, 2223, 2231, 2237, 2245, 2253, 2263, 2176, 2269, 2277, 2287, 0}, {2296, 2299, 2302, 2305, 2308, 2311, 2314, 2317, 2320, 2323, 2327, 2331, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {1996,2335,1328,1819,1859,0,0,0,0,0,0,0,0,0},{1983,0,0,0,0,0,0,0},{1404,301,2342,2350,0,0,0,0,0,0,0,0},{1420,307,2355,2366,0,0,0,0,0}},
-       {1983, 2374, 307, 301, 2005, 2385, 2393, 2398, {2403, 2411, 2418, 2426, 2433, 2441, 2448}, {2456, 2461, 2465, 2469, 2473, 2477, 2481}, {2113, 2486, 2488, 2490, 2488, 2492, 2494}, {2496, 2503, 2511, 2517, 2523, 2527, 2532, 2537, 2544, 2554, 2562, 2571, 0}, {2496, 2503, 2511, 2517, 2523, 2527, 2532, 2537, 2544, 2554, 2562, 2571, 0}, {2580, 2584, 2588, 2592, 2523, 2596, 2600, 2604, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 2624, 268, {2374,1354,1328,2626,0,0,0,0,0,0,0,0,0,0},{1983,2637,0,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {2651, 2670, 307, 301, 2005, 55, 2681, 2687, {2694, 2702, 2709, 2718, 2727, 2738, 2746}, {2754, 2757, 2760, 2763, 2766, 2769, 2772}, {2113, 2486, 2775, 2486, 2775, 2492, 2113}, {2777, 2784, 2792, 2798, 2804, 2808, 2813, 2818, 2825, 2835, 2843, 2852, 0}, {2777, 2784, 2792, 2798, 2804, 2808, 2813, 2818, 2825, 2835, 2843, 2852, 0}, {2861, 2865, 2869, 2874, 2804, 2878, 2882, 2886, 2890, 2894, 2898, 2902, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {2670,2906,1363,2918,2926,1996,1328,0,0,0,0,0,0,0},{2651,1983,2933,0,0,0,0,0},{301,1404,2350,2945,0,0,0,0,0,0,0,0},{307,2956,2970,2985,0,0,0,0,0}},
-       {2992, 3010, 3019, 3030, 2005, 55, 3038, 3045, {3052, 3067, 3082, 3093, 3108, 3121, 3140}, {3155, 3162, 3169, 3176, 3183, 3190, 3197}, {3204, 3207, 3210, 3210, 3213, 3213, 3216}, {3219, 3240, 3263, 3278, 3295, 3306, 3321, 3336, 3355, 3378, 3397, 3416, 0}, {3437, 3458, 3481, 3496, 3513, 3524, 3539, 3554, 3573, 3596, 3615, 3634, 0}, {3655, 3662, 3669, 3676, 3683, 3690, 3699, 3708, 3715, 3722, 3729, 3736, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {3010,270,1347,14,3743,1328,0,0,0,0,0,0,0,0},{2992,3755,0,0,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {3767, 3787, 3019, 3030, 44, 3796, 3804, 3807, {3810, 3817, 3824, 3832, 3842, 3851, 3858}, {3867, 3871, 3875, 3879, 3883, 3887, 3891}, {2113, 2486, 2488, 3895, 2488, 2492, 2113}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {2861, 2865, 3951, 2874, 3920, 2878, 2882, 2886, 2890, 3955, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3787,3963,3970,3979,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {4303, 1996, 1420, 1404, 2005, 4320, 4332, 4336, {4340, 4352, 4364, 4374, 4388, 4398, 4410}, {4421, 4424, 4427, 4430, 4433, 4436, 4439}, {2113, 2486, 2488, 4442, 2488, 2108, 2494}, {4444, 4453, 4462, 4472, 4481, 4490, 4499, 4509, 4516, 4524, 4532, 4542, 0}, {4551, 4562, 4573, 4585, 4596, 4607, 4618, 4630, 4639, 4649, 4659, 4671, 0}, {4682, 4688, 4694, 4701, 4707, 4713, 4719, 4726, 4730, 4735, 4740, 4747, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {1996,2670,2926,1328,0,0,0,0,0,0,0,0,0,0},{4303,4753,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {4771, 270, 307, 301, 2005, 4788, 3804, 3807, {4795, 4804, 4810, 4816, 4825, 4831, 4840}, {4847, 4852, 4857, 4862, 4867, 4872, 4877}, {2775, 2494, 2486, 2486, 4155, 4157, 2113}, {4882, 4890, 4899, 4904, 4910, 4914, 4919, 4927, 4933, 4943, 1143, 4951, 0}, {4882, 4890, 4899, 4904, 4910, 4914, 4919, 4927, 4933, 4943, 1143, 4951, 0}, {4961, 4967, 4899, 4974, 4910, 4914, 4979, 4927, 4985, 1313, 1318, 4991, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1363,1354,1328,0,0,0,0,0,0,0,0,0},{4771,4997,3755,0,0,0,0,0},{301,1404,5006,5012,5022,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {5030, 270, 307, 301, 2005, 55, 5048, 5061, {5072, 5090, 5104, 5122, 5140, 5158, 5174}, {5188, 5200, 5212, 5224, 5236, 5248, 5260}, {5267, 5270, 5273, 5276, 5279, 5282, 5285}, {5288, 5299, 5312, 5319, 5330, 5337, 5346, 5355, 5368, 5381, 5396, 5409, 0}, {5288, 5299, 5312, 5319, 5330, 5337, 5346, 5355, 5368, 5381, 5396, 5409, 0}, {5420, 5429, 5312, 5438, 5330, 5447, 5456, 5465, 5474, 5483, 5492, 5501, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,5510,14,1,1354,2374,5523,1328,5536,5553,0,0,0,0},{5030,5510,5563,5585,5536,0,0,0},{301,35,0,0,0,0,0,0,0,0,0,0},{307,23,0,0,0,0,0,0,0}},
-       {5606, 5620, 1420, 1404, 5632, 5643, 5651, 5655, {5659, 5669, 5677, 5682, 5689, 5702, 5710}, {4157, 5718, 4442, 5720, 5724, 2108, 5727}, {4157, 5718, 4442, 5731, 5724, 2108, 5731}, {5734, 5742, 5751, 5760, 5769, 5776, 5784, 5792, 5802, 5813, 2562, 2571, 0}, {5734, 5742, 5751, 5760, 5769, 5776, 5784, 5792, 5802, 5813, 2562, 2571, 0}, {5822, 1288, 5827, 5834, 5840, 5846, 5852, 5858, 5863, 5870, 1318, 5875, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {5620,5880,1328,5894,0,0,0,0,0,0,0,0,0,0},{5606,0,0,0,0,0,0,0},{1404,301,3030,0,0,0,0,0,0,0,0,0},{1420,307,3019,0,0,0,0,0,0}},
-       {1983, 1996, 307, 301, 2005, 2385, 5903, 5908, {5913, 5924, 5935, 5949, 5963, 5975, 5987}, {5999, 6003, 6008, 6013, 6018, 6022, 6027}, {1076, 6031, 6033, 6031, 6036, 6036, 1066}, {6038, 6046, 4899, 6055, 6062, 6067, 6074, 6081, 2544, 5813, 6089, 6099, 0}, {6038, 6046, 4899, 6055, 6062, 6067, 6074, 6081, 2544, 5813, 6089, 6099, 0}, {2580, 2584, 2588, 2592, 6062, 6108, 6113, 6118, 2608, 2612, 6124, 6129, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {1996,1363,6133,6145,1328,6158,0,0,0,0,0,0,0,0},{1983,2637,0,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {4771, 270, 307, 301, 2005, 55, 6167, 6170, {6173, 6182, 6190, 6199, 6210, 6219, 6228}, {4127, 4131, 2588, 6235, 6239, 6243, 6247}, {2775, 2494, 2486, 2486, 6251, 4157, 2113}, {6253, 6261, 6270, 6276, 6283, 6290, 6297, 6304, 6311, 6321, 6329, 6338, 0}, {6347, 6355, 4173, 6364, 6371, 6378, 6385, 4196, 6392, 6402, 1143, 6410, 0}, {6419, 2584, 2588, 2592, 6423, 6427, 6431, 4242, 6435, 6439, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,3743,14,6443,1347,1328,0,0,0,0,0,0,0,0},{4771,6451,3755,0,0,0,0,0},{301,1404,2350,5006,0,0,0,0,0,0,0,0},{307,2366,6460,0,0,0,0,0,0}},
-       {1445, 1837, 1420, 1404, 1476, 1492, 6469, 6476, {6483, 6493, 6503, 6513, 6523, 6533, 6543}, {1638, 6553, 6557, 6561, 6565, 6569, 6573}, {1638, 6553, 6557, 6561, 6565, 6569, 6573}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1837,1880,1866,1467,6577,6596,6613,1328,0,0,0,0,0,0},{1445,6634,6658,6685,0,0,0,0},{1404,301,1943,1951,0,0,0,0,0,0,0,0},{1420,307,1960,1971,0,0,0,0,0}},
-       {6714, 1328, 1960, 1943, 6743, 6760, 6774, 6781, {6788, 6798, 6808, 6818, 6828, 6838, 6848}, {6858, 6862, 6866, 6870, 6874, 6878, 6882}, {6858, 6862, 6866, 6870, 6874, 6878, 6882}, {6886, 6891, 6896, 6901, 6906, 6911, 6916, 6921, 6926, 6931, 6937, 6943, 0}, {6886, 6891, 6896, 6901, 6906, 6911, 6916, 6921, 6926, 6931, 6937, 6943, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1328,5894,1859,1819,0,0,0,0,0,0,0,0,0,0},{6714,6949,6973,7000,7022,7053,0,0},{1943,1951,1404,301,0,0,0,0,0,0,0,0},{1960,1971,1420,307,0,0,0,0,0}},
-       {4771, 7079, 1420, 1404, 2005, 55, 973, 978, {7088, 7095, 7103, 7111, 7120, 7130, 7138}, {7147, 4424, 7150, 7153, 7156, 7159, 7162}, {7165, 2486, 2775, 3895, 2775, 4157, 7165}, {7167, 7175, 7184, 2517, 7190, 2527, 2532, 7194, 2544, 2554, 2562, 2571, 0}, {7167, 7175, 7184, 2517, 7190, 2527, 2532, 7194, 2544, 2554, 2562, 2571, 0}, {2580, 2584, 7203, 2592, 7190, 2596, 2600, 2604, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 2624, 268, {7079,2335,1354,14,1363,2906,1328,0,0,0,0,0,0,0},{4771,6451,3755,4997,0,0,0,0},{1404,301,2350,7207,7219,0,0,0,0,0,0,0},{1420,307,7231,7246,0,0,0,0,0}},
-       {1983, 2670, 307, 301, 2005, 2385, 973, 978, {2403, 2411, 2418, 2426, 2433, 2441, 2448}, {7261, 7266, 7270, 7274, 7278, 7282, 7286}, {2113, 2486, 2488, 2490, 2488, 2492, 2494}, {2496, 2503, 4899, 2517, 4910, 2527, 2532, 2537, 2544, 2554, 2562, 6099, 0}, {2496, 2503, 4899, 2517, 4910, 2527, 2532, 2537, 2544, 2554, 2562, 6099, 0}, {2580, 2584, 2588, 2592, 4910, 2596, 2600, 2604, 2608, 2612, 2616, 6129, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {2670,1363,2926,1328,2906,0,0,0,0,0,0,0,0,0},{1983,2637,0,0,0,0,0,0},{301,1404,7291,5006,0,0,0,0,0,0,0,0},{307,1420,7302,6460,0,0,0,0,0}},
-       {3755, 1328, 307, 301, 2005, 4788, 3804, 3807, {7316, 7326, 7340, 7347, 7354, 7363, 2075}, {7371, 7378, 7383, 7387, 7392, 7397, 7401}, {2106, 2108, 3895, 7406, 7409, 2108, 2113}, {7411, 7420, 7425, 7432, 2523, 7442, 7451, 7458, 7468, 7478, 2192, 7491, 0}, {7501, 7510, 7517, 7523, 7532, 7537, 7545, 7551, 7560, 7570, 7584, 7594, 0}, {7602, 7606, 2588, 7610, 2523, 7614, 7618, 7622, 7626, 7630, 7635, 7639, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 2624, 268, {1328,5894,0,0,0,0,0,0,0,0,0,0,0,0},{3755,5510,0,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {7643, 270, 307, 301, 4057, 7671, 3804, 3807, {4072, 7684, 7698, 7711, 7724, 7737, 4119}, {4127, 7749, 7753, 7757, 7761, 7765, 4148}, {2775, 2113, 2488, 7769, 7769, 2113, 2113}, {7771, 7779, 7789, 1097, 7796, 7801, 7807, 4196, 7813, 7822, 7830, 7839, 0}, {7771, 7779, 7789, 1097, 7796, 7801, 7807, 4196, 7813, 7822, 7830, 7839, 0}, {2580, 7848, 2588, 4238, 4910, 2596, 2600, 4242, 6435, 7852, 2616, 7856, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,3010,1347,1354,2374,2335,7079,1363,2670,2906,2926,1996,1328},{7643,4281,0,0,0,0,0,0},{301,0,0,0,0,0,0,0,0,0,0,0},{307,0,0,0,0,0,0,0,0}},
-       {2992, 270, 307, 301, 2005, 55, 7860, 7863, {7866, 7875, 4810, 7885, 7893, 7901, 7910}, {7916, 7919, 4424, 7923, 7926, 7930, 2103}, {2775, 6251, 2486, 2486, 6251, 4157, 2113}, {7933, 7941, 4899, 7948, 7955, 7960, 7970, 7978, 7984, 7994, 2562, 2571, 0}, {7933, 7941, 4899, 7948, 7955, 7960, 7970, 7978, 7984, 7994, 2562, 2571, 0}, {8002, 8009, 4899, 4974, 7955, 8015, 8022, 7978, 8027, 1313, 1318, 5875, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1339,8033,1347,270,1328,0,0,0,0,0,0,0},{2992,3755,4997,0,0,0,0,0},{301,1404,8041,8053,8064,8072,8082,8091,2945,8097,8105,8110},{307,1420,8113,8128,2970,2956,8142,8155,2985}},
-       {3755, 2670, 307, 301, 2005, 4788, 3804, 3807, {8167, 8177, 8182, 8189, 8198, 8202, 8209}, {8220, 8223, 8226, 2763, 8229, 8232, 8235}, {2775, 2494, 2486, 2486, 4155, 4157, 2113}, {8239, 8248, 8258, 8265, 4910, 8273, 8279, 2537, 8285, 8296, 8306, 8316, 0}, {8239, 8248, 8258, 8265, 4910, 8273, 8279, 2537, 8285, 8296, 8306, 8316, 0}, {8326, 8331, 4857, 8336, 4910, 8341, 8346, 5858, 4985, 1313, 1318, 5875, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1996,1328,0,0,0,0,0,0,0,0,0,0,0},{3755,0,0,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {841, 2670, 1420, 1404, 2005, 3796, 8351, 8371, {8397, 8420, 451, 8443, 8454, 8469, 8484}, {8499, 8504, 8509, 8514, 8519, 8524, 8529}, {8534, 8537, 8534, 8540, 8543, 8537, 8540}, {8546, 8559, 8574, 8583, 8596, 8603, 8612, 8621, 8634, 8651, 8666, 8679, 0}, {8694, 8707, 8722, 8733, 8746, 8753, 8762, 8771, 8786, 8803, 8818, 8831, 0}, {8846, 8854, 8574, 8864, 8596, 8603, 8612, 8872, 8880, 8890, 8898, 8908, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,2926,14,1328,0,0,0,0,0,0,0,0,0},{841,316,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {8916, 8930, 1420, 1404, 44, 2385, 3804, 3807, {8940, 8949, 8961, 8968, 8976, 8986, 8992}, {8999, 9003, 9007, 9011, 9015, 9020, 9024}, {9028, 9030, 9032, 1076, 9034, 9030, 1076}, {9037, 9047, 9056, 9064, 9072, 9080, 9087, 9094, 9102, 2192, 9108, 9116, 0}, {9125, 9135, 9144, 9152, 9160, 9168, 9175, 9182, 9191, 7584, 9197, 9207, 0}, {9216, 9220, 9225, 9230, 9234, 7618, 9238, 9242, 9246, 7635, 9250, 9254, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {8930,9258,6133,9266,9278,9288,9298,1328,0,0,0,0,0,0},{8916,9310,9325,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {1983, 9345, 1420, 1404, 2005, 55, 9356, 9367, {9378, 9386, 9395, 9402, 9409, 9418, 2075}, {2082, 2085, 9425, 2092, 9428, 9432, 2103}, {2106, 2108, 9435, 2113, 9437, 2108, 2113}, {5734, 5742, 9440, 6055, 9446, 6108, 6113, 2537, 2544, 5813, 2562, 2571, 0}, {9451, 9460, 7517, 9470, 9478, 9484, 9490, 9496, 9504, 9514, 9523, 9532, 0}, {2580, 2584, 2588, 2592, 9446, 6108, 6113, 2604, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 9541, 268, {9345,1996,9544,2926,2670,1363,1328,0,0,0,0,0,0,0},{1983,2637,0,0,0,0,0,0},{1404,301,2350,0,0,0,0,0,0,0,0,0},{1420,307,2366,0,0,0,0,0,0}},
-       {1328, 1328, 9553, 9564, 9572, 3796, 9580, 9583, {9586, 9593, 9602, 9611, 9623, 9631, 9640}, {9650, 9654, 3951, 9659, 9664, 9668, 9672}, {2775, 5718, 2486, 2486, 9676, 2108, 2113}, {9678, 9684, 4899, 9691, 2523, 9697, 9705, 9712, 9718, 9726, 9732, 9740, 0}, {9678, 9684, 4899, 9691, 2523, 9697, 9705, 9712, 9718, 9726, 9732, 9740, 0}, {2861, 9748, 3951, 9752, 9756, 9760, 9764, 9768, 9672, 9772, 9776, 9781, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 2624, 268, {1328,5894,0,0,0,0,0,0,0,0,0,0,0,0},{1328,0,0,0,0,0,0,0},{9564,301,0,0,0,0,0,0,0,0,0,0},{9553,307,0,0,0,0,0,0,0}},
-       {9785, 1328, 307, 301, 2005, 9803, 9816, 9819, {9822, 9830, 9838, 2426, 2433, 2441, 9845}, {9853, 9858, 9863, 2469, 2473, 2477, 9867}, {2113, 2486, 2488, 2490, 2488, 2492, 2494}, {7167, 7175, 4899, 2517, 2523, 2527, 2532, 9872, 2544, 2554, 2562, 2571, 0}, {7167, 7175, 4899, 2517, 2523, 2527, 2532, 9872, 2544, 2554, 2562, 2571, 0}, {2580, 2584, 2588, 2592, 2523, 2596, 2600, 2604, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 2624, 268, {1328,5894,0,0,0,0,0,0,0,0,0,0,0,0},{9785,9880,0,0,0,0,0,0},{301,1404,9903,0,0,0,0,0,0,0,0,0},{307,1420,9913,0,0,0,0,0,0}},
-       {3755, 3010, 1420, 1404, 2005, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1347,14,270,9926,9937,1328,0,0,0,0,0,0,0},{3755,9949,9965,0,0,0,0,0},{1404,301,3030,35,0,0,0,0,0,0,0,0},{1420,307,3019,23,0,0,0,0,0}},
-       {10007, 2670, 307, 301, 2005, 55, 3804, 3807, {10025, 10031, 10041, 10047, 10058, 10068, 10073}, {10083, 10087, 10091, 10095, 10100, 10104, 10108}, {2108, 2108, 2113, 10112, 2108, 7409, 7409}, {10115, 10120, 10127, 10132, 10138, 10145, 10153, 10160, 10169, 10176, 10181, 10188, 0}, {10115, 10120, 10127, 10132, 10138, 10145, 10153, 10160, 10169, 10176, 10181, 10188, 0}, {10196, 10200, 3951, 10205, 3920, 10209, 10213, 10217, 10222, 10226, 10230, 10234, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,1328,0,0,0,0,0,0,0,0,0,0,0},{10007,5510,0,0,0,0,0,0},{301,0,0,0,0,0,0,0,0,0,0,0},{307,0,0,0,0,0,0,0,0}},
-       {4014, 270, 3019, 3030, 44, 55, 10238, 10243, {10250, 10261, 10268, 10277, 10284, 10297, 10306}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {10315, 10326, 10337, 10346, 10357, 10362, 10369, 10380, 10389, 10400, 10413, 10424, 0}, {10315, 10326, 10337, 10346, 10357, 10362, 10369, 10380, 10389, 10400, 10413, 10424, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {5510, 270, 1420, 1404, 2005, 55, 3804, 3807, {10435, 10442, 10448, 10455, 10460, 10466, 10472}, {10478, 10482, 10486, 10490, 10494, 10498, 10502}, {2486, 2113, 2113, 10506, 4442, 4155, 2113}, {10508, 10516, 10525, 2798, 10531, 2808, 2813, 10535, 2825, 2835, 2843, 10543, 0}, {10508, 10516, 10525, 2798, 10531, 2808, 2813, 10535, 2825, 2835, 2843, 10543, 0}, {2861, 2865, 3951, 2874, 10531, 2878, 2882, 10552, 2890, 2894, 2898, 10556, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {10560, 2670, 1420, 1404, 10578, 4788, 10594, 10599, {10604, 10617, 10636, 10653, 10666, 10679, 10696}, {10709, 8504, 8509, 8514, 8519, 8524, 8529}, {10714, 8537, 8534, 8540, 8543, 8537, 8540}, {10717, 10730, 10741, 10758, 10773, 10788, 10803, 10816, 10831, 10848, 10863, 10880, 0}, {10895, 10906, 10919, 10934, 10947, 10960, 10973, 10984, 10997, 11012, 11025, 11044, 0}, {11057, 11064, 11071, 11078, 11085, 11092, 11099, 11106, 11113, 11120, 11127, 11134, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,1328,0,0,0,0,0,0,0,0,0,0,0},{10560,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {3755, 2670, 1420, 1404, 2005, 4788, 11141, 11154, {11167, 11182, 11203, 11218, 11231, 11244, 11259}, {520, 525, 11272, 535, 11277, 545, 550}, {555, 558, 11282, 564, 567, 558, 564}, {11285, 11302, 11311, 11326, 11343, 11358, 11373, 11386, 11401, 11418, 11439, 11456, 0}, {11285, 11302, 11311, 11326, 620, 11358, 11373, 11386, 11401, 11418, 11439, 11456, 0}, {11471, 11478, 11485, 11492, 11499, 11506, 11513, 11520, 11527, 11534, 11541, 11548, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 790, 268, {2670,1363,1328,0,0,0,0,0,0,0,0,0,0,0},{3755,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {1983, 1996, 1420, 1404, 2005, 2385, 2015, 11555, {11560, 11568, 11579, 11585, 11591, 11600, 2075}, {8999, 9003, 2473, 11606, 9015, 9020, 11610}, {9028, 9030, 1068, 1076, 9034, 9030, 1076}, {2496, 2503, 9440, 2517, 2523, 11614, 11620, 11626, 2544, 2554, 2562, 2571, 0}, {2496, 2503, 9440, 2517, 2523, 11614, 11620, 11626, 2544, 2554, 2562, 2571, 0}, {2580, 2584, 2588, 2592, 2523, 2596, 2600, 11633, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {1996,2926,9345,2670,9544,1363,11637,1328,0,0,0,0,0,0},{1983,2637,2651,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {11648, 11667, 1420, 1404, 11677, 2385, 11693, 11698, {11703, 11714, 11725, 11736, 11747, 11758, 11764}, {2108, 9676, 2488, 4442, 2106, 10506, 2494}, {2108, 9676, 2488, 4442, 2106, 10506, 2494}, {11773, 11781, 11790, 11797, 4910, 11804, 11810, 2537, 2544, 11816, 2562, 11825, 0}, {11773, 11781, 11790, 11797, 4910, 11804, 11810, 2537, 2544, 11816, 2562, 11825, 0}, {11835, 11840, 11790, 2592, 4910, 11804, 11810, 2604, 11846, 2612, 2616, 11851, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {11667,2670,1363,1328,0,0,0,0,0,0,0,0,0,0},{11648,11856,2651,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {11876, 5620, 1420, 1404, 5632, 2385, 11903, 11920, {11934, 11945, 11955, 11964, 11975, 11987, 11998}, {12008, 12011, 12014, 12017, 12020, 12023, 12026}, {2113, 2108, 2490, 2488, 7409, 2108, 2113}, {12029, 12039, 2511, 12050, 12059, 12065, 12073, 12081, 12089, 12100, 12109, 12119, 0}, {12029, 12039, 2511, 12050, 12059, 12065, 12073, 12081, 12089, 12100, 12109, 12119, 0}, {4961, 1288, 2511, 8336, 12059, 12129, 12135, 5858, 4985, 5870, 1318, 5875, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {5620,12141,1328,0,0,0,0,0,0,0,0,0,0,0},{11876,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {12151, 1848, 307, 301, 12173, 12188, 12200, 11555, {12206, 12218, 12230, 12242, 12256, 12271, 12284}, {12298, 12011, 12301, 12017, 12304, 12307, 12310}, {2113, 2108, 12314, 2488, 4442, 2108, 9437}, {12316, 12323, 12331, 12337, 12346, 12355, 12365, 12371, 12382, 12392, 12399, 12409, 0}, {12417, 12424, 12432, 12438, 12447, 12456, 12466, 12472, 12483, 12493, 12500, 12510, 0}, {12518, 12524, 12529, 12534, 12539, 12544, 12549, 12555, 12561, 12567, 12573, 12580, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {1848,1328,0,0,0,0,0,0,0,0,0,0,0,0},{12151,0,0,0,0,0,0,0},{301,0,0,0,0,0,0,0,0,0,0,0},{307,0,0,0,0,0,0,0,0}},
-       {3755, 1363, 1420, 1404, 2005, 3796, 12587, 12599, {12611, 12626, 12641, 12656, 12673, 12692, 12703}, {12714, 12721, 12728, 12735, 12742, 12749, 12756}, {0, 0, 0, 0, 0, 0, 0}, {12763, 12774, 8574, 12787, 8596, 12798, 12805, 8621, 12812, 12827, 12840, 12851, 0}, {12763, 12774, 8574, 12787, 8596, 12798, 12805, 8621, 12812, 12827, 12840, 12851, 0}, {12864, 12871, 12878, 12885, 8596, 12798, 12805, 12892, 12899, 12906, 12913, 12920, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {1363,1328,0,0,0,0,0,0,0,0,0,0,0,0},{3755,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,0,0,0,0,0,0,0,0}},
-       {3767, 3979, 23, 35, 44, 3796, 12927, 12947, {12964, 12977, 12990, 13006, 13023, 13038, 13047}, {12964, 12977, 12990, 13006, 13023, 13038, 13047}, {13056, 13059, 13062, 13065, 13068, 13071, 13074}, {13077, 13090, 13101, 13110, 13121, 13126, 13135, 13146, 13153, 13168, 13179, 13192, 0}, {13205, 13220, 13101, 13110, 13233, 13126, 13240, 13146, 13153, 13168, 13179, 13192, 0}, {13077, 13090, 13101, 13110, 13121, 13126, 13135, 13146, 13153, 13168, 13179, 13192, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {3979,3970,0,0,0,0,0,0,0,0,0,0,0,0},{3767,4000,0,0,0,0,0,0},{35,301,0,0,0,0,0,0,0,0,0,0},{23,307,0,0,0,0,0,0,0}},
-       {5510, 270, 3019, 3030, 2005, 55, 13253, 13256, {13259, 13272, 13282, 13291, 13301, 13312, 13323}, {13335, 13338, 13343, 13348, 13353, 13358, 13363}, {13335, 13368, 13371, 13374, 13377, 13380, 13383}, {13386, 13399, 13410, 13420, 13431, 13443, 13455, 13468, 13480, 13493, 13508, 13529, 0}, {13386, 13399, 13410, 13420, 13431, 13443, 13455, 13468, 13480, 13493, 13508, 13529, 0}, {13548, 13554, 13560, 13566, 13572, 13578, 13584, 13590, 13596, 13602, 13609, 13616, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 266, 268, {270,14,1354,2374,1328,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {13623, 2670, 1420, 1404, 44, 4788, 13636, 13644, {13652, 13665, 13686, 13705, 13726, 13745, 13758}, {13769, 13776, 13783, 13790, 13797, 13804, 13811}, {0, 0, 0, 0, 0, 0, 0}, {13818, 13833, 13848, 13857, 13868, 13879, 13892, 13905, 13920, 13939, 13958, 13975, 0}, {13818, 13833, 13848, 13857, 13868, 13879, 13892, 13905, 13920, 13939, 13958, 13975, 0}, {13994, 14001, 14008, 14015, 14022, 14029, 14036, 14043, 14050, 14057, 14064, 14071, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,14078,270,14088,3743,1328,0,0,0,0,0,0,0},{13623,2992,14099,5510,14118,14129,14141,14158},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {3755, 2670, 1420, 1404, 2005, 4788, 0, 0, {14176, 14182, 14196, 14219, 14233, 14249, 14256}, {14265, 14268, 14273, 14279, 14283, 7409, 14288}, {251, 239, 241, 243, 245, 247, 249}, {14292, 14299, 10127, 14306, 3920, 14312, 14318, 14324, 14331, 14340, 14348, 14355, 0}, {14292, 14299, 10127, 14306, 3920, 14312, 14318, 14324, 14331, 14340, 14348, 14355, 0}, {14362, 7848, 2588, 2592, 14366, 14370, 14374, 14378, 14382, 2612, 14386, 14390, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,2926,14,1328,0,0,0,0,0,0,0,0,0},{3755,5510,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {14394, 1837, 1420, 301, 14421, 3796, 3804, 3807, {14437, 14445, 14456, 14466, 14477, 14486, 14495}, {14505, 14508, 14511, 14514, 14517, 14520, 14523}, {14526, 2486, 12314, 2494, 12314, 2490, 14526}, {14528, 14538, 14546, 14554, 14562, 14570, 14577, 14585, 14593, 14600, 14606, 14613, 0}, {14528, 14538, 14546, 14554, 14562, 14570, 14577, 14585, 14593, 14600, 14606, 14613, 0}, {14621, 14625, 2588, 14629, 4910, 14633, 14637, 14641, 14645, 14649, 14653, 14657, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {1837,1328,0,0,0,0,0,0,0,0,0,0,0,0},{14394,0,0,0,0,0,0,0},{301,0,0,0,0,0,0,0,0,0,0,0},{1420,307,1428,0,0,0,0,0,0}},
-       {14099, 2670, 307, 301, 2005, 55, 14661, 14682, {14699, 430, 451, 8443, 14712, 14729, 14740}, {14753, 14761, 14769, 14775, 14783, 14791, 14799}, {555, 558, 561, 564, 567, 558, 564}, {14807, 583, 600, 609, 14822, 14829, 14838, 641, 654, 673, 690, 705, 0}, {14807, 583, 600, 609, 14822, 14829, 14838, 641, 654, 673, 690, 705, 0}, {14847, 14855, 14863, 738, 14822, 14871, 14879, 746, 754, 764, 772, 14887, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,1328,0,0,0,0,0,0,0,0,0,0,0},{14099,0,0,0,0,0,0,0},{301,0,0,0,0,0,0,0,0,0,0,0},{307,0,0,0,0,0,0,0,0}},
-       {5510, 1837, 23, 35, 2005, 55, 0, 0, {14899, 14906, 14917, 14926, 14935, 14942, 14953}, {14963, 14967, 14971, 14975, 14979, 14982, 14986}, {0, 0, 0, 0, 0, 0, 0}, {14990, 15000, 15009, 15017, 15026, 15039, 15051, 15058, 15065, 15072, 15082, 15094, 0}, {14990, 15000, 15009, 15017, 15026, 15039, 15051, 15058, 15065, 15072, 15082, 15094, 0}, {15107, 15111, 15115, 15119, 15123, 15127, 15131, 15135, 15139, 15143, 15147, 15151, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1837,1880,1328,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{35,3030,301,0,0,0,0,0,0,0,0,0},{23,3019,307,0,0,0,0,0,0}},
-       {5510, 1837, 23, 35, 2005, 55, 0, 0, {15155, 15160, 15166, 15176, 15188, 15196, 15207}, {15216, 15220, 15224, 15228, 15232, 15236, 15240}, {0, 0, 0, 0, 0, 0, 0}, {15244, 15254, 15264, 15271, 15278, 2808, 15283, 15290, 15297, 15306, 15314, 15322, 0}, {15244, 15254, 15264, 15271, 15278, 2808, 15283, 15290, 15297, 15306, 15314, 15322, 0}, {2861, 2865, 14986, 15330, 15334, 2878, 2882, 15338, 2890, 2894, 2898, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1837,1880,1328,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{35,3030,301,0,0,0,0,0,0,0,0,0},{23,3019,307,0,0,0,0,0,0}},
-       {5510, 1837, 23, 35, 2005, 55, 3804, 3807, {15346, 15352, 15363, 15176, 15373, 15196, 15207}, {15382, 15386, 15390, 15228, 15232, 15236, 15240}, {2113, 2486, 15394, 2488, 2113, 5718, 2486}, {15396, 15406, 15417, 15424, 15433, 15439, 15445, 15453, 15461, 15472, 15482, 15491, 0}, {15500, 15254, 15509, 15515, 15278, 2808, 15283, 15290, 15522, 15306, 15314, 15322, 0}, {2861, 2865, 15532, 2874, 15334, 2878, 2882, 15338, 2890, 2894, 2898, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1837,1880,1328,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{35,3030,301,0,0,0,0,0,0,0,0,0},{23,3019,307,0,0,0,0,0,0}},
-       {5510, 1837, 23, 35, 2005, 55, 15536, 15540, {15544, 15551, 15559, 15567, 15576, 15586, 15593}, {2754, 8226, 2760, 15602, 2766, 15605, 2772}, {2113, 2486, 2775, 3895, 2775, 4157, 2113}, {15608, 15617, 15627, 2798, 10531, 15633, 15639, 15645, 2825, 2835, 2843, 10543, 0}, {15608, 15617, 15627, 2798, 10531, 15633, 15639, 15645, 2825, 2835, 2843, 10543, 0}, {2861, 2865, 3951, 2874, 10531, 2878, 2882, 2886, 2890, 2894, 2898, 10556, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1837,1880,1328,15654,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{35,3030,301,0,0,0,0,0,0,0,0,0},{23,3019,307,0,0,0,0,0,0}},
-       {15666, 2670, 1420, 1404, 2005, 15698, 15704, 15720, {15742, 15758, 15783, 15811, 15839, 15867, 15895}, {15914, 15924, 15934, 15944, 15954, 15964, 15974}, {15984, 15988, 15992, 15988, 15996, 16000, 16004}, {16008, 16030, 16058, 16074, 16093, 16109, 16128, 16144, 16166, 16197, 16225, 16250, 0}, {16008, 16030, 16058, 16074, 16093, 16109, 16128, 16144, 16166, 16197, 16225, 16250, 0}, {16278, 16288, 16298, 16308, 16318, 16328, 16338, 16348, 16358, 16368, 16378, 16388, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,2926,14,1328,0,0,0,0,0,0,0,0,0},{15666,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {1983, 2374, 307, 301, 2005, 2385, 16398, 16403, {5913, 16408, 16419, 16429, 16439, 16449, 16463}, {5999, 6003, 16475, 16480, 16484, 16489, 16494}, {2113, 2486, 2488, 2486, 5718, 2492, 2494}, {2496, 2503, 4899, 6055, 4910, 2527, 2532, 2537, 2544, 2554, 2562, 6099, 0}, {2496, 2503, 4899, 6055, 4910, 2527, 2532, 2537, 2544, 2554, 2562, 6099, 0}, {2580, 2584, 2588, 2592, 4910, 2596, 2600, 2604, 2608, 2612, 2616, 6129, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 2624, 268, {2374,1354,1328,0,0,0,0,0,0,0,0,0,0,0},{1983,0,0,0,0,0,0,0},{301,5006,0,0,0,0,0,0,0,0,0,0},{307,6460,0,0,0,0,0,0,0}},
-       {5510, 2374, 307, 301, 44, 55, 16498, 16526, {16548, 16567, 16586, 16608, 16627, 16661, 16686}, {16705, 16716, 16727, 16741, 16752, 16763, 16780}, {16791, 16795, 16802, 16809, 16816, 16823, 16830}, {16834, 16850, 16866, 16882, 16901, 16908, 16918, 16934, 16950, 16972, 16994, 17013, 0}, {16834, 16850, 16866, 16882, 16901, 16908, 16918, 16934, 16950, 16972, 16994, 17013, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,1354,2335,2926,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {17035, 270, 307, 301, 2005, 17059, 17072, 17075, {17078, 17087, 17096, 17106, 17116, 17126, 17138}, {17146, 17151, 17155, 17159, 17163, 17168, 17173}, {17177, 2488, 2488, 9676, 17177, 17180, 2113}, {17183, 17190, 17195, 2798, 17201, 17207, 17214, 17220, 17228, 17238, 17246, 17255, 0}, {17183, 17190, 17195, 2798, 17201, 17207, 17214, 17220, 17228, 17238, 17246, 17255, 0}, {2861, 17265, 3951, 2874, 17269, 17273, 17278, 17282, 17286, 17290, 2898, 17294, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,1328,17299,7079,3010,0,0,0,0,0,0,0,0,0},{17035,17308,9937,0,0,0,0,0},{301,3030,1404,35,0,0,0,0,0,0,0,0},{307,3019,1420,23,0,0,0,0,0}},
-       {17326, 2670, 307, 301, 2005, 17344, 17358, 17363, {17368, 17380, 17391, 17405, 17417, 17427, 17437}, {17448, 17453, 17458, 17463, 17468, 17473, 17478}, {2113, 4157, 2486, 6251, 2775, 15394, 2494}, {17483, 17500, 17513, 17527, 17540, 17553, 17566, 17580, 17592, 17606, 17620, 17634, 0}, {17483, 17500, 17513, 17527, 17540, 17553, 17566, 17580, 17592, 17606, 17620, 17634, 0}, {17647, 17654, 17659, 17664, 17668, 17673, 17678, 17683, 17688, 17695, 17700, 17706, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {2670,1363,2926,1328,0,0,0,0,0,0,0,0,0,0},{17326,0,0,0,0,0,0,0},{301,1404,5006,0,0,0,0,0,0,0,0,0},{307,1420,6460,0,0,0,0,0,0}},
-       {5510, 270, 1420, 1404, 2005, 55, 18004, 18007, {18011, 18016, 10448, 10455, 18022, 18029, 10472}, {18036, 18040, 10486, 10490, 18044, 10498, 10502}, {12314, 14526, 2113, 10506, 4442, 4155, 2113}, {10508, 10516, 18048, 2798, 10531, 2878, 18052, 18058, 2825, 2835, 2843, 18063, 0}, {10508, 10516, 18048, 2798, 10531, 2878, 18052, 18058, 2825, 2835, 2843, 18063, 0}, {2861, 2865, 18048, 2874, 10531, 2878, 2882, 18058, 2890, 2894, 2898, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {18515, 1363, 1420, 1404, 18535, 4788, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {1363,1328,0,0,0,0,0,0,0,0,0,0,0,0},{18515,0,0,0,0,0,0,0},{1404,0,0,0,0,0,0,0,0,0,0,0},{1420,0,0,0,0,0,0,0,0}},
-       {3767, 3787, 3019, 3030, 44, 3796, 18551, 18559, {18567, 18576, 18585, 18593, 18602, 18611, 18618}, {18627, 18630, 18633, 18636, 18639, 18643, 18646}, {241, 243, 245, 247, 12314, 14526, 239}, {10508, 10516, 18649, 18655, 10531, 2808, 18052, 18662, 15297, 18669, 15314, 18676, 0}, {10508, 10516, 18649, 18655, 10531, 2808, 18052, 18662, 15297, 18669, 15314, 18676, 0}, {2861, 2865, 18048, 2874, 10531, 2878, 2882, 18684, 2890, 2894, 2898, 10556, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3787,3963,3970,3979,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {18688, 18706, 307, 301, 2005, 18717, 0, 0, {33652, 33662, 33671, 33680, 33691, 33701, 33706}, {33713, 33719, 33724, 33729, 33734, 10104, 33738}, {33743, 2775, 2113, 7409, 2108, 7409, 2113}, {14292, 14299, 10127, 14306, 3920, 33745, 33750, 33755, 14331, 14340, 14348, 14355, 0}, {14292, 14299, 10127, 14306, 3920, 33745, 33750, 33755, 14331, 14340, 14348, 14355, 0}, {33762, 33767, 3951, 2874, 3920, 33745, 33750, 33771, 10482, 2894, 33775, 33780, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 266, 268, {18706,1363,2926,14,1328,0,0,0,0,0,0,0,0,0},{18688,3755,5510,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {5510, 1354, 6460, 5006, 44, 55, 18884, 18912, {18934, 18953, 18972, 18997, 19016, 19050, 19075}, {19094, 19104, 19114, 19130, 19140, 19165, 19181}, {19191, 19195, 19202, 19206, 19213, 19220, 19227}, {19231, 19259, 19293, 19309, 19328, 19335, 19345, 19361, 19377, 19408, 19430, 19452, 0}, {19231, 19259, 19293, 19309, 19328, 19335, 19345, 19361, 19377, 19408, 19430, 19452, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1354,2335,2926,2374,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{5006,2350,19477,19486,0,0,0,0,0,0,0,0},{6460,2366,19494,19506,0,0,0,0,0}},
-       {5510, 1354, 307, 301, 44, 55, 20053, 20094, {20135, 20154, 20173, 20195, 20214, 20236, 20261}, {20280, 20290, 20300, 20313, 20323, 20336, 20352}, {20362, 20366, 20373, 20380, 20387, 20394, 20401}, {20405, 20433, 20461, 20477, 20496, 20503, 20513, 20529, 20545, 20573, 20595, 20617, 0}, {20405, 20433, 20461, 20477, 20496, 20503, 20513, 20529, 20545, 20573, 20595, 20617, 0}, {20642, 20661, 20461, 20477, 20496, 20503, 20513, 20529, 20680, 20696, 20712, 20722, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1354,2335,2926,2374,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {5510, 1354, 307, 301, 44, 55, 7860, 20735, {20738, 20757, 20776, 20801, 20820, 20842, 20867}, {20886, 20896, 20906, 20922, 20932, 20945, 20961}, {20971, 20975, 20982, 20986, 20993, 21000, 21007}, {21011, 21033, 21064, 21086, 21105, 21112, 21122, 21138, 21154, 21185, 21207, 21229, 0}, {21011, 21033, 21064, 21086, 21105, 21112, 21122, 21138, 21154, 21185, 21207, 21229, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1354,2335,2926,2374,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {5510, 2374, 307, 301, 2005, 55, 21254, 21279, {21304, 21323, 21345, 21370, 21386, 21408, 21427}, {21437, 21444, 21451, 21458, 21465, 21472, 21479}, {21437, 21444, 21451, 21458, 21465, 21472, 21479}, {21483, 21499, 21524, 21543, 21562, 21569, 21582, 21595, 21614, 21645, 21670, 21692, 0}, {21483, 21499, 21524, 21543, 21562, 21569, 21582, 21717, 21614, 21645, 21670, 21692, 0}, {21736, 21744, 21758, 21772, 21562, 21569, 21582, 21783, 21791, 21805, 21816, 21824, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,1354,2335,2926,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {5510, 1354, 307, 301, 44, 55, 21835, 21866, {21891, 21913, 21935, 21960, 21982, 22007, 22035}, {22057, 22067, 22077, 22090, 22100, 22113, 22129}, {22139, 22143, 22150, 22154, 22161, 22168, 22175}, {22179, 22195, 22220, 22239, 22261, 22268, 22281, 22294, 22313, 22344, 22369, 22388, 0}, {22179, 22195, 22220, 22239, 22261, 22268, 22281, 22294, 22313, 22344, 22369, 22388, 0}, {22413, 22420, 243, 22436, 22261, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1354,2335,2926,2374,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {5510, 1354, 307, 301, 44, 55, 3804, 3807, {22452, 22471, 22490, 22512, 22531, 22553, 22578}, {22597, 22602, 22610, 22618, 22626, 22634, 22642}, {22653, 22657, 22664, 22671, 22678, 22685, 22692}, {22696, 22712, 22737, 22756, 22778, 22785, 22798, 22811, 22830, 22858, 22883, 22905, 0}, {22696, 22712, 22737, 22756, 22778, 22785, 22798, 22811, 22830, 22858, 22883, 22905, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1354,2335,2926,2374,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {5510, 1354, 6460, 5006, 44, 55, 22930, 22949, {22980, 23005, 23036, 23064, 23089, 23117, 23151}, {23176, 23195, 23220, 23236, 23255, 23274, 23293}, {23303, 23310, 23317, 23324, 23331, 23344, 23351}, {23355, 23374, 23402, 23430, 23455, 23468, 23484, 23497, 23522, 23559, 23587, 23609, 0}, {23355, 23374, 23402, 23430, 23455, 23468, 23484, 23497, 23522, 23559, 23587, 23609, 0}, {23634, 23644, 23663, 23679, 23455, 23468, 23484, 23695, 23702, 23727, 23743, 23753, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1354,2335,2926,2374,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{5006,2350,19477,19486,0,0,0,0,0,0,0,0},{6460,2366,19494,19506,0,0,0,0,0}},
-       {23766, 2374, 1960, 1943, 23785, 55, 23793, 23821, {23843, 23862, 23881, 23906, 23925, 23959, 23984}, {24003, 19104, 19114, 19130, 24013, 24038, 19181}, {0, 0, 0, 0, 0, 0, 0}, {24054, 24079, 24110, 24126, 19328, 19335, 19345, 24145, 24161, 24192, 24214, 24236, 0}, {24054, 24079, 24110, 24126, 19328, 19335, 19345, 24145, 24161, 24192, 24214, 24236, 0}, {24261, 24274, 24110, 24126, 19328, 19335, 19345, 24293, 24300, 24316, 24332, 24342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,0,0,0,0,0,0,0,0,0,0,0,0,0},{23766,0,0,0,0,0,0,0},{1943,1951,0,0,0,0,0,0,0,0,0,0},{1960,1971,0,0,0,0,0,0,0}},
-       {5510, 2374, 307, 301, 44, 55, 3804, 3807, {16548, 16567, 24355, 16608, 24377, 16661, 16686}, {24399, 24409, 24419, 24432, 24442, 24455, 24471}, {16791, 16795, 16802, 16809, 16816, 16823, 16830}, {24481, 24506, 16866, 24537, 24556, 16908, 24563, 24576, 24592, 24617, 24639, 24667, 0}, {24481, 24506, 16866, 24537, 24556, 16908, 24563, 24576, 24592, 24617, 24639, 24667, 0}, {24689, 24702, 16866, 24721, 24556, 16908, 24563, 24737, 24744, 257, 24766, 24788, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,1354,2335,2926,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {25169, 1467, 307, 301, 25212, 25219, 25245, 25267, {25292, 25320, 25348, 25385, 25416, 25450, 25475}, {25509, 25525, 25541, 25566, 25585, 25607, 25626}, {25648, 25655, 25662, 25669, 25676, 25683, 25687}, {25697, 25731, 25768, 25802, 25836, 25867, 25904, 25941, 25981, 26015, 26049, 26098, 0}, {25697, 25731, 25768, 25802, 25836, 25867, 25904, 25941, 25981, 26015, 26049, 26098, 0}, {26147, 26160, 26173, 26186, 26199, 26212, 26225, 26238, 26251, 26264, 26280, 26296, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1467,1819,1828,1848,1328,1837,1859,1866,1873,0,0,0,0,0},{25169,26312,0,0,0,0,0,0},{301,0,0,0,0,0,0,0,0,0,0,0},{307,0,0,0,0,0,0,0,0}},
-       {5510, 270, 307, 301, 2005, 55, 0, 0, {26360, 26369, 26379, 26391, 26404, 26413, 26425}, {26437, 26441, 26446, 26450, 26454, 26458, 26462}, {2113, 2494, 2486, 2486, 14526, 6251, 2113}, {26466, 26473, 26482, 26489, 2804, 26496, 26504, 26515, 26520, 26525, 26532, 26541, 0}, {26466, 26473, 26482, 26489, 2804, 26496, 26549, 26515, 26520, 26525, 26532, 26541, 0}, {26559, 26563, 26446, 26568, 2804, 26572, 26576, 26515, 26520, 26580, 26584, 26589, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 0, 266, 268, {270,14,1347,2926,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,35,3030,0,0,0,0,0,0,0,0},{307,1420,23,3019,0,0,0,0,0}},
-       {3755, 1328, 307, 26594, 26602, 26637, 26673, 26689, {26705, 26739, 26770, 26801, 26823, 26866, 26894}, {26919, 26926, 26930, 26934, 26941, 26951, 26958}, {0, 0, 0, 0, 0, 0, 0}, {26962, 26975, 26994, 27007, 27020, 27033, 27052, 27071, 27084, 27100, 27113, 27138, 0}, {26962, 26975, 26994, 27007, 27020, 27033, 27052, 27071, 27084, 27100, 27113, 27138, 0}, {27151, 27155, 27159, 27163, 27167, 27171, 27175, 27179, 27183, 27187, 27194, 27201, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1328,0,0,0,0,0,0,0,0,0,0,0,0,0},{3755,9949,0,0,0,0,0,0},{26594,0,0,0,0,0,0,0,0,0,0,0},{307,0,0,0,0,0,0,0,0}},
-       {5510, 270, 307, 26594, 2005, 55, 27208, 27233, {27258, 27283, 27302, 27330, 27349, 27374, 27393}, {27415, 27423, 27428, 27433, 27438, 27446, 27454}, {0, 0, 0, 0, 0, 0, 0}, {27459, 27478, 27494, 27507, 27520, 27542, 27561, 27583, 27599, 27615, 27628, 27644, 0}, {27459, 27478, 27494, 27507, 27520, 27542, 27561, 27583, 27599, 27615, 27628, 27644, 0}, {27660, 27669, 27678, 27690, 27700, 27709, 27721, 27730, 27739, 27748, 27757, 27766, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,1328,0,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{26594,0,0,0,0,0,0,0,0,0,0,0},{307,0,0,0,0,0,0,0,0}},
-       {4028, 270, 1420, 1404, 4057, 55, 973, 978, {27775, 27783, 27788, 27795, 27805, 27811, 27818}, {27826, 27830, 3951, 27834, 27839, 27843, 27847}, {2775, 2494, 2486, 2486, 4153, 4157, 2113}, {27852, 27860, 6270, 27869, 27875, 27880, 27886, 6304, 27892, 27901, 27909, 27918, 0}, {27852, 27860, 6270, 27869, 27875, 27880, 27886, 6304, 27892, 27901, 27909, 27918, 0}, {27927, 2865, 3951, 27931, 2804, 27935, 27940, 18684, 17286, 27944, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1339,1347,1354,1363,1328,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{1404,301,35,1409,0,0,0,0,0,0,0,0},{1420,307,23,1428,0,0,0,0,0}},
-       {5510, 2374, 307, 301, 44, 55, 27948, 27960, {27972, 16567, 28000, 16608, 24377, 16661, 16686}, {24399, 24409, 24419, 24432, 24442, 24455, 24471}, {0, 0, 0, 0, 0, 0, 0}, {24481, 24506, 16866, 24537, 24556, 16908, 24563, 28019, 28035, 28063, 24639, 24667, 0}, {24481, 24506, 16866, 24537, 24556, 16908, 24563, 28019, 28035, 28063, 24639, 24667, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,1354,2335,2926,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,1943,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {28085, 1328, 3019, 3030, 28133, 3796, 28143, 28155, {28164, 28180, 28196, 28224, 28240, 28283, 28308}, {28336, 28346, 28356, 28363, 28373, 28389, 28402}, {28412, 28416, 28420, 28424, 28428, 28441, 28448}, {28455, 28474, 28499, 28518, 28543, 28556, 28569, 28582, 28604, 28638, 28663, 28691, 0}, {28455, 28474, 28499, 28518, 28543, 28556, 28569, 28582, 28604, 28638, 28663, 28691, 0}, {28719, 28726, 28736, 28518, 28543, 28556, 28569, 28749, 28759, 28772, 28782, 28795, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 2624, 268, {1328,1837,1880,270,14,0,0,0,0,0,0,0,0,0},{28085,0,0,0,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {28808, 3010, 3019, 3030, 2005, 28840, 28854, 28864, {28877, 28887, 28894, 28907, 28917, 28927, 28937}, {28877, 28887, 28947, 28907, 28917, 28927, 28937}, {28957, 28961, 28965, 28969, 28973, 28977, 28981}, {28985, 29001, 29017, 29027, 29040, 29047, 29054, 29064, 29077, 29096, 29115, 29131, 0}, {28985, 29001, 29017, 29027, 29040, 29047, 29054, 29064, 29077, 29096, 29115, 29131, 0}, {29147, 29157, 29017, 29167, 29040, 29047, 29054, 29177, 29187, 29197, 29207, 29217, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1328,0,0,0,0,0,0,0,0,0,0,0,0},{28808,0,0,0,0,0,0,0},{3030,0,0,0,0,0,0,0,0,0,0,0},{3019,0,0,0,0,0,0,0,0}},
-       {3767, 3787, 3019, 3030, 29468, 3796, 29478, 29519, {29560, 29579, 29598, 29623, 29642, 29664, 29689}, {29708, 24409, 29718, 24432, 29734, 24455, 24471}, {29747, 29751, 29755, 29759, 29763, 29767, 29771}, {16834, 29775, 16866, 29803, 24556, 29822, 16918, 16934, 29832, 29863, 29885, 29910, 0}, {16834, 29775, 16866, 29803, 24556, 29822, 16918, 16934, 29832, 29863, 29885, 29910, 0}, {29935, 29942, 16866, 29952, 24556, 29822, 29968, 29981, 29988, 30004, 30020, 30033, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3787,3963,3970,3979,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {270, 14, 3019, 3030, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {30046, 30053, 30062, 30077, 30088, 30097, 30104, 30111, 30118, 30129, 30142, 30155, 0}, {30046, 30053, 30062, 30077, 30088, 30097, 30104, 30111, 30118, 30129, 30142, 30155, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {14,270,0,0,0,0,0,0,0,0,0,0,0,0},{270,1,281,30160,0,0,0,0},{3030,1404,0,0,0,0,0,0,0,0,0,0},{3019,1420,0,0,0,0,0,0,0}},
-       {3767, 3787, 3019, 3030, 44, 3796, 3804, 3807, {30178, 30185, 27788, 30191, 30202, 30210, 30219}, {30226, 27830, 3951, 30230, 30234, 30238, 10502}, {2494, 2494, 2486, 2486, 5718, 15394, 2113}, {30242, 30248, 30256, 27869, 30262, 30267, 30273, 6304, 30279, 30289, 30297, 30307, 0}, {30242, 30248, 30256, 27869, 30262, 30267, 30273, 6304, 30279, 30289, 30297, 30307, 0}, {30317, 30321, 3951, 27931, 3920, 30325, 30329, 18684, 17286, 2894, 30333, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3787,3963,3970,3979,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {3767, 3010, 3019, 3030, 44, 3796, 0, 0, {30337, 30344, 30352, 30359, 30366, 30374, 30382}, {30389, 30392, 30395, 30398, 30401, 30404, 30407}, {2494, 2494, 2488, 2494, 12314, 4155, 12314}, {30410, 30418, 30428, 30434, 30442, 30447, 30452, 30457, 30464, 18669, 30472, 30480, 0}, {30410, 30418, 30428, 30434, 30442, 30447, 30452, 30457, 30464, 18669, 30472, 30480, 0}, {2861, 30488, 3951, 30492, 3920, 29431, 29435, 30496, 3891, 2894, 30500, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1347,14,270,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {3767, 3010, 3019, 3030, 44, 3796, 30504, 30515, {30525, 30543, 30558, 30580, 30593, 30607, 30624}, {30648, 30656, 30661, 30580, 30593, 30673, 30680}, {0, 0, 0, 0, 0, 0, 0}, {30694, 30716, 30732, 30752, 30766, 30783, 30798, 30815, 30829, 30842, 30861, 30875, 0}, {30694, 30716, 30732, 30752, 30766, 30783, 30798, 30815, 30829, 30842, 30861, 30875, 0}, {30894, 30909, 30918, 30931, 30938, 30948, 30956, 30966, 30973, 30979, 30991, 30998, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1347,14,270,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {5510, 1837, 23, 35, 2005, 55, 0, 0, {31010, 31018, 14917, 14926, 14935, 31029, 31039}, {15382, 14967, 14971, 14975, 14979, 15236, 31048}, {0, 0, 0, 0, 0, 0, 0}, {31052, 31061, 31071, 31079, 10531, 3924, 31087, 31093, 31102, 31111, 31120, 31129, 0}, {31052, 31061, 31071, 31079, 10531, 3924, 31087, 31093, 31102, 31111, 31120, 31129, 0}, {2861, 2865, 14986, 31138, 10531, 2878, 2882, 18684, 17286, 2894, 31142, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1837,1880,1328,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{35,3030,301,0,0,0,0,0,0,0,0,0},{23,3019,307,0,0,0,0,0,0}},
-       {1983, 2374, 307, 301, 2005, 2385, 31146, 31151, {31156, 31163, 31178, 31192, 31208, 31223, 31239}, {6247, 31254, 2588, 31258, 31262, 31266, 31270}, {2113, 12314, 2486, 2108, 2113, 2488, 12314}, {7167, 7175, 31274, 31281, 31288, 2527, 2532, 31293, 31303, 31314, 31323, 31333, 0}, {7167, 7175, 31274, 31281, 31288, 2527, 2532, 31293, 31303, 31314, 31323, 31333, 0}, {2580, 2584, 2588, 2592, 2523, 2596, 2600, 2604, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,1354,1328,2626,0,0,0,0,0,0,0,0,0,0},{1983,2637,0,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {3767, 3010, 3019, 3030, 44, 3796, 31343, 31348, {31353, 31369, 31377, 31385, 31394, 31406, 31416}, {31426, 31432, 31438, 31442, 31446, 31454, 3891}, {0, 0, 0, 0, 0, 0, 0}, {31461, 31474, 31488, 31497, 31503, 31507, 31512, 31520, 15297, 31533, 15314, 15322, 0}, {31461, 31474, 31488, 31497, 31503, 31507, 31512, 31520, 15297, 31533, 15314, 15322, 0}, {31542, 2865, 31546, 15330, 31503, 31550, 2882, 31554, 2890, 31562, 2898, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1347,14,270,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {31568, 1467, 1420, 1943, 31592, 31609, 31623, 31630, {31637, 31647, 31657, 31667, 31677, 31687, 31697}, {31707, 31714, 31721, 31728, 31735, 31742, 31749}, {31756, 31760, 31764, 31768, 31772, 31776, 31780}, {31784, 31791, 31798, 31805, 31812, 31819, 31826, 31833, 31840, 31847, 31854, 31864, 0}, {31784, 31791, 31798, 31805, 31812, 31819, 31826, 31833, 31840, 31847, 31854, 31864, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1467,1819,1828,1848,1328,1837,0,0,0,0,0,0,0,0},{31568,31874,31904,0,0,0,0,0},{1943,1404,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {4771, 270, 307, 301, 2005, 4788, 0, 0, {26437, 27830, 31934, 31941, 31951, 31956, 31963}, {31970, 4131, 31974, 4862, 31979, 31984, 31989}, {4421, 31994, 31997, 32000, 32003, 32006, 32009}, {32012, 32019, 31934, 32030, 32036, 32040, 32049, 32056, 32061, 32070, 8220, 32075, 0}, {32012, 32019, 31934, 32030, 32036, 32040, 32049, 32056, 32061, 32070, 8220, 32075, 0}, {32081, 32085, 32092, 26568, 32036, 32097, 32102, 32056, 32107, 32070, 8220, 32112, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1363,1354,1328,0,0,0,0,0,0,0,0,0},{4771,4997,3755,0,0,0,0,0},{301,1404,5006,5012,5022,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {32116, 270, 307, 301, 2005, 4788, 0, 0, {32144, 32152, 32159, 32167, 32177, 32185, 1034}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {32196, 32204, 1091, 1097, 4910, 32213, 32218, 1120, 1126, 32225, 1143, 32234, 0}, {32196, 32204, 1091, 1097, 4910, 32213, 32218, 1120, 1126, 32225, 1143, 32234, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1363,1354,1328,0,0,0,0,0,0,0,0,0},{32116,0,0,0,0,0,0,0},{301,1404,5006,5012,5022,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {32396, 32414, 1420, 1404, 32425, 3796, 32441, 32446, {32451, 32476, 32505, 32530, 32543, 32558, 32575}, {32590, 32595, 32600, 32605, 32610, 32615, 8529}, {32620, 32620, 32623, 8540, 8543, 32620, 8540}, {32626, 32645, 32660, 32682, 32702, 32718, 32734, 32748, 32774, 32798, 32815, 32832, 0}, {32626, 32645, 32660, 32682, 32702, 32718, 32734, 32748, 32774, 32798, 32815, 32832, 0}, {32849, 32858, 32867, 32881, 32895, 32907, 32919, 32929, 32945, 32959, 32966, 32973, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {32414,32980,2926,3970,32989,0,0,0,0,0,0,0,0,0},{32396,33000,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {3767, 3787, 3019, 3030, 44, 3796, 0, 0, {33019, 33031, 33042, 33054, 33066, 33076, 33088}, {33103, 33108, 33113, 33118, 33123, 33128, 33133}, {0, 0, 0, 0, 0, 0, 0}, {33138, 33147, 33159, 33167, 33172, 33182, 33189, 33198, 33205, 33211, 33220, 33231, 0}, {33138, 33147, 33159, 33167, 33172, 33182, 33189, 33198, 33205, 33211, 33220, 33231, 0}, {33239, 33244, 33249, 33254, 33259, 33264, 33269, 33123, 33274, 33279, 33284, 33289, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3787,3963,3970,3979,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {5510, 270, 307, 301, 2005, 55, 6031, 6036, {33294, 33307, 33315, 33324, 33334, 33344, 33353}, {33365, 33369, 33373, 33377, 33381, 33385, 33389}, {2775, 2494, 2486, 7409, 12314, 5718, 2113}, {33393, 33407, 33418, 33427, 33438, 33450, 33464, 33476, 33489, 33502, 33514, 33527, 0}, {33393, 33407, 33418, 33427, 33438, 33450, 33464, 33476, 33489, 33502, 33514, 33527, 0}, {33541, 33546, 33552, 33558, 33563, 33569, 33575, 33580, 33586, 33591, 17994, 33597, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 0, 266, 268, {270,14,1347,2926,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,35,3030,0,0,0,0,0,0,0,0},{307,1420,23,3019,0,0,0,0,0}},
-       {4014, 270, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{35,301,0,0,0,0,0,0,0,0,0,0},{23,307,0,0,0,0,0,0,0}},
-       {1445, 1467, 1420, 1404, 1476, 1492, 1505, 1512, {1519, 1529, 1539, 1549, 1559, 1569, 1579}, {1589, 1596, 1603, 1610, 1617, 1624, 1631}, {1638, 1642, 1646, 1650, 1654, 1658, 1662}, {1666, 1673, 1680, 1687, 1694, 1701, 1708, 1715, 1722, 1729, 1736, 1746, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1666, 1673, 1680, 1687, 1694, 1701, 1708, 1715, 1722, 1729, 1736, 1746, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1467,1819,1828,1328,1837,1848,1859,1866,1873,1880,0,0,0,0},{1445,1889,1916,0,0,0,0,0},{1404,301,1943,1951,0,0,0,0,0,0,0,0},{1420,307,1960,1971,0,0,0,0,0}},
-       {2651, 2670, 307, 301, 2005, 55, 2681, 2687, {2694, 2702, 2709, 2718, 2727, 2738, 2746}, {2754, 2757, 2760, 2763, 2766, 2769, 2772}, {2113, 2486, 2775, 2486, 2775, 2492, 2113}, {2777, 2784, 2792, 2798, 2804, 2808, 2813, 2818, 2825, 2835, 2843, 2852, 0}, {2777, 2784, 2792, 2798, 2804, 2808, 2813, 2818, 2825, 2835, 2843, 2852, 0}, {2861, 2865, 2869, 2874, 2804, 2878, 2882, 2886, 2890, 2894, 2898, 2902, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {2670,1363,2918,33784,2926,1328,0,0,0,0,0,0,0,0},{2651,1983,33794,0,0,0,0,0},{301,1404,8082,8072,2945,8105,8110,8091,8097,0,0,0},{307,1420,8142,8155,2970,2956,2985,0,0}},
-       {5510, 270, 307, 301, 2005, 55, 3804, 3807, {3810, 3817, 3824, 3832, 3842, 3851, 3858}, {3867, 3871, 3875, 3879, 3883, 3887, 3891}, {2113, 2486, 2488, 3895, 2488, 2492, 2113}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {2861, 2865, 3951, 2874, 3920, 2878, 2882, 2886, 2890, 3955, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 0, 266, 268, {270,14,1347,2926,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,35,3030,0,0,0,0,0,0,0,0},{307,1420,23,3019,0,0,0,0,0}},
-       {4028, 270, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,3743,14,1339,1347,1354,1328,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{35,3030,1404,301,0,0,0,0,0,0,0,0},{23,3019,1420,307,0,0,0,0,0}},
-       {4771, 14078, 307, 301, 2005, 4788, 3804, 3807, {4795, 4804, 4810, 4816, 4825, 4831, 4840}, {4847, 4852, 4857, 4862, 4867, 4872, 4877}, {2775, 2494, 2486, 2486, 4155, 4157, 2113}, {4882, 4890, 4899, 4904, 4910, 4914, 4919, 4927, 4933, 4943, 1143, 4951, 0}, {4882, 4890, 4899, 4904, 4910, 4914, 4919, 4927, 4933, 4943, 1143, 4951, 0}, {4961, 4967, 4899, 4974, 4910, 4914, 4979, 4927, 4985, 1313, 1318, 4991, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {14078,1339,1363,1880,1354,270,1328,0,0,0,0,0,0,0},{4771,3755,3990,0,0,0,0,0},{301,1404,5006,5012,5022,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {2651, 2670, 307, 301, 2005, 2385, 6167, 6170, {6173, 6182, 6190, 6199, 6210, 6219, 6228}, {4127, 4131, 2588, 6235, 6239, 6243, 6247}, {2775, 2494, 2486, 2486, 6251, 4157, 2113}, {6253, 6261, 6270, 6276, 6283, 6290, 6297, 6304, 6311, 6321, 6329, 6338, 0}, {6347, 6355, 4173, 6364, 6371, 6378, 6385, 4196, 6392, 6402, 1143, 6410, 0}, {6419, 2584, 2588, 2592, 6423, 6427, 6431, 4242, 6435, 6439, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {2670,1363,11637,1347,6443,1328,0,0,0,0,0,0,0,0},{2651,6451,3755,0,0,0,0,0},{301,1404,8082,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {4771, 14078, 1420, 1404, 2005, 55, 973, 978, {7088, 7095, 7103, 7111, 7120, 7130, 7138}, {7147, 4424, 7150, 7153, 7156, 7159, 7162}, {7165, 2486, 2775, 3895, 2775, 4157, 7165}, {7167, 7175, 7184, 2517, 7190, 2527, 2532, 7194, 2544, 2554, 2562, 2571, 0}, {7167, 7175, 7184, 2517, 7190, 2527, 2532, 7194, 2544, 2554, 2562, 2571, 0}, {2580, 2584, 7203, 2592, 7190, 2596, 2600, 2604, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {14078,1339,1354,1363,2906,1328,0,0,0,0,0,0,0,0},{4771,3990,3755,5553,0,0,0,0},{1404,301,33804,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {1983, 2670, 307, 301, 2005, 2385, 2393, 2398, {2403, 9830, 33814, 2426, 2433, 2441, 33821}, {2456, 9858, 33829, 2469, 2473, 2477, 6027}, {2113, 2486, 2488, 2490, 2488, 2492, 2494}, {2496, 2503, 4899, 2517, 4910, 2527, 2532, 2537, 2544, 2554, 2562, 6099, 0}, {2496, 2503, 4899, 2517, 4910, 2527, 2532, 2537, 2544, 2554, 2562, 6099, 0}, {2580, 2584, 2588, 2592, 4910, 2596, 2600, 2604, 2608, 2612, 2616, 6129, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {2670,1363,2926,1328,2906,0,0,0,0,0,0,0,0,0},{1983,2637,0,0,0,0,0,0},{301,1404,7291,5006,0,0,0,0,0,0,0,0},{307,1420,7302,6460,0,0,0,0,0}},
-       {7643, 2374, 307, 301, 4057, 33833, 973, 978, {27775, 33837, 33851, 33864, 33877, 33890, 27818}, {4127, 7749, 7753, 7757, 7761, 7765, 4148}, {2775, 2113, 2488, 7769, 7769, 2113, 2113}, {33902, 33910, 33920, 27869, 27875, 33927, 33933, 6304, 27892, 27901, 27909, 33939, 0}, {33902, 33910, 33920, 27869, 27875, 33927, 33933, 6304, 27892, 27901, 27909, 33939, 0}, {2861, 33767, 3951, 27931, 2804, 2878, 2882, 18684, 17286, 27944, 2898, 2902, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 2624, 268, {2374,14129,24825,2926,14,1328,0,0,0,0,0,0,0,0},{7643,4281,33948,33957,0,0,0,0},{301,33966,0,0,0,0,0,0,0,0,0,0},{307,0,0,0,0,0,0,0,0}},
-       {9785, 1996, 307, 301, 2005, 9803, 9816, 9819, {9822, 9830, 9838, 2426, 2433, 2441, 9845}, {9853, 9858, 9863, 2469, 2473, 2477, 9867}, {2113, 2486, 2488, 2490, 2488, 2492, 2494}, {7167, 7175, 4899, 2517, 2523, 2527, 2532, 9872, 2544, 2554, 2562, 2571, 0}, {7167, 7175, 4899, 2517, 2523, 2527, 2532, 9872, 2544, 2554, 2562, 2571, 0}, {2580, 2584, 2588, 2592, 2523, 2596, 2600, 2604, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {1996,2670,2926,1328,0,0,0,0,0,0,0,0,0,0},{9785,9880,0,0,0,0,0,0},{301,1404,9903,0,0,0,0,0,0,0,0,0},{307,1420,9913,0,0,0,0,0,0}},
-       {3755, 2670, 1420, 1404, 2005, 4788, 0, 0, {33977, 33988, 34012, 34042, 34059, 34081, 34090}, {14265, 14268, 14273, 14279, 14283, 7409, 14288}, {251, 239, 241, 243, 245, 247, 249}, {34101, 34114, 600, 34127, 620, 34138, 34147, 641, 34156, 34173, 34188, 34201, 0}, {34101, 34114, 600, 34127, 620, 34138, 34147, 641, 34156, 34173, 34188, 34201, 0}, {14362, 7848, 2588, 2592, 14366, 14370, 14374, 14378, 14382, 2612, 14386, 14390, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,2926,14,1328,0,0,0,0,0,0,0,0,0},{3755,5510,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {3755, 270, 307, 301, 2005, 55, 973, 978, {17711, 17725, 17735, 17746, 17760, 17771, 17782}, {17795, 17800, 17805, 17812, 17818, 17824, 17830}, {2775, 2494, 2486, 7409, 2775, 12314, 2113}, {17835, 17843, 17851, 17858, 17867, 17877, 17887, 17893, 17901, 17916, 17934, 17942, 0}, {17835, 17843, 17851, 17858, 17867, 17877, 17887, 17893, 17901, 17916, 17934, 17942, 0}, {17950, 17954, 17851, 17960, 17964, 17969, 17887, 17975, 17980, 17987, 17994, 17999, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1347,2926,1328,0,0,0,0,0,0,0,0,0},{3755,5510,9937,9926,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {5510, 270, 1420, 1404, 2005, 55, 18004, 18007, {18011, 18016, 10448, 10455, 18022, 18029, 10472}, {18036, 18040, 10486, 10490, 18044, 10498, 10502}, {12314, 14526, 2113, 10506, 4442, 4155, 2113}, {10508, 10516, 18048, 2798, 10531, 2878, 18052, 18058, 2825, 2835, 2843, 18063, 0}, {10508, 10516, 18048, 2798, 10531, 2878, 18052, 18058, 2825, 2835, 2843, 18063, 0}, {2861, 2865, 18048, 2874, 10531, 2878, 2882, 18058, 2890, 2894, 2898, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {34214, 2670, 307, 301, 2005, 18717, 0, 0, {18724, 18739, 18754, 18769, 18786, 18803, 18812}, {18823, 18830, 18837, 18844, 18851, 18858, 18865}, {18872, 18875, 8540, 8543, 8537, 18878, 18881}, {12763, 12774, 8574, 12787, 8596, 12798, 12805, 8621, 12812, 12827, 12840, 12851, 0}, {12763, 12774, 8574, 12787, 8596, 12798, 12805, 8621, 12812, 12827, 12840, 12851, 0}, {12864, 12871, 12878, 12885, 8596, 12798, 12805, 12892, 12899, 12906, 12913, 12920, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,18706,2926,14,1328,0,0,0,0,0,0,0,0},{34214,3755,5510,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {5510, 1354, 6460, 5006, 44, 55, 18884, 18912, {18934, 18953, 18972, 18997, 19016, 19050, 19075}, {19094, 19104, 19114, 19130, 19140, 19165, 19181}, {19191, 19195, 19202, 19206, 19213, 19220, 19227}, {19231, 19259, 19293, 19309, 19328, 19335, 19345, 19361, 19377, 19408, 19430, 19452, 0}, {19231, 19259, 19293, 19309, 19328, 19335, 19345, 19361, 19377, 19408, 19430, 19452, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 5, 2624, 268, {1354,2335,2926,2374,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{5006,2350,19477,19486,0,0,0,0,0,0,0,0},{6460,2366,19494,19506,0,0,0,0,0}},
-       {34235, 1467, 1420, 1404, 34311, 34343, 0, 0, {24851, 24858, 24869, 24882, 24895, 24906, 24919}, {24930, 24935, 24940, 24945, 24950, 24955, 24960}, {0, 0, 0, 0, 0, 0, 0}, {24965, 24980, 24989, 24996, 25009, 25016, 25027, 25036, 25045, 25052, 25063, 25074, 0}, {24965, 24980, 24989, 24996, 25009, 25016, 25027, 25036, 25045, 25052, 25063, 25074, 0}, {25085, 25092, 25099, 25106, 25113, 25120, 25127, 25134, 25141, 25148, 25155, 25162, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1467,1819,1828,1848,1328,1837,1859,1866,1873,1880,0,0,0,0},{34235,34378,0,0,0,0,0,0},{1404,0,0,0,0,0,0,0,0,0,0,0},{1420,0,0,0,0,0,0,0,0}},
-       {4014, 270, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{35,301,0,0,0,0,0,0,0,0,0,0},{23,307,0,0,0,0,0,0,0}},
-       {1445, 3010, 1420, 1404, 1476, 1492, 1505, 1512, {1519, 1529, 1539, 1549, 1559, 1569, 1579}, {33603, 33610, 33617, 33624, 33631, 33638, 33645}, {1638, 1642, 1646, 1650, 1654, 1658, 1662}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1347,14,1866,1880,1467,1837,1328,0,0,0,0,0,0},{1445,6634,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {34462, 2670, 307, 301, 2005, 55, 2681, 2687, {2694, 2702, 2709, 2718, 2727, 2738, 2746}, {2754, 2757, 2760, 2763, 2766, 2769, 2772}, {2113, 2486, 2775, 2486, 2775, 2492, 2113}, {34482, 2784, 2792, 2798, 2804, 2808, 2813, 2818, 2825, 2835, 2843, 2852, 0}, {34482, 2784, 2792, 2798, 2804, 2808, 2813, 2818, 2825, 2835, 2843, 2852, 0}, {34490, 2865, 2869, 2874, 2804, 2878, 2882, 2886, 2890, 2894, 2898, 2902, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {2670,1363,34495,1328,0,0,0,0,0,0,0,0,0,0},{34462,34505,34517,9926,0,0,0,0},{301,1404,34527,34539,8105,8110,8097,0,0,0,0,0},{307,1420,2970,2956,2985,0,0,0,0}},
-       {2992, 14078, 3019, 3030, 2005, 55, 3804, 3807, {3810, 3817, 3824, 3832, 3842, 3851, 3858}, {3867, 3871, 3875, 3879, 3883, 3887, 3891}, {2113, 2486, 2488, 3895, 2488, 2492, 2113}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {2861, 2865, 3951, 2874, 3920, 2878, 2882, 2886, 2890, 3955, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {14078,1339,1347,3010,14,270,3990,5523,1328,1880,1837,0,0,0},{2992,3755,0,0,0,0,0,0},{3030,1404,301,0,0,0,0,0,0,0,0,0},{3019,1420,307,0,0,0,0,0,0}},
-       {4028, 270, 1420, 1404, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1339,1347,1354,1363,1328,2906,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{1404,301,1409,0,0,0,0,0,0,0,0,0},{1420,307,1428,0,0,0,0,0,0}},
-       {3755, 1328, 307, 301, 44, 4788, 3804, 3807, {4795, 4804, 4810, 4816, 4825, 4831, 4840}, {4847, 4852, 4857, 4862, 4867, 4872, 4877}, {2775, 2494, 2486, 2486, 4155, 4157, 2113}, {4882, 4890, 4899, 4904, 4910, 4914, 4919, 4927, 4933, 4943, 1143, 4951, 0}, {4882, 4890, 4899, 4904, 4910, 4914, 4919, 4927, 4933, 4943, 1143, 4951, 0}, {4961, 4967, 4899, 4974, 4910, 4914, 4979, 4927, 4985, 1313, 1318, 4991, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {1328,5894,1354,6158,14,3743,0,0,0,0,0,0,0,0},{3755,9926,0,0,0,0,0,0},{301,1404,5006,5012,5022,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {17326, 1996, 1420, 1404, 2005, 17344, 17358, 17363, {34550, 34558, 34566, 34574, 34586, 34595, 34607}, {17448, 17453, 17458, 17463, 17468, 17473, 17478}, {2113, 2486, 2775, 6251, 2775, 15394, 2494}, {17483, 17500, 17513, 17527, 17540, 17553, 17566, 17580, 17592, 17606, 17620, 17634, 0}, {17483, 17500, 17513, 17527, 17540, 17553, 17566, 17580, 17592, 17606, 17620, 17634, 0}, {34618, 34629, 34636, 34644, 34651, 34658, 34665, 34673, 34679, 34687, 34695, 34703, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {1996,2670,2926,1328,0,0,0,0,0,0,0,0,0,0},{17326,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {4014, 270, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{35,301,0,0,0,0,0,0,0,0,0,0},{23,307,0,0,0,0,0,0,0}},
-       {1445, 3010, 1960, 1943, 1476, 1492, 1505, 1512, {1519, 1529, 1539, 1549, 1559, 1569, 1579}, {1589, 1596, 1603, 1610, 1617, 1624, 1631}, {1638, 1642, 1646, 1650, 1654, 1658, 1662}, {1666, 1673, 1680, 1687, 1694, 1701, 1708, 1715, 1722, 1729, 1736, 1746, 0}, {1666, 1673, 1680, 1687, 1694, 1701, 1708, 1715, 1722, 1729, 1736, 1746, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1347,14,1866,1880,1467,1837,1328,0,0,0,0,0,0},{1445,6634,0,0,0,0,0,0},{1943,1951,1404,301,0,0,0,0,0,0,0,0},{1960,1971,1420,307,0,0,0,0,0}},
-       {2651, 2670, 307, 301, 2005, 55, 2681, 2687, {2694, 2702, 2709, 2718, 2727, 2738, 2746}, {2754, 2757, 2760, 2763, 2766, 2769, 2772}, {2113, 2486, 2775, 2486, 2775, 2492, 2113}, {2777, 2784, 2792, 2798, 2804, 2808, 2813, 2818, 2825, 2835, 2843, 2852, 0}, {2777, 2784, 2792, 2798, 2804, 2808, 2813, 2818, 2825, 2835, 2843, 2852, 0}, {2861, 2865, 2869, 2874, 2804, 2878, 2882, 2886, 2890, 2894, 2898, 2902, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {2670,1363,2918,2926,1996,1328,0,0,0,0,0,0,0,0},{2651,1983,2933,0,0,0,0,0},{301,1404,2350,2945,0,0,0,0,0,0,0,0},{307,2956,2970,2985,0,0,0,0,0}},
-       {34710, 270, 3019, 3030, 44, 3796, 3804, 3807, {3810, 3817, 3824, 3832, 3842, 3851, 3858}, {3867, 3871, 3875, 3879, 3883, 3887, 3891}, {2113, 2486, 2488, 3895, 2488, 2492, 2113}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {2861, 2865, 3951, 2874, 3920, 2878, 2882, 2886, 2890, 3955, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,1347,1328,5894,34721,3990,14129,0,0,0,0,0,0},{34710,34729,6451,3767,0,0,0,0},{3030,35,301,1404,0,0,0,0,0,0,0,0},{3019,23,307,1420,0,0,0,0,0}},
-       {4028, 270, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,14078,1347,1354,1328,0,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{35,3030,1404,301,0,0,0,0,0,0,0,0},{23,3019,1420,307,0,0,0,0,0}},
-       {4771, 2670, 307, 301, 2005, 4788, 3804, 3807, {4795, 4804, 4810, 4816, 4825, 4831, 4840}, {4847, 4852, 4857, 4862, 4867, 4872, 4877}, {2775, 2494, 2486, 2486, 4155, 4157, 2113}, {4882, 4890, 4899, 4904, 4910, 4914, 4919, 4927, 4933, 4943, 1143, 4951, 0}, {4882, 4890, 4899, 4904, 4910, 4914, 4919, 4927, 4933, 4943, 1143, 4951, 0}, {4961, 4967, 4899, 4974, 4910, 4914, 4979, 4927, 4985, 1313, 1318, 4991, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {2670,1363,33784,2926,1328,0,0,0,0,0,0,0,0,0},{4771,3755,4997,0,0,0,0,0},{301,1404,5006,5012,5022,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {4014, 2374, 1420, 1404, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 2624, 268, {2374,1354,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{1404,301,35,0,0,0,0,0,0,0,0,0},{1420,307,23,0,0,0,0,0,0}},
-       {1445, 3010, 1420, 1404, 1476, 1492, 1505, 1512, {1519, 1529, 1539, 1549, 1559, 1569, 1579}, {33603, 33610, 33617, 33624, 33631, 33638, 33645}, {1638, 1642, 1646, 1650, 1654, 1658, 1662}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1347,14,1866,1880,1467,1837,1328,0,0,0,0,0,0},{1445,34742,34769,2626,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {2651, 2670, 307, 301, 2005, 55, 2681, 2687, {2694, 2702, 2709, 2718, 2727, 2738, 2746}, {2754, 2757, 2760, 2763, 2766, 2769, 2772}, {2113, 2486, 2775, 2486, 2775, 2492, 2113}, {2777, 2784, 2792, 2798, 2804, 2808, 2813, 2818, 2825, 2835, 2843, 2852, 0}, {2777, 2784, 2792, 2798, 2804, 2808, 2813, 2818, 2825, 2835, 2843, 2852, 0}, {2861, 2865, 2869, 2874, 2804, 2878, 2882, 2886, 2890, 2894, 2898, 2902, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {2670,1363,2918,33784,2926,1328,0,0,0,0,0,0,0,0},{2651,1983,33794,0,0,0,0,0},{301,1404,8082,8072,2945,8105,8110,8091,8097,0,0,0},{307,1420,8142,8155,2970,2956,2985,0,0}},
-       {2992, 14078, 3019, 3030, 2005, 55, 3804, 3807, {3810, 3817, 3824, 3832, 3842, 3851, 3858}, {3867, 3871, 3875, 3879, 3883, 3887, 3891}, {2113, 2486, 2488, 3895, 2488, 2492, 2113}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {2861, 2865, 3951, 2874, 3920, 2878, 2882, 2886, 2890, 3955, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {14078,1339,14,2918,1328,0,0,0,0,0,0,0,0,0},{2992,3755,0,0,0,0,0,0},{3030,35,301,1404,0,0,0,0,0,0,0,0},{3019,23,307,1420,0,0,0,0,0}},
-       {4028, 270, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 266, 268, {270,14,1347,1354,1328,0,0,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{35,3030,1404,301,0,0,0,0,0,0,0,0},{23,3019,1420,307,0,0,0,0,0}},
-       {4771, 270, 307, 301, 2005, 4788, 3804, 3807, {4795, 4804, 4810, 4816, 4825, 4831, 4840}, {4847, 4852, 4857, 4862, 4867, 4872, 4877}, {2775, 2494, 2486, 2486, 4155, 4157, 2113}, {4882, 4890, 4899, 4904, 4910, 4914, 4919, 4927, 4933, 4943, 1143, 4951, 0}, {4882, 4890, 4899, 4904, 4910, 4914, 4919, 4927, 4933, 4943, 1143, 4951, 0}, {4961, 4967, 4899, 4974, 4910, 4914, 4979, 4927, 4985, 1313, 1318, 4991, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1363,1354,1328,0,0,0,0,0,0,0,0,0},{4771,4997,3755,0,0,0,0,0},{301,1404,5006,5012,5022,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {4014, 2374, 1420, 1404, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 2624, 268, {2374,1354,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{1404,301,35,0,0,0,0,0,0,0,0,0},{1420,307,23,0,0,0,0,0,0}},
-       {5510, 270, 307, 301, 2005, 55, 973, 978, {3810, 3817, 3824, 3832, 3842, 3851, 3858}, {3867, 3871, 3875, 3879, 3883, 3887, 3891}, {2113, 2486, 2488, 3895, 2488, 2492, 2113}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {2861, 2865, 3951, 2874, 3920, 2878, 2882, 2886, 2890, 3955, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1347,2926,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {4028, 3979, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3979,3970,1347,14,1354,1328,0,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{35,3030,1404,301,0,0,0,0,0,0,0,0},{23,3019,1420,307,0,0,0,0,0}},
-       {4771, 270, 307, 301, 2005, 4788, 3804, 3807, {4795, 4804, 4810, 4816, 4825, 4831, 4840}, {4847, 4852, 4857, 4862, 4867, 4872, 4877}, {2775, 2494, 2486, 2486, 4155, 4157, 2113}, {4882, 4890, 4899, 4904, 4910, 4914, 4919, 4927, 4933, 4943, 1143, 4951, 0}, {4882, 4890, 4899, 4904, 4910, 4914, 4919, 4927, 4933, 4943, 1143, 4951, 0}, {4961, 4967, 4899, 4974, 4910, 4914, 4979, 4927, 4985, 1313, 1318, 4991, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 266, 268, {270,14,1363,1354,1328,0,0,0,0,0,0,0,0,0},{4771,4997,3755,0,0,0,0,0},{301,1404,5006,5012,5022,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {1983, 1996, 1420, 1404, 2005, 2385, 34785, 34795, {11560, 34803, 8961, 11585, 8976, 8986, 8992}, {8999, 9003, 9007, 11606, 9015, 9020, 9024}, {9028, 9030, 9032, 1076, 9034, 9030, 1076}, {2496, 2503, 34814, 2517, 2523, 2596, 2600, 11626, 34819, 34829, 34837, 34846, 0}, {2496, 2503, 34814, 2517, 2523, 2596, 2600, 11626, 34819, 34829, 34837, 34846, 0}, {2580, 2584, 2588, 2592, 2523, 2596, 2600, 11633, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {1996,2926,9345,2670,9544,1363,11637,1328,0,0,0,0,0,0},{1983,2637,2651,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {4014, 2374, 1420, 1404, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,1354,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{1404,301,35,0,0,0,0,0,0,0,0,0},{1420,307,23,0,0,0,0,0,0}},
-       {5510, 1837, 23, 35, 2005, 55, 3804, 3807, {3810, 3817, 3824, 3832, 3842, 3851, 3858}, {3867, 3871, 3875, 3879, 3883, 3887, 3891}, {2113, 2486, 2488, 3895, 2488, 2492, 2113}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {2861, 2865, 3951, 2874, 3920, 2878, 2882, 2886, 2890, 3955, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1837,1880,1328,0,0,0,0,0,0,0,0,0,0,0},{5510,0,0,0,0,0,0,0},{35,301,0,0,0,0,0,0,0,0,0,0},{23,307,0,0,0,0,0,0,0}},
-       {4028, 270, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,3979,1347,1354,1328,0,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{35,3030,1404,301,0,0,0,0,0,0,0,0},{23,3019,1420,307,0,0,0,0,0}},
-       {1983, 1996, 1420, 1404, 44, 2385, 34855, 34873, {34888, 34901, 34920, 34933, 34948, 34965, 11259}, {34976, 34983, 34990, 34997, 35004, 35011, 35018}, {555, 558, 35025, 564, 567, 558, 564}, {35028, 35041, 600, 609, 14822, 14829, 14838, 641, 35056, 35075, 35090, 35107, 0}, {35028, 35041, 600, 609, 14822, 14829, 14838, 641, 35056, 35075, 35090, 35107, 0}, {35124, 35131, 35138, 35145, 14822, 35152, 35159, 35166, 35173, 35180, 35187, 35194, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {1996,2926,9345,2670,9544,1363,11637,1328,0,0,0,0,0,0},{1983,2637,2651,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {4014, 270, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{35,301,1404,0,0,0,0,0,0,0,0,0},{23,307,1420,0,0,0,0,0,0}},
-       {3767, 270, 23, 35, 44, 3796, 3804, 3807, {3810, 3817, 3824, 3832, 3842, 3851, 3858}, {3867, 3871, 3875, 3879, 3883, 3887, 3891}, {2113, 2486, 2488, 3895, 2488, 2492, 2113}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {2861, 2865, 3951, 2874, 3920, 2878, 2882, 2886, 2890, 3955, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,1328,0,0,0,0,0,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{35,3030,1404,301,0,0,0,0,0,0,0,0},{23,3019,1420,307,0,0,0,0,0}},
-       {4028, 270, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,1347,1354,1328,0,0,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{35,3030,1404,301,0,0,0,0,0,0,0,0},{23,3019,1420,307,0,0,0,0,0}},
-       {4014, 270, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{35,301,1404,0,0,0,0,0,0,0,0,0},{23,307,1420,0,0,0,0,0,0}},
-       {4028, 270, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,14078,1347,1354,1328,0,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{35,3030,1404,301,0,0,0,0,0,0,0,0},{23,3019,1420,307,0,0,0,0,0}},
-       {1983, 1996, 1420, 1404, 2005, 2385, 34785, 34795, {11560, 34803, 8961, 11585, 8976, 8986, 8992}, {8999, 9003, 9007, 11606, 9015, 9020, 9024}, {9028, 9030, 9032, 1076, 9034, 9030, 1076}, {2496, 2503, 34814, 2517, 2523, 2596, 2600, 11626, 34819, 34829, 34837, 34846, 0}, {2496, 2503, 34814, 2517, 2523, 2596, 2600, 11626, 34819, 34829, 34837, 34846, 0}, {2580, 2584, 2588, 2592, 2523, 2596, 2600, 11633, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {1996,2926,9345,2670,9544,1363,11637,1328,0,0,0,0,0,0},{1983,2637,2651,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {4014, 270, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {35201, 35225, 35234, 35243, 35254, 35263, 35276, 35285, 35290, 35301, 35323, 35347, 0}, {35201, 35225, 35234, 35243, 35254, 35263, 35276, 35285, 35290, 35301, 35323, 35347, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{35,301,1404,0,0,0,0,0,0,0,0,0},{23,307,1420,0,0,0,0,0,0}},
-       {14099, 270, 23, 35, 2005, 55, 3804, 3807, {3810, 3817, 3824, 3832, 3842, 3851, 3858}, {3867, 3871, 3875, 3879, 3883, 3887, 3891}, {2113, 2486, 2488, 3895, 2488, 2492, 2113}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {2861, 2865, 3951, 2874, 3920, 2878, 2882, 2886, 2890, 3955, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,1328,0,0,0,0,0,0,0,0,0,0,0,0},{14099,0,0,0,0,0,0,0},{35,301,0,0,0,0,0,0,0,0,0,0},{23,307,0,0,0,0,0,0,0}},
-       {4028, 270, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,1347,1354,1328,0,0,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{35,3030,1404,301,0,0,0,0,0,0,0,0},{23,3019,1420,307,0,0,0,0,0}},
-       {1983, 1996, 1420, 1404, 2005, 2385, 34855, 34873, {34888, 34901, 34920, 8443, 34948, 34965, 11259}, {34976, 34983, 34990, 35369, 35004, 35011, 35018}, {555, 558, 35025, 564, 567, 558, 564}, {35028, 35041, 600, 609, 14822, 35152, 35159, 641, 35056, 35075, 35090, 35107, 0}, {35028, 35041, 600, 609, 14822, 35152, 35159, 641, 35056, 35075, 35090, 35107, 0}, {35124, 35131, 35138, 35145, 14822, 35152, 35159, 35166, 35173, 35180, 35187, 35194, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {1996,2926,9345,2670,9544,1363,11637,1328,0,0,0,0,0,0},{1983,2637,2651,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {4014, 270, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {35201, 35225, 35234, 35243, 35254, 35263, 35276, 35285, 35290, 35301, 35323, 35347, 0}, {35201, 35225, 35234, 35243, 35254, 35263, 35276, 35285, 35290, 35301, 35323, 35347, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{35,301,1404,0,0,0,0,0,0,0,0,0},{23,307,1420,0,0,0,0,0,0}},
-       {14099, 270, 23, 35, 2005, 55, 3804, 3807, {3810, 3817, 3824, 3832, 3842, 3851, 3858}, {3867, 3871, 3875, 3879, 3883, 3887, 3891}, {2113, 2486, 2488, 3895, 2488, 2492, 2113}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {2861, 2865, 3951, 2874, 3920, 2878, 2882, 2886, 2890, 3955, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,1328,0,0,0,0,0,0,0,0,0,0,0,0},{14099,0,0,0,0,0,0,0},{35,301,0,0,0,0,0,0,0,0,0,0},{23,307,0,0,0,0,0,0,0}},
-       {4028, 270, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,1347,1354,1328,0,0,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{35,3030,301,1404,0,0,0,0,0,0,0,0},{23,3019,307,1420,0,0,0,0,0}},
-       {1983, 1996, 1420, 1404, 2005, 2385, 34785, 34795, {11560, 34803, 8961, 11585, 8976, 8986, 8992}, {8999, 9003, 9007, 11606, 9015, 9020, 9024}, {9028, 9030, 9032, 1076, 9034, 9030, 1076}, {2496, 2503, 34814, 2517, 2523, 2596, 2600, 11626, 34819, 34829, 34837, 34846, 0}, {2496, 2503, 34814, 2517, 2523, 2596, 2600, 11626, 34819, 34829, 34837, 34846, 0}, {2580, 2584, 2588, 2592, 2523, 2596, 2600, 11633, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {1996,2926,9345,2670,9544,1363,11637,1328,0,0,0,0,0,0},{1983,2637,2651,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {4014, 270, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {35201, 35225, 35234, 35243, 35254, 35263, 35276, 35285, 35290, 35301, 35323, 35347, 0}, {35201, 35225, 35234, 35243, 35254, 35263, 35276, 35285, 35290, 35301, 35323, 35347, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{35,301,1404,0,0,0,0,0,0,0,0,0},{23,307,1420,0,0,0,0,0,0}},
-       {3767, 3787, 3019, 3030, 44, 3796, 3804, 3807, {3810, 3817, 3824, 3832, 3842, 3851, 3858}, {3867, 3871, 3875, 3879, 3883, 3887, 3891}, {2113, 2486, 2488, 3895, 2488, 2492, 2113}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {2861, 2865, 3951, 2874, 3920, 2878, 2882, 2886, 2890, 3955, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3787,3963,3970,3979,1328,1880,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {4028, 270, 1420, 1404, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 266, 268, {270,14,1347,1354,1328,0,0,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {1983, 1996, 1420, 1404, 2005, 2385, 34855, 34873, {34888, 34901, 34920, 8443, 34948, 34965, 11259}, {34976, 34983, 34990, 35369, 35004, 35011, 35018}, {555, 558, 35025, 564, 567, 558, 564}, {35028, 35041, 600, 609, 14822, 35152, 35159, 641, 35056, 35075, 35090, 35107, 0}, {35028, 35041, 600, 609, 14822, 35152, 35159, 641, 35056, 35075, 35090, 35107, 0}, {35124, 35131, 35138, 35145, 14822, 35152, 35159, 35166, 35173, 35180, 35187, 35194, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {1996,2926,9345,2670,9544,1363,11637,1328,0,0,0,0,0,0},{1983,2637,2651,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {4014, 270, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{35,301,1404,0,0,0,0,0,0,0,0,0},{23,307,1420,0,0,0,0,0,0}},
-       {3767, 3787, 3019, 3030, 44, 3796, 3804, 3807, {3810, 3817, 3824, 3832, 3842, 3851, 3858}, {3867, 3871, 3875, 3879, 3883, 3887, 3891}, {2113, 2486, 2488, 3895, 2488, 2492, 2113}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {2861, 2865, 3951, 2874, 3920, 2878, 2882, 2886, 2890, 3955, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3787,3963,3970,3979,1328,1880,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {4028, 2374, 1420, 1404, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 2624, 268, {2374,1354,14,1347,1328,0,0,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {4014, 270, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{35,301,1404,0,0,0,0,0,0,0,0,0},{23,307,1420,0,0,0,0,0,0}},
-       {4028, 270, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 266, 268, {270,14,1347,1354,1328,0,0,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{35,3030,1404,301,0,0,0,0,0,0,0,0},{23,3019,1420,307,0,0,0,0,0}},
-       {4014, 270, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{35,301,1404,0,0,0,0,0,0,0,0,0},{23,307,1420,0,0,0,0,0,0}},
-       {4028, 270, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,1347,1354,1328,0,0,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{35,3030,1404,301,0,0,0,0,0,0,0,0},{23,3019,1420,307,0,0,0,0,0}},
-       {4014, 270, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 6, 266, 268, {270,14,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{35,301,1404,0,0,0,0,0,0,0,0,0},{23,307,1420,0,0,0,0,0,0}},
-       {5510, 2374, 307, 301, 44, 55, 3804, 3807, {3810, 3817, 3824, 3832, 3842, 3851, 3858}, {3867, 3871, 3875, 3879, 3883, 3887, 3891}, {2113, 2486, 2488, 3895, 2488, 2492, 2113}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {2861, 2865, 3951, 2874, 3920, 2878, 2882, 2886, 2890, 3955, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,1354,2335,2926,1328,0,0,0,0,0,0,0,0,0},{5510,3755,0,0,0,0,0,0},{301,1404,1951,0,0,0,0,0,0,0,0,0},{307,1420,1971,1960,0,0,0,0,0}},
-       {4028, 270, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,1347,1354,1328,0,0,0,0,0,0,0,0,0},{4028,4254,4281,0,0,0,0,0},{35,3030,1404,301,0,0,0,0,0,0,0,0},{23,3019,1420,307,0,0,0,0,0}},
-       {4028, 270, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,32989,1328,0,0,0,0,0,0,0,0,0,0},{4028,0,0,0,0,0,0,0},{35,301,0,0,0,0,0,0,0,0,0,0},{23,307,0,0,0,0,0,0,0}},
-       {35376, 3010, 3019, 3030, 44, 4788, 3804, 3807, {3810, 3817, 3824, 3832, 3842, 3851, 3858}, {3867, 3871, 3875, 3879, 3883, 3887, 3891}, {2113, 2486, 2488, 3895, 2488, 2492, 2113}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {3897, 3905, 3914, 2798, 3920, 3924, 3929, 2818, 2825, 3934, 2843, 3942, 0}, {2861, 2865, 3951, 2874, 3920, 2878, 2882, 2886, 2890, 3955, 2898, 3959, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1347,270,14,1328,0,0,0,0,0,0,0,0,0},{35376,13623,0,0,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {4028, 270, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,32989,1328,0,0,0,0,0,0,0,0,0,0},{4028,0,0,0,0,0,0,0},{35,301,0,0,0,0,0,0,0,0,0,0},{23,307,0,0,0,0,0,0,0}},
-       {4028, 270, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,32989,1328,0,0,0,0,0,0,0,0,0,0},{4028,0,0,0,0,0,0,0},{35,301,0,0,0,0,0,0,0,0,0,0},{23,307,0,0,0,0,0,0,0}},
-       {4028, 270, 23, 35, 4057, 55, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {270,14,32989,1328,0,0,0,0,0,0,0,0,0,0},{4028,0,0,0,0,0,0,0},{35,301,0,0,0,0,0,0,0,0,0,0},{23,307,0,0,0,0,0,0,0}},
-       {3767, 3787, 3019, 3030, 4057, 7671, 973, 978, {4072, 4080, 4086, 4093, 4104, 4111, 4119}, {4127, 4131, 2588, 4135, 4140, 4144, 4148}, {2775, 2494, 2486, 4153, 4155, 4157, 2113}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4159, 4165, 4173, 1097, 4179, 4184, 4190, 4196, 4203, 1135, 4214, 4224, 0}, {4234, 2584, 2588, 4238, 4179, 2596, 2600, 4242, 2608, 4246, 2616, 4250, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3787,3963,3970,3979,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}},
-       {1983, 1996, 1420, 1404, 2005, 2385, 34855, 34873, {34888, 34901, 34920, 8443, 34948, 34965, 11259}, {34976, 34983, 34990, 35369, 35004, 35011, 35018}, {555, 558, 35025, 564, 567, 558, 564}, {35028, 35041, 600, 609, 14822, 35152, 35159, 641, 35056, 35075, 35090, 35107, 0}, {35028, 35041, 600, 609, 14822, 35152, 35159, 641, 35056, 35075, 35090, 35107, 0}, {35124, 35131, 35138, 35145, 14822, 35152, 35159, 35166, 35173, 35180, 35187, 35194, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {1996,2926,9345,2670,9544,1363,11637,1328,0,0,0,0,0,0},{1983,2637,2651,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {1983, 1996, 1420, 1404, 2005, 2385, 34785, 34795, {11560, 34803, 8961, 11585, 8976, 8986, 8992}, {8999, 9003, 9007, 11606, 9015, 9020, 9024}, {9028, 9030, 9032, 1076, 9034, 9030, 1076}, {2496, 2503, 34814, 2517, 2523, 2596, 2600, 11626, 34819, 34829, 34837, 34846, 0}, {2496, 2503, 34814, 2517, 2523, 2596, 2600, 11626, 34819, 34829, 34837, 34846, 0}, {2580, 2584, 2588, 2592, 2523, 2596, 2600, 11633, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {1996,2926,9345,2670,9544,1363,11637,1328,0,0,0,0,0,0},{1983,2637,2651,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {3755, 2670, 1420, 1404, 2005, 4788, 0, 0, {33977, 33988, 34012, 34042, 34059, 34081, 34090}, {14265, 14268, 14273, 14279, 14283, 7409, 14288}, {251, 239, 241, 243, 245, 247, 249}, {34101, 34114, 600, 34127, 620, 34138, 34147, 641, 34156, 34173, 34188, 34201, 0}, {34101, 34114, 600, 34127, 620, 34138, 34147, 641, 34156, 34173, 34188, 34201, 0}, {14362, 7848, 2588, 2592, 14366, 14370, 14374, 14378, 14382, 2612, 14386, 14390, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,2926,14,1328,0,0,0,0,0,0,0,0,0},{3755,5510,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {1445, 1467, 1420, 1404, 1476, 1492, 1505, 1512, {1519, 1529, 1539, 1549, 1559, 1569, 1579}, {1589, 1596, 1603, 1610, 1617, 1624, 1631}, {1638, 1642, 1646, 1650, 1654, 1658, 1662}, {1666, 1673, 1680, 1687, 1694, 1701, 1708, 1715, 1722, 1729, 1736, 1746, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1666, 1673, 1680, 1687, 1694, 1701, 1708, 1715, 1722, 1729, 1736, 1746, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1467,1819,1828,1328,1837,1848,1859,1866,1873,1880,0,0,0,0},{1445,1889,1916,0,0,0,0,0},{1404,301,1943,1951,0,0,0,0,0,0,0,0},{1420,307,1960,1971,0,0,0,0,0}},
-       {1983, 2670, 307, 301, 2005, 2385, 2393, 2398, {2403, 9830, 33814, 2426, 2433, 2441, 33821}, {2456, 9858, 33829, 2469, 2473, 2477, 6027}, {2113, 2486, 2488, 2490, 2488, 2492, 2494}, {2496, 2503, 4899, 2517, 4910, 2527, 2532, 2537, 2544, 2554, 2562, 6099, 0}, {2496, 2503, 4899, 2517, 4910, 2527, 2532, 2537, 2544, 2554, 2562, 6099, 0}, {2580, 2584, 2588, 2592, 4910, 2596, 2600, 2604, 2608, 2612, 2616, 6129, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {2670,1363,2926,1328,2906,0,0,0,0,0,0,0,0,0},{1983,2637,0,0,0,0,0,0},{301,1404,7291,5006,0,0,0,0,0,0,0,0},{307,1420,7302,6460,0,0,0,0,0}},
-       {1983, 1996, 1420, 1404, 2005, 2385, 34785, 34795, {8940, 8949, 8961, 8968, 8976, 8986, 8992}, {8999, 9003, 9007, 9011, 9015, 9020, 9024}, {0, 0, 0, 0, 0, 0, 0}, {2496, 2503, 34814, 2517, 2523, 2527, 2532, 11626, 34819, 34829, 34837, 34846, 0}, {2496, 2503, 34814, 2517, 2523, 2527, 2532, 11626, 34819, 34829, 34837, 34846, 0}, {2580, 2584, 2588, 2592, 2523, 2596, 2600, 11633, 2608, 2612, 2616, 2620, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 790, 268, {1996,2926,9345,2670,9544,1363,11637,1328,0,0,0,0,0,0},{1983,2637,2651,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {3755, 2670, 1420, 1404, 2005, 4788, 0, 0, {14176, 14182, 14196, 14219, 14233, 14249, 14256}, {14265, 14268, 14273, 14279, 14283, 7409, 14288}, {251, 239, 241, 243, 245, 247, 249}, {14292, 14299, 10127, 14306, 3920, 14312, 14318, 14324, 14331, 14340, 14348, 14355, 0}, {14292, 14299, 10127, 14306, 3920, 14312, 14318, 14324, 14331, 14340, 14348, 14355, 0}, {14362, 7848, 2588, 2592, 14366, 14370, 14374, 14378, 14382, 2612, 14386, 14390, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,2926,14,1328,0,0,0,0,0,0,0,0,0},{3755,5510,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {34214, 2670, 307, 301, 2005, 18717, 0, 0, {18724, 18739, 18754, 18769, 18786, 18803, 18812}, {18823, 18830, 18837, 18844, 18851, 18858, 18865}, {18872, 18875, 8540, 8543, 8537, 18878, 18881}, {12763, 12774, 8574, 12787, 8596, 12798, 12805, 8621, 12812, 12827, 12840, 12851, 0}, {12763, 12774, 8574, 12787, 8596, 12798, 12805, 8621, 12812, 12827, 12840, 12851, 0}, {12864, 12871, 12878, 12885, 8596, 12798, 12805, 12892, 12899, 12906, 12913, 12920, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {2670,1363,18706,2926,14,1328,0,0,0,0,0,0,0,0},{34214,3755,5510,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {24804, 24825, 1420, 1404, 24834, 4788, 0, 0, {24851, 24858, 24869, 24882, 24895, 24906, 24919}, {24930, 24935, 24940, 24945, 24950, 24955, 24960}, {0, 0, 0, 0, 0, 0, 0}, {24965, 24980, 24989, 24996, 25009, 25016, 25027, 25036, 25045, 25052, 25063, 25074, 0}, {24965, 24980, 24989, 24996, 25009, 25016, 25027, 25036, 25045, 25052, 25063, 25074, 0}, {25085, 25092, 25099, 25106, 25113, 25120, 25127, 25134, 25141, 25148, 25155, 25162, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 790, 268, {24825,1328,0,0,0,0,0,0,0,0,0,0,0,0},{24804,0,0,0,0,0,0,0},{1404,0,0,0,0,0,0,0,0,0,0,0},{1420,0,0,0,0,0,0,0,0}},
-       {1445, 3010, 1420, 1404, 1476, 1492, 1505, 1512, {1519, 1529, 1539, 1549, 1559, 1569, 1579}, {33603, 33610, 33617, 33624, 33631, 33638, 33645}, {1638, 1642, 1646, 1650, 1654, 1658, 1662}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1347,14,1866,1880,1467,1837,1328,0,0,0,0,0,0},{1445,6634,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {1445, 3010, 1420, 1404, 1476, 1492, 1505, 1512, {1519, 1529, 1539, 1549, 1559, 1569, 1579}, {33603, 33610, 33617, 33624, 33631, 33638, 33645}, {1638, 1642, 1646, 1650, 1654, 1658, 1662}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796, 1801, 1807, 1813, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1347,14,1866,1880,1467,1837,1328,0,0,0,0,0,0},{1445,6634,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {1983, 2670, 307, 301, 2005, 2385, 973, 978, {2403, 2411, 2418, 2426, 2433, 2441, 2448}, {7261, 7266, 7270, 7274, 7278, 7282, 7286}, {2113, 2486, 2488, 2490, 2488, 2492, 2494}, {2496, 2503, 4899, 2517, 4910, 2527, 2532, 2537, 2544, 2554, 2562, 6099, 0}, {2496, 2503, 4899, 2517, 4910, 2527, 2532, 2537, 2544, 2554, 2562, 6099, 0}, {2580, 2584, 2588, 2592, 4910, 2596, 2600, 2604, 2608, 2612, 2616, 6129, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 2, 1, 790, 268, {2670,1363,2926,1328,2906,0,0,0,0,0,0,0,0,0},{1983,2637,0,0,0,0,0,0},{301,1404,7291,5006,0,0,0,0,0,0,0,0},{307,1420,7302,6460,0,0,0,0,0}},
-       {1983, 1996, 1420, 1404, 2005, 2385, 34855, 34873, {34888, 34901, 34920, 8443, 34948, 34965, 11259}, {34976, 34983, 34990, 35369, 35004, 35011, 35018}, {555, 558, 35025, 564, 567, 558, 564}, {35028, 35041, 600, 609, 14822, 35152, 35159, 641, 35056, 35075, 35090, 35107, 0}, {35028, 35041, 600, 609, 14822, 35152, 35159, 641, 35056, 35075, 35090, 35107, 0}, {35124, 35131, 35138, 35145, 14822, 35152, 35159, 35166, 35173, 35180, 35187, 35194, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {1996,2926,9345,2670,9544,1363,11637,1328,0,0,0,0,0,0},{1983,2637,2651,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {3755, 1363, 1420, 1404, 2005, 3796, 12587, 12599, {12611, 12626, 12641, 12656, 12673, 12692, 12703}, {12714, 12721, 12728, 12735, 12742, 12749, 12756}, {0, 0, 0, 0, 0, 0, 0}, {12763, 12774, 8574, 12787, 8596, 12798, 12805, 8621, 12812, 12827, 12840, 12851, 0}, {12763, 12774, 8574, 12787, 8596, 12798, 12805, 8621, 12812, 12827, 12840, 12851, 0}, {12864, 12871, 12878, 12885, 8596, 12798, 12805, 12892, 12899, 12906, 12913, 12920, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 790, 268, {1363,1328,0,0,0,0,0,0,0,0,0,0,0,0},{3755,0,0,0,0,0,0,0},{1404,301,0,0,0,0,0,0,0,0,0,0},{1420,0,0,0,0,0,0,0,0}},
-       {18688, 18706, 307, 301, 2005, 18717, 0, 0, {33652, 33662, 33671, 33680, 33691, 33701, 33706}, {33713, 33719, 33724, 33729, 33734, 10104, 33738}, {33743, 2775, 2113, 7409, 2108, 7409, 2113}, {14292, 14299, 10127, 14306, 3920, 33745, 33750, 33755, 14331, 14340, 14348, 14355, 0}, {14292, 14299, 10127, 14306, 3920, 33745, 33750, 33755, 14331, 14340, 14348, 14355, 0}, {33762, 33767, 3951, 2874, 3920, 33745, 33750, 33771, 10482, 2894, 33775, 33780, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 1, 266, 268, {18706,1363,2926,14,1328,0,0,0,0,0,0,0,0,0},{18688,3755,5510,0,0,0,0,0},{301,1404,0,0,0,0,0,0,0,0,0,0},{307,1420,0,0,0,0,0,0,0}},
-       {34235, 1467, 1420, 1404, 34311, 34343, 0, 0, {24851, 24858, 24869, 24882, 24895, 24906, 24919}, {24930, 24935, 24940, 24945, 24950, 24955, 24960}, {0, 0, 0, 0, 0, 0, 0}, {24965, 24980, 24989, 24996, 25009, 25016, 25027, 25036, 25045, 25052, 25063, 25074, 0}, {24965, 24980, 24989, 24996, 25009, 25016, 25027, 25036, 25045, 25052, 25063, 25074, 0}, {25085, 25092, 25099, 25106, 25113, 25120, 25127, 25134, 25141, 25148, 25155, 25162, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {1467,1819,1828,1848,1328,1837,1859,1866,1873,1880,0,0,0,0},{34235,34378,0,0,0,0,0,0},{1404,0,0,0,0,0,0,0,0,0,0,0},{1420,0,0,0,0,0,0,0,0}},
-       {4014, 2374, 1420, 1404, 44, 55, 29227, 29237, {29250, 29257, 29263, 29270, 29276, 29282, 29290}, {29300, 29304, 29308, 29312, 29316, 29320, 29324}, {12314, 12314, 12314, 12314, 12314, 12314, 12314}, {29330, 29339, 29348, 29353, 29359, 29365, 29371, 29378, 29384, 29393, 29402, 29410, 0}, {29330, 29339, 29348, 29353, 29359, 29365, 29371, 29378, 29384, 29393, 29402, 29410, 0}, {29419, 29423, 3951, 29427, 3920, 29431, 29435, 29439, 29444, 29448, 29454, 29458, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 2624, 268, {2374,1354,1328,0,0,0,0,0,0,0,0,0,0,0},{4014,281,0,0,0,0,0,0},{1404,301,29462,0,0,0,0,0,0,0,0,0},{1420,307,0,0,0,0,0,0,0}},
-       {3767, 3010, 3019, 3030, 44, 3796, 0, 0, {30337, 30344, 30352, 30359, 30366, 30374, 30382}, {30389, 30392, 30395, 30398, 30401, 30404, 30407}, {2494, 2494, 2488, 2494, 12314, 4155, 12314}, {30410, 30418, 30428, 30434, 30442, 30447, 30452, 30457, 30464, 18669, 30472, 30480, 0}, {30410, 30418, 30428, 30434, 30442, 30447, 30452, 30457, 30464, 18669, 30472, 30480, 0}, {2861, 30488, 3951, 30492, 3920, 29431, 29435, 30496, 3891, 2894, 30500, 15342, 0}, {239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 260, 263, 0}, 0, 0, 266, 268, {3010,1347,14,270,1880,1328,3990,0,0,0,0,0,0,0},{3767,4000,281,4014,0,0,0,0},{3030,35,1404,301,0,0,0,0,0,0,0,0},{3019,23,1420,307,0,0,0,0,0}}
+       {1, 14, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 6, 239, 241, {14,243,0,0,0,0,0,0,0,0,0,0,0,0},{1,254,0,0,0,0,0,0},{35,274,0,0,0,0,0,0,0,0,0,0},{23,280,0,0,0,0,0,0,0}},
+       {289, 308, 323, 338, 350, 55, 366, 378, {390, 403, 424, 439, 450, 469, 480}, {493, 498, 503, 508, 513, 518, 523}, {528, 531, 534, 537, 540, 531, 537}, {543, 556, 573, 582, 593, 600, 607, 614, 627, 646, 663, 678, 0}, {543, 556, 573, 582, 593, 600, 607, 614, 627, 646, 663, 678, 0}, {695, 701, 573, 711, 593, 600, 607, 719, 727, 737, 745, 755, 0}, {695, 701, 573, 711, 593, 600, 607, 719, 727, 737, 745, 755, 0}, 2, 1, 763, 241, {308,765,781,797,0,0,0,0,0,0,0,0,0,0},{289,814,832,857,0,0,0,0},{338,881,0,0,0,0,0,0,0,0,0,0},{323,892,0,0,0,0,0,0,0}},
+       {906, 243, 280, 274, 932, 55, 946, 951, {956, 965, 973, 981, 990, 997, 1007}, {1016, 1019, 1022, 1025, 1028, 1031, 1034}, {1037, 1039, 1041, 1043, 1045, 1047, 1049}, {1051, 1057, 1064, 1070, 1076, 1081, 1086, 1093, 1099, 1108, 1116, 1125, 0}, {1134, 1143, 1153, 1162, 1172, 1180, 1188, 1198, 1208, 1220, 1232, 1244, 0}, {1256, 1261, 1064, 1267, 1076, 1081, 1272, 1277, 1281, 1286, 1291, 1296, 0}, {1256, 1261, 1064, 1267, 1076, 1081, 1272, 1277, 1281, 1286, 1291, 1296, 0}, 2, 1, 239, 241, {243,14,1301,1312,1320,1327,1336,0,0,0,0,0,0,0},{906,1345,1361,0,0,0,0,0},{274,1377,1382,0,0,0,0,0,0,0,0,0},{280,1394,1402,0,0,0,0,0,0}},
+       {1422, 1444, 1394, 1377, 1453, 1469, 1482, 1489, {1496, 1506, 1516, 1526, 1536, 1546, 1556}, {1566, 1573, 1580, 1587, 1594, 1601, 1608}, {1615, 1619, 1623, 1627, 1631, 1635, 1639}, {1643, 1650, 1657, 1664, 1671, 1678, 1685, 1692, 1699, 1706, 1713, 1723, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1643, 1650, 1657, 1664, 1671, 1678, 1685, 1692, 1699, 1706, 1713, 1723, 0}, {1643, 1650, 1657, 1664, 1671, 1678, 1685, 1692, 1699, 1706, 1713, 1723, 0}, 0, 0, 239, 241, {1444,1796,1805,1301,1814,1825,1836,1843,1850,1857,0,0,0,0},{1422,1866,1893,0,0,0,0,0},{1377,274,1920,1928,0,0,0,0,0,0,0,0},{1394,280,1937,1948,0,0,0,0,0}},
+       {1422, 1444, 1394, 1377, 1453, 1469, 1482, 1489, {1496, 1506, 1516, 1526, 1536, 1546, 1556}, {1566, 1573, 1580, 1587, 1594, 1601, 1608}, {1615, 1619, 1623, 1627, 1631, 1635, 1639}, {1643, 1650, 1657, 1664, 1671, 1678, 1685, 1692, 1699, 1706, 1713, 1723, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1643, 1650, 1657, 1664, 1671, 1678, 1685, 1692, 1699, 1706, 1713, 1723, 0}, {1643, 1650, 1657, 1664, 1671, 1678, 1685, 1692, 1699, 1706, 1713, 1723, 0}, 0, 0, 239, 241, {1444,1796,1805,1301,1814,1825,1836,1843,1850,1857,0,0,0,0},{1422,1866,1893,0,0,0,0,0},{1377,274,1920,1928,0,0,0,0,0,0,0,0},{1394,280,1937,1948,0,0,0,0,0}},
+       {1960, 1973, 1394, 1377, 1982, 55, 1992, 1997, {2002, 2010, 2020, 2028, 2036, 2045, 2052}, {2059, 2062, 2065, 2069, 2072, 2076, 2080}, {2083, 2085, 2087, 2090, 2092, 2085, 2090}, {2095, 2101, 2107, 2115, 2121, 2129, 2137, 2147, 2153, 2161, 2169, 2178, 0}, {2187, 2193, 2200, 2208, 2214, 2222, 2230, 2240, 2153, 2246, 2254, 2264, 0}, {2273, 2276, 2279, 2282, 2285, 2288, 2291, 2294, 2297, 2300, 2304, 2308, 0}, {2273, 2276, 2279, 2282, 2285, 2288, 2291, 2294, 2297, 2300, 2304, 2308, 0}, 2, 1, 763, 241, {1973,2312,1301,1796,1836,0,0,0,0,0,0,0,0,0},{1960,0,0,0,0,0,0,0},{1377,274,2319,2327,0,0,0,0,0,0,0,0},{1394,280,2332,2343,0,0,0,0,0}},
+       {1960, 2351, 280, 274, 1982, 2362, 2370, 2375, {2380, 2388, 2395, 2403, 2410, 2418, 2425}, {2433, 2438, 2442, 2446, 2450, 2454, 2458}, {2090, 2463, 2465, 2467, 2465, 2469, 2471}, {2473, 2480, 2488, 2494, 2500, 2504, 2509, 2514, 2521, 2531, 2539, 2548, 0}, {2473, 2480, 2488, 2494, 2500, 2504, 2509, 2514, 2521, 2531, 2539, 2548, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, 2, 1, 2601, 241, {2351,1327,1301,2603,0,0,0,0,0,0,0,0,0,0},{1960,2614,0,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {2628, 2647, 280, 274, 1982, 55, 2658, 2664, {2671, 2679, 2686, 2695, 2704, 2715, 2723}, {2731, 2734, 2737, 2740, 2743, 2746, 2749}, {2090, 2463, 2752, 2463, 2752, 2469, 2090}, {2754, 2761, 2769, 2775, 2781, 2785, 2790, 2795, 2802, 2812, 2820, 2829, 0}, {2754, 2761, 2769, 2775, 2781, 2785, 2790, 2795, 2802, 2812, 2820, 2829, 0}, {2838, 2842, 2846, 2851, 2781, 2855, 2859, 2863, 2867, 2871, 2875, 2879, 0}, {2838, 2842, 2846, 2851, 2781, 2855, 2859, 2863, 2867, 2871, 2875, 2879, 0}, 2, 1, 763, 241, {2647,2883,1336,2895,2903,1973,1301,0,0,0,0,0,0,0},{2628,1960,2910,0,0,0,0,0},{274,1377,2327,2922,0,0,0,0,0,0,0,0},{280,2933,2947,2962,0,0,0,0,0}},
+       {2969, 2987, 2996, 3007, 1982, 55, 3015, 3022, {3029, 3044, 3059, 3070, 3085, 3098, 3117}, {3132, 3139, 3146, 3153, 3160, 3167, 3174}, {3181, 3184, 3187, 3187, 3190, 3190, 3193}, {3196, 3217, 3240, 3255, 3272, 3283, 3298, 3313, 3332, 3355, 3374, 3393, 0}, {3414, 3435, 3458, 3473, 3490, 3501, 3516, 3531, 3550, 3573, 3592, 3611, 0}, {3632, 3639, 3646, 3653, 3660, 3667, 3676, 3685, 3692, 3699, 3706, 3713, 0}, {3632, 3639, 3646, 3653, 3660, 3667, 3676, 3685, 3692, 3699, 3706, 3713, 0}, 2, 1, 239, 241, {2987,243,1320,14,3720,1301,0,0,0,0,0,0,0,0},{2969,3732,0,0,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {3744, 3764, 2996, 3007, 44, 3773, 3781, 3784, {3787, 3794, 3801, 3809, 3819, 3828, 3835}, {3844, 3848, 3852, 3856, 3860, 3864, 3868}, {2090, 2463, 2465, 3872, 2465, 2469, 2090}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, 0, 0, 239, 241, {3764,3940,3947,3956,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {4005, 243, 1394, 1377, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 4130, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 1, 239, 241, {243,14,1312,1320,1327,1336,1301,2883,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{1377,274,1382,0,0,0,0,0,0,0,0,0},{1394,280,1402,0,0,0,0,0,0}},
+       {4280, 1973, 1394, 1377, 1982, 4297, 4309, 4313, {4317, 4329, 4341, 4351, 4365, 4375, 4387}, {4398, 4401, 4404, 4407, 4410, 4413, 4416}, {2090, 2463, 2465, 4419, 2465, 2085, 2471}, {4421, 4430, 4439, 4449, 4458, 4467, 4476, 4486, 4493, 4501, 4509, 4519, 0}, {4528, 4539, 4550, 4562, 4573, 4584, 4595, 4607, 4616, 4626, 4636, 4648, 0}, {4659, 4665, 4671, 4678, 4684, 4690, 4696, 4703, 4707, 4712, 4717, 4724, 0}, {4659, 4665, 4671, 4678, 4684, 4690, 4696, 4703, 4707, 4712, 4717, 4724, 0}, 2, 1, 763, 241, {1973,2647,2903,1301,0,0,0,0,0,0,0,0,0,0},{4280,4730,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {4748, 243, 280, 274, 1982, 4765, 3781, 3784, {4772, 4781, 4787, 4793, 4802, 4808, 4817}, {4824, 4829, 4834, 4839, 4844, 4849, 4854}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4859, 4867, 4876, 4881, 4887, 4891, 4896, 4904, 4910, 4920, 1116, 4928, 0}, {4859, 4867, 4876, 4881, 4887, 4891, 4896, 4904, 4910, 4920, 1116, 4928, 0}, {4938, 4944, 4876, 4951, 4887, 4891, 4956, 4904, 4962, 1286, 1291, 4968, 0}, {4938, 4944, 4876, 4951, 4887, 4891, 4956, 4904, 4962, 1286, 1291, 4968, 0}, 0, 1, 239, 241, {243,14,1336,1327,1301,0,0,0,0,0,0,0,0,0},{4748,4974,3732,0,0,0,0,0},{274,1377,4983,4989,4999,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {5007, 243, 280, 274, 1982, 55, 5025, 5038, {5049, 5067, 5081, 5099, 5117, 5135, 5151}, {5165, 5177, 5189, 5201, 5213, 5225, 5237}, {5244, 5247, 5250, 5253, 5256, 5259, 5262}, {5265, 5276, 5289, 5296, 5307, 5314, 5323, 5332, 5345, 5358, 5373, 5386, 0}, {5265, 5276, 5289, 5296, 5307, 5314, 5323, 5332, 5345, 5358, 5373, 5386, 0}, {5397, 5406, 5289, 5415, 5307, 5424, 5433, 5442, 5451, 5460, 5469, 5478, 0}, {5397, 5406, 5289, 5415, 5307, 5424, 5433, 5442, 5451, 5460, 5469, 5478, 0}, 0, 0, 239, 241, {243,5487,14,1,1327,2351,5500,1301,5513,5530,0,0,0,0},{5007,5487,5540,5562,5513,0,0,0},{274,35,0,0,0,0,0,0,0,0,0,0},{280,23,0,0,0,0,0,0,0}},
+       {5583, 5597, 1394, 1377, 5609, 5620, 5628, 5632, {5636, 5646, 5654, 5659, 5666, 5679, 5687}, {4134, 5695, 4419, 5697, 5701, 2085, 5704}, {4134, 5695, 4419, 5708, 5701, 2085, 5708}, {5711, 5719, 5728, 5737, 5746, 5753, 5761, 5769, 5779, 5790, 2539, 2548, 0}, {5711, 5719, 5728, 5737, 5746, 5753, 5761, 5769, 5779, 5790, 2539, 2548, 0}, {5799, 1261, 5804, 5811, 5817, 5823, 5829, 5835, 5840, 5847, 1291, 5852, 0}, {5799, 1261, 5804, 5811, 5817, 5823, 5829, 5835, 5840, 5847, 1291, 5852, 0}, 0, 1, 763, 241, {5597,5857,1301,5871,0,0,0,0,0,0,0,0,0,0},{5583,0,0,0,0,0,0,0},{1377,274,3007,0,0,0,0,0,0,0,0,0},{1394,280,2996,0,0,0,0,0,0}},
+       {1960, 1973, 280, 274, 1982, 2362, 5880, 5885, {5890, 5901, 5912, 5926, 5940, 5952, 5964}, {5976, 5980, 5985, 5990, 5995, 5999, 6004}, {1049, 6008, 6010, 6008, 6013, 6013, 1039}, {6015, 6023, 4876, 6032, 6039, 6044, 6051, 6058, 2521, 5790, 6066, 6076, 0}, {6015, 6023, 4876, 6032, 6039, 6044, 6051, 6058, 2521, 5790, 6066, 6076, 0}, {2557, 2561, 2565, 2569, 6039, 6085, 6090, 6095, 2585, 2589, 6101, 6106, 0}, {2557, 2561, 2565, 2569, 6039, 6085, 6090, 6095, 2585, 2589, 6101, 6106, 0}, 2, 1, 763, 241, {1973,1336,6110,6122,1301,6136,0,0,0,0,0,0,0,0},{1960,2614,0,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {4748, 243, 280, 274, 1982, 55, 6145, 6148, {6151, 6160, 6168, 6177, 6188, 6197, 6206}, {4104, 4108, 2565, 6213, 6217, 6221, 6225}, {2752, 2471, 2463, 2463, 6229, 4134, 2090}, {6231, 6239, 6248, 6254, 6261, 6268, 6275, 6282, 6289, 6299, 6307, 6316, 0}, {6325, 6333, 4150, 6342, 6349, 6356, 6363, 4173, 6370, 6380, 1116, 6388, 0}, {6397, 2561, 2565, 2569, 6401, 6405, 6409, 4219, 6413, 6417, 2593, 4227, 0}, {6397, 2561, 2565, 2569, 6401, 6405, 6409, 4219, 6413, 6417, 2593, 4227, 0}, 2, 1, 239, 241, {243,3720,14,6421,1320,1301,0,0,0,0,0,0,0,0},{4748,6429,3732,0,0,0,0,0},{274,1377,2327,4983,0,0,0,0,0,0,0,0},{280,2343,6438,0,0,0,0,0,0}},
+       {1422, 1814, 1394, 1377, 1453, 1469, 6447, 6454, {6461, 6471, 6481, 6491, 6501, 6511, 6521}, {1615, 6531, 6535, 6539, 6543, 6547, 6551}, {1615, 6531, 6535, 6539, 6543, 6547, 6551}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 239, 241, {1814,1857,1843,1444,6582,6601,6618,1301,0,0,0,0,0,0},{1422,6639,6663,6690,0,0,0,0},{1377,274,1920,1928,0,0,0,0,0,0,0,0},{1394,280,1937,1948,0,0,0,0,0}},
+       {6719, 1301, 1937, 1920, 6748, 6765, 6779, 6786, {6793, 6803, 6813, 6823, 6833, 6843, 6853}, {6863, 6867, 6871, 6875, 6879, 6883, 6887}, {6863, 6867, 6871, 6875, 6879, 6883, 6887}, {6891, 6896, 6901, 6906, 6911, 6916, 6921, 6926, 6931, 6936, 6942, 6948, 0}, {6891, 6896, 6901, 6906, 6911, 6916, 6921, 6926, 6931, 6936, 6942, 6948, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 2601, 241, {1301,5871,1836,1796,0,0,0,0,0,0,0,0,0,0},{6719,6954,6978,7005,7027,7058,0,0},{1920,1928,1377,274,0,0,0,0,0,0,0,0},{1937,1948,1394,280,0,0,0,0,0}},
+       {4748, 7084, 1394, 1377, 1982, 55, 946, 951, {7093, 7100, 7108, 7116, 7125, 7135, 7143}, {7152, 4401, 7155, 7158, 7161, 7164, 7167}, {7170, 2463, 2752, 3872, 2752, 4134, 7170}, {7172, 7180, 7189, 2494, 7195, 2504, 2509, 7199, 2521, 2531, 2539, 2548, 0}, {7172, 7180, 7189, 2494, 7195, 2504, 2509, 7199, 2521, 2531, 2539, 2548, 0}, {2557, 2561, 7208, 2569, 7195, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 7208, 2569, 7195, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, 2, 1, 2601, 241, {7084,2312,1327,14,1336,2883,1301,0,0,0,0,0,0,0},{4748,6429,3732,4974,0,0,0,0},{1377,274,2327,7212,7224,0,0,0,0,0,0,0},{1394,280,7236,7251,0,0,0,0,0}},
+       {1960, 2647, 280, 274, 1982, 2362, 946, 951, {2380, 2388, 2395, 2403, 2410, 2418, 2425}, {7266, 7271, 7275, 7279, 7283, 7287, 7291}, {2090, 2463, 2465, 2467, 2465, 2469, 2471}, {2473, 2480, 4876, 2494, 4887, 2504, 2509, 2514, 2521, 2531, 2539, 6076, 0}, {2473, 2480, 4876, 2494, 4887, 2504, 2509, 2514, 2521, 2531, 2539, 6076, 0}, {2557, 2561, 2565, 2569, 4887, 2573, 2577, 2581, 2585, 2589, 2593, 6106, 0}, {2557, 2561, 2565, 2569, 4887, 2573, 2577, 2581, 2585, 2589, 2593, 6106, 0}, 0, 0, 763, 241, {2647,1336,2903,1301,2883,0,0,0,0,0,0,0,0,0},{1960,2614,0,0,0,0,0,0},{274,1377,7296,4983,0,0,0,0,0,0,0,0},{280,1394,7307,6438,0,0,0,0,0}},
+       {3732, 1301, 280, 274, 1982, 4765, 3781, 3784, {7321, 7331, 7345, 7352, 7359, 7368, 2052}, {7376, 7383, 7388, 7392, 7397, 7402, 7406}, {2083, 2085, 3872, 7411, 7414, 2085, 2090}, {7416, 7425, 7430, 7437, 2500, 7447, 7456, 7463, 7473, 7483, 2169, 7496, 0}, {7506, 7515, 7522, 7528, 7537, 7542, 7550, 7556, 7565, 7575, 7589, 7599, 0}, {7607, 7611, 2565, 7615, 2500, 7619, 7623, 7627, 7631, 7635, 7640, 7644, 0}, {7607, 7611, 2565, 7615, 2500, 7619, 7623, 7627, 7631, 7635, 7640, 7644, 0}, 2, 1, 2601, 241, {1301,5871,0,0,0,0,0,0,0,0,0,0,0,0},{3732,5487,0,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {7648, 243, 280, 274, 4034, 7676, 3781, 3784, {4049, 7689, 7703, 7716, 7729, 7742, 4096}, {4104, 7754, 7758, 7762, 7766, 7770, 4125}, {2752, 2090, 2465, 7774, 7774, 2090, 2090}, {7776, 7784, 7794, 1070, 7801, 7806, 7812, 4173, 7818, 7827, 7835, 7844, 0}, {7776, 7784, 7794, 1070, 7801, 7806, 7812, 4173, 7818, 7827, 7835, 7844, 0}, {2557, 7853, 2565, 4215, 4887, 2573, 2577, 4219, 6413, 7857, 2593, 7861, 0}, {2557, 7853, 2565, 4215, 4887, 2573, 2577, 4219, 6413, 7857, 2593, 7861, 0}, 0, 0, 239, 241, {243,14,2987,1320,1327,2351,2312,7084,1336,2647,2883,2903,1973,1301},{7648,4258,0,0,0,0,0,0},{274,0,0,0,0,0,0,0,0,0,0,0},{280,0,0,0,0,0,0,0,0}},
+       {2969, 243, 280, 274, 1982, 55, 7865, 7868, {7871, 7880, 4787, 7890, 7898, 7906, 7915}, {7921, 7924, 4401, 7928, 7931, 7935, 2080}, {2752, 6229, 2463, 2463, 6229, 4134, 2090}, {7938, 7946, 4876, 7953, 7960, 7965, 7975, 7983, 7989, 7999, 2539, 2548, 0}, {7938, 7946, 4876, 7953, 7960, 7965, 7975, 7983, 7989, 7999, 2539, 2548, 0}, {8007, 8014, 4876, 4951, 7960, 8020, 8027, 7983, 8032, 1286, 1291, 5852, 0}, {8007, 8014, 4876, 4951, 7960, 8020, 8027, 7983, 8032, 1286, 1291, 5852, 0}, 2, 1, 239, 241, {243,14,1312,8038,1320,243,1301,0,0,0,0,0,0,0},{2969,3732,4974,0,0,0,0,0},{274,1377,8046,8058,8069,8077,8087,8096,2922,8102,8110,8115},{280,1394,8118,8133,2947,2933,8147,8160,2962}},
+       {3732, 2647, 280, 274, 1982, 4765, 3781, 3784, {8172, 8182, 8187, 8194, 8203, 8207, 8214}, {8225, 8228, 8231, 2740, 8234, 8237, 8240}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {8244, 8253, 8263, 8270, 4887, 8278, 8284, 2514, 8290, 8301, 8311, 8321, 0}, {8244, 8253, 8263, 8270, 4887, 8278, 8284, 2514, 8290, 8301, 8311, 8321, 0}, {8331, 8336, 4834, 8341, 4887, 8346, 8351, 5835, 4962, 1286, 1291, 5852, 0}, {8331, 8336, 4834, 8341, 4887, 8346, 8351, 5835, 4962, 1286, 1291, 5852, 0}, 0, 1, 763, 241, {2647,1973,1301,0,0,0,0,0,0,0,0,0,0,0},{3732,0,0,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {814, 2647, 1394, 1377, 1982, 3773, 8356, 8376, {8402, 8425, 424, 8448, 8459, 8474, 8489}, {8504, 8509, 8514, 8519, 8524, 8529, 8534}, {8539, 8542, 8539, 8545, 8548, 8542, 8545}, {8551, 8564, 8579, 8588, 8601, 8608, 8617, 8626, 8639, 8656, 8671, 8684, 0}, {8699, 8712, 8727, 8738, 8751, 8758, 8767, 8776, 8791, 8808, 8823, 8836, 0}, {8851, 8859, 8579, 8869, 8601, 8608, 8617, 8877, 8885, 8895, 8903, 8913, 0}, {8851, 8859, 8579, 8869, 8601, 8608, 8617, 8877, 8885, 8895, 8903, 8913, 0}, 0, 1, 763, 241, {2647,1336,2903,14,1301,0,0,0,0,0,0,0,0,0},{814,289,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {8921, 8935, 1394, 1377, 44, 2362, 3781, 3784, {8945, 8954, 8966, 8973, 8981, 8991, 8997}, {9004, 9008, 9012, 9016, 9020, 9025, 9029}, {9033, 9035, 9037, 1049, 9039, 9035, 1049}, {9042, 9052, 9061, 9069, 9077, 9085, 9092, 9099, 9107, 2169, 9113, 9121, 0}, {9130, 9140, 9149, 9157, 9165, 9173, 9180, 9187, 9196, 7589, 9202, 9212, 0}, {9221, 9225, 9230, 9235, 9239, 7623, 9243, 9247, 9251, 7640, 9255, 9259, 0}, {9221, 9225, 9230, 9235, 9239, 7623, 9243, 9247, 9251, 7640, 9255, 9259, 0}, 0, 1, 763, 241, {8935,9263,6110,9271,9283,9293,9303,1301,0,0,0,0,0,0},{8921,9315,9330,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {1960, 9350, 1394, 1377, 1982, 55, 9361, 9372, {9383, 9391, 9400, 9407, 9414, 9423, 2052}, {2059, 2062, 9430, 2069, 9433, 9437, 2080}, {2083, 2085, 9440, 2090, 9442, 2085, 2090}, {5711, 5719, 9445, 6032, 9451, 6085, 6090, 2514, 2521, 5790, 2539, 2548, 0}, {9456, 9465, 7522, 9475, 9483, 9489, 9495, 9501, 9509, 9519, 9528, 9537, 0}, {2557, 2561, 2565, 2569, 9451, 6085, 6090, 2581, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 9451, 6085, 6090, 2581, 2585, 2589, 2593, 2597, 0}, 2, 1, 9546, 241, {9350,1973,9549,2903,2647,1336,1301,0,0,0,0,0,0,0},{1960,2614,0,0,0,0,0,0},{1377,274,2327,0,0,0,0,0,0,0,0,0},{1394,280,2343,0,0,0,0,0,0}},
+       {1301, 1301, 9558, 9569, 9577, 3773, 9585, 9588, {9591, 9598, 9607, 9616, 9628, 9636, 9645}, {9655, 9659, 3928, 9664, 9669, 9673, 9677}, {2752, 5695, 2463, 2463, 9681, 2085, 2090}, {9683, 9689, 4876, 9696, 2500, 9702, 9710, 9717, 9723, 9731, 9737, 9745, 0}, {9683, 9689, 4876, 9696, 2500, 9702, 9710, 9717, 9723, 9731, 9737, 9745, 0}, {2838, 9753, 3928, 9757, 9761, 9765, 9769, 9773, 9677, 9777, 9781, 9786, 0}, {2838, 9753, 3928, 9757, 9761, 9765, 9769, 9773, 9677, 9777, 9781, 9786, 0}, 0, 1, 2601, 241, {1301,5871,0,0,0,0,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0},{9569,274,0,0,0,0,0,0,0,0,0,0},{9558,280,0,0,0,0,0,0,0}},
+       {9790, 1301, 280, 274, 1982, 9808, 9821, 9824, {9827, 9835, 9843, 2403, 2410, 2418, 9850}, {9858, 9863, 9868, 2446, 2450, 2454, 9872}, {2090, 2463, 2465, 2467, 2465, 2469, 2471}, {7172, 7180, 4876, 2494, 2500, 2504, 2509, 9877, 2521, 2531, 2539, 2548, 0}, {7172, 7180, 4876, 2494, 2500, 2504, 2509, 9877, 2521, 2531, 2539, 2548, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, 2, 1, 2601, 241, {1301,5871,0,0,0,0,0,0,0,0,0,0,0,0},{9790,9885,0,0,0,0,0,0},{274,1377,9908,0,0,0,0,0,0,0,0,0},{280,1394,9918,0,0,0,0,0,0}},
+       {3732, 2987, 1394, 1377, 1982, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 239, 241, {2987,1320,14,243,9931,9942,1301,0,0,0,0,0,0,0},{3732,9954,9970,0,0,0,0,0},{1377,274,3007,35,0,0,0,0,0,0,0,0},{1394,280,2996,23,0,0,0,0,0}},
+       {10012, 2647, 280, 274, 1982, 55, 3781, 3784, {10030, 10036, 10046, 10052, 10063, 10073, 10078}, {10088, 10092, 10096, 10100, 10105, 10109, 10113}, {2085, 2085, 2090, 10117, 2085, 7414, 7414}, {10120, 10125, 10132, 10137, 10143, 10150, 10158, 10165, 10174, 10181, 10186, 10193, 0}, {10120, 10125, 10132, 10137, 10143, 10150, 10158, 10165, 10174, 10181, 10186, 10193, 0}, {10201, 10205, 3928, 10210, 3897, 10214, 10218, 10222, 10227, 10231, 10235, 10239, 0}, {10201, 10205, 3928, 10210, 3897, 10214, 10218, 10222, 10227, 10231, 10235, 10239, 0}, 0, 1, 763, 241, {2647,1336,1301,0,0,0,0,0,0,0,0,0,0,0},{10012,5487,0,0,0,0,0,0},{274,0,0,0,0,0,0,0,0,0,0,0},{280,0,0,0,0,0,0,0,0}},
+       {3991, 243, 2996, 3007, 44, 55, 10243, 10248, {10255, 10266, 10273, 10282, 10289, 10302, 10311}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {10320, 10331, 10342, 10351, 10362, 10367, 10374, 10385, 10394, 10405, 10418, 10429, 0}, {10320, 10331, 10342, 10351, 10362, 10367, 10374, 10385, 10394, 10405, 10418, 10429, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {5487, 243, 1394, 1377, 1982, 55, 3781, 3784, {10440, 10447, 10453, 10460, 10465, 10471, 10477}, {10483, 10487, 10491, 10495, 10499, 10503, 10507}, {2463, 2090, 2090, 10511, 4419, 4132, 2090}, {10513, 10521, 10530, 2775, 10536, 2785, 2790, 10540, 2802, 2812, 2820, 10548, 0}, {10513, 10521, 10530, 2775, 10536, 2785, 2790, 10540, 2802, 2812, 2820, 10548, 0}, {2838, 2842, 3928, 2851, 10536, 2855, 2859, 10557, 2867, 2871, 2875, 10561, 0}, {2838, 2842, 3928, 2851, 10536, 2855, 2859, 10557, 2867, 2871, 2875, 10561, 0}, 0, 0, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {10565, 2647, 1394, 1377, 10583, 4765, 10599, 10604, {10609, 10622, 10641, 10658, 10671, 10684, 10701}, {10714, 8509, 8514, 8519, 8524, 8529, 8534}, {10719, 8542, 8539, 8545, 8548, 8542, 8545}, {10722, 10735, 10746, 10763, 10778, 10793, 10808, 10821, 10836, 10853, 10868, 10885, 0}, {10900, 10911, 10924, 10939, 10952, 10965, 10978, 10989, 11002, 11017, 11030, 11049, 0}, {11062, 11069, 11076, 11083, 11090, 11097, 11104, 11111, 11118, 11125, 11132, 11139, 0}, {11062, 11069, 11076, 11083, 11090, 11097, 11104, 11111, 11118, 11125, 11132, 11139, 0}, 0, 1, 763, 241, {2647,1336,1301,0,0,0,0,0,0,0,0,0,0,0},{10565,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3732, 2647, 1394, 1377, 1982, 4765, 11146, 11159, {11172, 11187, 11208, 11223, 11236, 11249, 11264}, {493, 498, 11277, 508, 11282, 518, 523}, {528, 531, 11287, 537, 540, 531, 537}, {11290, 11307, 11316, 11331, 11348, 11363, 11378, 11391, 11406, 11423, 11444, 11461, 0}, {11290, 11307, 11316, 11331, 593, 11363, 11378, 11391, 11406, 11423, 11444, 11461, 0}, {11476, 11483, 11490, 11497, 11504, 11511, 11518, 11525, 11532, 11539, 11546, 11553, 0}, {11476, 11483, 11490, 11497, 11504, 11511, 11518, 11525, 11532, 11539, 11546, 11553, 0}, 0, 0, 763, 241, {2647,1336,1301,0,0,0,0,0,0,0,0,0,0,0},{3732,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {1960, 1973, 1394, 1377, 1982, 2362, 1992, 11560, {11565, 11573, 11584, 11590, 11596, 11605, 2052}, {9004, 9008, 2450, 11611, 9020, 9025, 11615}, {9033, 9035, 1041, 1049, 9039, 9035, 1049}, {2473, 2480, 9445, 2494, 2500, 11619, 11625, 11631, 2521, 2531, 2539, 2548, 0}, {2473, 2480, 9445, 2494, 2500, 11619, 11625, 11631, 2521, 2531, 2539, 2548, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 11638, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 11638, 2585, 2589, 2593, 2597, 0}, 0, 1, 763, 241, {1973,2903,9350,2647,9549,1336,11642,1301,0,0,0,0,0,0},{1960,2614,2628,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {11653, 11672, 1394, 1377, 11682, 2362, 11698, 11703, {11708, 11719, 11730, 11741, 11752, 11763, 11769}, {2085, 9681, 2465, 4419, 2083, 10511, 2471}, {2085, 9681, 2465, 4419, 2083, 10511, 2471}, {11778, 11786, 11795, 11802, 4887, 11809, 11815, 2514, 2521, 11821, 2539, 11830, 0}, {11778, 11786, 11795, 11802, 4887, 11809, 11815, 2514, 2521, 11821, 2539, 11830, 0}, {11840, 11845, 11795, 2569, 4887, 11809, 11815, 2581, 11851, 2589, 2593, 11856, 0}, {11840, 11845, 11795, 2569, 4887, 11809, 11815, 2581, 11851, 2589, 2593, 11856, 0}, 2, 1, 763, 241, {11672,2647,1336,1301,0,0,0,0,0,0,0,0,0,0},{11653,11861,2628,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {11881, 5597, 1394, 1377, 5609, 2362, 11908, 11925, {11939, 11950, 11960, 11969, 11980, 11992, 12003}, {12013, 12016, 12019, 12022, 12025, 12028, 12031}, {2090, 2085, 2467, 2465, 7414, 2085, 2090}, {12034, 12044, 2488, 12055, 12064, 12070, 12078, 12086, 12094, 12105, 12114, 12124, 0}, {12034, 12044, 2488, 12055, 12064, 12070, 12078, 12086, 12094, 12105, 12114, 12124, 0}, {4938, 1261, 2488, 8341, 12064, 12134, 12140, 5835, 4962, 5847, 1291, 5852, 0}, {4938, 1261, 2488, 8341, 12064, 12134, 12140, 5835, 4962, 5847, 1291, 5852, 0}, 0, 1, 763, 241, {5597,12146,1301,0,0,0,0,0,0,0,0,0,0,0},{11881,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {12156, 1825, 280, 274, 12178, 12193, 12205, 11560, {12211, 12223, 12235, 12247, 12261, 12276, 12289}, {12303, 12016, 12306, 12022, 12309, 12312, 12315}, {2090, 2085, 12319, 2465, 4419, 2085, 9442}, {12321, 12328, 12336, 12342, 12351, 12360, 12370, 12376, 12387, 12397, 12404, 12414, 0}, {12422, 12429, 12437, 12443, 12452, 12461, 12471, 12477, 12488, 12498, 12505, 12515, 0}, {12523, 12529, 12534, 12539, 12544, 12549, 12554, 12560, 12566, 12572, 12578, 12585, 0}, {12523, 12529, 12534, 12539, 12544, 12549, 12554, 12560, 12566, 12572, 12578, 12585, 0}, 2, 1, 763, 241, {1825,1301,0,0,0,0,0,0,0,0,0,0,0,0},{12156,0,0,0,0,0,0,0},{274,0,0,0,0,0,0,0,0,0,0,0},{280,0,0,0,0,0,0,0,0}},
+       {3732, 1336, 1394, 1377, 1982, 3773, 12592, 12604, {12616, 12631, 12646, 12661, 12678, 12697, 12708}, {12719, 12726, 12733, 12740, 12747, 12754, 12761}, {0, 0, 0, 0, 0, 0, 0}, {12768, 12779, 8579, 12792, 8601, 12803, 12810, 8626, 12817, 12832, 12845, 12856, 0}, {12768, 12779, 8579, 12792, 8601, 12803, 12810, 8626, 12817, 12832, 12845, 12856, 0}, {12869, 12876, 12883, 12890, 8601, 12803, 12810, 12897, 12904, 12911, 12918, 12925, 0}, {12869, 12876, 12883, 12890, 8601, 12803, 12810, 12897, 12904, 12911, 12918, 12925, 0}, 0, 0, 763, 241, {1336,1301,0,0,0,0,0,0,0,0,0,0,0,0},{3732,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,0,0,0,0,0,0,0,0}},
+       {3744, 3956, 23, 35, 44, 3773, 12932, 12952, {12969, 12982, 12995, 13011, 13028, 13043, 13052}, {12969, 12982, 12995, 13011, 13028, 13043, 13052}, {13061, 13064, 13067, 13070, 13073, 13076, 13079}, {13082, 13095, 13106, 13115, 13126, 13131, 13140, 13151, 13158, 13173, 13184, 13197, 0}, {13210, 13225, 13106, 13115, 13238, 13131, 13245, 13151, 13158, 13173, 13184, 13197, 0}, {13082, 13095, 13106, 13115, 13126, 13131, 13140, 13151, 13158, 13173, 13184, 13197, 0}, {13082, 13095, 13106, 13115, 13126, 13131, 13140, 13151, 13158, 13173, 13184, 13197, 0}, 0, 6, 239, 241, {3956,3947,0,0,0,0,0,0,0,0,0,0,0,0},{3744,3977,0,0,0,0,0,0},{35,274,0,0,0,0,0,0,0,0,0,0},{23,280,0,0,0,0,0,0,0}},
+       {5487, 243, 2996, 3007, 1982, 55, 13258, 13261, {13264, 13277, 13287, 13296, 13306, 13317, 13328}, {13340, 13343, 13348, 13353, 13358, 13363, 13368}, {13340, 13373, 13376, 13379, 13382, 13385, 13388}, {13391, 13404, 13415, 13425, 13436, 13448, 13460, 13473, 13485, 13498, 13513, 13534, 0}, {13391, 13404, 13415, 13425, 13436, 13448, 13460, 13473, 13485, 13498, 13513, 13534, 0}, {13553, 13559, 13565, 13571, 13577, 13583, 13589, 13595, 13601, 13607, 13614, 13621, 0}, {13553, 13559, 13565, 13571, 13577, 13583, 13589, 13595, 13601, 13607, 13614, 13621, 0}, 0, 1, 239, 241, {243,14,1327,2351,1301,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {13628, 2647, 1394, 1377, 44, 4765, 13641, 13649, {13657, 13670, 13691, 13710, 13731, 13750, 13763}, {13774, 13781, 13788, 13795, 13802, 13809, 13816}, {0, 0, 0, 0, 0, 0, 0}, {13823, 13838, 13853, 13862, 13873, 13884, 13897, 13910, 13925, 13944, 13963, 13980, 0}, {13823, 13838, 13853, 13862, 13873, 13884, 13897, 13910, 13925, 13944, 13963, 13980, 0}, {13999, 14006, 14013, 14020, 14027, 14034, 14041, 14048, 14055, 14062, 14069, 14076, 0}, {13999, 14006, 14013, 14020, 14027, 14034, 14041, 14048, 14055, 14062, 14069, 14076, 0}, 0, 1, 763, 241, {2647,1336,14083,243,14093,3720,1301,0,0,0,0,0,0,0},{13628,2969,14104,5487,14123,14134,14146,14163},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3732, 2647, 1394, 1377, 1982, 4765, 0, 0, {14181, 14187, 14201, 14224, 14238, 14254, 14261}, {14270, 14273, 14278, 14284, 14288, 7414, 14293}, {6567, 6555, 6557, 6559, 6561, 6563, 6565}, {14297, 14304, 10132, 14311, 3897, 14317, 14323, 14329, 14336, 14345, 14353, 14360, 0}, {14297, 14304, 10132, 14311, 3897, 14317, 14323, 14329, 14336, 14345, 14353, 14360, 0}, {14367, 7853, 2565, 2569, 14371, 14375, 14379, 14383, 14387, 2589, 14391, 14395, 0}, {14367, 7853, 2565, 2569, 14371, 14375, 14379, 14383, 14387, 2589, 14391, 14395, 0}, 0, 0, 763, 241, {2647,1336,2903,14,1301,0,0,0,0,0,0,0,0,0},{3732,5487,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {14399, 1814, 1394, 274, 14426, 3773, 3781, 3784, {14442, 14450, 14461, 14471, 14482, 14491, 14500}, {14510, 14513, 14516, 14519, 14522, 14525, 14528}, {14531, 2463, 12319, 2471, 12319, 2467, 14531}, {14533, 14543, 14551, 14559, 14567, 14575, 14582, 14590, 14598, 14605, 14611, 14618, 0}, {14533, 14543, 14551, 14559, 14567, 14575, 14582, 14590, 14598, 14605, 14611, 14618, 0}, {14626, 14630, 2565, 14634, 4887, 14638, 14642, 14646, 14650, 14654, 14658, 14662, 0}, {14626, 14630, 2565, 14634, 4887, 14638, 14642, 14646, 14650, 14654, 14658, 14662, 0}, 2, 1, 239, 241, {1814,1301,0,0,0,0,0,0,0,0,0,0,0,0},{14399,0,0,0,0,0,0,0},{274,0,0,0,0,0,0,0,0,0,0,0},{1394,280,1402,0,0,0,0,0,0}},
+       {14104, 2647, 280, 274, 1982, 55, 14666, 14687, {14704, 403, 424, 8448, 14717, 14734, 14745}, {14758, 14766, 14774, 14780, 14788, 14796, 14804}, {528, 531, 534, 537, 540, 531, 537}, {14812, 556, 573, 582, 14827, 14834, 14843, 614, 627, 646, 663, 678, 0}, {14812, 556, 573, 582, 14827, 14834, 14843, 614, 627, 646, 663, 678, 0}, {14852, 14860, 14868, 711, 14827, 14876, 14884, 719, 727, 737, 745, 14892, 0}, {14852, 14860, 14868, 711, 14827, 14876, 14884, 719, 727, 737, 745, 14892, 0}, 0, 1, 763, 241, {2647,1336,1301,0,0,0,0,0,0,0,0,0,0,0},{14104,0,0,0,0,0,0,0},{274,0,0,0,0,0,0,0,0,0,0,0},{280,0,0,0,0,0,0,0,0}},
+       {5487, 1814, 23, 35, 1982, 55, 0, 0, {14904, 14911, 14922, 14931, 14940, 14947, 14958}, {14968, 14972, 14976, 14980, 14984, 14987, 14991}, {0, 0, 0, 0, 0, 0, 0}, {14995, 15005, 15014, 15022, 15031, 15044, 15056, 15063, 15070, 15077, 15087, 15099, 0}, {14995, 15005, 15014, 15022, 15031, 15044, 15056, 15063, 15070, 15077, 15087, 15099, 0}, {15112, 15116, 15120, 15124, 15128, 15132, 15136, 15140, 15144, 15148, 15152, 15156, 0}, {15112, 15116, 15120, 15124, 15128, 15132, 15136, 15140, 15144, 15148, 15152, 15156, 0}, 0, 0, 239, 241, {1814,1857,1301,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{35,3007,274,0,0,0,0,0,0,0,0,0},{23,2996,280,0,0,0,0,0,0}},
+       {5487, 1814, 23, 35, 1982, 55, 0, 0, {15160, 15165, 15171, 15181, 15193, 15201, 15212}, {15221, 15225, 15229, 15233, 15237, 15241, 15245}, {0, 0, 0, 0, 0, 0, 0}, {15249, 15259, 15269, 15276, 15283, 2785, 15288, 15295, 15302, 15311, 15319, 15327, 0}, {15249, 15259, 15269, 15276, 15283, 2785, 15288, 15295, 15302, 15311, 15319, 15327, 0}, {2838, 2842, 14991, 15335, 15339, 2855, 2859, 15343, 2867, 2871, 2875, 15347, 0}, {2838, 2842, 14991, 15335, 15339, 2855, 2859, 15343, 2867, 2871, 2875, 15347, 0}, 0, 0, 239, 241, {1814,1857,1301,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{35,3007,274,0,0,0,0,0,0,0,0,0},{23,2996,280,0,0,0,0,0,0}},
+       {5487, 1814, 23, 35, 1982, 55, 3781, 3784, {15351, 15357, 15368, 15181, 15378, 15201, 15212}, {15387, 15391, 15395, 15233, 15237, 15241, 15245}, {2090, 2463, 15399, 2465, 2090, 5695, 2463}, {15401, 15411, 15422, 15429, 15438, 15444, 15450, 15458, 15466, 15477, 15487, 15496, 0}, {15505, 15259, 15514, 15520, 15283, 2785, 15288, 15295, 15527, 15311, 15319, 15327, 0}, {2838, 2842, 15537, 2851, 15339, 2855, 2859, 15343, 2867, 2871, 2875, 15347, 0}, {2838, 2842, 15537, 2851, 15339, 2855, 2859, 15343, 2867, 2871, 2875, 15347, 0}, 0, 0, 239, 241, {1814,1857,1301,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{35,3007,274,0,0,0,0,0,0,0,0,0},{23,2996,280,0,0,0,0,0,0}},
+       {5487, 1814, 23, 35, 1982, 55, 15541, 15545, {15549, 15556, 15564, 15572, 15581, 15591, 15598}, {2731, 8231, 2737, 15607, 2743, 15610, 2749}, {2090, 2463, 2752, 3872, 2752, 4134, 2090}, {15613, 15622, 15632, 2775, 10536, 15638, 15644, 15650, 2802, 2812, 2820, 10548, 0}, {15613, 15622, 15632, 2775, 10536, 15638, 15644, 15650, 2802, 2812, 2820, 10548, 0}, {2838, 2842, 3928, 2851, 10536, 2855, 2859, 2863, 2867, 2871, 2875, 10561, 0}, {2838, 2842, 3928, 2851, 10536, 2855, 2859, 2863, 2867, 2871, 2875, 10561, 0}, 0, 0, 239, 241, {1814,1857,1301,15659,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{35,3007,274,0,0,0,0,0,0,0,0,0},{23,2996,280,0,0,0,0,0,0}},
+       {15671, 2647, 1394, 1377, 1982, 15703, 15709, 15725, {15747, 15763, 15788, 15816, 15844, 15872, 15900}, {15919, 15929, 15939, 15949, 15959, 15969, 15979}, {15989, 15993, 15997, 15993, 16001, 16005, 16009}, {16013, 16035, 16063, 16079, 16098, 16114, 16133, 16149, 16171, 16202, 16230, 16255, 0}, {16013, 16035, 16063, 16079, 16098, 16114, 16133, 16149, 16171, 16202, 16230, 16255, 0}, {16283, 16293, 16303, 16313, 16323, 16333, 16343, 16353, 16363, 16373, 16383, 16393, 0}, {16283, 16293, 16303, 16313, 16323, 16333, 16343, 16353, 16363, 16373, 16383, 16393, 0}, 0, 1, 763, 241, {2647,1336,2903,14,1301,0,0,0,0,0,0,0,0,0},{15671,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {1960, 2351, 280, 274, 1982, 2362, 16403, 16408, {5890, 16413, 16424, 16434, 16444, 16454, 16468}, {5976, 5980, 16480, 16485, 16489, 16494, 16499}, {2090, 2463, 2465, 2463, 5695, 2469, 2471}, {2473, 2480, 4876, 6032, 4887, 2504, 2509, 2514, 2521, 2531, 2539, 6076, 0}, {2473, 2480, 4876, 6032, 4887, 2504, 2509, 2514, 2521, 2531, 2539, 6076, 0}, {2557, 2561, 2565, 2569, 4887, 2573, 2577, 2581, 2585, 2589, 2593, 6106, 0}, {2557, 2561, 2565, 2569, 4887, 2573, 2577, 2581, 2585, 2589, 2593, 6106, 0}, 2, 1, 2601, 241, {2351,1327,1301,0,0,0,0,0,0,0,0,0,0,0},{1960,0,0,0,0,0,0,0},{274,4983,0,0,0,0,0,0,0,0,0,0},{280,6438,0,0,0,0,0,0,0}},
+       {5487, 2351, 280, 274, 44, 55, 16503, 16531, {16553, 16572, 16591, 16613, 16632, 16666, 16691}, {16710, 16721, 16732, 16746, 16757, 16768, 16785}, {16796, 16800, 16807, 16814, 16821, 16828, 16835}, {16839, 16855, 16871, 16887, 16906, 16913, 16923, 16939, 16955, 16977, 16999, 17018, 0}, {16839, 16855, 16871, 16887, 16906, 16913, 16923, 16939, 16955, 16977, 16999, 17018, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 2601, 241, {2351,1327,2312,2903,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {17040, 243, 280, 274, 1982, 17065, 17079, 17082, {17085, 17094, 17103, 17113, 17123, 17133, 17145}, {17153, 17158, 17162, 17166, 17170, 17175, 17180}, {17184, 2465, 2465, 9681, 17184, 17187, 2090}, {17190, 17197, 17202, 2775, 17208, 17214, 17221, 17227, 17235, 17245, 17253, 17262, 0}, {17190, 17197, 17202, 2775, 17208, 17214, 17221, 17227, 17235, 17245, 17253, 17262, 0}, {2838, 17272, 3928, 2851, 17276, 17280, 17285, 17289, 17293, 17297, 2875, 17301, 0}, {2838, 17272, 3928, 2851, 17276, 17280, 17285, 17289, 17293, 17297, 2875, 17301, 0}, 0, 0, 239, 241, {243,1301,17306,7084,2987,0,0,0,0,0,0,0,0,0},{17040,17315,9942,0,0,0,0,0},{274,3007,1377,35,0,0,0,0,0,0,0,0},{280,2996,1394,23,0,0,0,0,0}},
+       {17334, 2647, 280, 274, 1982, 17352, 17366, 17371, {17376, 17388, 17399, 17413, 17425, 17435, 17445}, {17456, 17461, 17466, 17471, 17476, 17481, 17486}, {2090, 4134, 2463, 6229, 2752, 15399, 2471}, {17491, 17508, 17521, 17535, 17548, 17561, 17574, 17588, 17600, 17614, 17628, 17642, 0}, {17491, 17508, 17521, 17535, 17548, 17561, 17574, 17588, 17600, 17614, 17628, 17642, 0}, {17655, 17662, 17667, 17672, 17676, 17681, 17686, 17691, 17696, 17703, 17708, 17714, 0}, {17655, 17662, 17667, 17672, 17676, 17681, 17686, 17691, 17696, 17703, 17708, 17714, 0}, 2, 1, 763, 241, {2647,1336,2903,1301,0,0,0,0,0,0,0,0,0,0},{17334,0,0,0,0,0,0,0},{274,1377,4983,0,0,0,0,0,0,0,0,0},{280,1394,6438,0,0,0,0,0,0}},
+       {3732, 243, 280, 274, 1982, 55, 946, 951, {17719, 17733, 17743, 17754, 17768, 17779, 17790}, {17803, 17808, 17813, 17820, 17826, 17832, 17838}, {2752, 2471, 2463, 7414, 2752, 12319, 2090}, {17843, 17851, 17859, 17866, 17875, 17885, 17895, 17901, 17909, 17924, 17942, 17950, 0}, {17843, 17851, 17859, 17866, 17875, 17885, 17895, 17901, 17909, 17924, 17942, 17950, 0}, {17958, 17962, 17859, 17968, 17972, 17977, 17895, 17983, 17988, 17995, 18002, 18007, 0}, {17958, 17962, 17859, 17968, 17972, 17977, 17895, 17983, 17988, 17995, 18002, 18007, 0}, 2, 1, 239, 241, {243,14,1320,2903,1301,0,0,0,0,0,0,0,0,0},{3732,5487,9942,9931,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {5487, 243, 1394, 1377, 1982, 55, 18012, 18015, {18019, 18024, 10453, 10460, 18030, 18037, 10477}, {18044, 18048, 10491, 10495, 18052, 10503, 10507}, {12319, 14531, 2090, 10511, 4419, 4132, 2090}, {10513, 10521, 18056, 2775, 10536, 2855, 18060, 18066, 2802, 2812, 2820, 18071, 0}, {10513, 10521, 18056, 2775, 10536, 2855, 18060, 18066, 2802, 2812, 2820, 18071, 0}, {2838, 2842, 18056, 2851, 10536, 2855, 2859, 18066, 2867, 2871, 2875, 15347, 0}, {2838, 2842, 18056, 2851, 10536, 2855, 2859, 18066, 2867, 2871, 2875, 15347, 0}, 0, 1, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {18080, 2647, 1394, 1377, 1982, 4765, 0, 0, {18098, 18113, 18130, 18147, 18162, 18179, 18188}, {18199, 18205, 18211, 18217, 18223, 18229, 18235}, {6555, 0, 0, 6561, 6563, 6565, 6567}, {18241, 18254, 18265, 18278, 18289, 18300, 18313, 18324, 18335, 18352, 18363, 18376, 0}, {18241, 18395, 18265, 18278, 18289, 18300, 18313, 18324, 18335, 18352, 18363, 18376, 0}, {18406, 18414, 18422, 18430, 18438, 18446, 18454, 18462, 18470, 18478, 18486, 18494, 0}, {18406, 18414, 18422, 18430, 18438, 18446, 18454, 18462, 18470, 18478, 18486, 18494, 0}, 0, 0, 763, 241, {2647,1336,2903,14,1301,0,0,0,0,0,0,0,0,0},{18080,18504,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {18523, 1336, 1394, 1377, 18543, 4765, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 1, 763, 241, {1336,1301,0,0,0,0,0,0,0,0,0,0,0,0},{18523,0,0,0,0,0,0,0},{1377,0,0,0,0,0,0,0,0,0,0,0},{1394,0,0,0,0,0,0,0,0}},
+       {3744, 3764, 2996, 3007, 44, 3773, 18559, 18567, {18575, 18584, 18593, 18601, 18610, 18619, 18626}, {18635, 18638, 18641, 18644, 18647, 18651, 18654}, {6557, 6559, 6561, 6563, 12319, 14531, 6555}, {10513, 10521, 18657, 18663, 10536, 2785, 18060, 18670, 15302, 18677, 15319, 18684, 0}, {10513, 10521, 18657, 18663, 10536, 2785, 18060, 18670, 15302, 18677, 15319, 18684, 0}, {2838, 2842, 18056, 2851, 10536, 2855, 2859, 18692, 2867, 2871, 2875, 10561, 0}, {2838, 2842, 18056, 2851, 10536, 2855, 2859, 18692, 2867, 2871, 2875, 10561, 0}, 0, 0, 239, 241, {3764,3940,3947,3956,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {18696, 18714, 280, 274, 1982, 18725, 0, 0, {18732, 18747, 18762, 18777, 18794, 18811, 18820}, {18831, 18838, 18845, 18852, 18859, 18866, 18873}, {18880, 18883, 8545, 8548, 8542, 18886, 18889}, {12768, 12779, 8579, 12792, 8601, 12803, 12810, 8626, 12817, 12832, 12845, 12856, 0}, {12768, 12779, 8579, 12792, 8601, 12803, 12810, 8626, 12817, 12832, 12845, 12856, 0}, {12869, 12876, 12883, 12890, 8601, 12803, 12810, 12897, 12904, 12911, 12918, 12925, 0}, {12869, 12876, 12883, 12890, 8601, 12803, 12810, 12897, 12904, 12911, 12918, 12925, 0}, 0, 0, 239, 241, {18714,1336,2903,14,1301,0,0,0,0,0,0,0,0,0},{18696,3732,5487,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {5487, 1327, 6438, 4983, 44, 55, 18892, 18920, {18942, 18961, 18980, 19005, 19024, 19058, 19083}, {19102, 19112, 19122, 19138, 19148, 19173, 19189}, {19199, 19203, 19210, 19214, 19221, 19228, 19235}, {19239, 19267, 19301, 19317, 19336, 19343, 19353, 19369, 19385, 19416, 19438, 19460, 0}, {19239, 19267, 19301, 19317, 19336, 19343, 19353, 19369, 19385, 19416, 19438, 19460, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 1, 2601, 241, {1327,2312,2903,2351,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{4983,2327,19485,19494,0,0,0,0,0,0,0,0},{6438,2343,19502,19514,0,0,0,0,0}},
+       {10012, 1327, 1948, 1928, 44, 55, 19525, 19557, {19589, 19605, 19624, 19646, 19665, 19684, 19712}, {19740, 19748, 19759, 19773, 19784, 19795, 19812}, {19826, 19830, 19837, 19844, 19854, 19861, 19874}, {19881, 19897, 19916, 19929, 19948, 19955, 19965, 19981, 19994, 20010, 20029, 20045, 0}, {19881, 19897, 19916, 19929, 19948, 19955, 19965, 19981, 19994, 20010, 20029, 20045, 0}, {6555, 6557, 6559, 6561, 19948, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 19948, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 2601, 241, {1327,2312,2903,2351,1301,0,0,0,0,0,0,0,0,0},{10012,3732,0,0,0,0,0,0},{1928,1920,1377,274,0,0,0,0,0,0,0,0},{1948,1937,1394,280,0,0,0,0,0}},
+       {5487, 1327, 280, 274, 44, 55, 20061, 20102, {20143, 20162, 20181, 20203, 20222, 20244, 20269}, {20288, 20298, 20308, 20321, 20331, 20344, 20360}, {20370, 20374, 20381, 20388, 20395, 20402, 20409}, {20413, 20441, 20469, 20485, 20504, 20511, 20521, 20537, 20553, 20581, 20603, 20625, 0}, {20413, 20441, 20469, 20485, 20504, 20511, 20521, 20537, 20553, 20581, 20603, 20625, 0}, {20650, 20669, 20469, 20485, 20504, 20511, 20521, 20537, 20688, 20704, 20720, 20730, 0}, {20650, 20669, 20469, 20485, 20504, 20511, 20521, 20537, 20688, 20704, 20720, 20730, 0}, 0, 0, 2601, 241, {1327,2312,2903,2351,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {5487, 1327, 280, 274, 44, 55, 7865, 20743, {20746, 20765, 20784, 20809, 20828, 20850, 20875}, {20894, 20904, 20914, 20930, 20940, 20953, 20969}, {20979, 20983, 20990, 20994, 21001, 21008, 21015}, {21019, 21041, 21072, 21094, 21113, 21120, 21130, 21146, 21162, 21193, 21215, 21237, 0}, {21019, 21041, 21072, 21094, 21113, 21120, 21130, 21146, 21162, 21193, 21215, 21237, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 2601, 241, {1327,2312,2903,2351,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {5487, 2351, 280, 274, 1982, 55, 21262, 21287, {21312, 21331, 21353, 21378, 21394, 21416, 21435}, {21445, 21452, 21459, 21466, 21473, 21480, 21487}, {21445, 21452, 21459, 21466, 21473, 21480, 21487}, {21491, 21507, 21532, 21551, 21570, 21577, 21590, 21603, 21622, 21653, 21678, 21700, 0}, {21491, 21507, 21532, 21551, 21570, 21577, 21590, 21725, 21622, 21653, 21678, 21700, 0}, {21744, 21752, 21766, 21780, 21570, 21577, 21590, 21791, 21799, 21813, 21824, 21832, 0}, {21744, 21752, 21766, 21780, 21570, 21577, 21590, 21791, 21799, 21813, 21824, 21832, 0}, 0, 0, 2601, 241, {2351,1327,2312,2903,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {5487, 1327, 280, 274, 44, 55, 21843, 21874, {21899, 21921, 21943, 21968, 21990, 22015, 22043}, {22065, 22075, 22085, 22098, 22108, 22121, 22137}, {22147, 22151, 22158, 22162, 22169, 22176, 22183}, {22187, 22203, 22228, 22247, 22269, 22276, 22289, 22302, 22321, 22352, 22377, 22396, 0}, {22187, 22203, 22228, 22247, 22269, 22276, 22289, 22302, 22321, 22352, 22377, 22396, 0}, {22421, 22428, 6559, 22444, 22269, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {22421, 22428, 6559, 22444, 22269, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 2601, 241, {1327,2312,2903,2351,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {5487, 1327, 280, 274, 44, 55, 3781, 3784, {22460, 22479, 22498, 22520, 22539, 22561, 22586}, {22605, 22610, 22618, 22626, 22634, 22642, 22650}, {22661, 22665, 22672, 22679, 22686, 22693, 22700}, {22704, 22720, 22745, 22764, 22786, 22793, 22806, 22819, 22838, 22866, 22891, 22913, 0}, {22704, 22720, 22745, 22764, 22786, 22793, 22806, 22819, 22838, 22866, 22891, 22913, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 2601, 241, {1327,2312,2903,2351,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {5487, 1327, 6438, 4983, 44, 55, 22938, 22957, {22988, 23013, 23044, 23072, 23097, 23125, 23159}, {23184, 23203, 23228, 23244, 23263, 23282, 23301}, {23311, 23318, 23325, 23332, 23339, 23352, 23359}, {23363, 23382, 23410, 23438, 23463, 23476, 23492, 23505, 23530, 23567, 23595, 23617, 0}, {23363, 23382, 23410, 23438, 23463, 23476, 23492, 23505, 23530, 23567, 23595, 23617, 0}, {23642, 23652, 23671, 23687, 23463, 23476, 23492, 23703, 23710, 23735, 23751, 23761, 0}, {23642, 23652, 23671, 23687, 23463, 23476, 23492, 23703, 23710, 23735, 23751, 23761, 0}, 0, 0, 2601, 241, {1327,2312,2903,2351,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{4983,2327,19485,19494,0,0,0,0,0,0,0,0},{6438,2343,19502,19514,0,0,0,0,0}},
+       {23774, 2351, 1937, 1920, 23793, 55, 23801, 23829, {23851, 23870, 23889, 23914, 23933, 23967, 23992}, {24011, 19112, 19122, 19138, 24021, 24046, 19189}, {0, 0, 0, 0, 0, 0, 0}, {24062, 24087, 24118, 24134, 19336, 19343, 19353, 24153, 24169, 24200, 24222, 24244, 0}, {24062, 24087, 24118, 24134, 19336, 19343, 19353, 24153, 24169, 24200, 24222, 24244, 0}, {24269, 24282, 24118, 24134, 19336, 19343, 19353, 24301, 24308, 24324, 24340, 24350, 0}, {24269, 24282, 24118, 24134, 19336, 19343, 19353, 24301, 24308, 24324, 24340, 24350, 0}, 0, 0, 2601, 241, {2351,0,0,0,0,0,0,0,0,0,0,0,0,0},{23774,0,0,0,0,0,0,0},{1920,1928,0,0,0,0,0,0,0,0,0,0},{1937,1948,0,0,0,0,0,0,0}},
+       {5487, 2351, 280, 274, 44, 55, 3781, 3784, {16553, 16572, 24363, 16613, 24385, 16666, 16691}, {24407, 24417, 24427, 24440, 24450, 24463, 24479}, {16796, 16800, 16807, 16814, 16821, 16828, 16835}, {24489, 24514, 16871, 24545, 24564, 16913, 24571, 24584, 24600, 24625, 24647, 24675, 0}, {24489, 24514, 16871, 24545, 24564, 16913, 24571, 24584, 24600, 24625, 24647, 24675, 0}, {24697, 24710, 16871, 24729, 24564, 16913, 24571, 24745, 24752, 6573, 24774, 24796, 0}, {24697, 24710, 16871, 24729, 24564, 16913, 24571, 24745, 24752, 6573, 24774, 24796, 0}, 0, 0, 2601, 241, {2351,1327,2312,2903,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {24812, 24833, 1394, 1377, 24842, 4765, 0, 0, {24859, 24866, 24877, 24890, 24903, 24914, 24927}, {24938, 24943, 24948, 24953, 24958, 24963, 24968}, {0, 0, 0, 0, 0, 0, 0}, {24973, 24988, 24997, 25004, 25017, 25024, 25035, 25044, 25053, 25060, 25071, 25082, 0}, {24973, 24988, 24997, 25004, 25017, 25024, 25035, 25044, 25053, 25060, 25071, 25082, 0}, {25093, 25100, 25107, 25114, 25121, 25128, 25135, 25142, 25149, 25156, 25163, 25170, 0}, {25093, 25100, 25107, 25114, 25121, 25128, 25135, 25142, 25149, 25156, 25163, 25170, 0}, 0, 0, 763, 241, {24833,1301,0,0,0,0,0,0,0,0,0,0,0,0},{24812,0,0,0,0,0,0,0},{1377,0,0,0,0,0,0,0,0,0,0,0},{1394,0,0,0,0,0,0,0,0}},
+       {25177, 1444, 280, 274, 25220, 25227, 25253, 25275, {25300, 25328, 25356, 25393, 25424, 25458, 25483}, {25517, 25533, 25549, 25574, 25593, 25615, 25634}, {25656, 25663, 25670, 25677, 25684, 25691, 25695}, {25705, 25739, 25776, 25810, 25844, 25875, 25912, 25949, 25989, 26023, 26057, 26106, 0}, {25705, 25739, 25776, 25810, 25844, 25875, 25912, 25949, 25989, 26023, 26057, 26106, 0}, {26155, 26168, 26181, 26194, 26207, 26220, 26233, 26246, 26259, 26272, 26288, 26304, 0}, {26155, 26168, 26181, 26194, 26207, 26220, 26233, 26246, 26259, 26272, 26288, 26304, 0}, 0, 0, 239, 241, {1444,1796,1805,1825,1301,1814,1836,1843,1850,0,0,0,0,0},{25177,26320,0,0,0,0,0,0},{274,0,0,0,0,0,0,0,0,0,0,0},{280,0,0,0,0,0,0,0,0}},
+       {5487, 243, 280, 274, 1982, 55, 0, 0, {26368, 26377, 26387, 26399, 26412, 26421, 26433}, {26445, 26449, 26454, 26458, 26462, 26466, 26470}, {2090, 2471, 2463, 2463, 14531, 6229, 2090}, {26474, 26481, 26490, 26497, 2781, 26504, 26512, 26523, 26528, 26533, 26540, 26549, 0}, {26474, 26481, 26490, 26497, 2781, 26504, 26557, 26523, 26528, 26533, 26540, 26549, 0}, {26567, 26571, 26454, 26576, 2781, 26580, 26584, 26523, 26528, 26588, 26592, 26597, 0}, {26567, 26571, 26454, 26576, 2781, 26580, 26584, 26523, 26528, 26588, 26592, 26597, 0}, 2, 0, 239, 241, {243,14,1320,2903,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,35,3007,0,0,0,0,0,0,0,0},{280,1394,23,2996,0,0,0,0,0}},
+       {3732, 1301, 280, 26602, 26610, 26645, 26681, 26697, {26713, 26747, 26778, 26809, 26831, 26874, 26902}, {26927, 26934, 26938, 26942, 26949, 26959, 26966}, {0, 0, 0, 0, 0, 0, 0}, {26970, 26983, 27002, 27015, 27028, 27041, 27060, 27079, 27092, 27108, 27121, 27146, 0}, {26970, 26983, 27002, 27015, 27028, 27041, 27060, 27079, 27092, 27108, 27121, 27146, 0}, {27159, 27163, 27167, 27171, 27175, 27179, 27183, 27187, 27191, 27195, 27202, 27209, 0}, {27159, 27163, 27167, 27171, 27175, 27179, 27183, 27187, 27191, 27195, 27202, 27209, 0}, 0, 0, 2601, 241, {1301,0,0,0,0,0,0,0,0,0,0,0,0,0},{3732,9954,0,0,0,0,0,0},{26602,0,0,0,0,0,0,0,0,0,0,0},{280,0,0,0,0,0,0,0,0}},
+       {5487, 243, 280, 26602, 1982, 55, 27216, 27241, {27266, 27291, 27310, 27338, 27357, 27382, 27401}, {27423, 27431, 27436, 27441, 27446, 27454, 27462}, {0, 0, 0, 0, 0, 0, 0}, {27467, 27486, 27502, 27515, 27528, 27550, 27569, 27591, 27607, 27623, 27636, 27652, 0}, {27467, 27486, 27502, 27515, 27528, 27550, 27569, 27591, 27607, 27623, 27636, 27652, 0}, {27668, 27677, 27686, 27698, 27708, 27717, 27729, 27738, 27747, 27756, 27765, 27774, 0}, {27668, 27677, 27686, 27698, 27708, 27717, 27729, 27738, 27747, 27756, 27765, 27774, 0}, 0, 0, 239, 241, {243,1301,0,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{26602,0,0,0,0,0,0,0,0,0,0,0},{280,0,0,0,0,0,0,0,0}},
+       {4005, 243, 1394, 1377, 4034, 55, 946, 951, {27783, 27791, 27796, 27803, 27813, 27819, 27826}, {27834, 27838, 3928, 27842, 27847, 27851, 27855}, {2752, 2471, 2463, 2463, 4130, 4134, 2090}, {27860, 27868, 6248, 27877, 27883, 27888, 27894, 6282, 27900, 27909, 27917, 27926, 0}, {27860, 27868, 6248, 27877, 27883, 27888, 27894, 6282, 27900, 27909, 27917, 27926, 0}, {27935, 2842, 3928, 27939, 2781, 27943, 27948, 18692, 17293, 27952, 2875, 3936, 0}, {27935, 2842, 3928, 27939, 2781, 27943, 27948, 18692, 17293, 27952, 2875, 3936, 0}, 2, 1, 239, 241, {243,14,1312,1320,1327,1336,1301,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{1377,274,35,1382,0,0,0,0,0,0,0,0},{1394,280,23,1402,0,0,0,0,0}},
+       {5487, 2351, 280, 274, 44, 55, 27956, 27968, {27980, 16572, 28008, 16613, 24385, 16666, 16691}, {24407, 24417, 24427, 24440, 24450, 24463, 24479}, {0, 0, 0, 0, 0, 0, 0}, {24489, 24514, 16871, 24545, 24564, 16913, 24571, 28027, 28043, 28071, 24647, 24675, 0}, {24489, 24514, 16871, 24545, 24564, 16913, 24571, 28027, 28043, 28071, 24647, 24675, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 2601, 241, {2351,1327,2312,2903,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {28093, 1301, 2996, 3007, 28141, 3773, 28151, 28163, {28172, 28188, 28204, 28232, 28248, 28291, 28316}, {28344, 28354, 28364, 28371, 28381, 28397, 28410}, {28420, 28424, 28428, 28432, 28436, 28449, 28456}, {28463, 28482, 28507, 28526, 28551, 28564, 28577, 28590, 28612, 28646, 28671, 28699, 0}, {28463, 28482, 28507, 28526, 28551, 28564, 28577, 28590, 28612, 28646, 28671, 28699, 0}, {28727, 28734, 28744, 28526, 28551, 28564, 28577, 28757, 28767, 28780, 28790, 28803, 0}, {28727, 28734, 28744, 28526, 28551, 28564, 28577, 28757, 28767, 28780, 28790, 28803, 0}, 0, 1, 2601, 241, {1301,1814,1857,243,14,0,0,0,0,0,0,0,0,0},{28093,0,0,0,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {28816, 2987, 2996, 3007, 1982, 28848, 28862, 28872, {28885, 28895, 28902, 28915, 28925, 28935, 28945}, {28885, 28895, 28955, 28915, 28925, 28935, 28945}, {28965, 28969, 28973, 28977, 28981, 28985, 28989}, {28993, 29009, 29025, 29035, 29048, 29055, 29062, 29072, 29085, 29104, 29123, 29139, 0}, {28993, 29009, 29025, 29035, 29048, 29055, 29062, 29072, 29085, 29104, 29123, 29139, 0}, {29155, 29165, 29025, 29175, 29048, 29055, 29062, 29185, 29195, 29205, 29215, 29225, 0}, {29155, 29165, 29025, 29175, 29048, 29055, 29062, 29185, 29195, 29205, 29215, 29225, 0}, 0, 0, 239, 241, {2987,1301,0,0,0,0,0,0,0,0,0,0,0,0},{28816,0,0,0,0,0,0,0},{3007,0,0,0,0,0,0,0,0,0,0,0},{2996,0,0,0,0,0,0,0,0}},
+       {3991, 2351, 1394, 1377, 44, 55, 29235, 29245, {29258, 29265, 29271, 29278, 29284, 29290, 29298}, {29308, 29312, 29316, 29320, 29324, 29328, 29332}, {12319, 12319, 12319, 12319, 12319, 12319, 12319}, {29338, 29347, 29356, 29361, 29367, 29373, 29379, 29386, 29392, 29401, 29410, 29418, 0}, {29338, 29347, 29356, 29361, 29367, 29373, 29379, 29386, 29392, 29401, 29410, 29418, 0}, {29427, 29431, 3928, 29435, 3897, 29439, 29443, 29447, 29452, 29456, 29462, 29466, 0}, {29427, 29431, 3928, 29435, 3897, 29439, 29443, 29447, 29452, 29456, 29462, 29466, 0}, 0, 0, 2601, 241, {2351,1327,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{1377,274,29470,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3744, 3764, 2996, 3007, 29476, 3773, 29486, 29527, {29568, 29587, 29606, 29631, 29650, 29672, 29697}, {29716, 24417, 29726, 24440, 29742, 24463, 24479}, {29755, 29759, 29763, 29767, 29771, 29775, 29779}, {16839, 29783, 16871, 29811, 24564, 29830, 16923, 16939, 29840, 29871, 29893, 29918, 0}, {16839, 29783, 16871, 29811, 24564, 29830, 16923, 16939, 29840, 29871, 29893, 29918, 0}, {29943, 29950, 16871, 29960, 24564, 29830, 29976, 29989, 29996, 30012, 30028, 30041, 0}, {29943, 29950, 16871, 29960, 24564, 29830, 29976, 29989, 29996, 30012, 30028, 30041, 0}, 0, 0, 239, 241, {3764,3940,3947,3956,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {243, 14, 2996, 3007, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {30054, 30061, 30070, 30085, 30096, 30105, 30112, 30119, 30126, 30137, 30150, 30163, 0}, {30054, 30061, 30070, 30085, 30096, 30105, 30112, 30119, 30126, 30137, 30150, 30163, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 6, 239, 241, {14,243,0,0,0,0,0,0,0,0,0,0,0,0},{243,1,254,30168,0,0,0,0},{3007,1377,0,0,0,0,0,0,0,0,0,0},{2996,1394,0,0,0,0,0,0,0}},
+       {3744, 3764, 2996, 3007, 44, 3773, 3781, 3784, {30186, 30193, 27796, 30199, 30210, 30218, 30227}, {30234, 27838, 3928, 30238, 30242, 30246, 10507}, {2471, 2471, 2463, 2463, 5695, 15399, 2090}, {30250, 30256, 30264, 27877, 30270, 30275, 30281, 6282, 30287, 30297, 30305, 30315, 0}, {30250, 30256, 30264, 27877, 30270, 30275, 30281, 6282, 30287, 30297, 30305, 30315, 0}, {30325, 30329, 3928, 27939, 3897, 30333, 30337, 18692, 17293, 2871, 30341, 15347, 0}, {30325, 30329, 3928, 27939, 3897, 30333, 30337, 18692, 17293, 2871, 30341, 15347, 0}, 0, 0, 239, 241, {3764,3940,3947,3956,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {3744, 2987, 2996, 3007, 44, 3773, 0, 0, {30345, 30352, 30360, 30367, 30374, 30382, 30390}, {30397, 30400, 30403, 30406, 30409, 30412, 30415}, {2471, 2471, 2465, 2471, 12319, 4132, 12319}, {30418, 30426, 30436, 30442, 30450, 30455, 30460, 30465, 30472, 18677, 30480, 30488, 0}, {30418, 30426, 30436, 30442, 30450, 30455, 30460, 30465, 30472, 18677, 30480, 30488, 0}, {2838, 30496, 3928, 30500, 3897, 29439, 29443, 30504, 3868, 2871, 30508, 15347, 0}, {2838, 30496, 3928, 30500, 3897, 29439, 29443, 30504, 3868, 2871, 30508, 15347, 0}, 0, 0, 239, 241, {2987,1320,14,243,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {3744, 2987, 2996, 3007, 44, 3773, 30512, 30523, {30533, 30551, 30566, 30588, 30601, 30615, 30632}, {30656, 30664, 30669, 30588, 30601, 30681, 30688}, {0, 0, 0, 0, 0, 0, 0}, {30702, 30724, 30740, 30760, 30774, 30791, 30806, 30823, 30837, 30850, 30869, 30883, 0}, {30702, 30724, 30740, 30760, 30774, 30791, 30806, 30823, 30837, 30850, 30869, 30883, 0}, {30902, 30917, 30926, 30939, 30946, 30956, 30964, 30974, 30981, 30987, 30999, 31006, 0}, {30902, 30917, 30926, 30939, 30946, 30956, 30964, 30974, 30981, 30987, 30999, 31006, 0}, 0, 0, 239, 241, {2987,1320,14,243,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {5487, 1814, 23, 35, 1982, 55, 0, 0, {31018, 31026, 14922, 14931, 14940, 31037, 31047}, {15387, 14972, 14976, 14980, 14984, 15241, 31056}, {0, 0, 0, 0, 0, 0, 0}, {31060, 31069, 31079, 31087, 10536, 3901, 31095, 31101, 31110, 31119, 31128, 31137, 0}, {31060, 31069, 31079, 31087, 10536, 3901, 31095, 31101, 31110, 31119, 31128, 31137, 0}, {2838, 2842, 14991, 31146, 10536, 2855, 2859, 18692, 17293, 2871, 31150, 15347, 0}, {2838, 2842, 14991, 31146, 10536, 2855, 2859, 18692, 17293, 2871, 31150, 15347, 0}, 0, 0, 239, 241, {1814,1857,1301,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{35,3007,274,0,0,0,0,0,0,0,0,0},{23,2996,280,0,0,0,0,0,0}},
+       {1960, 2351, 280, 274, 1982, 2362, 31154, 31159, {31164, 31171, 31186, 31200, 31216, 31231, 31247}, {6225, 31262, 2565, 31266, 31270, 31274, 31278}, {2090, 12319, 2463, 2085, 2090, 2465, 12319}, {7172, 7180, 31282, 31289, 31296, 2504, 2509, 31301, 31311, 31322, 31331, 31341, 0}, {7172, 7180, 31282, 31289, 31296, 2504, 2509, 31301, 31311, 31322, 31331, 31341, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, 0, 0, 2601, 241, {2351,1327,1301,2603,0,0,0,0,0,0,0,0,0,0},{1960,2614,0,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {3744, 2987, 2996, 3007, 44, 3773, 31351, 31356, {31361, 31377, 31385, 31393, 31402, 31414, 31424}, {31434, 31440, 31446, 31450, 31454, 31462, 3868}, {0, 0, 0, 0, 0, 0, 0}, {31469, 31482, 31496, 31505, 31511, 31515, 31520, 31528, 15302, 31541, 15319, 15327, 0}, {31469, 31482, 31496, 31505, 31511, 31515, 31520, 31528, 15302, 31541, 15319, 15327, 0}, {31550, 2842, 31554, 15335, 31511, 31558, 2859, 31562, 2867, 31570, 2875, 15347, 0}, {31550, 2842, 31554, 15335, 31511, 31558, 2859, 31562, 2867, 31570, 2875, 15347, 0}, 0, 0, 239, 241, {2987,1320,14,243,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {31576, 1444, 1394, 1920, 31600, 31617, 31631, 31638, {31645, 31655, 31665, 31675, 31685, 31695, 31705}, {31715, 31722, 31729, 31736, 31743, 31750, 31757}, {31764, 31768, 31772, 31776, 31780, 31784, 31788}, {31792, 31799, 31806, 31813, 31820, 31827, 31834, 31841, 31848, 31855, 31862, 31872, 0}, {31792, 31799, 31806, 31813, 31820, 31827, 31834, 31841, 31848, 31855, 31862, 31872, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 239, 241, {1444,1796,1805,1825,1301,1814,0,0,0,0,0,0,0,0},{31576,31882,31912,0,0,0,0,0},{1920,1377,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {4748, 243, 280, 274, 1982, 4765, 0, 0, {26445, 27838, 31942, 31949, 31959, 31964, 31971}, {31978, 4108, 31982, 4839, 31987, 31992, 31997}, {4398, 32002, 32005, 32008, 32011, 32014, 32017}, {32020, 32027, 31942, 32038, 32044, 32048, 32057, 32064, 32069, 32078, 8225, 32083, 0}, {32020, 32027, 31942, 32038, 32044, 32048, 32057, 32064, 32069, 32078, 8225, 32083, 0}, {32089, 32093, 32100, 26576, 32044, 32105, 32110, 32064, 32115, 32078, 8225, 32120, 0}, {32089, 32093, 32100, 26576, 32044, 32105, 32110, 32064, 32115, 32078, 8225, 32120, 0}, 2, 1, 239, 241, {243,14,1336,1327,1301,0,0,0,0,0,0,0,0,0},{4748,4974,3732,0,0,0,0,0},{274,1377,4983,4989,4999,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {32124, 243, 280, 274, 1982, 4765, 0, 0, {32152, 32160, 32167, 32175, 32185, 32193, 1007}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {32204, 32212, 1064, 1070, 4887, 32221, 32226, 1093, 1099, 32233, 1116, 32242, 0}, {32204, 32212, 1064, 1070, 4887, 32221, 32226, 1093, 1099, 32233, 1116, 32242, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 2, 1, 239, 241, {243,14,1336,1327,1301,0,0,0,0,0,0,0,0,0},{32124,0,0,0,0,0,0,0},{274,1377,4983,4989,4999,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {4748, 243, 280, 274, 1982, 4765, 32251, 32256, {32261, 32269, 32279, 32289, 32298, 32308, 32316}, {32326, 32330, 32335, 32339, 32343, 32347, 32351}, {2090, 2463, 2752, 2463, 2752, 2469, 2090}, {2754, 2761, 2769, 2775, 2781, 2785, 2790, 32355, 32364, 32375, 32384, 32394, 0}, {2754, 2761, 2769, 2775, 2781, 2785, 2790, 32355, 32364, 32375, 32384, 32394, 0}, {2838, 2842, 2846, 2851, 2781, 2855, 2859, 2863, 2867, 2871, 2875, 2879, 0}, {2838, 2842, 2846, 2851, 2781, 2855, 2859, 2863, 2867, 2871, 2875, 2879, 0}, 0, 0, 239, 241, {243,14,1336,1327,1301,0,0,0,0,0,0,0,0,0},{4748,4974,3732,0,0,0,0,0},{274,1377,4983,4989,4999,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {32404, 32422, 1394, 1377, 32433, 3773, 32449, 32454, {32459, 32484, 32513, 32538, 32551, 32566, 32583}, {32598, 32603, 32608, 32613, 32618, 32623, 8534}, {32628, 32628, 32631, 8545, 8548, 32628, 8545}, {32634, 32653, 32668, 32690, 32710, 32726, 32742, 32756, 32782, 32806, 32823, 32840, 0}, {32634, 32653, 32668, 32690, 32710, 32726, 32742, 32756, 32782, 32806, 32823, 32840, 0}, {32857, 32866, 32875, 32889, 32903, 32915, 32927, 32937, 32953, 32967, 32974, 32981, 0}, {32857, 32866, 32875, 32889, 32903, 32915, 32927, 32937, 32953, 32967, 32974, 32981, 0}, 0, 1, 763, 241, {32422,32988,2903,3947,32997,0,0,0,0,0,0,0,0,0},{32404,33008,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3744, 3764, 2996, 3007, 44, 3773, 0, 0, {33027, 33039, 33050, 33062, 33074, 33084, 33096}, {33111, 33116, 33121, 33126, 33131, 33136, 33141}, {0, 0, 0, 0, 0, 0, 0}, {33146, 33155, 33167, 33175, 33180, 33190, 33197, 33206, 33213, 33219, 33228, 33239, 0}, {33146, 33155, 33167, 33175, 33180, 33190, 33197, 33206, 33213, 33219, 33228, 33239, 0}, {33247, 33252, 33257, 33262, 33267, 33272, 33277, 33131, 33282, 33287, 33292, 33297, 0}, {33247, 33252, 33257, 33262, 33267, 33272, 33277, 33131, 33282, 33287, 33292, 33297, 0}, 0, 0, 239, 241, {3764,3940,3947,3956,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {5487, 243, 280, 274, 1982, 55, 6008, 6013, {33302, 33315, 33323, 33332, 33342, 33352, 33361}, {33373, 33377, 33381, 33385, 33389, 33393, 33397}, {2752, 2471, 2463, 7414, 12319, 5695, 2090}, {33401, 33415, 33426, 33435, 33446, 33458, 33472, 33484, 33497, 33510, 33522, 33535, 0}, {33401, 33415, 33426, 33435, 33446, 33458, 33472, 33484, 33497, 33510, 33522, 33535, 0}, {33549, 33554, 33560, 33566, 33571, 33577, 33583, 33588, 33594, 33599, 18002, 33605, 0}, {33549, 33554, 33560, 33566, 33571, 33577, 33583, 33588, 33594, 33599, 18002, 33605, 0}, 2, 0, 239, 241, {243,14,1320,2903,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,35,3007,0,0,0,0,0,0,0,0},{280,1394,23,2996,0,0,0,0,0}},
+       {1, 14, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 6, 239, 241, {14,243,0,0,0,0,0,0,0,0,0,0,0,0},{1,254,0,0,0,0,0,0},{35,274,0,0,0,0,0,0,0,0,0,0},{23,280,0,0,0,0,0,0,0}},
+       {289, 308, 323, 338, 350, 55, 366, 378, {390, 403, 424, 439, 450, 469, 480}, {493, 498, 503, 508, 513, 518, 523}, {528, 531, 534, 537, 540, 531, 537}, {543, 556, 573, 582, 593, 600, 607, 614, 627, 646, 663, 678, 0}, {543, 556, 573, 582, 593, 600, 607, 614, 627, 646, 663, 678, 0}, {695, 701, 573, 711, 593, 600, 607, 719, 727, 737, 745, 755, 0}, {695, 701, 573, 711, 593, 600, 607, 719, 727, 737, 745, 755, 0}, 2, 1, 763, 241, {308,765,781,797,0,0,0,0,0,0,0,0,0,0},{289,814,832,857,0,0,0,0},{338,881,0,0,0,0,0,0,0,0,0,0},{323,892,0,0,0,0,0,0,0}},
+       {906, 243, 280, 274, 932, 55, 946, 951, {956, 965, 973, 981, 990, 997, 1007}, {1016, 1019, 1022, 1025, 1028, 1031, 1034}, {1037, 1039, 1041, 1043, 1045, 1047, 1049}, {1051, 1057, 1064, 1070, 1076, 1081, 1086, 1093, 1099, 1108, 1116, 1125, 0}, {1134, 1143, 1153, 1162, 1172, 1180, 1188, 1198, 1208, 1220, 1232, 1244, 0}, {1256, 1261, 1064, 1267, 1076, 1081, 1272, 1277, 1281, 1286, 1291, 1296, 0}, {1256, 1261, 1064, 1267, 1076, 1081, 1272, 1277, 1281, 1286, 1291, 1296, 0}, 2, 1, 239, 241, {243,14,1301,1312,1320,1327,1336,0,0,0,0,0,0,0},{906,1345,1361,0,0,0,0,0},{274,1377,1382,0,0,0,0,0,0,0,0,0},{280,1394,1402,0,0,0,0,0,0}},
+       {1422, 1444, 1948, 1928, 1453, 1469, 1482, 1489, {1496, 1506, 1516, 1526, 1536, 1546, 1556}, {33611, 33618, 33625, 33632, 33639, 33646, 33653}, {1615, 1619, 1623, 1627, 1631, 1635, 1639}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, 0, 0, 239, 241, {1444,1814,1301,0,0,0,0,0,0,0,0,0,0,0},{1422,6639,0,0,0,0,0,0},{1928,1920,274,1377,0,0,0,0,0,0,0,0},{1948,1937,280,1394,0,0,0,0,0}},
+       {1960, 1973, 1394, 1377, 1982, 55, 1992, 1997, {2002, 2010, 2020, 2028, 2036, 2045, 2052}, {2059, 2062, 2065, 2069, 2072, 2076, 2080}, {2083, 2085, 2087, 2090, 2092, 2085, 2090}, {2095, 2101, 2107, 2115, 2121, 2129, 2137, 2147, 2153, 2161, 2169, 2178, 0}, {2187, 2193, 2200, 2208, 2214, 2222, 2230, 2240, 2153, 2246, 2254, 2264, 0}, {2273, 2276, 2279, 2282, 2285, 2288, 2291, 2294, 2297, 2300, 2304, 2308, 0}, {2273, 2276, 2279, 2282, 2285, 2288, 2291, 2294, 2297, 2300, 2304, 2308, 0}, 2, 1, 763, 241, {1973,2312,1301,1796,1836,0,0,0,0,0,0,0,0,0},{1960,0,0,0,0,0,0,0},{1377,274,2319,2327,0,0,0,0,0,0,0,0},{1394,280,2332,2343,0,0,0,0,0}},
+       {1960, 2351, 280, 274, 1982, 2362, 2370, 2375, {2380, 2388, 2395, 2403, 2410, 2418, 2425}, {2433, 2438, 2442, 2446, 2450, 2454, 2458}, {2090, 2463, 2465, 2467, 2465, 2469, 2471}, {2473, 2480, 2488, 2494, 2500, 2504, 2509, 2514, 2521, 2531, 2539, 2548, 0}, {2473, 2480, 2488, 2494, 2500, 2504, 2509, 2514, 2521, 2531, 2539, 2548, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, 2, 1, 2601, 241, {2351,1327,1301,2603,0,0,0,0,0,0,0,0,0,0},{1960,2614,0,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {2628, 2647, 280, 274, 1982, 55, 2658, 2664, {2671, 2679, 2686, 2695, 2704, 2715, 2723}, {2731, 2734, 2737, 2740, 2743, 2746, 2749}, {2090, 2463, 2752, 2463, 2752, 2469, 2090}, {2754, 2761, 2769, 2775, 2781, 2785, 2790, 2795, 2802, 2812, 2820, 2829, 0}, {2754, 2761, 2769, 2775, 2781, 2785, 2790, 2795, 2802, 2812, 2820, 2829, 0}, {2838, 2842, 2846, 2851, 2781, 2855, 2859, 2863, 2867, 2871, 2875, 2879, 0}, {2838, 2842, 2846, 2851, 2781, 2855, 2859, 2863, 2867, 2871, 2875, 2879, 0}, 2, 1, 763, 241, {2647,2883,1336,2895,2903,1973,1301,0,0,0,0,0,0,0},{2628,1960,2910,0,0,0,0,0},{274,1377,2327,2922,0,0,0,0,0,0,0,0},{280,2933,2947,2962,0,0,0,0,0}},
+       {2969, 2987, 2996, 3007, 1982, 55, 3015, 3022, {3029, 3044, 3059, 3070, 3085, 3098, 3117}, {3132, 3139, 3146, 3153, 3160, 3167, 3174}, {3181, 3184, 3187, 3187, 3190, 3190, 3193}, {3196, 3217, 3240, 3255, 3272, 3283, 3298, 3313, 3332, 3355, 3374, 3393, 0}, {3414, 3435, 3458, 3473, 3490, 3501, 3516, 3531, 3550, 3573, 3592, 3611, 0}, {3632, 3639, 3646, 3653, 3660, 3667, 3676, 3685, 3692, 3699, 3706, 3713, 0}, {3632, 3639, 3646, 3653, 3660, 3667, 3676, 3685, 3692, 3699, 3706, 3713, 0}, 2, 1, 239, 241, {2987,243,1320,14,3720,1301,0,0,0,0,0,0,0,0},{2969,3732,0,0,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {3744, 3764, 2996, 3007, 44, 3773, 3781, 3784, {3787, 3794, 3801, 3809, 3819, 3828, 3835}, {3844, 3848, 3852, 3856, 3860, 3864, 3868}, {2090, 2463, 2465, 3872, 2465, 2469, 2090}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, 0, 0, 239, 241, {3764,3940,3947,3956,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {4280, 1973, 1394, 1377, 1982, 4297, 4309, 4313, {4317, 4329, 4341, 4351, 4365, 4375, 4387}, {4398, 4401, 4404, 4407, 4410, 4413, 4416}, {2090, 2463, 2465, 4419, 2465, 2085, 2471}, {4421, 4430, 4439, 4449, 4458, 4467, 4476, 4486, 4493, 4501, 4509, 4519, 0}, {4528, 4539, 4550, 4562, 4573, 4584, 4595, 4607, 4616, 4626, 4636, 4648, 0}, {4659, 4665, 4671, 4678, 4684, 4690, 4696, 4703, 4707, 4712, 4717, 4724, 0}, {4659, 4665, 4671, 4678, 4684, 4690, 4696, 4703, 4707, 4712, 4717, 4724, 0}, 2, 1, 763, 241, {1973,2647,2903,1301,0,0,0,0,0,0,0,0,0,0},{4280,4730,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {4748, 243, 280, 274, 1982, 4765, 3781, 3784, {4772, 4781, 4787, 4793, 4802, 4808, 4817}, {4824, 4829, 4834, 4839, 4844, 4849, 4854}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4859, 4867, 4876, 4881, 4887, 4891, 4896, 4904, 4910, 4920, 1116, 4928, 0}, {4859, 4867, 4876, 4881, 4887, 4891, 4896, 4904, 4910, 4920, 1116, 4928, 0}, {4938, 4944, 4876, 4951, 4887, 4891, 4956, 4904, 4962, 1286, 1291, 4968, 0}, {4938, 4944, 4876, 4951, 4887, 4891, 4956, 4904, 4962, 1286, 1291, 4968, 0}, 2, 1, 239, 241, {243,14,1336,1327,1301,0,0,0,0,0,0,0,0,0},{4748,4974,3732,0,0,0,0,0},{274,1377,4983,4989,4999,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {5007, 243, 280, 274, 1982, 55, 5025, 5038, {5049, 5067, 5081, 5099, 5117, 5135, 5151}, {5165, 5177, 5189, 5201, 5213, 5225, 5237}, {5244, 5247, 5250, 5253, 5256, 5259, 5262}, {5265, 5276, 5289, 5296, 5307, 5314, 5323, 5332, 5345, 5358, 5373, 5386, 0}, {5265, 5276, 5289, 5296, 5307, 5314, 5323, 5332, 5345, 5358, 5373, 5386, 0}, {5397, 5406, 5289, 5415, 5307, 5424, 5433, 5442, 5451, 5460, 5469, 5478, 0}, {5397, 5406, 5289, 5415, 5307, 5424, 5433, 5442, 5451, 5460, 5469, 5478, 0}, 0, 0, 239, 241, {243,5487,14,1,1327,2351,5500,1301,5513,5530,0,0,0,0},{5007,5487,5540,5562,5513,0,0,0},{274,35,0,0,0,0,0,0,0,0,0,0},{280,23,0,0,0,0,0,0,0}},
+       {5583, 5597, 1394, 1377, 5609, 5620, 5628, 5632, {5636, 5646, 5654, 5659, 5666, 5679, 5687}, {4134, 5695, 4419, 5697, 5701, 2085, 5704}, {4134, 5695, 4419, 5708, 5701, 2085, 5708}, {5711, 5719, 5728, 5737, 5746, 5753, 5761, 5769, 5779, 5790, 2539, 2548, 0}, {5711, 5719, 5728, 5737, 5746, 5753, 5761, 5769, 5779, 5790, 2539, 2548, 0}, {5799, 1261, 5804, 5811, 5817, 5823, 5829, 5835, 5840, 5847, 1291, 5852, 0}, {5799, 1261, 5804, 5811, 5817, 5823, 5829, 5835, 5840, 5847, 1291, 5852, 0}, 0, 1, 763, 241, {5597,5857,1301,5871,0,0,0,0,0,0,0,0,0,0},{5583,0,0,0,0,0,0,0},{1377,274,3007,0,0,0,0,0,0,0,0,0},{1394,280,2996,0,0,0,0,0,0}},
+       {1960, 1973, 280, 274, 1982, 2362, 5880, 5885, {5890, 5901, 5912, 5926, 5940, 5952, 5964}, {5976, 5980, 5985, 5990, 5995, 5999, 6004}, {1049, 6008, 6010, 6008, 6013, 6013, 1039}, {6015, 6023, 4876, 6032, 6039, 6044, 6051, 6058, 2521, 5790, 6066, 6076, 0}, {6015, 6023, 4876, 6032, 6039, 6044, 6051, 6058, 2521, 5790, 6066, 6076, 0}, {2557, 2561, 2565, 2569, 6039, 6085, 6090, 6095, 2585, 2589, 6101, 6106, 0}, {2557, 2561, 2565, 2569, 6039, 6085, 6090, 6095, 2585, 2589, 6101, 6106, 0}, 2, 1, 763, 241, {1973,1336,6110,6122,1301,6136,0,0,0,0,0,0,0,0},{1960,2614,0,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {4748, 243, 280, 274, 1982, 55, 6145, 6148, {6151, 6160, 6168, 6177, 6188, 6197, 6206}, {4104, 4108, 2565, 6213, 6217, 6221, 6225}, {2752, 2471, 2463, 2463, 6229, 4134, 2090}, {6231, 6239, 6248, 6254, 6261, 6268, 6275, 6282, 6289, 6299, 6307, 6316, 0}, {6325, 6333, 4150, 6342, 6349, 6356, 6363, 4173, 6370, 6380, 1116, 6388, 0}, {6397, 2561, 2565, 2569, 6401, 6405, 6409, 4219, 6413, 6417, 2593, 4227, 0}, {6397, 2561, 2565, 2569, 6401, 6405, 6409, 4219, 6413, 6417, 2593, 4227, 0}, 2, 1, 239, 241, {243,3720,14,6421,1320,1301,0,0,0,0,0,0,0,0},{4748,6429,3732,0,0,0,0,0},{274,1377,2327,4983,0,0,0,0,0,0,0,0},{280,2343,6438,0,0,0,0,0,0}},
+       {1422, 1814, 1394, 1377, 1453, 1469, 6447, 6454, {6461, 6471, 6481, 6491, 6501, 6511, 6521}, {1615, 6531, 6535, 6539, 6543, 6547, 6551}, {1615, 6531, 6535, 6539, 6543, 6547, 6551}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 239, 241, {1814,1857,1843,1444,6582,6601,6618,1301,0,0,0,0,0,0},{1422,6639,6663,6690,0,0,0,0},{1377,274,1920,1928,0,0,0,0,0,0,0,0},{1394,280,1937,1948,0,0,0,0,0}},
+       {6719, 1301, 1937, 1920, 6748, 6765, 6779, 6786, {6793, 6803, 6813, 6823, 6833, 6843, 6853}, {6863, 6867, 6871, 6875, 6879, 6883, 6887}, {6863, 6867, 6871, 6875, 6879, 6883, 6887}, {6891, 6896, 6901, 6906, 6911, 6916, 6921, 6926, 6931, 6936, 6942, 6948, 0}, {6891, 6896, 6901, 6906, 6911, 6916, 6921, 6926, 6931, 6936, 6942, 6948, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 2601, 241, {1301,5871,1836,1796,0,0,0,0,0,0,0,0,0,0},{6719,6954,6978,7005,7027,7058,0,0},{1920,1928,1377,274,0,0,0,0,0,0,0,0},{1937,1948,1394,280,0,0,0,0,0}},
+       {4748, 7084, 1394, 1377, 1982, 55, 946, 951, {7093, 7100, 7108, 7116, 7125, 7135, 7143}, {7152, 4401, 7155, 7158, 7161, 7164, 7167}, {7170, 2463, 2752, 3872, 2752, 4134, 7170}, {7172, 7180, 7189, 2494, 7195, 2504, 2509, 7199, 2521, 2531, 2539, 2548, 0}, {7172, 7180, 7189, 2494, 7195, 2504, 2509, 7199, 2521, 2531, 2539, 2548, 0}, {2557, 2561, 7208, 2569, 7195, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 7208, 2569, 7195, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, 2, 1, 2601, 241, {7084,2312,1327,14,1336,2883,1301,0,0,0,0,0,0,0},{4748,6429,3732,4974,0,0,0,0},{1377,274,2327,7212,7224,0,0,0,0,0,0,0},{1394,280,7236,7251,0,0,0,0,0}},
+       {1960, 2647, 280, 274, 1982, 2362, 946, 951, {2380, 2388, 2395, 2403, 2410, 2418, 2425}, {7266, 7271, 7275, 7279, 7283, 7287, 7291}, {2090, 2463, 2465, 2467, 2465, 2469, 2471}, {2473, 2480, 4876, 2494, 4887, 2504, 2509, 2514, 2521, 2531, 2539, 6076, 0}, {2473, 2480, 4876, 2494, 4887, 2504, 2509, 2514, 2521, 2531, 2539, 6076, 0}, {2557, 2561, 2565, 2569, 4887, 2573, 2577, 2581, 2585, 2589, 2593, 6106, 0}, {2557, 2561, 2565, 2569, 4887, 2573, 2577, 2581, 2585, 2589, 2593, 6106, 0}, 2, 1, 763, 241, {2647,1336,2903,1301,2883,0,0,0,0,0,0,0,0,0},{1960,2614,0,0,0,0,0,0},{274,1377,7296,4983,0,0,0,0,0,0,0,0},{280,1394,7307,6438,0,0,0,0,0}},
+       {3732, 1301, 280, 274, 1982, 4765, 3781, 3784, {7321, 7331, 7345, 7352, 7359, 7368, 2052}, {7376, 7383, 7388, 7392, 7397, 7402, 7406}, {2083, 2085, 3872, 7411, 7414, 2085, 2090}, {7416, 7425, 7430, 7437, 2500, 7447, 7456, 7463, 7473, 7483, 2169, 7496, 0}, {7506, 7515, 7522, 7528, 7537, 7542, 7550, 7556, 7565, 7575, 7589, 7599, 0}, {7607, 7611, 2565, 7615, 2500, 7619, 7623, 7627, 7631, 7635, 7640, 7644, 0}, {7607, 7611, 2565, 7615, 2500, 7619, 7623, 7627, 7631, 7635, 7640, 7644, 0}, 2, 1, 2601, 241, {1301,5871,0,0,0,0,0,0,0,0,0,0,0,0},{3732,5487,0,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {7648, 243, 280, 274, 4034, 7676, 3781, 3784, {4049, 7689, 7703, 7716, 7729, 7742, 4096}, {4104, 7754, 7758, 7762, 7766, 7770, 4125}, {2752, 2090, 2465, 7774, 7774, 2090, 2090}, {7776, 7784, 7794, 1070, 7801, 7806, 7812, 4173, 7818, 7827, 7835, 7844, 0}, {7776, 7784, 7794, 1070, 7801, 7806, 7812, 4173, 7818, 7827, 7835, 7844, 0}, {2557, 7853, 2565, 4215, 4887, 2573, 2577, 4219, 6413, 7857, 2593, 7861, 0}, {2557, 7853, 2565, 4215, 4887, 2573, 2577, 4219, 6413, 7857, 2593, 7861, 0}, 0, 0, 239, 241, {243,14,2987,1320,1327,2351,2312,7084,1336,2647,2883,2903,1973,1301},{7648,4258,0,0,0,0,0,0},{274,0,0,0,0,0,0,0,0,0,0,0},{280,0,0,0,0,0,0,0,0}},
+       {2969, 243, 280, 274, 1982, 55, 7865, 7868, {7871, 7880, 4787, 7890, 7898, 7906, 7915}, {7921, 7924, 4401, 7928, 7931, 7935, 2080}, {2752, 6229, 2463, 2463, 6229, 4134, 2090}, {7938, 7946, 4876, 7953, 7960, 7965, 7975, 7983, 7989, 7999, 2539, 2548, 0}, {7938, 7946, 4876, 7953, 7960, 7965, 7975, 7983, 7989, 7999, 2539, 2548, 0}, {8007, 8014, 4876, 4951, 7960, 8020, 8027, 7983, 8032, 1286, 1291, 5852, 0}, {8007, 8014, 4876, 4951, 7960, 8020, 8027, 7983, 8032, 1286, 1291, 5852, 0}, 2, 1, 239, 241, {243,14,1312,8038,1320,243,1301,0,0,0,0,0,0,0},{2969,3732,4974,0,0,0,0,0},{274,1377,8046,8058,8069,8077,8087,8096,2922,8102,8110,8115},{280,1394,8118,8133,2947,2933,8147,8160,2962}},
+       {3732, 2647, 280, 274, 1982, 4765, 3781, 3784, {8172, 8182, 8187, 8194, 8203, 8207, 8214}, {8225, 8228, 8231, 2740, 8234, 8237, 8240}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {8244, 8253, 8263, 8270, 4887, 8278, 8284, 2514, 8290, 8301, 8311, 8321, 0}, {8244, 8253, 8263, 8270, 4887, 8278, 8284, 2514, 8290, 8301, 8311, 8321, 0}, {8331, 8336, 4834, 8341, 4887, 8346, 8351, 5835, 4962, 1286, 1291, 5852, 0}, {8331, 8336, 4834, 8341, 4887, 8346, 8351, 5835, 4962, 1286, 1291, 5852, 0}, 0, 1, 763, 241, {2647,1973,1301,0,0,0,0,0,0,0,0,0,0,0},{3732,0,0,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {814, 2647, 1394, 1377, 1982, 3773, 8356, 8376, {8402, 8425, 424, 8448, 8459, 8474, 8489}, {8504, 8509, 8514, 8519, 8524, 8529, 8534}, {8539, 8542, 8539, 8545, 8548, 8542, 8545}, {8551, 8564, 8579, 8588, 8601, 8608, 8617, 8626, 8639, 8656, 8671, 8684, 0}, {8699, 8712, 8727, 8738, 8751, 8758, 8767, 8776, 8791, 8808, 8823, 8836, 0}, {8851, 8859, 8579, 8869, 8601, 8608, 8617, 8877, 8885, 8895, 8903, 8913, 0}, {8851, 8859, 8579, 8869, 8601, 8608, 8617, 8877, 8885, 8895, 8903, 8913, 0}, 0, 1, 763, 241, {2647,1336,2903,14,1301,0,0,0,0,0,0,0,0,0},{814,289,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {8921, 8935, 1394, 1377, 44, 2362, 3781, 3784, {8945, 8954, 8966, 8973, 8981, 8991, 8997}, {9004, 9008, 9012, 9016, 9020, 9025, 9029}, {9033, 9035, 9037, 1049, 9039, 9035, 1049}, {9042, 9052, 9061, 9069, 9077, 9085, 9092, 9099, 9107, 2169, 9113, 9121, 0}, {9130, 9140, 9149, 9157, 9165, 9173, 9180, 9187, 9196, 7589, 9202, 9212, 0}, {9221, 9225, 9230, 9235, 9239, 7623, 9243, 9247, 9251, 7640, 9255, 9259, 0}, {9221, 9225, 9230, 9235, 9239, 7623, 9243, 9247, 9251, 7640, 9255, 9259, 0}, 0, 1, 763, 241, {8935,9263,6110,9271,9283,9293,9303,1301,0,0,0,0,0,0},{8921,9315,9330,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {1960, 9350, 1394, 1377, 1982, 55, 9361, 9372, {9383, 9391, 9400, 9407, 9414, 9423, 2052}, {2059, 2062, 9430, 2069, 9433, 9437, 2080}, {2083, 2085, 9440, 2090, 9442, 2085, 2090}, {5711, 5719, 9445, 6032, 9451, 6085, 6090, 2514, 2521, 5790, 2539, 2548, 0}, {9456, 9465, 7522, 9475, 9483, 9489, 9495, 9501, 9509, 9519, 9528, 9537, 0}, {2557, 2561, 2565, 2569, 9451, 6085, 6090, 2581, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 9451, 6085, 6090, 2581, 2585, 2589, 2593, 2597, 0}, 2, 1, 9546, 241, {9350,1973,9549,2903,2647,1336,1301,0,0,0,0,0,0,0},{1960,2614,0,0,0,0,0,0},{1377,274,2327,0,0,0,0,0,0,0,0,0},{1394,280,2343,0,0,0,0,0,0}},
+       {1301, 1301, 9558, 9569, 9577, 3773, 9585, 9588, {9591, 9598, 9607, 9616, 9628, 9636, 9645}, {9655, 9659, 3928, 9664, 9669, 9673, 9677}, {2752, 5695, 2463, 2463, 9681, 2085, 2090}, {9683, 9689, 4876, 9696, 2500, 9702, 9710, 9717, 9723, 9731, 9737, 9745, 0}, {9683, 9689, 4876, 9696, 2500, 9702, 9710, 9717, 9723, 9731, 9737, 9745, 0}, {2838, 9753, 3928, 9757, 9761, 9765, 9769, 9773, 9677, 9777, 9781, 9786, 0}, {2838, 9753, 3928, 9757, 9761, 9765, 9769, 9773, 9677, 9777, 9781, 9786, 0}, 0, 1, 2601, 241, {1301,5871,0,0,0,0,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0},{9569,274,0,0,0,0,0,0,0,0,0,0},{9558,280,0,0,0,0,0,0,0}},
+       {9790, 1301, 280, 274, 1982, 9808, 9821, 9824, {9827, 9835, 9843, 2403, 2410, 2418, 9850}, {9858, 9863, 9868, 2446, 2450, 2454, 9872}, {2090, 2463, 2465, 2467, 2465, 2469, 2471}, {7172, 7180, 4876, 2494, 2500, 2504, 2509, 9877, 2521, 2531, 2539, 2548, 0}, {7172, 7180, 4876, 2494, 2500, 2504, 2509, 9877, 2521, 2531, 2539, 2548, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, 2, 1, 2601, 241, {1301,5871,0,0,0,0,0,0,0,0,0,0,0,0},{9790,9885,0,0,0,0,0,0},{274,1377,9908,0,0,0,0,0,0,0,0,0},{280,1394,9918,0,0,0,0,0,0}},
+       {3732, 2987, 1394, 1377, 1982, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 239, 241, {2987,1320,14,243,9931,9942,1301,0,0,0,0,0,0,0},{3732,9954,9970,0,0,0,0,0},{1377,274,3007,35,0,0,0,0,0,0,0,0},{1394,280,2996,23,0,0,0,0,0}},
+       {10012, 2647, 280, 274, 1982, 55, 3781, 3784, {10030, 10036, 10046, 10052, 10063, 10073, 10078}, {10088, 10092, 10096, 10100, 10105, 10109, 10113}, {2085, 2085, 2090, 10117, 2085, 7414, 7414}, {10120, 10125, 10132, 10137, 10143, 10150, 10158, 10165, 10174, 10181, 10186, 10193, 0}, {10120, 10125, 10132, 10137, 10143, 10150, 10158, 10165, 10174, 10181, 10186, 10193, 0}, {10201, 10205, 3928, 10210, 3897, 10214, 10218, 10222, 10227, 10231, 10235, 10239, 0}, {10201, 10205, 3928, 10210, 3897, 10214, 10218, 10222, 10227, 10231, 10235, 10239, 0}, 0, 1, 763, 241, {2647,1336,1301,0,0,0,0,0,0,0,0,0,0,0},{10012,5487,0,0,0,0,0,0},{274,0,0,0,0,0,0,0,0,0,0,0},{280,0,0,0,0,0,0,0,0}},
+       {3991, 243, 2996, 3007, 44, 55, 10243, 10248, {10255, 10266, 10273, 10282, 10289, 10302, 10311}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {10320, 10331, 10342, 10351, 10362, 10367, 10374, 10385, 10394, 10405, 10418, 10429, 0}, {10320, 10331, 10342, 10351, 10362, 10367, 10374, 10385, 10394, 10405, 10418, 10429, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {5487, 243, 1394, 1377, 1982, 55, 3781, 3784, {10440, 10447, 10453, 10460, 10465, 10471, 10477}, {10483, 10487, 10491, 10495, 10499, 10503, 10507}, {2463, 2090, 2090, 10511, 4419, 4132, 2090}, {10513, 10521, 10530, 2775, 10536, 2785, 2790, 10540, 2802, 2812, 2820, 10548, 0}, {10513, 10521, 10530, 2775, 10536, 2785, 2790, 10540, 2802, 2812, 2820, 10548, 0}, {2838, 2842, 3928, 2851, 10536, 2855, 2859, 10557, 2867, 2871, 2875, 10561, 0}, {2838, 2842, 3928, 2851, 10536, 2855, 2859, 10557, 2867, 2871, 2875, 10561, 0}, 0, 0, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {10565, 2647, 1394, 1377, 10583, 4765, 10599, 10604, {10609, 10622, 10641, 10658, 10671, 10684, 10701}, {10714, 8509, 8514, 8519, 8524, 8529, 8534}, {10719, 8542, 8539, 8545, 8548, 8542, 8545}, {10722, 10735, 10746, 10763, 10778, 10793, 10808, 10821, 10836, 10853, 10868, 10885, 0}, {10900, 10911, 10924, 10939, 10952, 10965, 10978, 10989, 11002, 11017, 11030, 11049, 0}, {11062, 11069, 11076, 11083, 11090, 11097, 11104, 11111, 11118, 11125, 11132, 11139, 0}, {11062, 11069, 11076, 11083, 11090, 11097, 11104, 11111, 11118, 11125, 11132, 11139, 0}, 0, 1, 763, 241, {2647,1336,1301,0,0,0,0,0,0,0,0,0,0,0},{10565,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3732, 2647, 1394, 1377, 1982, 4765, 11146, 11159, {11172, 11187, 11208, 11223, 11236, 11249, 11264}, {493, 498, 11277, 508, 11282, 518, 523}, {528, 531, 11287, 537, 540, 531, 537}, {11290, 11307, 11316, 11331, 11348, 11363, 11378, 11391, 11406, 11423, 11444, 11461, 0}, {11290, 11307, 11316, 11331, 593, 11363, 11378, 11391, 11406, 11423, 11444, 11461, 0}, {11476, 11483, 11490, 11497, 11504, 11511, 11518, 11525, 11532, 11539, 11546, 11553, 0}, {11476, 11483, 11490, 11497, 11504, 11511, 11518, 11525, 11532, 11539, 11546, 11553, 0}, 0, 0, 763, 241, {2647,1336,1301,0,0,0,0,0,0,0,0,0,0,0},{3732,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {1960, 1973, 1394, 1377, 1982, 2362, 1992, 11560, {11565, 11573, 11584, 11590, 11596, 11605, 2052}, {9004, 9008, 2450, 11611, 9020, 9025, 11615}, {9033, 9035, 1041, 1049, 9039, 9035, 1049}, {2473, 2480, 9445, 2494, 2500, 11619, 11625, 11631, 2521, 2531, 2539, 2548, 0}, {2473, 2480, 9445, 2494, 2500, 11619, 11625, 11631, 2521, 2531, 2539, 2548, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 11638, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 11638, 2585, 2589, 2593, 2597, 0}, 0, 1, 763, 241, {1973,2903,9350,2647,9549,1336,11642,1301,0,0,0,0,0,0},{1960,2614,2628,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {11653, 11672, 1394, 1377, 11682, 2362, 11698, 11703, {11708, 11719, 11730, 11741, 11752, 11763, 11769}, {2085, 9681, 2465, 4419, 2083, 10511, 2471}, {2085, 9681, 2465, 4419, 2083, 10511, 2471}, {11778, 11786, 11795, 11802, 4887, 11809, 11815, 2514, 2521, 11821, 2539, 11830, 0}, {11778, 11786, 11795, 11802, 4887, 11809, 11815, 2514, 2521, 11821, 2539, 11830, 0}, {11840, 11845, 11795, 2569, 4887, 11809, 11815, 2581, 11851, 2589, 2593, 11856, 0}, {11840, 11845, 11795, 2569, 4887, 11809, 11815, 2581, 11851, 2589, 2593, 11856, 0}, 2, 1, 763, 241, {11672,2647,1336,1301,0,0,0,0,0,0,0,0,0,0},{11653,11861,2628,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {11881, 5597, 1394, 1377, 5609, 2362, 11908, 11925, {11939, 11950, 11960, 11969, 11980, 11992, 12003}, {12013, 12016, 12019, 12022, 12025, 12028, 12031}, {2090, 2085, 2467, 2465, 7414, 2085, 2090}, {12034, 12044, 2488, 12055, 12064, 12070, 12078, 12086, 12094, 12105, 12114, 12124, 0}, {12034, 12044, 2488, 12055, 12064, 12070, 12078, 12086, 12094, 12105, 12114, 12124, 0}, {4938, 1261, 2488, 8341, 12064, 12134, 12140, 5835, 4962, 5847, 1291, 5852, 0}, {4938, 1261, 2488, 8341, 12064, 12134, 12140, 5835, 4962, 5847, 1291, 5852, 0}, 0, 1, 763, 241, {5597,12146,1301,0,0,0,0,0,0,0,0,0,0,0},{11881,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {12156, 1825, 280, 274, 12178, 12193, 12205, 11560, {12211, 12223, 12235, 12247, 12261, 12276, 12289}, {12303, 12016, 12306, 12022, 12309, 12312, 12315}, {2090, 2085, 12319, 2465, 4419, 2085, 9442}, {12321, 12328, 12336, 12342, 12351, 12360, 12370, 12376, 12387, 12397, 12404, 12414, 0}, {12422, 12429, 12437, 12443, 12452, 12461, 12471, 12477, 12488, 12498, 12505, 12515, 0}, {12523, 12529, 12534, 12539, 12544, 12549, 12554, 12560, 12566, 12572, 12578, 12585, 0}, {12523, 12529, 12534, 12539, 12544, 12549, 12554, 12560, 12566, 12572, 12578, 12585, 0}, 2, 1, 763, 241, {1825,1301,0,0,0,0,0,0,0,0,0,0,0,0},{12156,0,0,0,0,0,0,0},{274,0,0,0,0,0,0,0,0,0,0,0},{280,0,0,0,0,0,0,0,0}},
+       {3732, 1336, 1394, 1377, 1982, 3773, 12592, 12604, {12616, 12631, 12646, 12661, 12678, 12697, 12708}, {12719, 12726, 12733, 12740, 12747, 12754, 12761}, {0, 0, 0, 0, 0, 0, 0}, {12768, 12779, 8579, 12792, 8601, 12803, 12810, 8626, 12817, 12832, 12845, 12856, 0}, {12768, 12779, 8579, 12792, 8601, 12803, 12810, 8626, 12817, 12832, 12845, 12856, 0}, {12869, 12876, 12883, 12890, 8601, 12803, 12810, 12897, 12904, 12911, 12918, 12925, 0}, {12869, 12876, 12883, 12890, 8601, 12803, 12810, 12897, 12904, 12911, 12918, 12925, 0}, 0, 1, 763, 241, {1336,1301,0,0,0,0,0,0,0,0,0,0,0,0},{3732,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,0,0,0,0,0,0,0,0}},
+       {3744, 3956, 23, 35, 44, 3773, 12932, 12952, {12969, 12982, 12995, 13011, 13028, 13043, 13052}, {12969, 12982, 12995, 13011, 13028, 13043, 13052}, {13061, 13064, 13067, 13070, 13073, 13076, 13079}, {13082, 13095, 13106, 13115, 13126, 13131, 13140, 13151, 13158, 13173, 13184, 13197, 0}, {13210, 13225, 13106, 13115, 13238, 13131, 13245, 13151, 13158, 13173, 13184, 13197, 0}, {13082, 13095, 13106, 13115, 13126, 13131, 13140, 13151, 13158, 13173, 13184, 13197, 0}, {13082, 13095, 13106, 13115, 13126, 13131, 13140, 13151, 13158, 13173, 13184, 13197, 0}, 0, 6, 239, 241, {3956,3947,0,0,0,0,0,0,0,0,0,0,0,0},{3744,3977,0,0,0,0,0,0},{35,274,0,0,0,0,0,0,0,0,0,0},{23,280,0,0,0,0,0,0,0}},
+       {5487, 243, 2996, 3007, 1982, 55, 13258, 13261, {13264, 13277, 13287, 13296, 13306, 13317, 13328}, {13340, 13343, 13348, 13353, 13358, 13363, 13368}, {13340, 13373, 13376, 13379, 13382, 13385, 13388}, {13391, 13404, 13415, 13425, 13436, 13448, 13460, 13473, 13485, 13498, 13513, 13534, 0}, {13391, 13404, 13415, 13425, 13436, 13448, 13460, 13473, 13485, 13498, 13513, 13534, 0}, {13553, 13559, 13565, 13571, 13577, 13583, 13589, 13595, 13601, 13607, 13614, 13621, 0}, {13553, 13559, 13565, 13571, 13577, 13583, 13589, 13595, 13601, 13607, 13614, 13621, 0}, 0, 1, 239, 241, {243,14,1327,2351,1301,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {13628, 2647, 1394, 1377, 44, 4765, 13641, 13649, {13657, 13670, 13691, 13710, 13731, 13750, 13763}, {13774, 13781, 13788, 13795, 13802, 13809, 13816}, {0, 0, 0, 0, 0, 0, 0}, {13823, 13838, 13853, 13862, 13873, 13884, 13897, 13910, 13925, 13944, 13963, 13980, 0}, {13823, 13838, 13853, 13862, 13873, 13884, 13897, 13910, 13925, 13944, 13963, 13980, 0}, {13999, 14006, 14013, 14020, 14027, 14034, 14041, 14048, 14055, 14062, 14069, 14076, 0}, {13999, 14006, 14013, 14020, 14027, 14034, 14041, 14048, 14055, 14062, 14069, 14076, 0}, 0, 1, 763, 241, {2647,1336,14083,243,14093,3720,1301,0,0,0,0,0,0,0},{13628,2969,14104,5487,14123,14134,14146,14163},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3732, 2647, 1394, 1377, 1982, 4765, 0, 0, {14181, 14187, 14201, 14224, 14238, 14254, 14261}, {14270, 14273, 14278, 14284, 14288, 7414, 14293}, {6567, 6555, 6557, 6559, 6561, 6563, 6565}, {14297, 14304, 10132, 14311, 3897, 14317, 14323, 14329, 14336, 14345, 14353, 14360, 0}, {14297, 14304, 10132, 14311, 3897, 14317, 14323, 14329, 14336, 14345, 14353, 14360, 0}, {14367, 7853, 2565, 2569, 14371, 14375, 14379, 14383, 14387, 2589, 14391, 14395, 0}, {14367, 7853, 2565, 2569, 14371, 14375, 14379, 14383, 14387, 2589, 14391, 14395, 0}, 0, 1, 763, 241, {2647,1336,2903,14,1301,0,0,0,0,0,0,0,0,0},{3732,5487,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {14399, 1814, 1394, 274, 14426, 3773, 3781, 3784, {14442, 14450, 14461, 14471, 14482, 14491, 14500}, {14510, 14513, 14516, 14519, 14522, 14525, 14528}, {14531, 2463, 12319, 2471, 12319, 2467, 14531}, {14533, 14543, 14551, 14559, 14567, 14575, 14582, 14590, 14598, 14605, 14611, 14618, 0}, {14533, 14543, 14551, 14559, 14567, 14575, 14582, 14590, 14598, 14605, 14611, 14618, 0}, {14626, 14630, 2565, 14634, 4887, 14638, 14642, 14646, 14650, 14654, 14658, 14662, 0}, {14626, 14630, 2565, 14634, 4887, 14638, 14642, 14646, 14650, 14654, 14658, 14662, 0}, 2, 1, 239, 241, {1814,1301,0,0,0,0,0,0,0,0,0,0,0,0},{14399,0,0,0,0,0,0,0},{274,0,0,0,0,0,0,0,0,0,0,0},{1394,280,1402,0,0,0,0,0,0}},
+       {14104, 2647, 280, 274, 1982, 55, 14666, 14687, {14704, 403, 424, 8448, 14717, 14734, 14745}, {14758, 14766, 14774, 14780, 14788, 14796, 14804}, {528, 531, 534, 537, 540, 531, 537}, {14812, 556, 573, 582, 14827, 14834, 14843, 614, 627, 646, 663, 678, 0}, {14812, 556, 573, 582, 14827, 14834, 14843, 614, 627, 646, 663, 678, 0}, {14852, 14860, 14868, 711, 14827, 14876, 14884, 719, 727, 737, 745, 14892, 0}, {14852, 14860, 14868, 711, 14827, 14876, 14884, 719, 727, 737, 745, 14892, 0}, 0, 1, 763, 241, {2647,1336,1301,0,0,0,0,0,0,0,0,0,0,0},{14104,0,0,0,0,0,0,0},{274,0,0,0,0,0,0,0,0,0,0,0},{280,0,0,0,0,0,0,0,0}},
+       {5487, 1814, 23, 35, 1982, 55, 0, 0, {14904, 14911, 14922, 14931, 14940, 14947, 14958}, {14968, 14972, 14976, 14980, 14984, 14987, 14991}, {0, 0, 0, 0, 0, 0, 0}, {14995, 15005, 15014, 15022, 15031, 15044, 15056, 15063, 15070, 15077, 15087, 15099, 0}, {14995, 15005, 15014, 15022, 15031, 15044, 15056, 15063, 15070, 15077, 15087, 15099, 0}, {15112, 15116, 15120, 15124, 15128, 15132, 15136, 15140, 15144, 15148, 15152, 15156, 0}, {15112, 15116, 15120, 15124, 15128, 15132, 15136, 15140, 15144, 15148, 15152, 15156, 0}, 0, 0, 239, 241, {1814,1857,1301,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{35,3007,274,0,0,0,0,0,0,0,0,0},{23,2996,280,0,0,0,0,0,0}},
+       {5487, 1814, 23, 35, 1982, 55, 0, 0, {15160, 15165, 15171, 15181, 15193, 15201, 15212}, {15221, 15225, 15229, 15233, 15237, 15241, 15245}, {0, 0, 0, 0, 0, 0, 0}, {15249, 15259, 15269, 15276, 15283, 2785, 15288, 15295, 15302, 15311, 15319, 15327, 0}, {15249, 15259, 15269, 15276, 15283, 2785, 15288, 15295, 15302, 15311, 15319, 15327, 0}, {2838, 2842, 14991, 15335, 15339, 2855, 2859, 15343, 2867, 2871, 2875, 15347, 0}, {2838, 2842, 14991, 15335, 15339, 2855, 2859, 15343, 2867, 2871, 2875, 15347, 0}, 0, 0, 239, 241, {1814,1857,1301,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{35,3007,274,0,0,0,0,0,0,0,0,0},{23,2996,280,0,0,0,0,0,0}},
+       {5487, 1814, 23, 35, 1982, 55, 3781, 3784, {15351, 15357, 15368, 15181, 15378, 15201, 15212}, {15387, 15391, 15395, 15233, 15237, 15241, 15245}, {2090, 2463, 15399, 2465, 2090, 5695, 2463}, {15401, 15411, 15422, 15429, 15438, 15444, 15450, 15458, 15466, 15477, 15487, 15496, 0}, {15505, 15259, 15514, 15520, 15283, 2785, 15288, 15295, 15527, 15311, 15319, 15327, 0}, {2838, 2842, 15537, 2851, 15339, 2855, 2859, 15343, 2867, 2871, 2875, 15347, 0}, {2838, 2842, 15537, 2851, 15339, 2855, 2859, 15343, 2867, 2871, 2875, 15347, 0}, 0, 0, 239, 241, {1814,1857,1301,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{35,3007,274,0,0,0,0,0,0,0,0,0},{23,2996,280,0,0,0,0,0,0}},
+       {5487, 1814, 23, 35, 1982, 55, 15541, 15545, {15549, 15556, 15564, 15572, 15581, 15591, 15598}, {2731, 8231, 2737, 15607, 2743, 15610, 2749}, {2090, 2463, 2752, 3872, 2752, 4134, 2090}, {15613, 15622, 15632, 2775, 10536, 15638, 15644, 15650, 2802, 2812, 2820, 10548, 0}, {15613, 15622, 15632, 2775, 10536, 15638, 15644, 15650, 2802, 2812, 2820, 10548, 0}, {2838, 2842, 3928, 2851, 10536, 2855, 2859, 2863, 2867, 2871, 2875, 10561, 0}, {2838, 2842, 3928, 2851, 10536, 2855, 2859, 2863, 2867, 2871, 2875, 10561, 0}, 0, 0, 239, 241, {1814,1857,1301,15659,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{35,3007,274,0,0,0,0,0,0,0,0,0},{23,2996,280,0,0,0,0,0,0}},
+       {15671, 2647, 1394, 1377, 1982, 15703, 15709, 15725, {15747, 15763, 15788, 15816, 15844, 15872, 15900}, {15919, 15929, 15939, 15949, 15959, 15969, 15979}, {15989, 15993, 15997, 15993, 16001, 16005, 16009}, {16013, 16035, 16063, 16079, 16098, 16114, 16133, 16149, 16171, 16202, 16230, 16255, 0}, {16013, 16035, 16063, 16079, 16098, 16114, 16133, 16149, 16171, 16202, 16230, 16255, 0}, {16283, 16293, 16303, 16313, 16323, 16333, 16343, 16353, 16363, 16373, 16383, 16393, 0}, {16283, 16293, 16303, 16313, 16323, 16333, 16343, 16353, 16363, 16373, 16383, 16393, 0}, 0, 1, 763, 241, {2647,1336,2903,14,1301,0,0,0,0,0,0,0,0,0},{15671,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {1960, 2351, 280, 274, 1982, 2362, 16403, 16408, {5890, 16413, 16424, 16434, 16444, 16454, 16468}, {5976, 5980, 16480, 16485, 16489, 16494, 16499}, {2090, 2463, 2465, 2463, 5695, 2469, 2471}, {2473, 2480, 4876, 6032, 4887, 2504, 2509, 2514, 2521, 2531, 2539, 6076, 0}, {2473, 2480, 4876, 6032, 4887, 2504, 2509, 2514, 2521, 2531, 2539, 6076, 0}, {2557, 2561, 2565, 2569, 4887, 2573, 2577, 2581, 2585, 2589, 2593, 6106, 0}, {2557, 2561, 2565, 2569, 4887, 2573, 2577, 2581, 2585, 2589, 2593, 6106, 0}, 2, 1, 2601, 241, {2351,1327,1301,0,0,0,0,0,0,0,0,0,0,0},{1960,0,0,0,0,0,0,0},{274,4983,0,0,0,0,0,0,0,0,0,0},{280,6438,0,0,0,0,0,0,0}},
+       {5487, 2351, 280, 274, 44, 55, 16503, 16531, {16553, 16572, 16591, 16613, 16632, 16666, 16691}, {16710, 16721, 16732, 16746, 16757, 16768, 16785}, {16796, 16800, 16807, 16814, 16821, 16828, 16835}, {16839, 16855, 16871, 16887, 16906, 16913, 16923, 16939, 16955, 16977, 16999, 17018, 0}, {16839, 16855, 16871, 16887, 16906, 16913, 16923, 16939, 16955, 16977, 16999, 17018, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 2601, 241, {2351,1327,2312,2903,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {17040, 243, 280, 274, 1982, 17065, 17079, 17082, {17085, 17094, 17103, 17113, 17123, 17133, 17145}, {17153, 17158, 17162, 17166, 17170, 17175, 17180}, {17184, 2465, 2465, 9681, 17184, 17187, 2090}, {17190, 17197, 17202, 2775, 17208, 17214, 17221, 17227, 17235, 17245, 17253, 17262, 0}, {17190, 17197, 17202, 2775, 17208, 17214, 17221, 17227, 17235, 17245, 17253, 17262, 0}, {2838, 17272, 3928, 2851, 17276, 17280, 17285, 17289, 17293, 17297, 2875, 17301, 0}, {2838, 17272, 3928, 2851, 17276, 17280, 17285, 17289, 17293, 17297, 2875, 17301, 0}, 0, 0, 239, 241, {243,1301,17306,7084,2987,0,0,0,0,0,0,0,0,0},{17040,17315,9942,0,0,0,0,0},{274,3007,1377,35,0,0,0,0,0,0,0,0},{280,2996,1394,23,0,0,0,0,0}},
+       {17334, 2647, 280, 274, 1982, 17352, 17366, 17371, {17376, 17388, 17399, 17413, 17425, 17435, 17445}, {17456, 17461, 17466, 17471, 17476, 17481, 17486}, {2090, 4134, 2463, 6229, 2752, 15399, 2471}, {17491, 17508, 17521, 17535, 17548, 17561, 17574, 17588, 17600, 17614, 17628, 17642, 0}, {17491, 17508, 17521, 17535, 17548, 17561, 17574, 17588, 17600, 17614, 17628, 17642, 0}, {17655, 17662, 17667, 17672, 17676, 17681, 17686, 17691, 17696, 17703, 17708, 17714, 0}, {17655, 17662, 17667, 17672, 17676, 17681, 17686, 17691, 17696, 17703, 17708, 17714, 0}, 2, 1, 763, 241, {2647,1336,2903,1301,0,0,0,0,0,0,0,0,0,0},{17334,0,0,0,0,0,0,0},{274,1377,4983,0,0,0,0,0,0,0,0,0},{280,1394,6438,0,0,0,0,0,0}},
+       {5487, 243, 1394, 1377, 1982, 55, 18012, 18015, {18019, 18024, 10453, 10460, 18030, 18037, 10477}, {18044, 18048, 10491, 10495, 18052, 10503, 10507}, {12319, 14531, 2090, 10511, 4419, 4132, 2090}, {10513, 10521, 18056, 2775, 10536, 2855, 18060, 18066, 2802, 2812, 2820, 18071, 0}, {10513, 10521, 18056, 2775, 10536, 2855, 18060, 18066, 2802, 2812, 2820, 18071, 0}, {2838, 2842, 18056, 2851, 10536, 2855, 2859, 18066, 2867, 2871, 2875, 15347, 0}, {2838, 2842, 18056, 2851, 10536, 2855, 2859, 18066, 2867, 2871, 2875, 15347, 0}, 0, 1, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {18523, 1336, 1394, 1377, 18543, 4765, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 1, 763, 241, {1336,1301,0,0,0,0,0,0,0,0,0,0,0,0},{18523,0,0,0,0,0,0,0},{1377,0,0,0,0,0,0,0,0,0,0,0},{1394,0,0,0,0,0,0,0,0}},
+       {3744, 3764, 2996, 3007, 44, 3773, 18559, 18567, {18575, 18584, 18593, 18601, 18610, 18619, 18626}, {18635, 18638, 18641, 18644, 18647, 18651, 18654}, {6557, 6559, 6561, 6563, 12319, 14531, 6555}, {10513, 10521, 18657, 18663, 10536, 2785, 18060, 18670, 15302, 18677, 15319, 18684, 0}, {10513, 10521, 18657, 18663, 10536, 2785, 18060, 18670, 15302, 18677, 15319, 18684, 0}, {2838, 2842, 18056, 2851, 10536, 2855, 2859, 18692, 2867, 2871, 2875, 10561, 0}, {2838, 2842, 18056, 2851, 10536, 2855, 2859, 18692, 2867, 2871, 2875, 10561, 0}, 0, 0, 239, 241, {3764,3940,3947,3956,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {18696, 18714, 280, 274, 1982, 18725, 0, 0, {33660, 33670, 33679, 33688, 33699, 33709, 33714}, {33721, 33727, 33732, 33737, 33742, 10109, 33746}, {33751, 2752, 2090, 7414, 2085, 7414, 2090}, {14297, 14304, 10132, 14311, 3897, 33753, 33758, 33763, 14336, 14345, 14353, 14360, 0}, {14297, 14304, 10132, 14311, 3897, 33753, 33758, 33763, 14336, 14345, 14353, 14360, 0}, {33770, 33775, 3928, 2851, 3897, 33753, 33758, 33779, 10487, 2871, 33783, 33788, 0}, {33770, 33775, 3928, 2851, 3897, 33753, 33758, 33779, 10487, 2871, 33783, 33788, 0}, 0, 1, 239, 241, {18714,1336,2903,14,1301,0,0,0,0,0,0,0,0,0},{18696,3732,5487,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {5487, 1327, 6438, 4983, 44, 55, 18892, 18920, {18942, 18961, 18980, 19005, 19024, 19058, 19083}, {19102, 19112, 19122, 19138, 19148, 19173, 19189}, {19199, 19203, 19210, 19214, 19221, 19228, 19235}, {19239, 19267, 19301, 19317, 19336, 19343, 19353, 19369, 19385, 19416, 19438, 19460, 0}, {19239, 19267, 19301, 19317, 19336, 19343, 19353, 19369, 19385, 19416, 19438, 19460, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 2601, 241, {1327,2312,2903,2351,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{4983,2327,19485,19494,0,0,0,0,0,0,0,0},{6438,2343,19502,19514,0,0,0,0,0}},
+       {5487, 1327, 280, 274, 44, 55, 20061, 20102, {20143, 20162, 20181, 20203, 20222, 20244, 20269}, {20288, 20298, 20308, 20321, 20331, 20344, 20360}, {20370, 20374, 20381, 20388, 20395, 20402, 20409}, {20413, 20441, 20469, 20485, 20504, 20511, 20521, 20537, 20553, 20581, 20603, 20625, 0}, {20413, 20441, 20469, 20485, 20504, 20511, 20521, 20537, 20553, 20581, 20603, 20625, 0}, {20650, 20669, 20469, 20485, 20504, 20511, 20521, 20537, 20688, 20704, 20720, 20730, 0}, {20650, 20669, 20469, 20485, 20504, 20511, 20521, 20537, 20688, 20704, 20720, 20730, 0}, 0, 0, 2601, 241, {1327,2312,2903,2351,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {5487, 1327, 280, 274, 44, 55, 7865, 20743, {20746, 20765, 20784, 20809, 20828, 20850, 20875}, {20894, 20904, 20914, 20930, 20940, 20953, 20969}, {20979, 20983, 20990, 20994, 21001, 21008, 21015}, {21019, 21041, 21072, 21094, 21113, 21120, 21130, 21146, 21162, 21193, 21215, 21237, 0}, {21019, 21041, 21072, 21094, 21113, 21120, 21130, 21146, 21162, 21193, 21215, 21237, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 2601, 241, {1327,2312,2903,2351,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {5487, 2351, 280, 274, 1982, 55, 21262, 21287, {21312, 21331, 21353, 21378, 21394, 21416, 21435}, {21445, 21452, 21459, 21466, 21473, 21480, 21487}, {21445, 21452, 21459, 21466, 21473, 21480, 21487}, {21491, 21507, 21532, 21551, 21570, 21577, 21590, 21603, 21622, 21653, 21678, 21700, 0}, {21491, 21507, 21532, 21551, 21570, 21577, 21590, 21725, 21622, 21653, 21678, 21700, 0}, {21744, 21752, 21766, 21780, 21570, 21577, 21590, 21791, 21799, 21813, 21824, 21832, 0}, {21744, 21752, 21766, 21780, 21570, 21577, 21590, 21791, 21799, 21813, 21824, 21832, 0}, 0, 0, 2601, 241, {2351,1327,2312,2903,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {5487, 1327, 280, 274, 44, 55, 21843, 21874, {21899, 21921, 21943, 21968, 21990, 22015, 22043}, {22065, 22075, 22085, 22098, 22108, 22121, 22137}, {22147, 22151, 22158, 22162, 22169, 22176, 22183}, {22187, 22203, 22228, 22247, 22269, 22276, 22289, 22302, 22321, 22352, 22377, 22396, 0}, {22187, 22203, 22228, 22247, 22269, 22276, 22289, 22302, 22321, 22352, 22377, 22396, 0}, {22421, 22428, 6559, 22444, 22269, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {22421, 22428, 6559, 22444, 22269, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 2601, 241, {1327,2312,2903,2351,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {5487, 1327, 280, 274, 44, 55, 3781, 3784, {22460, 22479, 22498, 22520, 22539, 22561, 22586}, {22605, 22610, 22618, 22626, 22634, 22642, 22650}, {22661, 22665, 22672, 22679, 22686, 22693, 22700}, {22704, 22720, 22745, 22764, 22786, 22793, 22806, 22819, 22838, 22866, 22891, 22913, 0}, {22704, 22720, 22745, 22764, 22786, 22793, 22806, 22819, 22838, 22866, 22891, 22913, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 2601, 241, {1327,2312,2903,2351,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {5487, 1327, 6438, 4983, 44, 55, 22938, 22957, {22988, 23013, 23044, 23072, 23097, 23125, 23159}, {23184, 23203, 23228, 23244, 23263, 23282, 23301}, {23311, 23318, 23325, 23332, 23339, 23352, 23359}, {23363, 23382, 23410, 23438, 23463, 23476, 23492, 23505, 23530, 23567, 23595, 23617, 0}, {23363, 23382, 23410, 23438, 23463, 23476, 23492, 23505, 23530, 23567, 23595, 23617, 0}, {23642, 23652, 23671, 23687, 23463, 23476, 23492, 23703, 23710, 23735, 23751, 23761, 0}, {23642, 23652, 23671, 23687, 23463, 23476, 23492, 23703, 23710, 23735, 23751, 23761, 0}, 0, 0, 2601, 241, {1327,2312,2903,2351,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{4983,2327,19485,19494,0,0,0,0,0,0,0,0},{6438,2343,19502,19514,0,0,0,0,0}},
+       {23774, 2351, 1937, 1920, 23793, 55, 23801, 23829, {23851, 23870, 23889, 23914, 23933, 23967, 23992}, {24011, 19112, 19122, 19138, 24021, 24046, 19189}, {0, 0, 0, 0, 0, 0, 0}, {24062, 24087, 24118, 24134, 19336, 19343, 19353, 24153, 24169, 24200, 24222, 24244, 0}, {24062, 24087, 24118, 24134, 19336, 19343, 19353, 24153, 24169, 24200, 24222, 24244, 0}, {24269, 24282, 24118, 24134, 19336, 19343, 19353, 24301, 24308, 24324, 24340, 24350, 0}, {24269, 24282, 24118, 24134, 19336, 19343, 19353, 24301, 24308, 24324, 24340, 24350, 0}, 0, 0, 2601, 241, {2351,0,0,0,0,0,0,0,0,0,0,0,0,0},{23774,0,0,0,0,0,0,0},{1920,1928,0,0,0,0,0,0,0,0,0,0},{1937,1948,0,0,0,0,0,0,0}},
+       {5487, 2351, 280, 274, 44, 55, 3781, 3784, {16553, 16572, 24363, 16613, 24385, 16666, 16691}, {24407, 24417, 24427, 24440, 24450, 24463, 24479}, {16796, 16800, 16807, 16814, 16821, 16828, 16835}, {24489, 24514, 16871, 24545, 24564, 16913, 24571, 24584, 24600, 24625, 24647, 24675, 0}, {24489, 24514, 16871, 24545, 24564, 16913, 24571, 24584, 24600, 24625, 24647, 24675, 0}, {24697, 24710, 16871, 24729, 24564, 16913, 24571, 24745, 24752, 6573, 24774, 24796, 0}, {24697, 24710, 16871, 24729, 24564, 16913, 24571, 24745, 24752, 6573, 24774, 24796, 0}, 0, 0, 2601, 241, {2351,1327,2312,2903,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {25177, 1444, 280, 274, 25220, 25227, 25253, 25275, {25300, 25328, 25356, 25393, 25424, 25458, 25483}, {25517, 25533, 25549, 25574, 25593, 25615, 25634}, {25656, 25663, 25670, 25677, 25684, 25691, 25695}, {25705, 25739, 25776, 25810, 25844, 25875, 25912, 25949, 25989, 26023, 26057, 26106, 0}, {25705, 25739, 25776, 25810, 25844, 25875, 25912, 25949, 25989, 26023, 26057, 26106, 0}, {26155, 26168, 26181, 26194, 26207, 26220, 26233, 26246, 26259, 26272, 26288, 26304, 0}, {26155, 26168, 26181, 26194, 26207, 26220, 26233, 26246, 26259, 26272, 26288, 26304, 0}, 0, 0, 239, 241, {1444,1796,1805,1825,1301,1814,1836,1843,1850,0,0,0,0,0},{25177,26320,0,0,0,0,0,0},{274,0,0,0,0,0,0,0,0,0,0,0},{280,0,0,0,0,0,0,0,0}},
+       {5487, 243, 280, 274, 1982, 55, 0, 0, {26368, 26377, 26387, 26399, 26412, 26421, 26433}, {26445, 26449, 26454, 26458, 26462, 26466, 26470}, {2090, 2471, 2463, 2463, 14531, 6229, 2090}, {26474, 26481, 26490, 26497, 2781, 26504, 26512, 26523, 26528, 26533, 26540, 26549, 0}, {26474, 26481, 26490, 26497, 2781, 26504, 26557, 26523, 26528, 26533, 26540, 26549, 0}, {26567, 26571, 26454, 26576, 2781, 26580, 26584, 26523, 26528, 26588, 26592, 26597, 0}, {26567, 26571, 26454, 26576, 2781, 26580, 26584, 26523, 26528, 26588, 26592, 26597, 0}, 2, 0, 239, 241, {243,14,1320,2903,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,35,3007,0,0,0,0,0,0,0,0},{280,1394,23,2996,0,0,0,0,0}},
+       {3732, 1301, 280, 26602, 26610, 26645, 26681, 26697, {26713, 26747, 26778, 26809, 26831, 26874, 26902}, {26927, 26934, 26938, 26942, 26949, 26959, 26966}, {0, 0, 0, 0, 0, 0, 0}, {26970, 26983, 27002, 27015, 27028, 27041, 27060, 27079, 27092, 27108, 27121, 27146, 0}, {26970, 26983, 27002, 27015, 27028, 27041, 27060, 27079, 27092, 27108, 27121, 27146, 0}, {27159, 27163, 27167, 27171, 27175, 27179, 27183, 27187, 27191, 27195, 27202, 27209, 0}, {27159, 27163, 27167, 27171, 27175, 27179, 27183, 27187, 27191, 27195, 27202, 27209, 0}, 0, 0, 2601, 241, {1301,0,0,0,0,0,0,0,0,0,0,0,0,0},{3732,9954,0,0,0,0,0,0},{26602,0,0,0,0,0,0,0,0,0,0,0},{280,0,0,0,0,0,0,0,0}},
+       {5487, 243, 280, 26602, 1982, 55, 27216, 27241, {27266, 27291, 27310, 27338, 27357, 27382, 27401}, {27423, 27431, 27436, 27441, 27446, 27454, 27462}, {0, 0, 0, 0, 0, 0, 0}, {27467, 27486, 27502, 27515, 27528, 27550, 27569, 27591, 27607, 27623, 27636, 27652, 0}, {27467, 27486, 27502, 27515, 27528, 27550, 27569, 27591, 27607, 27623, 27636, 27652, 0}, {27668, 27677, 27686, 27698, 27708, 27717, 27729, 27738, 27747, 27756, 27765, 27774, 0}, {27668, 27677, 27686, 27698, 27708, 27717, 27729, 27738, 27747, 27756, 27765, 27774, 0}, 0, 0, 239, 241, {243,1301,0,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{26602,0,0,0,0,0,0,0,0,0,0,0},{280,0,0,0,0,0,0,0,0}},
+       {4005, 243, 1394, 1377, 4034, 55, 946, 951, {27783, 27791, 27796, 27803, 27813, 27819, 27826}, {27834, 27838, 3928, 27842, 27847, 27851, 27855}, {2752, 2471, 2463, 2463, 4130, 4134, 2090}, {27860, 27868, 6248, 27877, 27883, 27888, 27894, 6282, 27900, 27909, 27917, 27926, 0}, {27860, 27868, 6248, 27877, 27883, 27888, 27894, 6282, 27900, 27909, 27917, 27926, 0}, {27935, 2842, 3928, 27939, 2781, 27943, 27948, 18692, 17293, 27952, 2875, 3936, 0}, {27935, 2842, 3928, 27939, 2781, 27943, 27948, 18692, 17293, 27952, 2875, 3936, 0}, 2, 1, 239, 241, {243,14,1312,1320,1327,1336,1301,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{1377,274,35,1382,0,0,0,0,0,0,0,0},{1394,280,23,1402,0,0,0,0,0}},
+       {5487, 2351, 280, 274, 44, 55, 27956, 27968, {27980, 16572, 28008, 16613, 24385, 16666, 16691}, {24407, 24417, 24427, 24440, 24450, 24463, 24479}, {0, 0, 0, 0, 0, 0, 0}, {24489, 24514, 16871, 24545, 24564, 16913, 24571, 28027, 28043, 28071, 24647, 24675, 0}, {24489, 24514, 16871, 24545, 24564, 16913, 24571, 28027, 28043, 28071, 24647, 24675, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 2601, 241, {2351,1327,2312,2903,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,1920,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {28093, 1301, 2996, 3007, 28141, 3773, 28151, 28163, {28172, 28188, 28204, 28232, 28248, 28291, 28316}, {28344, 28354, 28364, 28371, 28381, 28397, 28410}, {28420, 28424, 28428, 28432, 28436, 28449, 28456}, {28463, 28482, 28507, 28526, 28551, 28564, 28577, 28590, 28612, 28646, 28671, 28699, 0}, {28463, 28482, 28507, 28526, 28551, 28564, 28577, 28590, 28612, 28646, 28671, 28699, 0}, {28727, 28734, 28744, 28526, 28551, 28564, 28577, 28757, 28767, 28780, 28790, 28803, 0}, {28727, 28734, 28744, 28526, 28551, 28564, 28577, 28757, 28767, 28780, 28790, 28803, 0}, 0, 1, 2601, 241, {1301,1814,1857,243,14,0,0,0,0,0,0,0,0,0},{28093,0,0,0,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {28816, 2987, 2996, 3007, 1982, 28848, 28862, 28872, {28885, 28895, 28902, 28915, 28925, 28935, 28945}, {28885, 28895, 28955, 28915, 28925, 28935, 28945}, {28965, 28969, 28973, 28977, 28981, 28985, 28989}, {28993, 29009, 29025, 29035, 29048, 29055, 29062, 29072, 29085, 29104, 29123, 29139, 0}, {28993, 29009, 29025, 29035, 29048, 29055, 29062, 29072, 29085, 29104, 29123, 29139, 0}, {29155, 29165, 29025, 29175, 29048, 29055, 29062, 29185, 29195, 29205, 29215, 29225, 0}, {29155, 29165, 29025, 29175, 29048, 29055, 29062, 29185, 29195, 29205, 29215, 29225, 0}, 0, 0, 239, 241, {2987,1301,0,0,0,0,0,0,0,0,0,0,0,0},{28816,0,0,0,0,0,0,0},{3007,0,0,0,0,0,0,0,0,0,0,0},{2996,0,0,0,0,0,0,0,0}},
+       {3744, 3764, 2996, 3007, 29476, 3773, 29486, 29527, {29568, 29587, 29606, 29631, 29650, 29672, 29697}, {29716, 24417, 29726, 24440, 29742, 24463, 24479}, {29755, 29759, 29763, 29767, 29771, 29775, 29779}, {16839, 29783, 16871, 29811, 24564, 29830, 16923, 16939, 29840, 29871, 29893, 29918, 0}, {16839, 29783, 16871, 29811, 24564, 29830, 16923, 16939, 29840, 29871, 29893, 29918, 0}, {29943, 29950, 16871, 29960, 24564, 29830, 29976, 29989, 29996, 30012, 30028, 30041, 0}, {29943, 29950, 16871, 29960, 24564, 29830, 29976, 29989, 29996, 30012, 30028, 30041, 0}, 0, 0, 239, 241, {3764,3940,3947,3956,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {243, 14, 2996, 3007, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {30054, 30061, 30070, 30085, 30096, 30105, 30112, 30119, 30126, 30137, 30150, 30163, 0}, {30054, 30061, 30070, 30085, 30096, 30105, 30112, 30119, 30126, 30137, 30150, 30163, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 6, 239, 241, {14,243,0,0,0,0,0,0,0,0,0,0,0,0},{243,1,254,30168,0,0,0,0},{3007,1377,0,0,0,0,0,0,0,0,0,0},{2996,1394,0,0,0,0,0,0,0}},
+       {3744, 3764, 2996, 3007, 44, 3773, 3781, 3784, {30186, 30193, 27796, 30199, 30210, 30218, 30227}, {30234, 27838, 3928, 30238, 30242, 30246, 10507}, {2471, 2471, 2463, 2463, 5695, 15399, 2090}, {30250, 30256, 30264, 27877, 30270, 30275, 30281, 6282, 30287, 30297, 30305, 30315, 0}, {30250, 30256, 30264, 27877, 30270, 30275, 30281, 6282, 30287, 30297, 30305, 30315, 0}, {30325, 30329, 3928, 27939, 3897, 30333, 30337, 18692, 17293, 2871, 30341, 15347, 0}, {30325, 30329, 3928, 27939, 3897, 30333, 30337, 18692, 17293, 2871, 30341, 15347, 0}, 0, 0, 239, 241, {3764,3940,3947,3956,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {3744, 2987, 2996, 3007, 44, 3773, 0, 0, {30345, 30352, 30360, 30367, 30374, 30382, 30390}, {30397, 30400, 30403, 30406, 30409, 30412, 30415}, {2471, 2471, 2465, 2471, 12319, 4132, 12319}, {30418, 30426, 30436, 30442, 30450, 30455, 30460, 30465, 30472, 18677, 30480, 30488, 0}, {30418, 30426, 30436, 30442, 30450, 30455, 30460, 30465, 30472, 18677, 30480, 30488, 0}, {2838, 30496, 3928, 30500, 3897, 29439, 29443, 30504, 3868, 2871, 30508, 15347, 0}, {2838, 30496, 3928, 30500, 3897, 29439, 29443, 30504, 3868, 2871, 30508, 15347, 0}, 0, 0, 239, 241, {2987,1320,14,243,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {3744, 2987, 2996, 3007, 44, 3773, 30512, 30523, {30533, 30551, 30566, 30588, 30601, 30615, 30632}, {30656, 30664, 30669, 30588, 30601, 30681, 30688}, {0, 0, 0, 0, 0, 0, 0}, {30702, 30724, 30740, 30760, 30774, 30791, 30806, 30823, 30837, 30850, 30869, 30883, 0}, {30702, 30724, 30740, 30760, 30774, 30791, 30806, 30823, 30837, 30850, 30869, 30883, 0}, {30902, 30917, 30926, 30939, 30946, 30956, 30964, 30974, 30981, 30987, 30999, 31006, 0}, {30902, 30917, 30926, 30939, 30946, 30956, 30964, 30974, 30981, 30987, 30999, 31006, 0}, 0, 0, 239, 241, {2987,1320,14,243,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {5487, 1814, 23, 35, 1982, 55, 0, 0, {31018, 31026, 14922, 14931, 14940, 31037, 31047}, {15387, 14972, 14976, 14980, 14984, 15241, 31056}, {0, 0, 0, 0, 0, 0, 0}, {31060, 31069, 31079, 31087, 10536, 3901, 31095, 31101, 31110, 31119, 31128, 31137, 0}, {31060, 31069, 31079, 31087, 10536, 3901, 31095, 31101, 31110, 31119, 31128, 31137, 0}, {2838, 2842, 14991, 31146, 10536, 2855, 2859, 18692, 17293, 2871, 31150, 15347, 0}, {2838, 2842, 14991, 31146, 10536, 2855, 2859, 18692, 17293, 2871, 31150, 15347, 0}, 0, 0, 239, 241, {1814,1857,1301,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{35,3007,274,0,0,0,0,0,0,0,0,0},{23,2996,280,0,0,0,0,0,0}},
+       {1960, 2351, 280, 274, 1982, 2362, 31154, 31159, {31164, 31171, 31186, 31200, 31216, 31231, 31247}, {6225, 31262, 2565, 31266, 31270, 31274, 31278}, {2090, 12319, 2463, 2085, 2090, 2465, 12319}, {7172, 7180, 31282, 31289, 31296, 2504, 2509, 31301, 31311, 31322, 31331, 31341, 0}, {7172, 7180, 31282, 31289, 31296, 2504, 2509, 31301, 31311, 31322, 31331, 31341, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, 0, 0, 2601, 241, {2351,1327,1301,2603,0,0,0,0,0,0,0,0,0,0},{1960,2614,0,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {3744, 2987, 2996, 3007, 44, 3773, 31351, 31356, {31361, 31377, 31385, 31393, 31402, 31414, 31424}, {31434, 31440, 31446, 31450, 31454, 31462, 3868}, {0, 0, 0, 0, 0, 0, 0}, {31469, 31482, 31496, 31505, 31511, 31515, 31520, 31528, 15302, 31541, 15319, 15327, 0}, {31469, 31482, 31496, 31505, 31511, 31515, 31520, 31528, 15302, 31541, 15319, 15327, 0}, {31550, 2842, 31554, 15335, 31511, 31558, 2859, 31562, 2867, 31570, 2875, 15347, 0}, {31550, 2842, 31554, 15335, 31511, 31558, 2859, 31562, 2867, 31570, 2875, 15347, 0}, 0, 0, 239, 241, {2987,1320,14,243,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {31576, 1444, 1394, 1920, 31600, 31617, 31631, 31638, {31645, 31655, 31665, 31675, 31685, 31695, 31705}, {31715, 31722, 31729, 31736, 31743, 31750, 31757}, {31764, 31768, 31772, 31776, 31780, 31784, 31788}, {31792, 31799, 31806, 31813, 31820, 31827, 31834, 31841, 31848, 31855, 31862, 31872, 0}, {31792, 31799, 31806, 31813, 31820, 31827, 31834, 31841, 31848, 31855, 31862, 31872, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 0, 239, 241, {1444,1796,1805,1825,1301,1814,0,0,0,0,0,0,0,0},{31576,31882,31912,0,0,0,0,0},{1920,1377,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {4748, 243, 280, 274, 1982, 4765, 0, 0, {26445, 27838, 31942, 31949, 31959, 31964, 31971}, {31978, 4108, 31982, 4839, 31987, 31992, 31997}, {4398, 32002, 32005, 32008, 32011, 32014, 32017}, {32020, 32027, 31942, 32038, 32044, 32048, 32057, 32064, 32069, 32078, 8225, 32083, 0}, {32020, 32027, 31942, 32038, 32044, 32048, 32057, 32064, 32069, 32078, 8225, 32083, 0}, {32089, 32093, 32100, 26576, 32044, 32105, 32110, 32064, 32115, 32078, 8225, 32120, 0}, {32089, 32093, 32100, 26576, 32044, 32105, 32110, 32064, 32115, 32078, 8225, 32120, 0}, 2, 1, 239, 241, {243,14,1336,1327,1301,0,0,0,0,0,0,0,0,0},{4748,4974,3732,0,0,0,0,0},{274,1377,4983,4989,4999,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {32124, 243, 280, 274, 1982, 4765, 0, 0, {32152, 32160, 32167, 32175, 32185, 32193, 1007}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {32204, 32212, 1064, 1070, 4887, 32221, 32226, 1093, 1099, 32233, 1116, 32242, 0}, {32204, 32212, 1064, 1070, 4887, 32221, 32226, 1093, 1099, 32233, 1116, 32242, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 2, 1, 239, 241, {243,14,1336,1327,1301,0,0,0,0,0,0,0,0,0},{32124,0,0,0,0,0,0,0},{274,1377,4983,4989,4999,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {32404, 32422, 1394, 1377, 32433, 3773, 32449, 32454, {32459, 32484, 32513, 32538, 32551, 32566, 32583}, {32598, 32603, 32608, 32613, 32618, 32623, 8534}, {32628, 32628, 32631, 8545, 8548, 32628, 8545}, {32634, 32653, 32668, 32690, 32710, 32726, 32742, 32756, 32782, 32806, 32823, 32840, 0}, {32634, 32653, 32668, 32690, 32710, 32726, 32742, 32756, 32782, 32806, 32823, 32840, 0}, {32857, 32866, 32875, 32889, 32903, 32915, 32927, 32937, 32953, 32967, 32974, 32981, 0}, {32857, 32866, 32875, 32889, 32903, 32915, 32927, 32937, 32953, 32967, 32974, 32981, 0}, 0, 1, 763, 241, {32422,32988,2903,3947,32997,0,0,0,0,0,0,0,0,0},{32404,33008,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3744, 3764, 2996, 3007, 44, 3773, 0, 0, {33027, 33039, 33050, 33062, 33074, 33084, 33096}, {33111, 33116, 33121, 33126, 33131, 33136, 33141}, {0, 0, 0, 0, 0, 0, 0}, {33146, 33155, 33167, 33175, 33180, 33190, 33197, 33206, 33213, 33219, 33228, 33239, 0}, {33146, 33155, 33167, 33175, 33180, 33190, 33197, 33206, 33213, 33219, 33228, 33239, 0}, {33247, 33252, 33257, 33262, 33267, 33272, 33277, 33131, 33282, 33287, 33292, 33297, 0}, {33247, 33252, 33257, 33262, 33267, 33272, 33277, 33131, 33282, 33287, 33292, 33297, 0}, 0, 0, 239, 241, {3764,3940,3947,3956,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {5487, 243, 280, 274, 1982, 55, 6008, 6013, {33302, 33315, 33323, 33332, 33342, 33352, 33361}, {33373, 33377, 33381, 33385, 33389, 33393, 33397}, {2752, 2471, 2463, 7414, 12319, 5695, 2090}, {33401, 33415, 33426, 33435, 33446, 33458, 33472, 33484, 33497, 33510, 33522, 33535, 0}, {33401, 33415, 33426, 33435, 33446, 33458, 33472, 33484, 33497, 33510, 33522, 33535, 0}, {33549, 33554, 33560, 33566, 33571, 33577, 33583, 33588, 33594, 33599, 18002, 33605, 0}, {33549, 33554, 33560, 33566, 33571, 33577, 33583, 33588, 33594, 33599, 18002, 33605, 0}, 2, 0, 239, 241, {243,14,1320,2903,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,35,3007,0,0,0,0,0,0,0,0},{280,1394,23,2996,0,0,0,0,0}},
+       {3991, 243, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 6, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{35,274,0,0,0,0,0,0,0,0,0,0},{23,280,0,0,0,0,0,0,0}},
+       {1422, 1444, 1394, 1377, 1453, 1469, 1482, 1489, {1496, 1506, 1516, 1526, 1536, 1546, 1556}, {1566, 1573, 1580, 1587, 1594, 1601, 1608}, {1615, 1619, 1623, 1627, 1631, 1635, 1639}, {1643, 1650, 1657, 1664, 1671, 1678, 1685, 1692, 1699, 1706, 1713, 1723, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1643, 1650, 1657, 1664, 1671, 1678, 1685, 1692, 1699, 1706, 1713, 1723, 0}, {1643, 1650, 1657, 1664, 1671, 1678, 1685, 1692, 1699, 1706, 1713, 1723, 0}, 0, 0, 239, 241, {1444,1796,1805,1301,1814,1825,1836,1843,1850,1857,0,0,0,0},{1422,1866,1893,0,0,0,0,0},{1377,274,1920,1928,0,0,0,0,0,0,0,0},{1394,280,1937,1948,0,0,0,0,0}},
+       {2628, 2647, 280, 274, 1982, 55, 2658, 2664, {2671, 2679, 2686, 2695, 2704, 2715, 2723}, {2731, 2734, 2737, 2740, 2743, 2746, 2749}, {2090, 2463, 2752, 2463, 2752, 2469, 2090}, {2754, 2761, 2769, 2775, 2781, 2785, 2790, 2795, 2802, 2812, 2820, 2829, 0}, {2754, 2761, 2769, 2775, 2781, 2785, 2790, 2795, 2802, 2812, 2820, 2829, 0}, {2838, 2842, 2846, 2851, 2781, 2855, 2859, 2863, 2867, 2871, 2875, 2879, 0}, {2838, 2842, 2846, 2851, 2781, 2855, 2859, 2863, 2867, 2871, 2875, 2879, 0}, 2, 1, 763, 241, {2647,1336,2895,33792,2903,1301,0,0,0,0,0,0,0,0},{2628,1960,33802,0,0,0,0,0},{274,1377,8087,8077,2922,8110,8115,8096,8102,0,0,0},{280,1394,8147,8160,2947,2933,2962,0,0}},
+       {5487, 243, 280, 274, 1982, 55, 3781, 3784, {3787, 3794, 3801, 3809, 3819, 3828, 3835}, {3844, 3848, 3852, 3856, 3860, 3864, 3868}, {2090, 2463, 2465, 3872, 2465, 2469, 2090}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, 2, 0, 239, 241, {243,14,1320,2903,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,35,3007,0,0,0,0,0,0,0,0},{280,1394,23,2996,0,0,0,0,0}},
+       {4005, 243, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 0, 239, 241, {243,3720,14,1312,1320,1327,1301,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{35,3007,1377,274,0,0,0,0,0,0,0,0},{23,2996,1394,280,0,0,0,0,0}},
+       {4748, 14083, 280, 274, 1982, 4765, 3781, 3784, {4772, 4781, 4787, 4793, 4802, 4808, 4817}, {4824, 4829, 4834, 4839, 4844, 4849, 4854}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4859, 4867, 4876, 4881, 4887, 4891, 4896, 4904, 4910, 4920, 1116, 4928, 0}, {4859, 4867, 4876, 4881, 4887, 4891, 4896, 4904, 4910, 4920, 1116, 4928, 0}, {4938, 4944, 4876, 4951, 4887, 4891, 4956, 4904, 4962, 1286, 1291, 4968, 0}, {4938, 4944, 4876, 4951, 4887, 4891, 4956, 4904, 4962, 1286, 1291, 4968, 0}, 2, 1, 239, 241, {14083,1312,1336,1857,1327,243,1301,0,0,0,0,0,0,0},{4748,3732,3967,0,0,0,0,0},{274,1377,4983,4989,4999,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {2628, 2647, 280, 274, 1982, 2362, 6145, 6148, {6151, 6160, 6168, 6177, 6188, 6197, 6206}, {4104, 4108, 2565, 6213, 6217, 6221, 6225}, {2752, 2471, 2463, 2463, 6229, 4134, 2090}, {6231, 6239, 6248, 6254, 6261, 6268, 6275, 6282, 6289, 6299, 6307, 6316, 0}, {6325, 6333, 4150, 6342, 6349, 6356, 6363, 4173, 6370, 6380, 1116, 6388, 0}, {6397, 2561, 2565, 2569, 6401, 6405, 6409, 4219, 6413, 6417, 2593, 4227, 0}, {6397, 2561, 2565, 2569, 6401, 6405, 6409, 4219, 6413, 6417, 2593, 4227, 0}, 2, 1, 763, 241, {2647,1336,11642,1320,6421,1301,0,0,0,0,0,0,0,0},{2628,6429,3732,0,0,0,0,0},{274,1377,8087,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {4748, 14083, 1394, 1377, 1982, 55, 946, 951, {7093, 7100, 7108, 7116, 7125, 7135, 7143}, {7152, 4401, 7155, 7158, 7161, 7164, 7167}, {7170, 2463, 2752, 3872, 2752, 4134, 7170}, {7172, 7180, 7189, 2494, 7195, 2504, 2509, 7199, 2521, 2531, 2539, 2548, 0}, {7172, 7180, 7189, 2494, 7195, 2504, 2509, 7199, 2521, 2531, 2539, 2548, 0}, {2557, 2561, 7208, 2569, 7195, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 7208, 2569, 7195, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, 2, 1, 239, 241, {14083,1312,1327,1336,2883,1301,0,0,0,0,0,0,0,0},{4748,3967,3732,5530,0,0,0,0},{1377,274,33812,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {1960, 2647, 280, 274, 1982, 2362, 2370, 2375, {2380, 9835, 33822, 2403, 2410, 2418, 33829}, {2433, 9863, 33837, 2446, 2450, 2454, 6004}, {2090, 2463, 2465, 2467, 2465, 2469, 2471}, {2473, 2480, 4876, 2494, 4887, 2504, 2509, 2514, 2521, 2531, 2539, 6076, 0}, {2473, 2480, 4876, 2494, 4887, 2504, 2509, 2514, 2521, 2531, 2539, 6076, 0}, {2557, 2561, 2565, 2569, 4887, 2573, 2577, 2581, 2585, 2589, 2593, 6106, 0}, {2557, 2561, 2565, 2569, 4887, 2573, 2577, 2581, 2585, 2589, 2593, 6106, 0}, 2, 1, 763, 241, {2647,1336,2903,1301,2883,0,0,0,0,0,0,0,0,0},{1960,2614,0,0,0,0,0,0},{274,1377,7296,4983,0,0,0,0,0,0,0,0},{280,1394,7307,6438,0,0,0,0,0}},
+       {7648, 2351, 280, 274, 4034, 33841, 946, 951, {27783, 33845, 33859, 33872, 33885, 33898, 27826}, {4104, 7754, 7758, 7762, 7766, 7770, 4125}, {2752, 2090, 2465, 7774, 7774, 2090, 2090}, {33910, 33918, 33928, 27877, 27883, 33935, 33941, 6282, 27900, 27909, 27917, 33947, 0}, {33910, 33918, 33928, 27877, 27883, 33935, 33941, 6282, 27900, 27909, 27917, 33947, 0}, {2838, 33775, 3928, 27939, 2781, 2855, 2859, 18692, 17293, 27952, 2875, 2879, 0}, {2838, 33775, 3928, 27939, 2781, 2855, 2859, 18692, 17293, 27952, 2875, 2879, 0}, 2, 1, 2601, 241, {2351,14134,24833,2903,14,1301,0,0,0,0,0,0,0,0},{7648,4258,33956,33965,0,0,0,0},{274,33974,0,0,0,0,0,0,0,0,0,0},{280,0,0,0,0,0,0,0,0}},
+       {9790, 1973, 280, 274, 1982, 9808, 9821, 9824, {9827, 9835, 9843, 2403, 2410, 2418, 9850}, {9858, 9863, 9868, 2446, 2450, 2454, 9872}, {2090, 2463, 2465, 2467, 2465, 2469, 2471}, {7172, 7180, 4876, 2494, 2500, 2504, 2509, 9877, 2521, 2531, 2539, 2548, 0}, {7172, 7180, 4876, 2494, 2500, 2504, 2509, 9877, 2521, 2531, 2539, 2548, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 2581, 2585, 2589, 2593, 2597, 0}, 2, 1, 763, 241, {1973,2647,2903,1301,0,0,0,0,0,0,0,0,0,0},{9790,9885,0,0,0,0,0,0},{274,1377,9908,0,0,0,0,0,0,0,0,0},{280,1394,9918,0,0,0,0,0,0}},
+       {3732, 2647, 1394, 1377, 1982, 4765, 0, 0, {33985, 33996, 34020, 34050, 34067, 34089, 34098}, {14270, 14273, 14278, 14284, 14288, 7414, 14293}, {6567, 6555, 6557, 6559, 6561, 6563, 6565}, {34109, 34122, 573, 34135, 593, 34146, 34155, 614, 34164, 34181, 34196, 34209, 0}, {34109, 34122, 573, 34135, 593, 34146, 34155, 614, 34164, 34181, 34196, 34209, 0}, {14367, 7853, 2565, 2569, 14371, 14375, 14379, 14383, 14387, 2589, 14391, 14395, 0}, {14367, 7853, 2565, 2569, 14371, 14375, 14379, 14383, 14387, 2589, 14391, 14395, 0}, 0, 1, 763, 241, {2647,1336,2903,14,1301,0,0,0,0,0,0,0,0,0},{3732,5487,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3732, 243, 280, 274, 1982, 55, 946, 951, {17719, 17733, 17743, 17754, 17768, 17779, 17790}, {17803, 17808, 17813, 17820, 17826, 17832, 17838}, {2752, 2471, 2463, 7414, 2752, 12319, 2090}, {17843, 17851, 17859, 17866, 17875, 17885, 17895, 17901, 17909, 17924, 17942, 17950, 0}, {17843, 17851, 17859, 17866, 17875, 17885, 17895, 17901, 17909, 17924, 17942, 17950, 0}, {17958, 17962, 17859, 17968, 17972, 17977, 17895, 17983, 17988, 17995, 18002, 18007, 0}, {17958, 17962, 17859, 17968, 17972, 17977, 17895, 17983, 17988, 17995, 18002, 18007, 0}, 2, 1, 239, 241, {243,14,1320,2903,1301,0,0,0,0,0,0,0,0,0},{3732,5487,9942,9931,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {5487, 243, 1394, 1377, 1982, 55, 18012, 18015, {18019, 18024, 10453, 10460, 18030, 18037, 10477}, {18044, 18048, 10491, 10495, 18052, 10503, 10507}, {12319, 14531, 2090, 10511, 4419, 4132, 2090}, {10513, 10521, 18056, 2775, 10536, 2855, 18060, 18066, 2802, 2812, 2820, 18071, 0}, {10513, 10521, 18056, 2775, 10536, 2855, 18060, 18066, 2802, 2812, 2820, 18071, 0}, {2838, 2842, 18056, 2851, 10536, 2855, 2859, 18066, 2867, 2871, 2875, 15347, 0}, {2838, 2842, 18056, 2851, 10536, 2855, 2859, 18066, 2867, 2871, 2875, 15347, 0}, 0, 1, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {34222, 2647, 280, 274, 1982, 18725, 0, 0, {18732, 18747, 18762, 18777, 18794, 18811, 18820}, {18831, 18838, 18845, 18852, 18859, 18866, 18873}, {18880, 18883, 8545, 8548, 8542, 18886, 18889}, {12768, 12779, 8579, 12792, 8601, 12803, 12810, 8626, 12817, 12832, 12845, 12856, 0}, {12768, 12779, 8579, 12792, 8601, 12803, 12810, 8626, 12817, 12832, 12845, 12856, 0}, {12869, 12876, 12883, 12890, 8601, 12803, 12810, 12897, 12904, 12911, 12918, 12925, 0}, {12869, 12876, 12883, 12890, 8601, 12803, 12810, 12897, 12904, 12911, 12918, 12925, 0}, 0, 1, 763, 241, {2647,1336,18714,2903,14,1301,0,0,0,0,0,0,0,0},{34222,3732,5487,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {5487, 1327, 6438, 4983, 44, 55, 18892, 18920, {18942, 18961, 18980, 19005, 19024, 19058, 19083}, {19102, 19112, 19122, 19138, 19148, 19173, 19189}, {19199, 19203, 19210, 19214, 19221, 19228, 19235}, {19239, 19267, 19301, 19317, 19336, 19343, 19353, 19369, 19385, 19416, 19438, 19460, 0}, {19239, 19267, 19301, 19317, 19336, 19343, 19353, 19369, 19385, 19416, 19438, 19460, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, {6555, 6557, 6559, 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6576, 6579, 0}, 0, 5, 2601, 241, {1327,2312,2903,2351,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{4983,2327,19485,19494,0,0,0,0,0,0,0,0},{6438,2343,19502,19514,0,0,0,0,0}},
+       {34243, 1444, 1394, 1377, 34319, 34351, 0, 0, {24859, 24866, 24877, 24890, 24903, 24914, 24927}, {24938, 24943, 24948, 24953, 24958, 24963, 24968}, {0, 0, 0, 0, 0, 0, 0}, {24973, 24988, 24997, 25004, 25017, 25024, 25035, 25044, 25053, 25060, 25071, 25082, 0}, {24973, 24988, 24997, 25004, 25017, 25024, 25035, 25044, 25053, 25060, 25071, 25082, 0}, {25093, 25100, 25107, 25114, 25121, 25128, 25135, 25142, 25149, 25156, 25163, 25170, 0}, {25093, 25100, 25107, 25114, 25121, 25128, 25135, 25142, 25149, 25156, 25163, 25170, 0}, 0, 0, 239, 241, {1444,1796,1805,1825,1301,1814,1836,1843,1850,1857,0,0,0,0},{34243,34386,0,0,0,0,0,0},{1377,0,0,0,0,0,0,0,0,0,0,0},{1394,0,0,0,0,0,0,0,0}},
+       {3991, 243, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 6, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{35,274,0,0,0,0,0,0,0,0,0,0},{23,280,0,0,0,0,0,0,0}},
+       {1422, 2987, 1394, 1377, 1453, 1469, 1482, 1489, {1496, 1506, 1516, 1526, 1536, 1546, 1556}, {33611, 33618, 33625, 33632, 33639, 33646, 33653}, {1615, 1619, 1623, 1627, 1631, 1635, 1639}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, 0, 0, 239, 241, {2987,1320,14,1843,1857,1444,1814,1301,0,0,0,0,0,0},{1422,6639,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {34470, 2647, 280, 274, 1982, 55, 2658, 2664, {2671, 2679, 2686, 2695, 2704, 2715, 2723}, {2731, 2734, 2737, 2740, 2743, 2746, 2749}, {2090, 2463, 2752, 2463, 2752, 2469, 2090}, {34490, 2761, 2769, 2775, 2781, 2785, 2790, 2795, 2802, 2812, 2820, 2829, 0}, {34490, 2761, 2769, 2775, 2781, 2785, 2790, 2795, 2802, 2812, 2820, 2829, 0}, {34498, 2842, 2846, 2851, 2781, 2855, 2859, 2863, 2867, 2871, 2875, 2879, 0}, {34498, 2842, 2846, 2851, 2781, 2855, 2859, 2863, 2867, 2871, 2875, 2879, 0}, 2, 1, 763, 241, {2647,1336,34503,1301,0,0,0,0,0,0,0,0,0,0},{34470,34513,34525,9931,0,0,0,0},{274,1377,34535,34547,8110,8115,8102,0,0,0,0,0},{280,1394,2947,2933,2962,0,0,0,0}},
+       {2969, 14083, 2996, 3007, 1982, 55, 3781, 3784, {3787, 3794, 3801, 3809, 3819, 3828, 3835}, {3844, 3848, 3852, 3856, 3860, 3864, 3868}, {2090, 2463, 2465, 3872, 2465, 2469, 2090}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, 0, 0, 239, 241, {14083,1312,1320,2987,14,243,3967,5500,1301,1857,1814,0,0,0},{2969,3732,0,0,0,0,0,0},{3007,1377,274,0,0,0,0,0,0,0,0,0},{2996,1394,280,0,0,0,0,0,0}},
+       {4005, 243, 1394, 1377, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 4130, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 2, 1, 239, 241, {243,14,1312,1320,1327,1336,1301,2883,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{1377,274,1382,0,0,0,0,0,0,0,0,0},{1394,280,1402,0,0,0,0,0,0}},
+       {3732, 1301, 280, 274, 44, 4765, 3781, 3784, {4772, 4781, 4787, 4793, 4802, 4808, 4817}, {4824, 4829, 4834, 4839, 4844, 4849, 4854}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4859, 4867, 4876, 4881, 4887, 4891, 4896, 4904, 4910, 4920, 1116, 4928, 0}, {4859, 4867, 4876, 4881, 4887, 4891, 4896, 4904, 4910, 4920, 1116, 4928, 0}, {4938, 4944, 4876, 4951, 4887, 4891, 4956, 4904, 4962, 1286, 1291, 4968, 0}, {4938, 4944, 4876, 4951, 4887, 4891, 4956, 4904, 4962, 1286, 1291, 4968, 0}, 0, 0, 2601, 241, {1301,5871,1327,6136,14,3720,0,0,0,0,0,0,0,0},{3732,9931,0,0,0,0,0,0},{274,1377,4983,4989,4999,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {17334, 1973, 1394, 1377, 1982, 17352, 17366, 17371, {34558, 34566, 34574, 34582, 34594, 34603, 34615}, {17456, 17461, 17466, 17471, 17476, 17481, 17486}, {2090, 2463, 2752, 6229, 2752, 15399, 2471}, {17491, 17508, 17521, 17535, 17548, 17561, 17574, 17588, 17600, 17614, 17628, 17642, 0}, {17491, 17508, 17521, 17535, 17548, 17561, 17574, 17588, 17600, 17614, 17628, 17642, 0}, {34626, 34637, 34644, 34652, 34659, 34666, 34673, 34681, 34687, 34695, 34703, 34711, 0}, {34626, 34637, 34644, 34652, 34659, 34666, 34673, 34681, 34687, 34695, 34703, 34711, 0}, 2, 1, 763, 241, {1973,2647,2903,1301,0,0,0,0,0,0,0,0,0,0},{17334,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3991, 243, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 6, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{35,274,0,0,0,0,0,0,0,0,0,0},{23,280,0,0,0,0,0,0,0}},
+       {1422, 2987, 1937, 1920, 1453, 1469, 1482, 1489, {1496, 1506, 1516, 1526, 1536, 1546, 1556}, {1566, 1573, 1580, 1587, 1594, 1601, 1608}, {1615, 1619, 1623, 1627, 1631, 1635, 1639}, {1643, 1650, 1657, 1664, 1671, 1678, 1685, 1692, 1699, 1706, 1713, 1723, 0}, {1643, 1650, 1657, 1664, 1671, 1678, 1685, 1692, 1699, 1706, 1713, 1723, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, 0, 0, 239, 241, {2987,1320,14,1843,1857,1444,1814,1301,0,0,0,0,0,0},{1422,6639,0,0,0,0,0,0},{1920,1928,1377,274,0,0,0,0,0,0,0,0},{1937,1948,1394,280,0,0,0,0,0}},
+       {2628, 2647, 280, 274, 1982, 55, 2658, 2664, {2671, 2679, 2686, 2695, 2704, 2715, 2723}, {2731, 2734, 2737, 2740, 2743, 2746, 2749}, {2090, 2463, 2752, 2463, 2752, 2469, 2090}, {2754, 2761, 2769, 2775, 2781, 2785, 2790, 2795, 2802, 2812, 2820, 2829, 0}, {2754, 2761, 2769, 2775, 2781, 2785, 2790, 2795, 2802, 2812, 2820, 2829, 0}, {2838, 2842, 2846, 2851, 2781, 2855, 2859, 2863, 2867, 2871, 2875, 2879, 0}, {2838, 2842, 2846, 2851, 2781, 2855, 2859, 2863, 2867, 2871, 2875, 2879, 0}, 2, 1, 763, 241, {2647,1336,2895,2903,1973,1301,0,0,0,0,0,0,0,0},{2628,1960,2910,0,0,0,0,0},{274,1377,2327,2922,0,0,0,0,0,0,0,0},{280,2933,2947,2962,0,0,0,0,0}},
+       {34718, 243, 2996, 3007, 44, 3773, 3781, 3784, {3787, 3794, 3801, 3809, 3819, 3828, 3835}, {3844, 3848, 3852, 3856, 3860, 3864, 3868}, {2090, 2463, 2465, 3872, 2465, 2469, 2090}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, 0, 0, 239, 241, {243,14,1320,1301,5871,34729,3967,14134,0,0,0,0,0,0},{34718,34737,6429,3744,0,0,0,0},{3007,35,274,1377,0,0,0,0,0,0,0,0},{2996,23,280,1394,0,0,0,0,0}},
+       {4005, 243, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 0, 239, 241, {243,14,14083,1320,1327,1301,0,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{35,3007,1377,274,0,0,0,0,0,0,0,0},{23,2996,1394,280,0,0,0,0,0}},
+       {4748, 2647, 280, 274, 1982, 4765, 3781, 3784, {4772, 4781, 4787, 4793, 4802, 4808, 4817}, {4824, 4829, 4834, 4839, 4844, 4849, 4854}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4859, 4867, 4876, 4881, 4887, 4891, 4896, 4904, 4910, 4920, 1116, 4928, 0}, {4859, 4867, 4876, 4881, 4887, 4891, 4896, 4904, 4910, 4920, 1116, 4928, 0}, {4938, 4944, 4876, 4951, 4887, 4891, 4956, 4904, 4962, 1286, 1291, 4968, 0}, {4938, 4944, 4876, 4951, 4887, 4891, 4956, 4904, 4962, 1286, 1291, 4968, 0}, 2, 1, 763, 241, {2647,1336,33792,2903,1301,0,0,0,0,0,0,0,0,0},{4748,3732,4974,0,0,0,0,0},{274,1377,4983,4989,4999,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {3991, 2351, 1394, 1377, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 6, 2601, 241, {2351,1327,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{1377,274,35,0,0,0,0,0,0,0,0,0},{1394,280,23,0,0,0,0,0,0}},
+       {1422, 2987, 1394, 1377, 1453, 1469, 1482, 1489, {1496, 1506, 1516, 1526, 1536, 1546, 1556}, {33611, 33618, 33625, 33632, 33639, 33646, 33653}, {1615, 1619, 1623, 1627, 1631, 1635, 1639}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, 0, 0, 239, 241, {2987,1320,14,1843,1857,1444,1814,1301,0,0,0,0,0,0},{1422,34750,34777,2603,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {2628, 2647, 280, 274, 1982, 55, 2658, 2664, {2671, 2679, 2686, 2695, 2704, 2715, 2723}, {2731, 2734, 2737, 2740, 2743, 2746, 2749}, {2090, 2463, 2752, 2463, 2752, 2469, 2090}, {2754, 2761, 2769, 2775, 2781, 2785, 2790, 2795, 2802, 2812, 2820, 2829, 0}, {2754, 2761, 2769, 2775, 2781, 2785, 2790, 2795, 2802, 2812, 2820, 2829, 0}, {2838, 2842, 2846, 2851, 2781, 2855, 2859, 2863, 2867, 2871, 2875, 2879, 0}, {2838, 2842, 2846, 2851, 2781, 2855, 2859, 2863, 2867, 2871, 2875, 2879, 0}, 2, 1, 763, 241, {2647,1336,2895,33792,2903,1301,0,0,0,0,0,0,0,0},{2628,1960,33802,0,0,0,0,0},{274,1377,8087,8077,2922,8110,8115,8096,8102,0,0,0},{280,1394,8147,8160,2947,2933,2962,0,0}},
+       {2969, 14083, 2996, 3007, 1982, 55, 3781, 3784, {3787, 3794, 3801, 3809, 3819, 3828, 3835}, {3844, 3848, 3852, 3856, 3860, 3864, 3868}, {2090, 2463, 2465, 3872, 2465, 2469, 2090}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, 0, 0, 239, 241, {14083,1312,14,2895,1301,0,0,0,0,0,0,0,0,0},{2969,3732,0,0,0,0,0,0},{3007,35,274,1377,0,0,0,0,0,0,0,0},{2996,23,280,1394,0,0,0,0,0}},
+       {4005, 243, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 1, 239, 241, {243,14,1320,1327,1301,0,0,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{35,3007,1377,274,0,0,0,0,0,0,0,0},{23,2996,1394,280,0,0,0,0,0}},
+       {4748, 243, 280, 274, 1982, 4765, 3781, 3784, {4772, 4781, 4787, 4793, 4802, 4808, 4817}, {4824, 4829, 4834, 4839, 4844, 4849, 4854}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4859, 4867, 4876, 4881, 4887, 4891, 4896, 4904, 4910, 4920, 1116, 4928, 0}, {4859, 4867, 4876, 4881, 4887, 4891, 4896, 4904, 4910, 4920, 1116, 4928, 0}, {4938, 4944, 4876, 4951, 4887, 4891, 4956, 4904, 4962, 1286, 1291, 4968, 0}, {4938, 4944, 4876, 4951, 4887, 4891, 4956, 4904, 4962, 1286, 1291, 4968, 0}, 2, 1, 239, 241, {243,14,1336,1327,1301,0,0,0,0,0,0,0,0,0},{4748,4974,3732,0,0,0,0,0},{274,1377,4983,4989,4999,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {3991, 2351, 1394, 1377, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 6, 2601, 241, {2351,1327,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{1377,274,35,0,0,0,0,0,0,0,0,0},{1394,280,23,0,0,0,0,0,0}},
+       {5487, 243, 280, 274, 1982, 55, 946, 951, {3787, 3794, 3801, 3809, 3819, 3828, 3835}, {3844, 3848, 3852, 3856, 3860, 3864, 3868}, {2090, 2463, 2465, 3872, 2465, 2469, 2090}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, 2, 1, 239, 241, {243,14,1320,2903,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {4005, 3956, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 0, 239, 241, {3956,3947,1320,14,1327,1301,0,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{35,3007,1377,274,0,0,0,0,0,0,0,0},{23,2996,1394,280,0,0,0,0,0}},
+       {4748, 243, 280, 274, 1982, 4765, 3781, 3784, {4772, 4781, 4787, 4793, 4802, 4808, 4817}, {4824, 4829, 4834, 4839, 4844, 4849, 4854}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4859, 4867, 4876, 4881, 4887, 4891, 4896, 4904, 4910, 4920, 1116, 4928, 0}, {4859, 4867, 4876, 4881, 4887, 4891, 4896, 4904, 4910, 4920, 1116, 4928, 0}, {4938, 4944, 4876, 4951, 4887, 4891, 4956, 4904, 4962, 1286, 1291, 4968, 0}, {4938, 4944, 4876, 4951, 4887, 4891, 4956, 4904, 4962, 1286, 1291, 4968, 0}, 2, 1, 239, 241, {243,14,1336,1327,1301,0,0,0,0,0,0,0,0,0},{4748,4974,3732,0,0,0,0,0},{274,1377,4983,4989,4999,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {1960, 1973, 1394, 1377, 1982, 2362, 34793, 34803, {11565, 34811, 8966, 11590, 8981, 8991, 8997}, {9004, 9008, 9012, 11611, 9020, 9025, 9029}, {9033, 9035, 9037, 1049, 9039, 9035, 1049}, {2473, 2480, 34822, 2494, 2500, 2573, 2577, 11631, 34827, 34837, 34845, 34854, 0}, {2473, 2480, 34822, 2494, 2500, 2573, 2577, 11631, 34827, 34837, 34845, 34854, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 11638, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 11638, 2585, 2589, 2593, 2597, 0}, 0, 1, 763, 241, {1973,2903,9350,2647,9549,1336,11642,1301,0,0,0,0,0,0},{1960,2614,2628,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3991, 2351, 1394, 1377, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 0, 2601, 241, {2351,1327,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{1377,274,35,0,0,0,0,0,0,0,0,0},{1394,280,23,0,0,0,0,0,0}},
+       {5487, 1814, 23, 35, 1982, 55, 3781, 3784, {3787, 3794, 3801, 3809, 3819, 3828, 3835}, {3844, 3848, 3852, 3856, 3860, 3864, 3868}, {2090, 2463, 2465, 3872, 2465, 2469, 2090}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, 0, 0, 239, 241, {1814,1857,1301,0,0,0,0,0,0,0,0,0,0,0},{5487,0,0,0,0,0,0,0},{35,274,0,0,0,0,0,0,0,0,0,0},{23,280,0,0,0,0,0,0,0}},
+       {4005, 243, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 0, 239, 241, {243,14,3956,1320,1327,1301,0,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{35,3007,1377,274,0,0,0,0,0,0,0,0},{23,2996,1394,280,0,0,0,0,0}},
+       {1960, 1973, 1394, 1377, 44, 2362, 34863, 34881, {34896, 34909, 34928, 34941, 34956, 34973, 11264}, {34984, 34991, 34998, 35005, 35012, 35019, 35026}, {528, 531, 35033, 537, 540, 531, 537}, {35036, 35049, 573, 582, 14827, 14834, 14843, 614, 35064, 35083, 35098, 35115, 0}, {35036, 35049, 573, 582, 14827, 14834, 14843, 614, 35064, 35083, 35098, 35115, 0}, {35132, 35139, 35146, 35153, 14827, 35160, 35167, 35174, 35181, 35188, 35195, 35202, 0}, {35132, 35139, 35146, 35153, 14827, 35160, 35167, 35174, 35181, 35188, 35195, 35202, 0}, 0, 1, 763, 241, {1973,2903,9350,2647,9549,1336,11642,1301,0,0,0,0,0,0},{1960,2614,2628,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3991, 243, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 6, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{35,274,1377,0,0,0,0,0,0,0,0,0},{23,280,1394,0,0,0,0,0,0}},
+       {3744, 243, 23, 35, 44, 3773, 3781, 3784, {3787, 3794, 3801, 3809, 3819, 3828, 3835}, {3844, 3848, 3852, 3856, 3860, 3864, 3868}, {2090, 2463, 2465, 3872, 2465, 2469, 2090}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, 0, 0, 239, 241, {243,1301,0,0,0,0,0,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{35,3007,1377,274,0,0,0,0,0,0,0,0},{23,2996,1394,280,0,0,0,0,0}},
+       {4005, 243, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 0, 239, 241, {243,14,1320,1327,1301,0,0,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{35,3007,1377,274,0,0,0,0,0,0,0,0},{23,2996,1394,280,0,0,0,0,0}},
+       {3991, 243, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 6, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{35,274,1377,0,0,0,0,0,0,0,0,0},{23,280,1394,0,0,0,0,0,0}},
+       {4005, 243, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 0, 239, 241, {243,14,14083,1320,1327,1301,0,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{35,3007,1377,274,0,0,0,0,0,0,0,0},{23,2996,1394,280,0,0,0,0,0}},
+       {1960, 1973, 1394, 1377, 1982, 2362, 34793, 34803, {11565, 34811, 8966, 11590, 8981, 8991, 8997}, {9004, 9008, 9012, 11611, 9020, 9025, 9029}, {9033, 9035, 9037, 1049, 9039, 9035, 1049}, {2473, 2480, 34822, 2494, 2500, 2573, 2577, 11631, 34827, 34837, 34845, 34854, 0}, {2473, 2480, 34822, 2494, 2500, 2573, 2577, 11631, 34827, 34837, 34845, 34854, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 11638, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 11638, 2585, 2589, 2593, 2597, 0}, 0, 1, 763, 241, {1973,2903,9350,2647,9549,1336,11642,1301,0,0,0,0,0,0},{1960,2614,2628,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3991, 243, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {35209, 35233, 35242, 35251, 35262, 35271, 35284, 35293, 35298, 35309, 35331, 35355, 0}, {35209, 35233, 35242, 35251, 35262, 35271, 35284, 35293, 35298, 35309, 35331, 35355, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 6, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{35,274,1377,0,0,0,0,0,0,0,0,0},{23,280,1394,0,0,0,0,0,0}},
+       {14104, 243, 23, 35, 1982, 55, 3781, 3784, {3787, 3794, 3801, 3809, 3819, 3828, 3835}, {3844, 3848, 3852, 3856, 3860, 3864, 3868}, {2090, 2463, 2465, 3872, 2465, 2469, 2090}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, 0, 0, 239, 241, {243,1301,0,0,0,0,0,0,0,0,0,0,0,0},{14104,0,0,0,0,0,0,0},{35,274,0,0,0,0,0,0,0,0,0,0},{23,280,0,0,0,0,0,0,0}},
+       {4005, 243, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 0, 239, 241, {243,14,1320,1327,1301,0,0,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{35,3007,1377,274,0,0,0,0,0,0,0,0},{23,2996,1394,280,0,0,0,0,0}},
+       {1960, 1973, 1394, 1377, 1982, 2362, 34863, 34881, {34896, 34909, 34928, 8448, 34956, 34973, 11264}, {34984, 34991, 34998, 35377, 35012, 35019, 35026}, {528, 531, 35033, 537, 540, 531, 537}, {35036, 35049, 573, 582, 14827, 35160, 35167, 614, 35064, 35083, 35098, 35115, 0}, {35036, 35049, 573, 582, 14827, 35160, 35167, 614, 35064, 35083, 35098, 35115, 0}, {35132, 35139, 35146, 35153, 14827, 35160, 35167, 35174, 35181, 35188, 35195, 35202, 0}, {35132, 35139, 35146, 35153, 14827, 35160, 35167, 35174, 35181, 35188, 35195, 35202, 0}, 0, 1, 763, 241, {1973,2903,9350,2647,9549,1336,11642,1301,0,0,0,0,0,0},{1960,2614,2628,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3991, 243, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {35209, 35233, 35242, 35251, 35262, 35271, 35284, 35293, 35298, 35309, 35331, 35355, 0}, {35209, 35233, 35242, 35251, 35262, 35271, 35284, 35293, 35298, 35309, 35331, 35355, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 6, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{35,274,1377,0,0,0,0,0,0,0,0,0},{23,280,1394,0,0,0,0,0,0}},
+       {14104, 243, 23, 35, 1982, 55, 3781, 3784, {3787, 3794, 3801, 3809, 3819, 3828, 3835}, {3844, 3848, 3852, 3856, 3860, 3864, 3868}, {2090, 2463, 2465, 3872, 2465, 2469, 2090}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, 0, 0, 239, 241, {243,1301,0,0,0,0,0,0,0,0,0,0,0,0},{14104,0,0,0,0,0,0,0},{35,274,0,0,0,0,0,0,0,0,0,0},{23,280,0,0,0,0,0,0,0}},
+       {4005, 243, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 0, 239, 241, {243,14,1320,1327,1301,0,0,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{35,3007,274,1377,0,0,0,0,0,0,0,0},{23,2996,280,1394,0,0,0,0,0}},
+       {1960, 1973, 1394, 1377, 1982, 2362, 34793, 34803, {11565, 34811, 8966, 11590, 8981, 8991, 8997}, {9004, 9008, 9012, 11611, 9020, 9025, 9029}, {9033, 9035, 9037, 1049, 9039, 9035, 1049}, {2473, 2480, 34822, 2494, 2500, 2573, 2577, 11631, 34827, 34837, 34845, 34854, 0}, {2473, 2480, 34822, 2494, 2500, 2573, 2577, 11631, 34827, 34837, 34845, 34854, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 11638, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 11638, 2585, 2589, 2593, 2597, 0}, 0, 1, 763, 241, {1973,2903,9350,2647,9549,1336,11642,1301,0,0,0,0,0,0},{1960,2614,2628,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3991, 243, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {35209, 35233, 35242, 35251, 35262, 35271, 35284, 35293, 35298, 35309, 35331, 35355, 0}, {35209, 35233, 35242, 35251, 35262, 35271, 35284, 35293, 35298, 35309, 35331, 35355, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 1, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{35,274,1377,0,0,0,0,0,0,0,0,0},{23,280,1394,0,0,0,0,0,0}},
+       {3744, 3764, 2996, 3007, 44, 3773, 3781, 3784, {3787, 3794, 3801, 3809, 3819, 3828, 3835}, {3844, 3848, 3852, 3856, 3860, 3864, 3868}, {2090, 2463, 2465, 3872, 2465, 2469, 2090}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, 0, 0, 239, 241, {3764,3940,3947,3956,1301,1857,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {4005, 243, 1394, 1377, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 1, 239, 241, {243,14,1320,1327,1301,0,0,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {1960, 1973, 1394, 1377, 1982, 2362, 34863, 34881, {34896, 34909, 34928, 8448, 34956, 34973, 11264}, {34984, 34991, 34998, 35377, 35012, 35019, 35026}, {528, 531, 35033, 537, 540, 531, 537}, {35036, 35049, 573, 582, 14827, 35160, 35167, 614, 35064, 35083, 35098, 35115, 0}, {35036, 35049, 573, 582, 14827, 35160, 35167, 614, 35064, 35083, 35098, 35115, 0}, {35132, 35139, 35146, 35153, 14827, 35160, 35167, 35174, 35181, 35188, 35195, 35202, 0}, {35132, 35139, 35146, 35153, 14827, 35160, 35167, 35174, 35181, 35188, 35195, 35202, 0}, 0, 1, 763, 241, {1973,2903,9350,2647,9549,1336,11642,1301,0,0,0,0,0,0},{1960,2614,2628,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3991, 243, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 6, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{35,274,1377,0,0,0,0,0,0,0,0,0},{23,280,1394,0,0,0,0,0,0}},
+       {3744, 3764, 2996, 3007, 44, 3773, 3781, 3784, {3787, 3794, 3801, 3809, 3819, 3828, 3835}, {3844, 3848, 3852, 3856, 3860, 3864, 3868}, {2090, 2463, 2465, 3872, 2465, 2469, 2090}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, 0, 0, 239, 241, {3764,3940,3947,3956,1301,1857,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {4005, 2351, 1394, 1377, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 1, 2601, 241, {2351,1327,14,1320,1301,0,0,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3991, 243, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 6, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{35,274,1377,0,0,0,0,0,0,0,0,0},{23,280,1394,0,0,0,0,0,0}},
+       {4005, 243, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 1, 239, 241, {243,14,1320,1327,1301,0,0,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{35,3007,1377,274,0,0,0,0,0,0,0,0},{23,2996,1394,280,0,0,0,0,0}},
+       {3991, 243, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 6, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{35,274,1377,0,0,0,0,0,0,0,0,0},{23,280,1394,0,0,0,0,0,0}},
+       {4005, 243, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 0, 239, 241, {243,14,1320,1327,1301,0,0,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{35,3007,1377,274,0,0,0,0,0,0,0,0},{23,2996,1394,280,0,0,0,0,0}},
+       {3991, 243, 23, 35, 44, 55, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, {63, 72, 79, 99, 119, 143, 167, 174, 185, 196, 205, 223, 0}, 0, 6, 239, 241, {243,14,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{35,274,1377,0,0,0,0,0,0,0,0,0},{23,280,1394,0,0,0,0,0,0}},
+       {5487, 2351, 280, 274, 44, 55, 3781, 3784, {3787, 3794, 3801, 3809, 3819, 3828, 3835}, {3844, 3848, 3852, 3856, 3860, 3864, 3868}, {2090, 2463, 2465, 3872, 2465, 2469, 2090}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, 0, 0, 2601, 241, {2351,1327,2312,2903,1301,0,0,0,0,0,0,0,0,0},{5487,3732,0,0,0,0,0,0},{274,1377,1928,0,0,0,0,0,0,0,0,0},{280,1394,1948,1937,0,0,0,0,0}},
+       {4005, 243, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 0, 239, 241, {243,14,1320,1327,1301,0,0,0,0,0,0,0,0,0},{4005,4231,4258,0,0,0,0,0},{35,3007,1377,274,0,0,0,0,0,0,0,0},{23,2996,1394,280,0,0,0,0,0}},
+       {4005, 243, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 0, 239, 241, {243,14,32997,1301,0,0,0,0,0,0,0,0,0,0},{4005,0,0,0,0,0,0,0},{35,274,0,0,0,0,0,0,0,0,0,0},{23,280,0,0,0,0,0,0,0}},
+       {35384, 2987, 2996, 3007, 44, 4765, 3781, 3784, {3787, 3794, 3801, 3809, 3819, 3828, 3835}, {3844, 3848, 3852, 3856, 3860, 3864, 3868}, {2090, 2463, 2465, 3872, 2465, 2469, 2090}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {3874, 3882, 3891, 2775, 3897, 3901, 3906, 2795, 2802, 3911, 2820, 3919, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, {2838, 2842, 3928, 2851, 3897, 2855, 2859, 2863, 2867, 3932, 2875, 3936, 0}, 0, 0, 239, 241, {2987,1320,243,14,1301,0,0,0,0,0,0,0,0,0},{35384,13628,0,0,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {4005, 243, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 0, 239, 241, {243,14,32997,1301,0,0,0,0,0,0,0,0,0,0},{4005,0,0,0,0,0,0,0},{35,274,0,0,0,0,0,0,0,0,0,0},{23,280,0,0,0,0,0,0,0}},
+       {4005, 243, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 0, 239, 241, {243,14,32997,1301,0,0,0,0,0,0,0,0,0,0},{4005,0,0,0,0,0,0,0},{35,274,0,0,0,0,0,0,0,0,0,0},{23,280,0,0,0,0,0,0,0}},
+       {4005, 243, 23, 35, 4034, 55, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 0, 239, 241, {243,14,32997,1301,0,0,0,0,0,0,0,0,0,0},{4005,0,0,0,0,0,0,0},{35,274,0,0,0,0,0,0,0,0,0,0},{23,280,0,0,0,0,0,0,0}},
+       {3744, 3764, 2996, 3007, 4034, 7676, 946, 951, {4049, 4057, 4063, 4070, 4081, 4088, 4096}, {4104, 4108, 2565, 4112, 4117, 4121, 4125}, {2752, 2471, 2463, 2463, 4132, 4134, 2090}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4136, 4142, 4150, 1070, 4156, 4161, 4167, 4173, 4180, 1108, 4191, 4201, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, {4211, 2561, 2565, 4215, 4156, 2573, 2577, 4219, 2585, 4223, 2593, 4227, 0}, 0, 0, 239, 241, {3764,3940,3947,3956,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}},
+       {1960, 1973, 1394, 1377, 1982, 2362, 34863, 34881, {34896, 34909, 34928, 8448, 34956, 34973, 11264}, {34984, 34991, 34998, 35377, 35012, 35019, 35026}, {528, 531, 35033, 537, 540, 531, 537}, {35036, 35049, 573, 582, 14827, 35160, 35167, 614, 35064, 35083, 35098, 35115, 0}, {35036, 35049, 573, 582, 14827, 35160, 35167, 614, 35064, 35083, 35098, 35115, 0}, {35132, 35139, 35146, 35153, 14827, 35160, 35167, 35174, 35181, 35188, 35195, 35202, 0}, {35132, 35139, 35146, 35153, 14827, 35160, 35167, 35174, 35181, 35188, 35195, 35202, 0}, 0, 1, 763, 241, {1973,2903,9350,2647,9549,1336,11642,1301,0,0,0,0,0,0},{1960,2614,2628,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {1960, 1973, 1394, 1377, 1982, 2362, 34793, 34803, {11565, 34811, 8966, 11590, 8981, 8991, 8997}, {9004, 9008, 9012, 11611, 9020, 9025, 9029}, {9033, 9035, 9037, 1049, 9039, 9035, 1049}, {2473, 2480, 34822, 2494, 2500, 2573, 2577, 11631, 34827, 34837, 34845, 34854, 0}, {2473, 2480, 34822, 2494, 2500, 2573, 2577, 11631, 34827, 34837, 34845, 34854, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 11638, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 11638, 2585, 2589, 2593, 2597, 0}, 0, 1, 763, 241, {1973,2903,9350,2647,9549,1336,11642,1301,0,0,0,0,0,0},{1960,2614,2628,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3732, 2647, 1394, 1377, 1982, 4765, 0, 0, {33985, 33996, 34020, 34050, 34067, 34089, 34098}, {14270, 14273, 14278, 14284, 14288, 7414, 14293}, {6567, 6555, 6557, 6559, 6561, 6563, 6565}, {34109, 34122, 573, 34135, 593, 34146, 34155, 614, 34164, 34181, 34196, 34209, 0}, {34109, 34122, 573, 34135, 593, 34146, 34155, 614, 34164, 34181, 34196, 34209, 0}, {14367, 7853, 2565, 2569, 14371, 14375, 14379, 14383, 14387, 2589, 14391, 14395, 0}, {14367, 7853, 2565, 2569, 14371, 14375, 14379, 14383, 14387, 2589, 14391, 14395, 0}, 0, 1, 763, 241, {2647,1336,2903,14,1301,0,0,0,0,0,0,0,0,0},{3732,5487,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {1422, 1444, 1394, 1377, 1453, 1469, 1482, 1489, {1496, 1506, 1516, 1526, 1536, 1546, 1556}, {1566, 1573, 1580, 1587, 1594, 1601, 1608}, {1615, 1619, 1623, 1627, 1631, 1635, 1639}, {1643, 1650, 1657, 1664, 1671, 1678, 1685, 1692, 1699, 1706, 1713, 1723, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1643, 1650, 1657, 1664, 1671, 1678, 1685, 1692, 1699, 1706, 1713, 1723, 0}, {1643, 1650, 1657, 1664, 1671, 1678, 1685, 1692, 1699, 1706, 1713, 1723, 0}, 0, 0, 239, 241, {1444,1796,1805,1301,1814,1825,1836,1843,1850,1857,0,0,0,0},{1422,1866,1893,0,0,0,0,0},{1377,274,1920,1928,0,0,0,0,0,0,0,0},{1394,280,1937,1948,0,0,0,0,0}},
+       {1960, 2647, 280, 274, 1982, 2362, 2370, 2375, {2380, 9835, 33822, 2403, 2410, 2418, 33829}, {2433, 9863, 33837, 2446, 2450, 2454, 6004}, {2090, 2463, 2465, 2467, 2465, 2469, 2471}, {2473, 2480, 4876, 2494, 4887, 2504, 2509, 2514, 2521, 2531, 2539, 6076, 0}, {2473, 2480, 4876, 2494, 4887, 2504, 2509, 2514, 2521, 2531, 2539, 6076, 0}, {2557, 2561, 2565, 2569, 4887, 2573, 2577, 2581, 2585, 2589, 2593, 6106, 0}, {2557, 2561, 2565, 2569, 4887, 2573, 2577, 2581, 2585, 2589, 2593, 6106, 0}, 2, 1, 763, 241, {2647,1336,2903,1301,2883,0,0,0,0,0,0,0,0,0},{1960,2614,0,0,0,0,0,0},{274,1377,7296,4983,0,0,0,0,0,0,0,0},{280,1394,7307,6438,0,0,0,0,0}},
+       {1960, 1973, 1394, 1377, 1982, 2362, 34793, 34803, {8945, 8954, 8966, 8973, 8981, 8991, 8997}, {9004, 9008, 9012, 9016, 9020, 9025, 9029}, {0, 0, 0, 0, 0, 0, 0}, {2473, 2480, 34822, 2494, 2500, 2504, 2509, 11631, 34827, 34837, 34845, 34854, 0}, {2473, 2480, 34822, 2494, 2500, 2504, 2509, 11631, 34827, 34837, 34845, 34854, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 11638, 2585, 2589, 2593, 2597, 0}, {2557, 2561, 2565, 2569, 2500, 2573, 2577, 11638, 2585, 2589, 2593, 2597, 0}, 0, 0, 763, 241, {1973,2903,9350,2647,9549,1336,11642,1301,0,0,0,0,0,0},{1960,2614,2628,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3732, 2647, 1394, 1377, 1982, 4765, 0, 0, {14181, 14187, 14201, 14224, 14238, 14254, 14261}, {14270, 14273, 14278, 14284, 14288, 7414, 14293}, {6567, 6555, 6557, 6559, 6561, 6563, 6565}, {14297, 14304, 10132, 14311, 3897, 14317, 14323, 14329, 14336, 14345, 14353, 14360, 0}, {14297, 14304, 10132, 14311, 3897, 14317, 14323, 14329, 14336, 14345, 14353, 14360, 0}, {14367, 7853, 2565, 2569, 14371, 14375, 14379, 14383, 14387, 2589, 14391, 14395, 0}, {14367, 7853, 2565, 2569, 14371, 14375, 14379, 14383, 14387, 2589, 14391, 14395, 0}, 0, 1, 763, 241, {2647,1336,2903,14,1301,0,0,0,0,0,0,0,0,0},{3732,5487,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {34222, 2647, 280, 274, 1982, 18725, 0, 0, {18732, 18747, 18762, 18777, 18794, 18811, 18820}, {18831, 18838, 18845, 18852, 18859, 18866, 18873}, {18880, 18883, 8545, 8548, 8542, 18886, 18889}, {12768, 12779, 8579, 12792, 8601, 12803, 12810, 8626, 12817, 12832, 12845, 12856, 0}, {12768, 12779, 8579, 12792, 8601, 12803, 12810, 8626, 12817, 12832, 12845, 12856, 0}, {12869, 12876, 12883, 12890, 8601, 12803, 12810, 12897, 12904, 12911, 12918, 12925, 0}, {12869, 12876, 12883, 12890, 8601, 12803, 12810, 12897, 12904, 12911, 12918, 12925, 0}, 0, 1, 763, 241, {2647,1336,18714,2903,14,1301,0,0,0,0,0,0,0,0},{34222,3732,5487,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {24812, 24833, 1394, 1377, 24842, 4765, 0, 0, {24859, 24866, 24877, 24890, 24903, 24914, 24927}, {24938, 24943, 24948, 24953, 24958, 24963, 24968}, {0, 0, 0, 0, 0, 0, 0}, {24973, 24988, 24997, 25004, 25017, 25024, 25035, 25044, 25053, 25060, 25071, 25082, 0}, {24973, 24988, 24997, 25004, 25017, 25024, 25035, 25044, 25053, 25060, 25071, 25082, 0}, {25093, 25100, 25107, 25114, 25121, 25128, 25135, 25142, 25149, 25156, 25163, 25170, 0}, {25093, 25100, 25107, 25114, 25121, 25128, 25135, 25142, 25149, 25156, 25163, 25170, 0}, 0, 0, 763, 241, {24833,1301,0,0,0,0,0,0,0,0,0,0,0,0},{24812,0,0,0,0,0,0,0},{1377,0,0,0,0,0,0,0,0,0,0,0},{1394,0,0,0,0,0,0,0,0}},
+       {1422, 2987, 1394, 1377, 1453, 1469, 1482, 1489, {1496, 1506, 1516, 1526, 1536, 1546, 1556}, {33611, 33618, 33625, 33632, 33639, 33646, 33653}, {1615, 1619, 1623, 1627, 1631, 1635, 1639}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, 0, 0, 239, 241, {2987,1320,14,1843,1857,1444,1814,1301,0,0,0,0,0,0},{1422,6639,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {1422, 2987, 1394, 1377, 1453, 1469, 1482, 1489, {1496, 1506, 1516, 1526, 1536, 1546, 1556}, {33611, 33618, 33625, 33632, 33639, 33646, 33653}, {1615, 1619, 1623, 1627, 1631, 1635, 1639}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, {1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1784, 1790, 0}, 0, 0, 239, 241, {2987,1320,14,1843,1857,1444,1814,1301,0,0,0,0,0,0},{1422,6639,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {1960, 2647, 280, 274, 1982, 2362, 946, 951, {2380, 2388, 2395, 2403, 2410, 2418, 2425}, {7266, 7271, 7275, 7279, 7283, 7287, 7291}, {2090, 2463, 2465, 2467, 2465, 2469, 2471}, {2473, 2480, 4876, 2494, 4887, 2504, 2509, 2514, 2521, 2531, 2539, 6076, 0}, {2473, 2480, 4876, 2494, 4887, 2504, 2509, 2514, 2521, 2531, 2539, 6076, 0}, {2557, 2561, 2565, 2569, 4887, 2573, 2577, 2581, 2585, 2589, 2593, 6106, 0}, {2557, 2561, 2565, 2569, 4887, 2573, 2577, 2581, 2585, 2589, 2593, 6106, 0}, 2, 1, 763, 241, {2647,1336,2903,1301,2883,0,0,0,0,0,0,0,0,0},{1960,2614,0,0,0,0,0,0},{274,1377,7296,4983,0,0,0,0,0,0,0,0},{280,1394,7307,6438,0,0,0,0,0}},
+       {1960, 1973, 1394, 1377, 1982, 2362, 34863, 34881, {34896, 34909, 34928, 8448, 34956, 34973, 11264}, {34984, 34991, 34998, 35377, 35012, 35019, 35026}, {528, 531, 35033, 537, 540, 531, 537}, {35036, 35049, 573, 582, 14827, 35160, 35167, 614, 35064, 35083, 35098, 35115, 0}, {35036, 35049, 573, 582, 14827, 35160, 35167, 614, 35064, 35083, 35098, 35115, 0}, {35132, 35139, 35146, 35153, 14827, 35160, 35167, 35174, 35181, 35188, 35195, 35202, 0}, {35132, 35139, 35146, 35153, 14827, 35160, 35167, 35174, 35181, 35188, 35195, 35202, 0}, 0, 1, 763, 241, {1973,2903,9350,2647,9549,1336,11642,1301,0,0,0,0,0,0},{1960,2614,2628,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3732, 1336, 1394, 1377, 1982, 3773, 12592, 12604, {12616, 12631, 12646, 12661, 12678, 12697, 12708}, {12719, 12726, 12733, 12740, 12747, 12754, 12761}, {0, 0, 0, 0, 0, 0, 0}, {12768, 12779, 8579, 12792, 8601, 12803, 12810, 8626, 12817, 12832, 12845, 12856, 0}, {12768, 12779, 8579, 12792, 8601, 12803, 12810, 8626, 12817, 12832, 12845, 12856, 0}, {12869, 12876, 12883, 12890, 8601, 12803, 12810, 12897, 12904, 12911, 12918, 12925, 0}, {12869, 12876, 12883, 12890, 8601, 12803, 12810, 12897, 12904, 12911, 12918, 12925, 0}, 0, 1, 763, 241, {1336,1301,0,0,0,0,0,0,0,0,0,0,0,0},{3732,0,0,0,0,0,0,0},{1377,274,0,0,0,0,0,0,0,0,0,0},{1394,0,0,0,0,0,0,0,0}},
+       {18696, 18714, 280, 274, 1982, 18725, 0, 0, {33660, 33670, 33679, 33688, 33699, 33709, 33714}, {33721, 33727, 33732, 33737, 33742, 10109, 33746}, {33751, 2752, 2090, 7414, 2085, 7414, 2090}, {14297, 14304, 10132, 14311, 3897, 33753, 33758, 33763, 14336, 14345, 14353, 14360, 0}, {14297, 14304, 10132, 14311, 3897, 33753, 33758, 33763, 14336, 14345, 14353, 14360, 0}, {33770, 33775, 3928, 2851, 3897, 33753, 33758, 33779, 10487, 2871, 33783, 33788, 0}, {33770, 33775, 3928, 2851, 3897, 33753, 33758, 33779, 10487, 2871, 33783, 33788, 0}, 0, 1, 239, 241, {18714,1336,2903,14,1301,0,0,0,0,0,0,0,0,0},{18696,3732,5487,0,0,0,0,0},{274,1377,0,0,0,0,0,0,0,0,0,0},{280,1394,0,0,0,0,0,0,0}},
+       {34243, 1444, 1394, 1377, 34319, 34351, 0, 0, {24859, 24866, 24877, 24890, 24903, 24914, 24927}, {24938, 24943, 24948, 24953, 24958, 24963, 24968}, {0, 0, 0, 0, 0, 0, 0}, {24973, 24988, 24997, 25004, 25017, 25024, 25035, 25044, 25053, 25060, 25071, 25082, 0}, {24973, 24988, 24997, 25004, 25017, 25024, 25035, 25044, 25053, 25060, 25071, 25082, 0}, {25093, 25100, 25107, 25114, 25121, 25128, 25135, 25142, 25149, 25156, 25163, 25170, 0}, {25093, 25100, 25107, 25114, 25121, 25128, 25135, 25142, 25149, 25156, 25163, 25170, 0}, 0, 0, 239, 241, {1444,1796,1805,1825,1301,1814,1836,1843,1850,1857,0,0,0,0},{34243,34386,0,0,0,0,0,0},{1377,0,0,0,0,0,0,0,0,0,0,0},{1394,0,0,0,0,0,0,0,0}},
+       {3991, 2351, 1394, 1377, 44, 55, 29235, 29245, {29258, 29265, 29271, 29278, 29284, 29290, 29298}, {29308, 29312, 29316, 29320, 29324, 29328, 29332}, {12319, 12319, 12319, 12319, 12319, 12319, 12319}, {29338, 29347, 29356, 29361, 29367, 29373, 29379, 29386, 29392, 29401, 29410, 29418, 0}, {29338, 29347, 29356, 29361, 29367, 29373, 29379, 29386, 29392, 29401, 29410, 29418, 0}, {29427, 29431, 3928, 29435, 3897, 29439, 29443, 29447, 29452, 29456, 29462, 29466, 0}, {29427, 29431, 3928, 29435, 3897, 29439, 29443, 29447, 29452, 29456, 29462, 29466, 0}, 0, 0, 2601, 241, {2351,1327,1301,0,0,0,0,0,0,0,0,0,0,0},{3991,254,0,0,0,0,0,0},{1377,274,29470,0,0,0,0,0,0,0,0,0},{1394,280,0,0,0,0,0,0,0}},
+       {3744, 2987, 2996, 3007, 44, 3773, 0, 0, {30345, 30352, 30360, 30367, 30374, 30382, 30390}, {30397, 30400, 30403, 30406, 30409, 30412, 30415}, {2471, 2471, 2465, 2471, 12319, 4132, 12319}, {30418, 30426, 30436, 30442, 30450, 30455, 30460, 30465, 30472, 18677, 30480, 30488, 0}, {30418, 30426, 30436, 30442, 30450, 30455, 30460, 30465, 30472, 18677, 30480, 30488, 0}, {2838, 30496, 3928, 30500, 3897, 29439, 29443, 30504, 3868, 2871, 30508, 15347, 0}, {2838, 30496, 3928, 30500, 3897, 29439, 29443, 30504, 3868, 2871, 30508, 15347, 0}, 0, 0, 239, 241, {2987,1320,14,243,1857,1301,3967,0,0,0,0,0,0,0},{3744,3977,254,3991,0,0,0,0},{3007,35,1377,274,0,0,0,0,0,0,0,0},{2996,23,1394,280,0,0,0,0,0}}
 };
 
 
 static const NumberFormatEntry number_format_entries [] = {
-       {35395, 35398, 35395, 35398, 35395, 35398, 35401, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35457, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35477, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35477, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35481, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35485, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35473, 35463, 35490, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35499, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35503, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35485, 35463, 35506, 35469, 35511, 35441, 35523, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 0, 35469, 35431, 35441, 2624, 35450, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35477, 35463, 35527, 35469, 35431, 35441, 2624, 35450, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35543, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 0, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35547, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35551, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35554, 790, 35554, 790, 35554, 0, 35463, 35465, 35469, 35511, 35441, 35523, 35450, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 0, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35558, 35463, 35566, 35469, 35431, 35441, 2624, 35450, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35582, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 2, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35473, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35585, 35463, 0, 35469, 35431, 35441, 2624, 35450, 5, 1, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35485, 35463, 35589, 35469, 35511, 35441, 35523, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35596, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35600, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35603, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 3, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35608, 35463, 0, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35611, 35463, 35615, 35469, 35431, 35441, 2624, 35450, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35631, 35463, 35634, 35469, 35511, 35441, 35523, 35450, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35648, 35463, 35589, 35469, 35511, 35441, 35523, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 35651, 35411, 0, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35655, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35659, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 0, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 10506, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 10506, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 10506, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 10506, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 0, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35485, 35463, 35589, 35469, 35511, 35441, 35523, 35450, 12, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35665, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {790, 35452, 790, 35452, 790, 35452, 35473, 35463, 0, 35469, 35431, 35441, 2624, 35450, 1, 0, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35473, 35463, 35589, 35469, 35511, 35441, 35523, 35450, 12, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35473, 35463, 0, 35469, 35431, 35441, 2624, 35450, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35669, 35463, 0, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35672, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35679, 35463, 0, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35683, 35463, 35690, 35469, 35431, 35441, 2624, 35450, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35665, 35463, 35716, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {790, 35452, 790, 35452, 790, 35452, 35665, 35463, 0, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {790, 35452, 790, 35452, 790, 35452, 35665, 35463, 35748, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35665, 35463, 0, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35665, 35463, 35774, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {790, 35452, 790, 35452, 790, 35452, 35665, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35665, 35463, 0, 35469, 35431, 35441, 2624, 35450, 12, 1, 1, 1, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35665, 35463, 35805, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 5, 1, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35815, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35820, 35463, 0, 35469, 35431, 35441, 2624, 35450, 1, 0, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35823, 35463, 0, 35469, 35431, 35441, 2624, 35450, 5, 1, 1, 1, 2, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35827, 35463, 0, 35469, 35431, 35441, 2624, 35450, 4, 1, 0, 0, 0, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35665, 35463, 0, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35831, 35463, 0, 35469, 35431, 35441, 2624, 35450, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35839, 35463, 0, 35469, 35431, 35441, 2624, 35450, 1, 0, 1, 1, 1, 2, 1, 1, {3, 0}, {3, 0}, {3, 0}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35846, 35463, 0, 35469, 35431, 35441, 2624, 35450, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 35859, 35411, 0, 35469, 35431, 35441, 2624, 35450, 3, 0, 4, 2, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35862, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35866, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 10506, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35485, 35463, 35589, 35469, 35511, 35441, 35523, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35866, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35815, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35473, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35473, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35554, 790, 35554, 790, 35554, 0, 35463, 35465, 35469, 35511, 35441, 35523, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35870, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35820, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 35401, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35457, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35873, 35463, 35877, 35469, 35431, 35441, 2624, 35450, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35481, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35485, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35473, 35463, 35490, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35499, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35503, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35485, 35463, 35506, 35469, 35511, 35441, 35523, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 0, 35469, 35431, 35441, 2624, 35450, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35477, 35463, 35527, 35469, 35431, 35441, 2624, 35450, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35543, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35485, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35547, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35551, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35554, 790, 35554, 790, 35554, 0, 35463, 35465, 35469, 35511, 35441, 35523, 35450, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 0, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35558, 35463, 35566, 35469, 35431, 35441, 2624, 35450, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35582, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 2, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35473, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35585, 35463, 0, 35469, 35431, 35441, 2624, 35450, 5, 1, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35485, 35463, 35589, 35469, 35511, 35441, 35523, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35596, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35600, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35603, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 3, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35608, 35463, 0, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35611, 35463, 35615, 35469, 35431, 35441, 2624, 35450, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35631, 35463, 35634, 35469, 35511, 35441, 35523, 35450, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35648, 35463, 35589, 35469, 35511, 35441, 35523, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35672, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 35651, 35411, 0, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35655, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35659, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35887, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 10506, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 10506, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 10506, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 10506, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 0, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35485, 35463, 35589, 35469, 35511, 35441, 35523, 35450, 12, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35665, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {790, 35452, 790, 35452, 790, 35452, 35473, 35463, 0, 35469, 35431, 35441, 2624, 35450, 1, 0, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 0, 35463, 35589, 35469, 35511, 35441, 35523, 35450, 12, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35669, 35463, 0, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35672, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35679, 35463, 0, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35892, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35665, 35463, 35690, 35469, 35431, 35441, 2624, 35450, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35665, 35463, 35716, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {790, 35452, 790, 35452, 790, 35452, 35665, 35463, 0, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {790, 35452, 790, 35452, 790, 35452, 35665, 35463, 35748, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35665, 35463, 0, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35665, 35463, 35774, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {790, 35452, 790, 35452, 790, 35452, 35665, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35665, 35463, 0, 35469, 35431, 35441, 2624, 35450, 12, 1, 1, 1, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35665, 35463, 35805, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {790, 35452, 790, 35452, 790, 35452, 35815, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35820, 35463, 0, 35469, 35431, 35441, 2624, 35450, 1, 0, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35823, 35463, 0, 35469, 35431, 35441, 2624, 35450, 5, 1, 1, 1, 2, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35827, 35463, 0, 35469, 35431, 35441, 2624, 35450, 4, 1, 0, 0, 0, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35665, 35463, 0, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35831, 35463, 0, 35469, 35431, 35441, 2624, 35450, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35839, 35463, 0, 35469, 35431, 35441, 2624, 35450, 1, 0, 1, 1, 1, 2, 1, 1, {3, 0}, {3, 0}, {3, 0}},
-       {790, 35452, 790, 35452, 790, 35452, 35846, 35463, 0, 35469, 35431, 35441, 2624, 35450, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 35859, 35411, 0, 35469, 35431, 35441, 2624, 35450, 3, 0, 4, 2, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35862, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35866, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35866, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 10506, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35485, 35463, 35589, 35469, 35511, 35441, 35523, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35866, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35815, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35473, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35473, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35870, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35820, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 35898, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35477, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35908, 790, 35908, 790, 35908, 0, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35820, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35908, 790, 35908, 790, 35908, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35485, 35463, 35465, 35469, 35511, 35441, 35523, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35473, 35463, 35589, 35469, 35511, 35441, 35523, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35910, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35473, 35463, 0, 35469, 35431, 35441, 2624, 35450, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35488, 35463, 0, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35918, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35925, 35463, 35690, 35469, 35431, 35441, 2624, 35450, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35815, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 35929, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35488, 35463, 35877, 35469, 35431, 35441, 2624, 35450, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 15, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35473, 35463, 35589, 35469, 35511, 35441, 35523, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 35939, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 0, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 7769, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35908, 790, 35908, 790, 35908, 0, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 35949, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 0, 35463, 35877, 35469, 35431, 35441, 2624, 35450, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35908, 790, 35908, 790, 35908, 0, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35959, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 35963, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35973, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35977, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 35980, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 10506, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35990, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 35996, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 36006, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 36012, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 36022, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 36027, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 36037, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 36041, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 36049, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 36059, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35473, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 36069, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35862, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 9, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 36079, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 36089, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 36099, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35395, 35398, 35395, 35398, 35395, 35398, 36103, 35411, 35414, 35428, 35431, 35441, 2624, 35450, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35665, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35452, 790, 35452, 790, 35452, 790, 36113, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 36116, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 2494, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 36120, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35488, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
-       {35452, 790, 35452, 790, 35452, 790, 36123, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 36131, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35910, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 36136, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35485, 35463, 35465, 35469, 35511, 35441, 35523, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 35887, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35918, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 5, 1, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 36139, 35463, 35877, 35469, 35431, 35441, 2624, 35450, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 36139, 35463, 35877, 35469, 35431, 35441, 2624, 35450, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35485, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 790, 35452, 790, 35452, 790, 36131, 35463, 35465, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35452, 35452, 35452, 35452, 35452, 35672, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35892, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 35815, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35452, 35454, 35452, 35454, 35452, 35454, 0, 35463, 0, 35469, 35431, 35441, 2624, 35450, 8, 3, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {790, 35452, 790, 35452, 790, 35452, 35866, 35463, 0, 35469, 35431, 35441, 2624, 35450, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}}
+       {35403, 35406, 35403, 35406, 35403, 35406, 35409, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35465, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35485, 35494, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35502, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35502, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35506, 35471, 35473, 35477, 35510, 35522, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35537, 35548, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35559, 35573, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35607, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35473, 35477, 35616, 35624, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35632, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35636, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35639, 35477, 35644, 35449, 35656, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 0, 35477, 35588, 35660, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35502, 35471, 35670, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35686, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35690, 35700, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35709, 35471, 35473, 35477, 35713, 35732, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35751, 35471, 35473, 35477, 35588, 35660, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35754, 763, 35754, 763, 35754, 0, 35471, 35473, 35477, 35758, 35769, 35656, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 0, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35778, 35471, 35786, 35477, 35802, 35830, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35857, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 2, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 0, 35477, 35510, 35522, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35860, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35871, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35875, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35878, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 3, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35883, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35886, 35471, 35890, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35906, 35920, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35933, 35471, 35936, 35477, 35950, 35964, 35656, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35975, 35471, 35864, 35477, 35978, 35991, 35656, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36001, 35419, 0, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36005, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36009, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 0, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 36015, 36025, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 0, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 12, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36038, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36041, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36048, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36052, 35471, 36059, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 36085, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 36117, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 36143, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 1, 1, 1, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 36174, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36184, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36189, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36192, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 2, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36196, 35471, 0, 35477, 35439, 35449, 2601, 35458, 4, 1, 0, 0, 0, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36200, 35471, 0, 35477, 35439, 35449, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36208, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 1, 1, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35616, 35624, 2601, 35458, 8, 3, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36215, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36228, 35419, 0, 35477, 35439, 35449, 2601, 35458, 3, 0, 4, 2, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36231, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36235, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36235, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36184, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35754, 763, 35754, 763, 35754, 0, 35471, 35473, 35477, 35644, 35449, 35656, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36239, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36189, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 35409, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35465, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35485, 35494, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36242, 35471, 36246, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35506, 35471, 35473, 35477, 35510, 35522, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35537, 35548, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35559, 35573, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35607, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35473, 35477, 35616, 35624, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35632, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35636, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35639, 35477, 35644, 35449, 35656, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 0, 35477, 35588, 35660, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35502, 35471, 35670, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35686, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35690, 35700, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35709, 35471, 35473, 35477, 35713, 35732, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35751, 35471, 35473, 35477, 35588, 35660, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35754, 763, 35754, 763, 35754, 0, 35471, 35473, 35477, 35758, 35769, 35656, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 0, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35778, 35471, 35786, 35477, 35802, 35830, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35857, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 2, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 0, 35477, 35510, 35522, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35860, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35871, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35875, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35878, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 3, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35883, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35886, 35471, 35890, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35906, 35920, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35933, 35471, 35936, 35477, 35950, 35964, 35656, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35975, 35471, 35864, 35477, 35978, 35991, 35656, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36041, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36001, 35419, 0, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36005, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36009, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36256, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 36015, 36025, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 0, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 12, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36038, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36041, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36048, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36261, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 36059, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 36085, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 36117, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 36143, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 1, 1, 1, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 36174, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 36184, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36189, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36192, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 2, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36196, 35471, 0, 35477, 35439, 35449, 2601, 35458, 4, 1, 0, 0, 0, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36200, 35471, 0, 35477, 35439, 35449, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36208, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 1, 1, {3, 0}, {3, 0}, {3, 0}},
+       {763, 35460, 763, 35460, 763, 35460, 36215, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36228, 35419, 0, 35477, 35439, 35449, 2601, 35458, 3, 0, 4, 2, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36231, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36235, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36235, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36235, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36184, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36239, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36189, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36267, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35502, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 36277, 763, 36277, 763, 36277, 0, 35471, 35473, 35477, 35537, 35548, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36189, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35616, 35624, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 36277, 763, 36277, 763, 36277, 0, 35471, 0, 35477, 35588, 35660, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35690, 35700, 2601, 35458, 12, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35473, 35477, 35644, 35449, 35656, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35473, 35477, 35588, 35660, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36279, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35586, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36287, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36294, 35471, 36059, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36184, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36298, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 36246, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35537, 35548, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35586, 35471, 35473, 35477, 35616, 35624, 2601, 35458, 15, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36308, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 0, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35537, 35548, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 7774, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 36277, 763, 36277, 763, 36277, 0, 35471, 35473, 35477, 35616, 35624, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36318, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 0, 35471, 36246, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 36277, 763, 36277, 763, 36277, 0, 35471, 35473, 35477, 35537, 35548, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36328, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35616, 35624, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36332, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35481, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36342, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35473, 35477, 35616, 35624, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36346, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36349, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36359, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36365, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36375, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36381, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36391, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36396, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36406, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36410, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36418, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36428, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36438, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36231, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 9, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36448, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36458, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36468, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36472, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 763, 35460, 763, 35460, 763, 36482, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36485, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 2471, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36489, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
+       {35460, 763, 35460, 763, 35460, 763, 36492, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36500, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36279, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36505, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35473, 35477, 35644, 35449, 35656, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36256, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36287, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36508, 35471, 36246, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36508, 35471, 36246, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36500, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36041, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36261, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36184, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35616, 35624, 2601, 35458, 8, 3, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36235, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}}
 };
 
 
 static const CultureInfoEntry culture_entries [] = {
-       {0x0001, 0x007F, 768, -1, 36143, 36146, 36153, 36168, 36172, 36143, 0, {0, 0, 36176, 0}, 0, 0, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0002, 0x007F, 257, -1, 36204, 36207, 36217, 36236, 36240, 36204, 0, {36244, 0, 0, 0}, 1, 1, { 1251, 21025, 10007, 866, 0, ';' }},
-       {0x0003, 0x007F, 257, -1, 36286, 36289, 36297, 36305, 36309, 36286, 0, {36313, 0, 0, 0}, 2, 2, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0004, 0x7804, 257, -1, 36333, 36341, 36362, 36369, 36373, 36377, 0, {36380, 0, 0, 0}, 3, 3, { 936, 500, 10008, 936, 0, ',' }},
-       {0x0004, 0x0004, 257, -1, 36387, 36394, 36362, 36369, 36373, 36377, 0, {36380, 0, 0, 0}, 4, 4, { 936, 500, 10008, 936, 0, ',' }},
-       {0x0005, 0x007F, 257, -1, 36422, 36425, 36431, 36441, 36445, 36422, 0, {36449, 0, 0, 0}, 5, 5, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x0006, 0x007F, 257, -1, 36475, 36478, 36485, 36491, 36495, 36475, 0, {36499, 0, 0, 0}, 6, 6, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0007, 0x007F, 257, -1, 36520, 36523, 36530, 36538, 36542, 36520, 0, {36546, 0, 0, 0}, 7, 7, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0008, 0x007F, 257, -1, 36571, 36574, 36580, 36597, 36601, 36571, 0, {36605, 0, 0, 0}, 8, 8, { 1253, 20273, 10006, 737, 0, ';' }},
-       {0x0009, 0x007F, 257, -1, 36647, 36650, 36650, 36658, 36662, 36647, 0, {36666, 0, 0, 0}, 9, 9, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x000A, 0x007F, 257, -1, 36685, 36688, 36696, 36705, 36709, 36685, 0, {36713, 0, 0, 0}, 10, 10, { 1252, 20284, 10000, 850, 0, ';' }},
-       {0x000B, 0x007F, 257, -1, 36735, 36738, 36746, 36752, 36756, 36735, 0, {36760, 0, 0, 0}, 11, 11, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x000C, 0x007F, 257, -1, 36785, 36788, 36795, 36805, 36809, 36785, 0, {36813, 0, 0, 0}, 12, 12, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x000D, 0x007F, 257, -1, 36835, 36838, 36845, 36856, 36860, 36835, 0, {36864, 0, 0, 0}, 13, 13, { 1255, 500, 10005, 862, 1, ',' }},
-       {0x000E, 0x007F, 257, -1, 36897, 36900, 36910, 36917, 36921, 36897, 0, {36925, 0, 0, 0}, 14, 14, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x000F, 0x007F, 257, -1, 36941, 36944, 36954, 36964, 36968, 36941, 0, {36972, 0, 0, 0}, 15, 15, { 1252, 20871, 10079, 850, 0, ';' }},
-       {0x0010, 0x007F, 257, -1, 36992, 36995, 37003, 37012, 37016, 36992, 0, {36713, 0, 0, 0}, 16, 16, { 1252, 20280, 10000, 850, 0, ';' }},
-       {0x0011, 0x007F, 257, -1, 37020, 37023, 37032, 37042, 37046, 37020, 0, {37050, 0, 0, 0}, 17, 17, { 932, 20290, 10001, 932, 0, ',' }},
-       {0x0012, 0x007F, 257, -1, 37077, 37080, 37087, 37097, 37101, 37077, 0, {37105, 0, 0, 0}, 18, 18, { 949, 20833, 10003, 949, 0, ',' }},
-       {0x0013, 0x007F, 257, -1, 37115, 37118, 37124, 37135, 37139, 37115, 0, {37143, 0, 0, 0}, 19, 19, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0014, 0x007F, 257, -1, 37165, 37168, 37178, 37184, 37188, 37192, 0, {36499, 0, 0, 0}, 20, 20, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0015, 0x007F, 257, -1, 37195, 37198, 37205, 37212, 37216, 37195, 0, {37220, 0, 0, 0}, 21, 21, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0016, 0x007F, 257, -1, 37244, 37247, 37258, 37269, 37273, 37244, 0, {37277, 0, 0, 0}, 22, 22, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0017, 0x007F, 257, -1, 37300, 37303, 37311, 37321, 37325, 37300, 0, {37329, 0, 0, 0}, 23, 23, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0018, 0x007F, 257, -1, 37349, 37352, 37361, 37370, 37374, 37349, 0, {37378, 0, 0, 0}, 24, 24, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0019, 0x007F, 257, -1, 37397, 37400, 37408, 37423, 37427, 37397, 0, {37431, 0, 0, 0}, 25, 25, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x001A, 0x007F, 257, -1, 37477, 37480, 37489, 37498, 37502, 37477, 0, {37506, 0, 0, 0}, 26, 26, { 1250, 500, 10082, 852, 0, ';' }},
-       {0x001B, 0x007F, 257, -1, 37529, 37532, 37539, 37551, 37555, 37529, 0, {37559, 0, 0, 0}, 27, 27, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x001C, 0x007F, 257, -1, 37583, 37586, 37595, 37601, 37605, 37583, 0, {0, 0, 0, 0}, 28, 28, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x001D, 0x007F, 257, -1, 37609, 37612, 37620, 37628, 37632, 37609, 0, {36499, 0, 0, 0}, 29, 29, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x001E, 0x007F, 512, -1, 37636, 37639, 37644, 37654, 37658, 37636, 0, {0, 37662, 0, 0}, 30, 30, { 874, 20838, 10021, 874, 0, ',' }},
-       {0x001F, 0x007F, 257, -1, 37693, 37696, 37704, 37713, 37717, 37693, 0, {37721, 0, 0, 0}, 31, 31, { 1254, 20905, 10081, 857, 0, ';' }},
-       {0x0020, 0x007F, 257, -1, 37735, 37738, 37743, 37752, 37756, 37735, 0, {37760, 0, 0, 0}, 32, 32, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0021, 0x007F, 257, -1, 37790, 37793, 37804, 37821, 37825, 37790, 0, {37829, 0, 0, 0}, 33, 33, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0022, 0x007F, 257, -1, 37848, 37851, 37861, 37882, 37886, 37848, 0, {37890, 0, 0, 0}, 34, 34, { 1251, 500, 10017, 866, 0, ';' }},
-       {0x0023, 0x007F, 257, -1, 37936, 37939, 37950, 37971, 37975, 37936, 0, {37979, 0, 0, 0}, 35, 35, { 1251, 500, 10007, 866, 0, ';' }},
-       {0x0024, 0x007F, 257, -1, 38021, 38024, 38034, 38048, 38052, 38021, 0, {38056, 0, 0, 0}, 36, 36, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0025, 0x007F, 257, -1, 38078, 38081, 38090, 38096, 38100, 38078, 0, {38104, 0, 0, 0}, 37, 37, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0026, 0x007F, 257, -1, 38124, 38127, 38135, 38145, 38149, 38124, 0, {38153, 0, 0, 0}, 38, 38, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0027, 0x007F, 257, -1, 38172, 38175, 38186, 38196, 38200, 38172, 0, {38204, 0, 0, 0}, 39, 39, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0028, 0x007F, 257, -1, 38227, 38230, 0, 38236, 38240, 38227, 0, {0, 0, 0, 0}, 40, 40, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0029, 0x007F, 257, -1, 38244, 38247, 38255, 38266, 38270, 38244, 0, {38274, 0, 0, 0}, 41, 41, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x002A, 0x007F, 257, -1, 38298, 38301, 38312, 38327, 4144, 38298, 0, {38331, 0, 0, 0}, 42, 42, { 1258, 500, 10000, 1258, 0, ',' }},
-       {0x002B, 0x007F, 257, -1, 38346, 38349, 38358, 38373, 38377, 38346, 0, {0, 0, 0, 0}, 43, 43, { 0, 500, 2, 1, 0, ',' }},
-       {0x002C, 0x007F, 257, -1, 14514, 38381, 38393, 38407, 38411, 14514, 0, {38415, 0, 0, 0}, 44, 44, { 1254, 20905, 10081, 857, 0, ';' }},
-       {0x002D, 0x007F, 257, -1, 38433, 38436, 38443, 38451, 38455, 38433, 0, {38459, 0, 0, 0}, 45, 45, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x002F, 0x007F, 257, -1, 38479, 38482, 38493, 38514, 38518, 38479, 0, {38522, 0, 0, 0}, 46, 46, { 1251, 500, 10007, 866, 0, ';' }},
-       {0x0032, 0x007F, 257, -1, 38566, 38569, 38576, 38585, 38589, 38566, 0, {0, 0, 0, 0}, 47, 47, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0034, 0x007F, 257, -1, 38593, 38596, 38602, 38611, 38615, 38593, 0, {0, 0, 0, 0}, 48, 48, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0035, 0x007F, 257, -1, 38619, 38622, 38627, 38635, 38639, 38619, 0, {38643, 0, 0, 0}, 49, 49, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0036, 0x007F, 257, -1, 38664, 38667, 38667, 38677, 38681, 38664, 0, {38685, 0, 0, 0}, 50, 50, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0037, 0x007F, 257, -1, 38705, 38708, 38717, 38739, 38743, 38705, 0, {38747, 0, 0, 0}, 51, 51, { 0, 500, 2, 1, 0, ';' }},
-       {0x0038, 0x007F, 257, -1, 38812, 38815, 38823, 38833, 38837, 38812, 0, {0, 0, 0, 0}, 52, 52, { 1252, 20277, 10079, 850, 0, ';' }},
-       {0x0039, 0x007F, 257, -1, 38841, 38844, 38850, 38869, 38873, 38841, 0, {38877, 0, 0, 0}, 53, 53, { 0, 500, 2, 1, 0, ',' }},
-       {0x003A, 0x007F, 257, -1, 38918, 38921, 38929, 38935, 38939, 38918, 0, {38943, 0, 0, 0}, 54, 54, { 0, 500, 2, 1, 0, ',' }},
-       {0x003B, 0x007F, 257, -1, 38964, 38967, 38981, 38998, 39002, 38964, 0, {0, 0, 0, 0}, 55, 55, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x003C, 0x007F, 257, -1, 39006, 39009, 39015, 39023, 39027, 39006, 0, {39031, 0, 0, 0}, 56, 56, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x003E, 0x007F, 257, -1, 39052, 39055, 39061, 39075, 39079, 39052, 0, {39083, 0, 0, 0}, 57, 57, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x003F, 0x007F, 257, -1, 39100, 39103, 39110, 39130, 39134, 39100, 0, {39138, 0, 0, 0}, 58, 58, { 0, 500, 2, 1, 0, ';' }},
-       {0x0040, 0x007F, 257, -1, 39180, 39183, 39191, 39204, 39208, 39180, 0, {0, 0, 0, 0}, 59, 59, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0041, 0x007F, 257, -1, 39212, 39215, 39223, 39233, 39237, 39212, 0, {39241, 0, 0, 0}, 60, 60, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x0043, 0x007F, 257, -1, 39262, 39265, 39271, 39282, 39286, 39262, 0, {0, 0, 0, 0}, 61, 61, { 1254, 500, 10029, 857, 0, ';' }},
-       {0x0045, 0x007F, 257, -1, 39290, 39293, 39301, 39317, 39321, 39290, 0, {39325, 0, 0, 0}, 62, 62, { 0, 500, 2, 1, 0, ',' }},
-       {0x0046, 0x007F, 257, -1, 39390, 39393, 39401, 39420, 39424, 39390, 0, {0, 0, 0, 0}, 63, 63, { 0, 500, 2, 1, 0, ',' }},
-       {0x0047, 0x007F, 257, -1, 39428, 39431, 39440, 39462, 39466, 39428, 0, {39470, 0, 0, 0}, 64, 64, { 0, 500, 2, 1, 0, ',' }},
-       {0x0048, 0x007F, 257, -1, 14520, 39526, 39532, 39548, 39552, 14520, 0, {0, 0, 0, 0}, 65, 65, { 0, 500, 2, 1, 0, ',' }},
-       {0x0049, 0x007F, 257, -1, 39556, 39559, 39565, 39581, 39585, 39556, 0, {39589, 0, 0, 0}, 66, 66, { 0, 500, 2, 1, 0, ',' }},
-       {0x004A, 0x007F, 257, -1, 39654, 39657, 39664, 39683, 39687, 39654, 0, {39691, 0, 0, 0}, 67, 67, { 0, 500, 2, 1, 0, ',' }},
-       {0x004B, 0x007F, 257, -1, 35582, 39756, 39764, 39780, 39784, 35582, 0, {39788, 0, 0, 0}, 68, 68, { 0, 500, 2, 1, 0, ',' }},
-       {0x004C, 0x007F, 257, -1, 39859, 39862, 39872, 39891, 39895, 39859, 0, {39899, 0, 0, 0}, 69, 69, { 0, 500, 2, 1, 0, ',' }},
-       {0x004D, 0x007F, 257, -1, 14511, 39949, 39958, 39980, 39984, 14511, 0, {39988, 0, 0, 0}, 70, 70, { 0, 500, 2, 1, 0, ',' }},
-       {0x004E, 0x007F, 257, -1, 40041, 40044, 40052, 40068, 2588, 40041, 0, {40072, 0, 0, 0}, 71, 71, { 0, 500, 2, 1, 0, ',' }},
-       {0x0050, 0x007F, 257, -1, 40134, 40137, 40147, 40160, 40164, 40134, 0, {0, 0, 0, 0}, 72, 72, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0051, 0x007F, 257, -1, 40168, 40171, 40179, 40204, 40208, 40168, 0, {0, 0, 0, 0}, 73, 73, { 0, 500, 2, 1, 0, ',' }},
-       {0x0052, 0x007F, 257, -1, 40212, 40215, 40221, 40229, 40233, 40212, 0, {0, 0, 0, 0}, 74, 74, { 1252, 20285, 10000, 850, 0, ',' }},
-       {0x0053, 0x007F, 257, -1, 40237, 40240, 40246, 40274, 40278, 40237, 0, {0, 0, 0, 0}, 75, 75, { 0, 500, 2, 1, 0, ',' }},
-       {0x0054, 0x007F, 257, -1, 40282, 40285, 40289, 40299, 40303, 40282, 0, {0, 0, 0, 0}, 76, 76, { 0, 500, 2, 1, 0, ',' }},
-       {0x0056, 0x007F, 257, -1, 40307, 40310, 40319, 40326, 40330, 40307, 0, {36713, 0, 0, 0}, 77, 77, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0057, 0x007F, 257, -1, 40334, 40338, 40346, 40365, 40334, 40334, 0, {0, 0, 0, 0}, 78, 78, { 0, 500, 2, 1, 0, ',' }},
-       {0x005B, 0x007F, 257, -1, 40369, 40372, 40380, 40396, 40400, 40369, 0, {40404, 0, 0, 0}, 79, 79, { 0, 500, 2, 1, 0, ',' }},
-       {0x005E, 0x007F, 257, -1, 7860, 40426, 40434, 40447, 40451, 7860, 0, {40455, 0, 0, 0}, 80, 80, { 0, 500, 2, 1, 0, ';' }},
-       {0x005F, 0x007F, 257, -1, 40500, 40504, 40530, 40540, 40500, 40500, 0, {0, 0, 0, 0}, 81, 81, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0061, 0x007F, 257, -1, 2082, 40544, 40551, 40570, 40574, 2082, 0, {40578, 0, 0, 0}, 82, 82, { 0, 500, 2, 1, 0, ',' }},
-       {0x0063, 0x007F, 1024, -1, 40628, 40631, 40638, 40647, 40651, 40628, 0, {0, 0, 0, 0}, 83, 83, { 0, 500, 2, 1, 1, ';' }},
-       {0x0064, 0x007F, 257, -1, 40655, 40659, 40659, 40668, 40655, 40655, 0, {40672, 0, 0, 0}, 84, 84, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x0068, 0x007F, 257, -1, 40695, 40698, 40698, 40704, 40708, 40695, 0, {0, 0, 0, 0}, 85, 85, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x006A, 0x007F, 257, -1, 40712, 40715, 40722, 40737, 40741, 40712, 0, {0, 0, 0, 0}, 86, 86, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x006C, 0x007F, 257, -1, 40745, 40749, 40764, 40781, 40745, 40745, 0, {0, 0, 0, 0}, 87, 87, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x006F, 0x007F, 257, -1, 40785, 40788, 40800, 40812, 40816, 40785, 0, {0, 0, 0, 0}, 88, 88, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0070, 0x007F, 257, -1, 14505, 40820, 40820, 40825, 40829, 14505, 0, {0, 0, 0, 0}, 89, 89, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x0078, 0x007F, 257, -1, 40833, 40836, 40847, 40857, 40861, 40833, 0, {40865, 0, 0, 0}, 90, 90, { 0, 500, 2, 1, 0, ',' }},
-       {0x007E, 0x007F, 257, -1, 40878, 40881, 40888, 40898, 40902, 40878, 0, {40906, 0, 0, 0}, 91, 91, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0082, 0x007F, 257, -1, 40926, 40929, 40937, 40945, 40949, 40926, 0, {0, 0, 0, 0}, 92, 92, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0084, 0x007F, 257, -1, 40953, 40957, 40970, 40989, 40953, 40953, 0, {40993, 0, 0, 0}, 93, 93, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0085, 0x007F, 257, -1, 41018, 41022, 41028, 41046, 41018, 41018, 0, {0, 0, 0, 0}, 94, 94, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0087, 0x007F, 257, -1, 41050, 41053, 41053, 41065, 41069, 41050, 0, {0, 0, 0, 0}, 95, 95, { 1252, 37, 10000, 437, 0, ';' }},
-       {0x0091, 0x007F, 257, -1, 41073, 41076, 41092, 41102, 41106, 41073, 0, {41110, 0, 0, 0}, 96, 96, { 1252, 20285, 10000, 850, 0, ',' }},
-       {0x0401, 0x0001, 768, 98, 41135, 41141, 41163, 36168, 36172, 36143, 13253, {0, 0, 36176, 0}, 97, 97, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0402, 0x0002, 257, 11, 41227, 41233, 41254, 36236, 36240, 36204, 41292, {36244, 0, 0, 0}, 98, 98, { 1251, 21025, 10007, 866, 0, ';' }},
-       {0x0403, 0x0003, 257, 32, 41295, 41301, 41317, 36305, 36309, 36286, 41335, {36313, 0, 0, 0}, 99, 99, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0404, 0x7C04, 257, 110, 41338, 41344, 41366, 41382, 36373, 36377, 41386, {41389, 0, 0, 0}, 100, 100, { 950, 500, 10002, 950, 0, ',' }},
-       {0x0405, 0x0005, 257, 24, 41396, 41402, 41425, 36441, 36445, 36422, 41455, {36449, 0, 0, 0}, 101, 101, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x0406, 0x0006, 257, 26, 41458, 41464, 41481, 36491, 36495, 36475, 41497, {36499, 0, 0, 0}, 102, 102, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0407, 0x0007, 257, 25, 41500, 41506, 41523, 36538, 36542, 36520, 41545, {36546, 0, 0, 0}, 103, 103, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0408, 0x0008, 257, 40, 41548, 41554, 41569, 36597, 36601, 36571, 41601, {36605, 0, 0, 0}, 104, 104, { 1253, 20273, 10006, 737, 0, ';' }},
-       {0x0409, 0x0009, 257, 112, 41604, 41610, 41610, 36658, 36662, 36647, 41634, {36666, 0, 0, 0}, 105, 105, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x040B, 0x000B, 257, 34, 41637, 41643, 41661, 36752, 36756, 36735, 41675, {36760, 0, 0, 0}, 106, 106, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x040C, 0x000C, 257, 36, 41678, 41684, 41700, 36805, 36809, 36785, 41719, {36813, 0, 0, 0}, 107, 107, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x040D, 0x000D, 257, 48, 41722, 41728, 41744, 36856, 36860, 36835, 41768, {36864, 0, 0, 0}, 108, 108, { 1255, 500, 10005, 862, 1, ',' }},
-       {0x040E, 0x000E, 257, 45, 41771, 41777, 41797, 36917, 36921, 36897, 41820, {36925, 0, 0, 0}, 109, 109, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x040F, 0x000F, 257, 52, 41823, 41829, 41849, 36964, 36968, 36941, 41869, {36972, 0, 0, 0}, 110, 110, { 1252, 20871, 10079, 850, 0, ';' }},
-       {0x0410, 0x0010, 257, 53, 41872, 41878, 41894, 37012, 37016, 36992, 41912, {36713, 0, 0, 0}, 111, 111, { 1252, 20280, 10000, 850, 0, ';' }},
-       {0x0411, 0x0011, 257, 56, 41915, 41921, 41938, 37042, 37046, 37020, 41957, {37050, 0, 0, 0}, 112, 112, { 932, 20290, 10001, 932, 0, ',' }},
-       {0x0412, 0x0012, 257, 60, 41960, 41966, 41987, 37097, 37101, 37077, 42012, {37105, 0, 0, 0}, 113, 113, { 949, 20833, 10003, 949, 0, ',' }},
-       {0x0413, 0x0013, 257, 80, 42015, 42021, 42041, 37135, 37139, 37115, 42064, {37143, 0, 0, 0}, 114, 114, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0414, 0x7C14, 257, 81, 42067, 42073, 42100, 37184, 37188, 37192, 42122, {36499, 0, 0, 0}, 115, 115, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0415, 0x0015, 257, 89, 42125, 42131, 42147, 37212, 37216, 37195, 42163, {37220, 0, 0, 0}, 116, 116, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0416, 0x0016, 257, 15, 42166, 42172, 42192, 37269, 37273, 37244, 42212, {37277, 0, 0, 0}, 117, 117, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0417, 0x0017, 257, 19, 42215, 42221, 42243, 37321, 37325, 37300, 13256, {37329, 0, 0, 0}, 118, 118, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0418, 0x0018, 257, 94, 42262, 42268, 42287, 37370, 37374, 37349, 42307, {37378, 0, 0, 0}, 119, 119, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0419, 0x0019, 257, 96, 42310, 42316, 42333, 37423, 37427, 37397, 42363, {37431, 0, 0, 0}, 120, 120, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x041A, 0x001A, 257, 44, 42366, 42372, 42391, 37498, 37502, 37477, 42411, {37506, 0, 0, 0}, 121, 121, { 1250, 500, 10082, 852, 0, ';' }},
-       {0x041B, 0x001B, 257, 102, 42414, 42420, 42438, 37551, 37555, 37529, 42473, {37559, 0, 0, 0}, 122, 122, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x041C, 0x001C, 257, 2, 42476, 42482, 42501, 37601, 37605, 37583, 42520, {0, 0, 0, 0}, 123, 123, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x041D, 0x001D, 257, 99, 42523, 42529, 42546, 37628, 37632, 37609, 42564, {36499, 0, 0, 0}, 124, 124, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x041E, 0x001E, 512, 105, 42567, 42573, 42589, 37654, 37658, 37636, 42611, {0, 37662, 0, 0}, 125, 125, { 874, 20838, 10021, 874, 0, ',' }},
-       {0x041F, 0x001F, 257, 108, 42614, 42620, 42637, 37713, 37717, 37693, 42657, {37721, 0, 0, 0}, 126, 126, { 1254, 20905, 10081, 857, 0, ';' }},
-       {0x0420, 0x0020, 257, 88, 42660, 42666, 42682, 37752, 37756, 37735, 42708, {37760, 0, 0, 0}, 127, 127, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0421, 0x0021, 257, 46, 42711, 42717, 42740, 37821, 37825, 37790, 42769, {37829, 0, 0, 0}, 128, 128, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0422, 0x0022, 257, 111, 42772, 42778, 42798, 37882, 37886, 37848, 42836, {37890, 0, 0, 0}, 129, 129, { 1251, 500, 10017, 866, 0, ';' }},
-       {0x0423, 0x0023, 257, 16, 42839, 42845, 42866, 37971, 37975, 37936, 42906, {37979, 0, 0, 0}, 130, 130, { 1251, 500, 10007, 866, 0, ';' }},
-       {0x0424, 0x0024, 257, 101, 42909, 42915, 42936, 38048, 38052, 38021, 42962, {38056, 0, 0, 0}, 131, 131, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0425, 0x0025, 257, 30, 42965, 42971, 42990, 38096, 38100, 38078, 43004, {38104, 0, 0, 0}, 132, 132, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0426, 0x0026, 257, 68, 43007, 43013, 43030, 38145, 38149, 38124, 43050, {38153, 0, 0, 0}, 133, 133, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0427, 0x0027, 257, 66, 43053, 43059, 43082, 38196, 38200, 38172, 43102, {38204, 0, 0, 0}, 134, 134, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0428, 0x7C28, 257, 106, 43105, 43116, 0, 38236, 38240, 38227, 43145, {0, 0, 0, 0}, 135, 135, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0429, 0x0029, 257, 51, 43148, 43154, 43169, 38266, 38270, 38244, 43193, {38274, 0, 0, 0}, 136, 136, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x042A, 0x002A, 257, 116, 43196, 43202, 43223, 38327, 4144, 38298, 43251, {38331, 0, 0, 0}, 137, 137, { 1258, 500, 10000, 1258, 0, ',' }},
-       {0x042B, 0x002B, 257, 3, 43254, 43260, 43279, 38373, 38377, 38346, 3804, {0, 0, 0, 0}, 138, 138, { 0, 500, 2, 1, 0, ',' }},
-       {0x042C, 0x782C, 257, 7, 43344, 43355, 43387, 38407, 38411, 14514, 43415, {38415, 0, 0, 0}, 139, 139, { 1254, 20905, 10081, 857, 0, ';' }},
-       {0x042D, 0x002D, 257, 32, 43418, 43424, 43439, 38451, 38455, 38433, 41335, {38459, 0, 0, 0}, 140, 140, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x042F, 0x002F, 257, 73, 43458, 43464, 43487, 38514, 38518, 38479, 43531, {38522, 0, 0, 0}, 141, 141, { 1251, 500, 10007, 866, 0, ';' }},
-       {0x0432, 0x0032, 257, 118, 43534, 43540, 38576, 38585, 38589, 38566, 43562, {0, 0, 0, 0}, 142, 142, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0434, 0x0034, 257, 118, 43565, 43571, 38602, 38611, 38615, 38593, 43562, {0, 0, 0, 0}, 143, 143, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0435, 0x0035, 257, 118, 43592, 43598, 43618, 38635, 38639, 38619, 43562, {38643, 0, 0, 0}, 144, 144, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0436, 0x0036, 257, 118, 43646, 43652, 43677, 38677, 38681, 38664, 43562, {38685, 0, 0, 0}, 145, 145, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0437, 0x0037, 257, 38, 43701, 43707, 43726, 38739, 38743, 38705, 43781, {38747, 0, 0, 0}, 146, 146, { 0, 500, 2, 1, 0, ';' }},
-       {0x0438, 0x0038, 257, 35, 43784, 43790, 43814, 38833, 38837, 38812, 43835, {0, 0, 0, 0}, 147, 147, { 1252, 20277, 10079, 850, 0, ';' }},
-       {0x0439, 0x0039, 257, 49, 43838, 43844, 43858, 38869, 38873, 38841, 43892, {38877, 0, 0, 0}, 148, 148, { 0, 500, 2, 1, 0, ',' }},
-       {0x043A, 0x003A, 257, 75, 43895, 43901, 43917, 38935, 38939, 38918, 43931, {38943, 0, 0, 0}, 149, 149, { 0, 500, 2, 1, 0, ',' }},
-       {0x043B, 0x003B, 257, 81, 43934, 43940, 43963, 38998, 39002, 38964, 42122, {0, 0, 0, 0}, 150, 150, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x043E, 0x003E, 257, 77, 43988, 43994, 44011, 39075, 39079, 39052, 44036, {39083, 0, 0, 0}, 151, 151, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0440, 0x0040, 257, 58, 44039, 44045, 44066, 39204, 39208, 39180, 44102, {0, 0, 0, 0}, 152, 152, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0441, 0x0041, 257, 57, 44105, 44111, 44127, 39233, 39237, 39212, 44145, {39241, 0, 0, 0}, 153, 153, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x0443, 0x7C43, 257, 114, 44148, 44159, 44185, 39282, 39286, 39262, 44219, {0, 0, 0, 0}, 154, 154, { 1254, 500, 10029, 857, 0, ';' }},
-       {0x0445, 0x0045, 257, 49, 44222, 44228, 44244, 39317, 39321, 39290, 43892, {39325, 0, 0, 0}, 155, 155, { 0, 500, 2, 1, 0, ',' }},
-       {0x0447, 0x0047, 257, 49, 44275, 44281, 44298, 39462, 39466, 39428, 43892, {39470, 0, 0, 0}, 156, 156, { 0, 500, 2, 1, 0, ',' }},
-       {0x0448, 0x0048, 257, 49, 44335, 44341, 44355, 39548, 39552, 14520, 43892, {0, 0, 0, 0}, 157, 157, { 0, 500, 2, 1, 0, ',' }},
-       {0x0449, 0x0049, 257, 49, 44386, 44392, 44406, 39581, 39585, 39556, 43892, {39589, 0, 0, 0}, 158, 158, { 0, 500, 2, 1, 0, ',' }},
-       {0x044A, 0x004A, 257, 49, 44446, 44452, 44467, 39683, 39687, 39654, 43892, {39691, 0, 0, 0}, 159, 159, { 0, 500, 2, 1, 0, ',' }},
-       {0x044B, 0x004B, 257, 49, 44514, 44520, 44536, 39780, 39784, 35582, 43892, {39788, 0, 0, 0}, 160, 160, { 0, 500, 2, 1, 0, ',' }},
-       {0x044C, 0x004C, 257, 49, 44567, 44573, 44591, 39891, 39895, 39859, 43892, {39899, 0, 0, 0}, 161, 161, { 0, 500, 2, 1, 0, ',' }},
-       {0x044D, 0x004D, 257, 49, 44631, 44637, 44654, 39980, 39984, 14511, 43892, {39988, 0, 0, 0}, 162, 162, { 0, 500, 2, 1, 0, ',' }},
-       {0x044E, 0x004E, 257, 49, 44691, 44697, 44713, 40068, 2588, 40041, 43892, {40072, 0, 0, 0}, 163, 163, { 0, 500, 2, 1, 0, ',' }},
-       {0x0451, 0x0051, 257, 21, 44744, 44750, 44766, 40204, 40208, 40168, 13335, {0, 0, 0, 0}, 164, 164, { 0, 500, 2, 1, 0, ',' }},
-       {0x0452, 0x0052, 257, 37, 44812, 44818, 44841, 40229, 40233, 40212, 44864, {0, 0, 0, 0}, 165, 165, { 1252, 20285, 10000, 850, 0, ',' }},
-       {0x0453, 0x0053, 257, 59, 44867, 44873, 44890, 40274, 40278, 40237, 44942, {0, 0, 0, 0}, 166, 166, { 0, 500, 2, 1, 0, ',' }},
-       {0x0454, 0x0054, 257, 62, 44945, 44951, 44962, 40299, 40303, 40282, 44984, {0, 0, 0, 0}, 167, 167, { 0, 500, 2, 1, 0, ',' }},
-       {0x0456, 0x0056, 257, 32, 44987, 44993, 45010, 40326, 40330, 40307, 41335, {36713, 0, 0, 0}, 168, 168, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0457, 0x0057, 257, 49, 45027, 45034, 45050, 40365, 40334, 40334, 43892, {0, 0, 0, 0}, 169, 169, { 0, 500, 2, 1, 0, ',' }},
-       {0x045B, 0x005B, 257, 65, 45084, 45090, 45110, 40396, 40400, 40369, 45160, {40404, 0, 0, 0}, 170, 170, { 0, 500, 2, 1, 0, ',' }},
-       {0x045E, 0x005E, 257, 33, 45163, 45169, 45188, 40447, 40451, 7860, 45219, {40455, 0, 0, 0}, 171, 171, { 0, 500, 2, 1, 0, ';' }},
-       {0x0461, 0x0061, 257, 82, 45222, 45228, 45243, 40570, 40574, 2082, 45280, {40578, 0, 0, 0}, 172, 172, { 0, 500, 2, 1, 0, ',' }},
-       {0x0463, 0x0063, 1024, 1, 45283, 45289, 45310, 40647, 40651, 40628, 45340, {0, 0, 0, 0}, 173, 173, { 0, 500, 2, 1, 1, ';' }},
-       {0x0464, 0x0064, 257, 87, 45343, 45350, 45373, 40668, 40655, 40655, 45394, {40672, 0, 0, 0}, 174, 174, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x0468, 0x7C68, 257, 78, 45397, 45408, 45431, 40704, 40708, 40695, 45448, {0, 0, 0, 0}, 175, 175, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x046A, 0x006A, 257, 78, 45451, 45457, 45474, 40737, 40741, 40712, 45448, {0, 0, 0, 0}, 176, 176, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x046C, 0x006C, 257, 118, 45520, 45527, 40764, 40781, 40745, 40745, 43562, {0, 0, 0, 0}, 177, 177, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x046F, 0x006F, 257, 39, 45557, 45563, 45587, 40812, 40816, 40785, 45618, {0, 0, 0, 0}, 178, 178, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0470, 0x0070, 257, 78, 45621, 45627, 45627, 40825, 40829, 14505, 45448, {0, 0, 0, 0}, 179, 179, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x0478, 0x0078, 257, 21, 45642, 45648, 45667, 40857, 40861, 40833, 13335, {40865, 0, 0, 0}, 180, 180, { 0, 500, 2, 1, 0, ',' }},
-       {0x047E, 0x007E, 257, 36, 45686, 45692, 45708, 40898, 40902, 40878, 41719, {40906, 0, 0, 0}, 181, 181, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0482, 0x0082, 257, 36, 45727, 45733, 45750, 40945, 40949, 40926, 41719, {0, 0, 0, 0}, 182, 182, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0485, 0x0085, 257, 96, 45768, 45775, 41028, 41046, 41018, 41018, 42363, {0, 0, 0, 0}, 183, 183, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0487, 0x0087, 257, 97, 45790, 45796, 45796, 41065, 41069, 41050, 45817, {0, 0, 0, 0}, 184, 184, { 1252, 37, 10000, 437, 0, ';' }},
-       {0x0491, 0x0091, 257, 37, 45820, 45826, 45859, 41102, 41106, 41073, 44864, {41110, 0, 0, 0}, 185, 185, { 1252, 20285, 10000, 850, 0, ',' }},
-       {0x0801, 0x0001, 257, 50, 45895, 45901, 45915, 45945, 36172, 36143, 45949, {36176, 0, 0, 0}, 186, 186, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0804, 0x0004, 257, 21, 45952, 36341, 45958, 36369, 36373, 36377, 13335, {36380, 0, 0, 0}, 187, 187, { 936, 500, 10008, 936, 0, ',' }},
-       {0x0807, 0x0007, 257, 19, 45974, 45980, 46001, 46019, 36542, 36520, 13256, {36546, 0, 0, 0}, 188, 188, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0809, 0x0009, 257, 37, 46023, 46029, 46029, 46054, 36662, 36647, 44864, {36666, 0, 0, 0}, 189, 189, { 1252, 20285, 10000, 850, 0, ',' }},
-       {0x080A, 0x000A, 257, 76, 46058, 46064, 46081, 46100, 36709, 36685, 46104, {36713, 0, 0, 0}, 190, 190, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x080C, 0x000C, 257, 10, 46107, 46113, 46130, 46151, 36809, 36785, 46155, {36813, 0, 0, 0}, 191, 191, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0810, 0x0010, 257, 19, 46158, 46164, 46186, 46206, 37016, 36992, 13256, {36713, 0, 0, 0}, 192, 192, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0813, 0x0013, 257, 10, 46210, 46216, 46232, 46253, 37139, 37115, 46155, {37143, 0, 0, 0}, 193, 193, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0814, 0x7814, 257, 81, 46257, 46263, 46290, 46306, 46310, 46314, 42122, {36499, 0, 0, 0}, 194, 194, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0816, 0x0016, 257, 91, 46317, 46323, 46345, 46367, 37273, 37244, 46371, {37277, 0, 0, 0}, 195, 195, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x081D, 0x001D, 257, 34, 46374, 46380, 46398, 46416, 37632, 37609, 41675, {36499, 0, 0, 0}, 196, 196, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x082C, 0x742C, 257, 7, 46420, 46431, 43387, 46466, 38411, 14514, 43415, {38415, 0, 0, 0}, 197, 197, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x083C, 0x003C, 257, 47, 46470, 46476, 46492, 39023, 39027, 39006, 46508, {39031, 0, 0, 0}, 198, 198, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x083E, 0x003E, 257, 13, 46511, 46517, 46532, 46555, 39079, 39052, 46559, {39083, 0, 0, 0}, 199, 199, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0843, 0x7843, 257, 114, 46562, 46573, 44185, 39282, 39286, 39262, 44219, {0, 0, 0, 0}, 200, 200, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0845, 0x0045, 257, 9, 46602, 46608, 46629, 46672, 39321, 39290, 46676, {39325, 0, 0, 0}, 201, 201, { 0, 500, 2, 1, 0, ',' }},
-       {0x0850, 0x7C50, 257, 21, 46679, 46690, 40147, 46719, 40164, 40134, 13335, {0, 0, 0, 0}, 202, 202, { 0, 500, 2, 1, 0, ',' }},
-       {0x0C01, 0x0001, 257, 31, 46723, 46729, 46744, 46768, 36172, 36143, 46772, {36176, 0, 0, 0}, 203, 203, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0C04, 0x7C04, 257, 42, 46775, 46781, 46824, 46861, 36373, 36377, 46865, {41389, 0, 0, 0}, 204, 204, { 950, 500, 10002, 950, 0, ',' }},
-       {0x0C07, 0x0007, 257, 5, 46868, 46874, 46891, 46913, 36542, 36520, 46917, {36546, 0, 0, 0}, 205, 205, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0C09, 0x0009, 257, 6, 46920, 46926, 46926, 46946, 36662, 36647, 46950, {36666, 0, 0, 0}, 206, 206, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0C0A, 0x000A, 257, 32, 46953, 46959, 46975, 46994, 36709, 36685, 41335, {36713, 0, 0, 0}, 207, 207, { 1252, 20284, 10000, 850, 0, ';' }},
-       {0x0C0C, 0x000C, 257, 18, 46998, 47004, 47020, 47039, 36809, 36785, 47043, {36813, 0, 0, 0}, 208, 208, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0C3B, 0x003B, 257, 34, 47046, 47052, 47076, 47102, 47106, 38964, 41675, {0, 0, 0, 0}, 209, 209, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x1001, 0x0001, 257, 69, 47110, 47116, 47131, 47159, 36172, 36143, 47163, {36176, 0, 0, 0}, 210, 210, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x1004, 0x0004, 257, 100, 47166, 47172, 47204, 47223, 36373, 36377, 47227, {36380, 0, 0, 0}, 211, 211, { 936, 500, 10008, 936, 0, ',' }},
-       {0x1007, 0x0007, 257, 67, 47230, 47236, 47256, 47276, 36542, 36520, 47280, {36546, 0, 0, 0}, 212, 212, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x1009, 0x0009, 257, 18, 47283, 47289, 47289, 47306, 36662, 36647, 47043, {36666, 0, 0, 0}, 213, 213, { 1252, 37, 10000, 850, 0, ',' }},
-       {0x100A, 0x000A, 257, 41, 47310, 47316, 47336, 47357, 36709, 36685, 47361, {36713, 0, 0, 0}, 214, 214, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x100C, 0x000C, 257, 19, 47364, 47370, 47391, 47410, 36809, 36785, 13256, {36813, 0, 0, 0}, 215, 215, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x1401, 0x0001, 257, 28, 47414, 47420, 47437, 47469, 36172, 36143, 47473, {36176, 0, 0, 0}, 216, 216, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x1404, 0x7C04, 257, 74, 47476, 47482, 47521, 47558, 36373, 36377, 47562, {41389, 0, 0, 0}, 217, 217, { 950, 500, 10002, 950, 0, ',' }},
-       {0x1407, 0x0007, 257, 64, 47565, 47571, 47594, 47618, 36542, 36520, 47622, {36546, 0, 0, 0}, 218, 218, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x1409, 0x0009, 257, 83, 47625, 47631, 47631, 47653, 36662, 36647, 47657, {36666, 0, 0, 0}, 219, 219, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x140A, 0x000A, 257, 23, 47660, 47666, 47687, 47709, 36709, 36685, 47713, {36713, 0, 0, 0}, 220, 220, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x140C, 0x000C, 257, 67, 47716, 47722, 47742, 47765, 36809, 36785, 47280, {36813, 0, 0, 0}, 221, 221, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x1801, 0x0001, 257, 70, 47769, 47775, 47792, 47822, 36172, 36143, 47826, {36176, 0, 0, 0}, 222, 222, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x1809, 0x0009, 257, 47, 47829, 47835, 47835, 47853, 36662, 36647, 46508, {36666, 0, 0, 0}, 223, 223, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x180A, 0x000A, 257, 85, 47857, 47863, 47880, 47899, 36709, 36685, 47903, {36713, 0, 0, 0}, 224, 224, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x180C, 0x000C, 257, 71, 47906, 47912, 47928, 47947, 36809, 36785, 47951, {36813, 0, 0, 0}, 225, 225, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x181A, 0x701A, 257, 8, 47954, 47965, 48005, 48057, 48061, 48065, 48068, {48071, 0, 0, 0}, 226, 226, { 1250, 870, 10082, 852, 0, ';' }},
-       {0x1C01, 0x0001, 257, 107, 48094, 48100, 48117, 48143, 36172, 36143, 48147, {36176, 0, 0, 0}, 227, 227, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x1C09, 0x0009, 257, 118, 48150, 48156, 48156, 48179, 36662, 36647, 43562, {36666, 0, 0, 0}, 228, 228, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x1C0A, 0x000A, 257, 27, 48183, 48189, 48218, 48251, 36709, 36685, 48255, {36713, 0, 0, 0}, 229, 229, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x1C1A, 0x6C1A, 257, 8, 48258, 48269, 48005, 48312, 48316, 48065, 48068, {38522, 0, 0, 0}, 230, 230, { 1251, 21025, 10007, 855, 0, ';' }},
-       {0x2001, 0x0001, 257, 84, 48320, 48326, 48340, 48368, 36172, 36143, 48372, {36176, 0, 0, 0}, 231, 231, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x2009, 0x0009, 257, 54, 48375, 48381, 48381, 48399, 36662, 36647, 48403, {36666, 0, 0, 0}, 232, 232, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x200A, 0x000A, 257, 115, 48406, 48412, 48432, 48453, 36709, 36685, 48457, {36713, 0, 0, 0}, 233, 233, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x2401, 0x0001, 257, 117, 48460, 48466, 48481, 48509, 36172, 36143, 48513, {36176, 0, 0, 0}, 234, 234, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x240A, 0x000A, 257, 22, 48516, 48522, 48541, 48561, 36709, 36685, 48565, {36713, 0, 0, 0}, 235, 235, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x241A, 0x701A, 257, 95, 48568, 48579, 48603, 48631, 9238, 48065, 48635, {48071, 0, 0, 0}, 236, 236, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x2801, 0x0001, 257, 104, 48638, 48644, 48659, 48687, 36172, 36143, 48691, {36176, 0, 0, 0}, 237, 237, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x2809, 0x0009, 257, 17, 48694, 48700, 48700, 48717, 36662, 36647, 48721, {36666, 0, 0, 0}, 238, 238, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x280A, 0x000A, 257, 86, 48724, 48730, 48745, 48762, 36709, 36685, 48766, {36713, 0, 0, 0}, 239, 239, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x281A, 0x6C1A, 257, 95, 48769, 48780, 48603, 48807, 9238, 48065, 48635, {38522, 0, 0, 0}, 240, 240, { 1251, 21025, 10007, 855, 0, ';' }},
-       {0x2C01, 0x0001, 257, 55, 48811, 48817, 48833, 48863, 36172, 36143, 48867, {36176, 0, 0, 0}, 241, 241, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x2C09, 0x0009, 257, 109, 48870, 48876, 48876, 48906, 36662, 36647, 48910, {36666, 0, 0, 0}, 242, 242, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x2C0A, 0x000A, 257, 4, 48913, 48919, 48939, 48960, 36709, 36685, 48964, {36713, 0, 0, 0}, 243, 243, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x2C1A, 0x701A, 257, 72, 48967, 48978, 49006, 49039, 9238, 48065, 49043, {48071, 0, 0, 0}, 244, 244, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x3001, 0x0001, 257, 63, 49046, 49052, 49069, 49097, 36172, 36143, 49101, {36176, 0, 0, 0}, 245, 245, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x3009, 0x0009, 257, 119, 49104, 49110, 49110, 49129, 36662, 36647, 49133, {36666, 0, 0, 0}, 246, 246, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x300A, 0x000A, 257, 29, 49136, 49142, 49160, 49179, 36709, 36685, 49183, {36713, 0, 0, 0}, 247, 247, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x301A, 0x6C1A, 257, 72, 49186, 49197, 49006, 49228, 9238, 48065, 49043, {38522, 0, 0, 0}, 248, 248, { 1251, 21025, 10007, 855, 0, ';' }},
-       {0x3401, 0x0001, 257, 61, 49232, 49238, 49254, 49284, 36172, 36143, 49288, {36176, 0, 0, 0}, 249, 249, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x3409, 0x0009, 257, 87, 49291, 49297, 49297, 49319, 36662, 36647, 45394, {36666, 0, 0, 0}, 250, 250, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x340A, 0x000A, 257, 20, 49323, 49329, 49345, 49362, 36709, 36685, 49366, {36713, 0, 0, 0}, 251, 251, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x3801, 0x0001, 257, 0, 49369, 49375, 49405, 49469, 36172, 36143, 49473, {36176, 0, 0, 0}, 252, 252, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x380A, 0x000A, 257, 113, 49476, 49482, 49500, 49519, 36709, 36685, 49523, {36713, 0, 0, 0}, 253, 253, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x3C01, 0x0001, 257, 12, 49526, 49532, 49549, 49581, 36172, 36143, 49585, {36176, 0, 0, 0}, 254, 254, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x3C0A, 0x000A, 257, 92, 49588, 49594, 49613, 49633, 36709, 36685, 49637, {36713, 0, 0, 0}, 255, 255, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x4001, 0x0001, 257, 93, 49640, 49646, 49661, 49685, 36172, 36143, 49689, {36176, 0, 0, 0}, 256, 256, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x4009, 0x0009, 257, 49, 49692, 49698, 49698, 49714, 36662, 36647, 43892, {36666, 0, 0, 0}, 257, 257, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x400A, 0x000A, 257, 14, 49718, 49724, 49742, 49761, 36709, 36685, 49765, {36713, 0, 0, 0}, 258, 258, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x440A, 0x000A, 257, 103, 49768, 49774, 49796, 49819, 36709, 36685, 49823, {36713, 0, 0, 0}, 259, 259, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x4809, 0x0009, 257, 100, 49826, 49832, 49832, 49852, 36662, 36647, 47227, {36666, 0, 0, 0}, 260, 260, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x480A, 0x000A, 257, 43, 49856, 49862, 49881, 49901, 36709, 36685, 49905, {36713, 0, 0, 0}, 261, 261, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x4C0A, 0x000A, 257, 79, 49908, 49914, 49934, 49955, 36709, 36685, 49959, {36713, 0, 0, 0}, 262, 262, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x500A, 0x000A, 257, 90, 49962, 49968, 49990, 50013, 36709, 36685, 50017, {36713, 0, 0, 0}, 263, 263, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x540A, 0x000A, 257, 112, 50020, 50026, 50050, 50076, 36709, 36685, 41634, {36713, 0, 0, 0}, 264, 264, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x6C1A, 0x7C1A, 257, -1, 50080, 50088, 50107, 48807, 9238, 48065, 0, {38522, 0, 0, 0}, 265, 265, { 1251, 21025, 10007, 855, 0, ';' }},
-       {0x701A, 0x7C1A, 257, -1, 50120, 50128, 50107, 48631, 9238, 48065, 0, {48071, 0, 0, 0}, 266, 266, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x742C, 0x002C, 257, -1, 50144, 50152, 38393, 46466, 38411, 14514, 0, {38415, 0, 0, 0}, 267, 267, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x7804, 0x007F, 257, -1, 36377, 36341, 36362, 36369, 36373, 36377, 0, {36380, 0, 0, 0}, 268, 268, { 936, 500, 10008, 936, 0, ',' }},
-       {0x7814, 0x0014, 257, -1, 46314, 50175, 50193, 46306, 46310, 46314, 0, {36499, 0, 0, 0}, 269, 269, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x781A, 0x007F, 257, -1, 50201, 50204, 50212, 50221, 50225, 50201, 0, {48071, 0, 0, 0}, 270, 270, { 1250, 870, 10082, 852, 0, ';' }},
-       {0x782C, 0x002C, 257, -1, 50229, 50237, 38393, 38407, 38411, 14514, 0, {38415, 0, 0, 0}, 271, 271, { 1254, 20905, 10081, 857, 0, ';' }},
-       {0x7843, 0x0043, 257, -1, 50257, 50265, 39271, 39282, 39286, 39262, 0, {0, 0, 0, 0}, 272, 272, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x7850, 0x0050, 257, -1, 50282, 50290, 40147, 50311, 40164, 40134, 0, {0, 0, 0, 0}, 273, 273, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x7C04, 0x7C04, 257, -1, 50315, 50322, 36362, 41382, 36373, 36377, 0, {41389, 0, 0, 0}, 274, 274, { 950, 500, 10002, 950, 0, ',' }},
-       {0x7C04, 0x7804, 257, -1, 50351, 41344, 36362, 41382, 36373, 36377, 0, {41389, 0, 0, 0}, 275, 275, { 950, 500, 10002, 950, 0, ',' }},
-       {0x7C14, 0x0014, 257, -1, 37192, 50359, 50377, 37184, 37188, 37192, 0, {36499, 0, 0, 0}, 276, 276, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x7C1A, 0x007F, 257, -1, 48065, 50391, 50107, 50399, 9238, 48065, 0, {38522, 0, 0, 0}, 277, 277, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x7C28, 0x0028, 257, -1, 50403, 50411, 0, 38236, 38240, 38227, 0, {0, 0, 0, 0}, 278, 278, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x7C43, 0x0043, 257, -1, 50428, 50436, 39271, 39282, 39286, 39262, 0, {0, 0, 0, 0}, 279, 279, { 1254, 500, 10029, 857, 0, ';' }},
-       {0x7C50, 0x0050, 257, -1, 50450, 50458, 40147, 46719, 40164, 40134, 0, {0, 0, 0, 0}, 280, 280, { 0, 500, 2, 1, 0, ',' }},
-       {0x7C5F, 0x005F, 257, -1, 50480, 50489, 40530, 40540, 40500, 40500, 0, {0, 0, 0, 0}, 281, 281, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x7C68, 0x0068, 257, -1, 50523, 50531, 40698, 40704, 40708, 40695, 0, {0, 0, 0, 0}, 282, 282, { 1252, 37, 10000, 437, 0, ',' }}
+       {0x0001, 0x007F, 768, -1, 36512, 36515, 36522, 36537, 36541, 36512, 0, {0, 0, 36545, 0}, 0, 0, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0002, 0x007F, 257, -1, 36573, 36576, 36586, 36605, 36609, 36573, 0, {36613, 0, 0, 0}, 1, 1, { 1251, 21025, 10007, 866, 0, ';' }},
+       {0x0003, 0x007F, 257, -1, 36655, 36658, 36666, 36674, 36678, 36655, 0, {36682, 0, 0, 0}, 2, 2, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0004, 0x0004, 257, -1, 36702, 36709, 36737, 36744, 36748, 36752, 0, {36755, 0, 0, 0}, 3, 3, { 936, 500, 10008, 936, 0, ',' }},
+       {0x0004, 0x7804, 257, -1, 36762, 36770, 36737, 36744, 36748, 36752, 0, {36755, 0, 0, 0}, 4, 4, { 936, 500, 10008, 936, 0, ',' }},
+       {0x0005, 0x007F, 257, -1, 36791, 36794, 36800, 36810, 36814, 36791, 0, {36818, 0, 0, 0}, 5, 5, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x0006, 0x007F, 257, -1, 36844, 36847, 36854, 36860, 36864, 36844, 0, {36868, 0, 0, 0}, 6, 6, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0007, 0x007F, 257, -1, 36889, 36892, 36899, 36907, 36911, 36889, 0, {36915, 0, 0, 0}, 7, 7, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0008, 0x007F, 257, -1, 36940, 36943, 36949, 36966, 36970, 36940, 0, {36974, 0, 0, 0}, 8, 8, { 1253, 20273, 10006, 737, 0, ';' }},
+       {0x0009, 0x007F, 257, -1, 37016, 37019, 37019, 37027, 37031, 37016, 0, {37035, 0, 0, 0}, 9, 9, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x000A, 0x007F, 257, -1, 37054, 37057, 37065, 37074, 37078, 37054, 0, {37082, 0, 0, 0}, 10, 10, { 1252, 20284, 10000, 850, 0, ';' }},
+       {0x000B, 0x007F, 257, -1, 37104, 37107, 37115, 37121, 37125, 37104, 0, {37129, 0, 0, 0}, 11, 11, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x000C, 0x007F, 257, -1, 37154, 37157, 37164, 37174, 37178, 37154, 0, {37182, 0, 0, 0}, 12, 12, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x000D, 0x007F, 257, -1, 37204, 37207, 37214, 37225, 37229, 37204, 0, {37233, 0, 0, 0}, 13, 13, { 1255, 500, 10005, 862, 1, ',' }},
+       {0x000E, 0x007F, 257, -1, 37266, 37269, 37279, 37286, 37290, 37266, 0, {37294, 0, 0, 0}, 14, 14, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x000F, 0x007F, 257, -1, 37310, 37313, 37323, 37333, 37337, 37310, 0, {37341, 0, 0, 0}, 15, 15, { 1252, 20871, 10079, 850, 0, ';' }},
+       {0x0010, 0x007F, 257, -1, 37361, 37364, 37372, 37381, 37385, 37361, 0, {37082, 0, 0, 0}, 16, 16, { 1252, 20280, 10000, 850, 0, ';' }},
+       {0x0011, 0x007F, 257, -1, 37389, 37392, 37401, 37411, 37415, 37389, 0, {37419, 0, 0, 0}, 17, 17, { 932, 20290, 10001, 932, 0, ',' }},
+       {0x0012, 0x007F, 257, -1, 37446, 37449, 37456, 37466, 37470, 37446, 0, {37474, 0, 0, 0}, 18, 18, { 949, 20833, 10003, 949, 0, ',' }},
+       {0x0013, 0x007F, 257, -1, 37484, 37487, 37493, 37504, 37508, 37484, 0, {37512, 0, 0, 0}, 19, 19, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0014, 0x007F, 257, -1, 37534, 37537, 37547, 37553, 37557, 37561, 0, {36868, 0, 0, 0}, 20, 20, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0015, 0x007F, 257, -1, 37564, 37567, 37574, 37581, 37585, 37564, 0, {37589, 0, 0, 0}, 21, 21, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0016, 0x007F, 257, -1, 37613, 37616, 37627, 37638, 37642, 37613, 0, {37646, 0, 0, 0}, 22, 22, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0017, 0x007F, 257, -1, 37669, 37672, 37680, 37690, 37694, 37669, 0, {37698, 0, 0, 0}, 23, 23, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0018, 0x007F, 257, -1, 37718, 37721, 37730, 37739, 37743, 37718, 0, {37747, 0, 0, 0}, 24, 24, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0019, 0x007F, 257, -1, 37766, 37769, 37777, 37792, 37796, 37766, 0, {37800, 0, 0, 0}, 25, 25, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x001A, 0x007F, 257, -1, 37846, 37849, 37858, 37867, 37871, 37846, 0, {37875, 0, 0, 0}, 26, 26, { 1250, 500, 10082, 852, 0, ';' }},
+       {0x001B, 0x007F, 257, -1, 37898, 37901, 37908, 37920, 37924, 37898, 0, {37928, 0, 0, 0}, 27, 27, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x001C, 0x007F, 257, -1, 37952, 37955, 37964, 37970, 37974, 37952, 0, {0, 0, 0, 0}, 28, 28, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x001D, 0x007F, 257, -1, 37978, 37981, 37989, 37997, 38001, 37978, 0, {36868, 0, 0, 0}, 29, 29, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x001E, 0x007F, 512, -1, 38005, 38008, 38013, 38023, 38027, 38005, 0, {0, 38031, 0, 0}, 30, 30, { 874, 20838, 10021, 874, 0, ',' }},
+       {0x001F, 0x007F, 257, -1, 38062, 38065, 38073, 38082, 38086, 38062, 0, {38090, 0, 0, 0}, 31, 31, { 1254, 20905, 10081, 857, 0, ';' }},
+       {0x0020, 0x007F, 257, -1, 38104, 38107, 38112, 38121, 38125, 38104, 0, {38129, 0, 0, 0}, 32, 32, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0021, 0x007F, 257, -1, 38159, 38162, 38173, 38190, 38194, 38159, 0, {38198, 0, 0, 0}, 33, 33, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0022, 0x007F, 257, -1, 38217, 38220, 38230, 38251, 38255, 38217, 0, {38259, 0, 0, 0}, 34, 34, { 1251, 500, 10017, 866, 0, ';' }},
+       {0x0023, 0x007F, 257, -1, 38305, 38308, 38319, 38340, 38344, 38305, 0, {38348, 0, 0, 0}, 35, 35, { 1251, 500, 10007, 866, 0, ';' }},
+       {0x0024, 0x007F, 257, -1, 38390, 38393, 38403, 38417, 38421, 38390, 0, {38425, 0, 0, 0}, 36, 36, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0025, 0x007F, 257, -1, 38447, 38450, 38459, 38465, 38469, 38447, 0, {38473, 0, 0, 0}, 37, 37, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0026, 0x007F, 257, -1, 38493, 38496, 38504, 38514, 38518, 38493, 0, {38522, 0, 0, 0}, 38, 38, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0027, 0x007F, 257, -1, 38541, 38544, 38555, 38565, 38569, 38541, 0, {38573, 0, 0, 0}, 39, 39, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0028, 0x007F, 257, -1, 38596, 38599, 0, 38605, 38609, 38596, 0, {0, 0, 0, 0}, 40, 40, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0029, 0x007F, 257, -1, 38613, 38616, 38624, 38635, 38639, 38613, 0, {38643, 0, 0, 0}, 41, 41, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x002A, 0x007F, 257, -1, 38667, 38670, 38681, 38696, 4121, 38667, 0, {38700, 0, 0, 0}, 42, 42, { 1258, 500, 10000, 1258, 0, ',' }},
+       {0x002B, 0x007F, 257, -1, 38715, 38718, 38727, 38742, 38746, 38715, 0, {0, 0, 0, 0}, 43, 43, { 0, 500, 2, 1, 0, ',' }},
+       {0x002C, 0x007F, 257, -1, 14519, 38750, 38762, 38776, 38780, 14519, 0, {38784, 0, 0, 0}, 44, 44, { 1254, 20905, 10081, 857, 0, ';' }},
+       {0x002D, 0x007F, 257, -1, 38802, 38805, 38812, 38820, 38824, 38802, 0, {38828, 0, 0, 0}, 45, 45, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x002F, 0x007F, 257, -1, 38848, 38851, 38862, 38883, 38887, 38848, 0, {38891, 0, 0, 0}, 46, 46, { 1251, 500, 10007, 866, 0, ';' }},
+       {0x0032, 0x007F, 257, -1, 38935, 38938, 38945, 38954, 38958, 38935, 0, {0, 0, 0, 0}, 47, 47, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0034, 0x007F, 257, -1, 38962, 38965, 38971, 38980, 38984, 38962, 0, {0, 0, 0, 0}, 48, 48, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0035, 0x007F, 257, -1, 38988, 38991, 38996, 39004, 39008, 38988, 0, {39012, 0, 0, 0}, 49, 49, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0036, 0x007F, 257, -1, 39033, 39036, 39036, 39046, 39050, 39033, 0, {39054, 0, 0, 0}, 50, 50, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0037, 0x007F, 257, -1, 39074, 39077, 39086, 39108, 39112, 39074, 0, {39116, 0, 0, 0}, 51, 51, { 0, 500, 2, 1, 0, ';' }},
+       {0x0038, 0x007F, 257, -1, 39181, 39184, 39192, 39202, 39206, 39181, 0, {0, 0, 0, 0}, 52, 52, { 1252, 20277, 10079, 850, 0, ';' }},
+       {0x0039, 0x007F, 257, -1, 39210, 39213, 39219, 39238, 39242, 39210, 0, {39246, 0, 0, 0}, 53, 53, { 0, 500, 2, 1, 0, ',' }},
+       {0x003A, 0x007F, 257, -1, 39287, 39290, 39298, 39304, 39308, 39287, 0, {39312, 0, 0, 0}, 54, 54, { 0, 500, 2, 1, 0, ',' }},
+       {0x003B, 0x007F, 257, -1, 39333, 39336, 39350, 39367, 39371, 39333, 0, {0, 0, 0, 0}, 55, 55, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x003C, 0x007F, 257, -1, 39375, 39378, 39384, 39392, 39396, 39375, 0, {39400, 0, 0, 0}, 56, 56, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x003E, 0x007F, 257, -1, 39421, 39424, 39430, 39444, 39448, 39421, 0, {39452, 0, 0, 0}, 57, 57, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x003F, 0x007F, 257, -1, 39469, 39472, 39479, 39499, 39503, 39469, 0, {39507, 0, 0, 0}, 58, 58, { 0, 500, 2, 1, 0, ';' }},
+       {0x0040, 0x007F, 257, -1, 39549, 39552, 39560, 39573, 39577, 39549, 0, {0, 0, 0, 0}, 59, 59, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0041, 0x007F, 257, -1, 39581, 39584, 39592, 39602, 39606, 39581, 0, {39610, 0, 0, 0}, 60, 60, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x0043, 0x007F, 257, -1, 39631, 39634, 39640, 39651, 39655, 39631, 0, {0, 0, 0, 0}, 61, 61, { 1254, 500, 10029, 857, 0, ';' }},
+       {0x0045, 0x007F, 257, -1, 39659, 39662, 39670, 39686, 39690, 39659, 0, {39694, 0, 0, 0}, 62, 62, { 0, 500, 2, 1, 0, ',' }},
+       {0x0046, 0x007F, 257, -1, 39759, 39762, 39770, 39789, 39793, 39759, 0, {0, 0, 0, 0}, 63, 63, { 0, 500, 2, 1, 0, ',' }},
+       {0x0047, 0x007F, 257, -1, 39797, 39800, 39809, 39831, 39835, 39797, 0, {39839, 0, 0, 0}, 64, 64, { 0, 500, 2, 1, 0, ',' }},
+       {0x0048, 0x007F, 257, -1, 14525, 39895, 39901, 39917, 39921, 14525, 0, {0, 0, 0, 0}, 65, 65, { 0, 500, 2, 1, 0, ',' }},
+       {0x0049, 0x007F, 257, -1, 39925, 39928, 39934, 39950, 39954, 39925, 0, {39958, 0, 0, 0}, 66, 66, { 0, 500, 2, 1, 0, ',' }},
+       {0x004A, 0x007F, 257, -1, 40023, 40026, 40033, 40052, 40056, 40023, 0, {40060, 0, 0, 0}, 67, 67, { 0, 500, 2, 1, 0, ',' }},
+       {0x004B, 0x007F, 257, -1, 35857, 40125, 40133, 40149, 40153, 35857, 0, {40157, 0, 0, 0}, 68, 68, { 0, 500, 2, 1, 0, ',' }},
+       {0x004C, 0x007F, 257, -1, 40228, 40231, 40241, 40260, 40264, 40228, 0, {40268, 0, 0, 0}, 69, 69, { 0, 500, 2, 1, 0, ',' }},
+       {0x004D, 0x007F, 257, -1, 14516, 40318, 40327, 40349, 40353, 14516, 0, {40357, 0, 0, 0}, 70, 70, { 0, 500, 2, 1, 0, ',' }},
+       {0x004E, 0x007F, 257, -1, 40410, 40413, 40421, 40437, 2565, 40410, 0, {40441, 0, 0, 0}, 71, 71, { 0, 500, 2, 1, 0, ',' }},
+       {0x0050, 0x007F, 257, -1, 40503, 40506, 40516, 40529, 40533, 40503, 0, {0, 0, 0, 0}, 72, 72, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0051, 0x007F, 257, -1, 40537, 40540, 40548, 40573, 40577, 40537, 0, {0, 0, 0, 0}, 73, 73, { 0, 500, 2, 1, 0, ',' }},
+       {0x0052, 0x007F, 257, -1, 40581, 40584, 40590, 40598, 40602, 40581, 0, {0, 0, 0, 0}, 74, 74, { 1252, 20285, 10000, 850, 0, ',' }},
+       {0x0053, 0x007F, 257, -1, 40606, 40609, 40615, 40643, 40647, 40606, 0, {0, 0, 0, 0}, 75, 75, { 0, 500, 2, 1, 0, ',' }},
+       {0x0054, 0x007F, 257, -1, 40651, 40654, 40658, 40668, 40672, 40651, 0, {0, 0, 0, 0}, 76, 76, { 0, 500, 2, 1, 0, ',' }},
+       {0x0056, 0x007F, 257, -1, 40676, 40679, 40688, 40695, 40699, 40676, 0, {37082, 0, 0, 0}, 77, 77, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0057, 0x007F, 257, -1, 40703, 40707, 40715, 40734, 40703, 40703, 0, {0, 0, 0, 0}, 78, 78, { 0, 500, 2, 1, 0, ',' }},
+       {0x005B, 0x007F, 257, -1, 40738, 40741, 40749, 40765, 40769, 40738, 0, {40773, 0, 0, 0}, 79, 79, { 0, 500, 2, 1, 0, ',' }},
+       {0x005E, 0x007F, 257, -1, 7865, 40795, 40803, 40816, 40820, 7865, 0, {40824, 0, 0, 0}, 80, 80, { 0, 500, 2, 1, 0, ';' }},
+       {0x005F, 0x007F, 257, -1, 40869, 40873, 40899, 40909, 40869, 40869, 0, {0, 0, 0, 0}, 81, 81, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0061, 0x007F, 257, -1, 2059, 40913, 40920, 40939, 40943, 2059, 0, {40947, 0, 0, 0}, 82, 82, { 0, 500, 2, 1, 0, ',' }},
+       {0x0063, 0x007F, 1024, -1, 40997, 41000, 41007, 41016, 41020, 40997, 0, {0, 0, 0, 0}, 83, 83, { 0, 500, 2, 1, 1, ';' }},
+       {0x0064, 0x007F, 257, -1, 41024, 41028, 41028, 41037, 41024, 41024, 0, {41041, 0, 0, 0}, 84, 84, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x0068, 0x007F, 257, -1, 41064, 41067, 41067, 41073, 41077, 41064, 0, {0, 0, 0, 0}, 85, 85, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x006A, 0x007F, 257, -1, 41081, 41084, 41091, 41106, 41110, 41081, 0, {0, 0, 0, 0}, 86, 86, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x006C, 0x007F, 257, -1, 41114, 41118, 41133, 41150, 41114, 41114, 0, {0, 0, 0, 0}, 87, 87, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x006F, 0x007F, 257, -1, 41154, 41157, 41169, 41181, 41185, 41154, 0, {0, 0, 0, 0}, 88, 88, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0070, 0x007F, 257, -1, 14510, 41189, 41189, 41194, 41198, 14510, 0, {0, 0, 0, 0}, 89, 89, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x0078, 0x007F, 257, -1, 41202, 41205, 41216, 41226, 41230, 41202, 0, {41234, 0, 0, 0}, 90, 90, { 0, 500, 2, 1, 0, ',' }},
+       {0x007E, 0x007F, 257, -1, 41247, 41250, 41257, 41267, 41271, 41247, 0, {41275, 0, 0, 0}, 91, 91, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0082, 0x007F, 257, -1, 41295, 41298, 41306, 41314, 41318, 41295, 0, {0, 0, 0, 0}, 92, 92, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0084, 0x007F, 257, -1, 41322, 41326, 41339, 41358, 41322, 41322, 0, {41362, 0, 0, 0}, 93, 93, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0085, 0x007F, 257, -1, 41387, 41391, 41397, 41415, 41387, 41387, 0, {0, 0, 0, 0}, 94, 94, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0087, 0x007F, 257, -1, 41419, 41422, 41422, 41434, 41438, 41419, 0, {0, 0, 0, 0}, 95, 95, { 1252, 37, 10000, 437, 0, ';' }},
+       {0x0091, 0x007F, 257, -1, 41442, 41445, 41461, 41471, 41475, 41442, 0, {41479, 0, 0, 0}, 96, 96, { 1252, 20285, 10000, 850, 0, ',' }},
+       {0x0401, 0x0001, 768, 98, 41504, 41510, 41532, 36537, 36541, 36512, 13258, {0, 0, 36545, 0}, 97, 97, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0402, 0x0002, 257, 11, 41596, 41602, 41623, 36605, 36609, 36573, 41661, {36613, 0, 0, 0}, 98, 98, { 1251, 21025, 10007, 866, 0, ';' }},
+       {0x0403, 0x0003, 257, 32, 41664, 41670, 41686, 36674, 36678, 36655, 41704, {36682, 0, 0, 0}, 99, 99, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0404, 0x7C04, 257, 110, 41707, 41713, 41735, 41751, 36748, 36752, 41755, {41758, 0, 0, 0}, 100, 100, { 950, 500, 10002, 950, 0, ',' }},
+       {0x0405, 0x0005, 257, 24, 41765, 41771, 41794, 36810, 36814, 36791, 41824, {36818, 0, 0, 0}, 101, 101, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x0406, 0x0006, 257, 26, 41827, 41833, 41850, 36860, 36864, 36844, 41866, {36868, 0, 0, 0}, 102, 102, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0407, 0x0007, 257, 25, 41869, 41875, 41892, 36907, 36911, 36889, 41914, {36915, 0, 0, 0}, 103, 103, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0408, 0x0008, 257, 40, 41917, 41923, 41938, 36966, 36970, 36940, 41970, {36974, 0, 0, 0}, 104, 104, { 1253, 20273, 10006, 737, 0, ';' }},
+       {0x0409, 0x0009, 257, 112, 41973, 41979, 41979, 37027, 37031, 37016, 42003, {37035, 0, 0, 0}, 105, 105, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x040B, 0x000B, 257, 34, 42006, 42012, 42030, 37121, 37125, 37104, 42044, {37129, 0, 0, 0}, 106, 106, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x040C, 0x000C, 257, 36, 42047, 42053, 42069, 37174, 37178, 37154, 42088, {37182, 0, 0, 0}, 107, 107, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x040D, 0x000D, 257, 48, 42091, 42097, 42113, 37225, 37229, 37204, 42137, {37233, 0, 0, 0}, 108, 108, { 1255, 500, 10005, 862, 1, ',' }},
+       {0x040E, 0x000E, 257, 45, 42140, 42146, 42166, 37286, 37290, 37266, 42189, {37294, 0, 0, 0}, 109, 109, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x040F, 0x000F, 257, 52, 42192, 42198, 42218, 37333, 37337, 37310, 42238, {37341, 0, 0, 0}, 110, 110, { 1252, 20871, 10079, 850, 0, ';' }},
+       {0x0410, 0x0010, 257, 53, 42241, 42247, 42263, 37381, 37385, 37361, 42281, {37082, 0, 0, 0}, 111, 111, { 1252, 20280, 10000, 850, 0, ';' }},
+       {0x0411, 0x0011, 257, 56, 42284, 42290, 42307, 37411, 37415, 37389, 42326, {37419, 0, 0, 0}, 112, 112, { 932, 20290, 10001, 932, 0, ',' }},
+       {0x0412, 0x0012, 257, 60, 42329, 42335, 42356, 37466, 37470, 37446, 42381, {37474, 0, 0, 0}, 113, 113, { 949, 20833, 10003, 949, 0, ',' }},
+       {0x0413, 0x0013, 257, 80, 42384, 42390, 42410, 37504, 37508, 37484, 42433, {37512, 0, 0, 0}, 114, 114, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0414, 0x7C14, 257, 81, 42436, 42442, 42469, 37553, 37557, 37561, 42491, {36868, 0, 0, 0}, 115, 115, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0415, 0x0015, 257, 89, 42494, 42500, 42516, 37581, 37585, 37564, 42532, {37589, 0, 0, 0}, 116, 116, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0416, 0x0016, 257, 15, 42535, 42541, 42561, 37638, 37642, 37613, 42581, {37646, 0, 0, 0}, 117, 117, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0417, 0x0017, 257, 19, 42584, 42590, 42612, 37690, 37694, 37669, 13261, {37698, 0, 0, 0}, 118, 118, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0418, 0x0018, 257, 94, 42631, 42637, 42656, 37739, 37743, 37718, 42676, {37747, 0, 0, 0}, 119, 119, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0419, 0x0019, 257, 96, 42679, 42685, 42702, 37792, 37796, 37766, 42732, {37800, 0, 0, 0}, 120, 120, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x041A, 0x001A, 257, 44, 42735, 42741, 42760, 37867, 37871, 37846, 42780, {37875, 0, 0, 0}, 121, 121, { 1250, 500, 10082, 852, 0, ';' }},
+       {0x041B, 0x001B, 257, 102, 42783, 42789, 42807, 37920, 37924, 37898, 42842, {37928, 0, 0, 0}, 122, 122, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x041C, 0x001C, 257, 2, 42845, 42851, 42870, 37970, 37974, 37952, 42889, {0, 0, 0, 0}, 123, 123, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x041D, 0x001D, 257, 99, 42892, 42898, 42915, 37997, 38001, 37978, 42933, {36868, 0, 0, 0}, 124, 124, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x041E, 0x001E, 512, 105, 42936, 42942, 42958, 38023, 38027, 38005, 42980, {0, 38031, 0, 0}, 125, 125, { 874, 20838, 10021, 874, 0, ',' }},
+       {0x041F, 0x001F, 257, 108, 42983, 42989, 43006, 38082, 38086, 38062, 43026, {38090, 0, 0, 0}, 126, 126, { 1254, 20905, 10081, 857, 0, ';' }},
+       {0x0420, 0x0020, 257, 88, 43029, 43035, 43051, 38121, 38125, 38104, 43077, {38129, 0, 0, 0}, 127, 127, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0421, 0x0021, 257, 46, 43080, 43086, 43109, 38190, 38194, 38159, 43138, {38198, 0, 0, 0}, 128, 128, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0422, 0x0022, 257, 111, 43141, 43147, 43167, 38251, 38255, 38217, 43205, {38259, 0, 0, 0}, 129, 129, { 1251, 500, 10017, 866, 0, ';' }},
+       {0x0423, 0x0023, 257, 16, 43208, 43214, 43235, 38340, 38344, 38305, 43275, {38348, 0, 0, 0}, 130, 130, { 1251, 500, 10007, 866, 0, ';' }},
+       {0x0424, 0x0024, 257, 101, 43278, 43284, 43305, 38417, 38421, 38390, 43331, {38425, 0, 0, 0}, 131, 131, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0425, 0x0025, 257, 30, 43334, 43340, 43359, 38465, 38469, 38447, 43373, {38473, 0, 0, 0}, 132, 132, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0426, 0x0026, 257, 68, 43376, 43382, 43399, 38514, 38518, 38493, 43419, {38522, 0, 0, 0}, 133, 133, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0427, 0x0027, 257, 66, 43422, 43428, 43451, 38565, 38569, 38541, 43471, {38573, 0, 0, 0}, 134, 134, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0428, 0x7C28, 257, 106, 43474, 43485, 0, 38605, 38609, 38596, 43514, {0, 0, 0, 0}, 135, 135, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0429, 0x0029, 257, 51, 43517, 43523, 43538, 38635, 38639, 38613, 43562, {38643, 0, 0, 0}, 136, 136, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x042A, 0x002A, 257, 116, 43565, 43571, 43592, 38696, 4121, 38667, 43620, {38700, 0, 0, 0}, 137, 137, { 1258, 500, 10000, 1258, 0, ',' }},
+       {0x042B, 0x002B, 257, 3, 43623, 43629, 43648, 38742, 38746, 38715, 3781, {0, 0, 0, 0}, 138, 138, { 0, 500, 2, 1, 0, ',' }},
+       {0x042C, 0x782C, 257, 7, 43713, 43724, 43756, 38776, 38780, 14519, 43784, {38784, 0, 0, 0}, 139, 139, { 1254, 20905, 10081, 857, 0, ';' }},
+       {0x042D, 0x002D, 257, 32, 43787, 43793, 43808, 38820, 38824, 38802, 41704, {38828, 0, 0, 0}, 140, 140, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x042F, 0x002F, 257, 73, 43827, 43833, 43856, 38883, 38887, 38848, 43900, {38891, 0, 0, 0}, 141, 141, { 1251, 500, 10007, 866, 0, ';' }},
+       {0x0432, 0x0032, 257, 118, 43903, 43909, 38945, 38954, 38958, 38935, 43931, {0, 0, 0, 0}, 142, 142, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0434, 0x0034, 257, 118, 43934, 43940, 38971, 38980, 38984, 38962, 43931, {0, 0, 0, 0}, 143, 143, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0435, 0x0035, 257, 118, 43961, 43967, 43987, 39004, 39008, 38988, 43931, {39012, 0, 0, 0}, 144, 144, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0436, 0x0036, 257, 118, 44015, 44021, 44046, 39046, 39050, 39033, 43931, {39054, 0, 0, 0}, 145, 145, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0437, 0x0037, 257, 38, 44070, 44076, 44095, 39108, 39112, 39074, 44150, {39116, 0, 0, 0}, 146, 146, { 0, 500, 2, 1, 0, ';' }},
+       {0x0438, 0x0038, 257, 35, 44153, 44159, 44183, 39202, 39206, 39181, 44204, {0, 0, 0, 0}, 147, 147, { 1252, 20277, 10079, 850, 0, ';' }},
+       {0x0439, 0x0039, 257, 49, 44207, 44213, 44227, 39238, 39242, 39210, 44261, {39246, 0, 0, 0}, 148, 148, { 0, 500, 2, 1, 0, ',' }},
+       {0x043A, 0x003A, 257, 75, 44264, 44270, 44286, 39304, 39308, 39287, 44300, {39312, 0, 0, 0}, 149, 149, { 0, 500, 2, 1, 0, ',' }},
+       {0x043B, 0x003B, 257, 81, 44303, 44309, 44332, 39367, 39371, 39333, 42491, {0, 0, 0, 0}, 150, 150, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x043E, 0x003E, 257, 77, 44357, 44363, 44380, 39444, 39448, 39421, 44405, {39452, 0, 0, 0}, 151, 151, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0440, 0x0040, 257, 58, 44408, 44414, 44435, 39573, 39577, 39549, 44471, {0, 0, 0, 0}, 152, 152, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0441, 0x0041, 257, 57, 44474, 44480, 44496, 39602, 39606, 39581, 44514, {39610, 0, 0, 0}, 153, 153, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x0443, 0x7C43, 257, 114, 44517, 44528, 44554, 39651, 39655, 39631, 44588, {0, 0, 0, 0}, 154, 154, { 1254, 500, 10029, 857, 0, ';' }},
+       {0x0445, 0x0045, 257, 49, 44591, 44597, 44613, 39686, 39690, 39659, 44261, {39694, 0, 0, 0}, 155, 155, { 0, 500, 2, 1, 0, ',' }},
+       {0x0447, 0x0047, 257, 49, 44644, 44650, 44667, 39831, 39835, 39797, 44261, {39839, 0, 0, 0}, 156, 156, { 0, 500, 2, 1, 0, ',' }},
+       {0x0448, 0x0048, 257, 49, 44704, 44710, 44724, 39917, 39921, 14525, 44261, {0, 0, 0, 0}, 157, 157, { 0, 500, 2, 1, 0, ',' }},
+       {0x0449, 0x0049, 257, 49, 44755, 44761, 44775, 39950, 39954, 39925, 44261, {39958, 0, 0, 0}, 158, 158, { 0, 500, 2, 1, 0, ',' }},
+       {0x044A, 0x004A, 257, 49, 44815, 44821, 44836, 40052, 40056, 40023, 44261, {40060, 0, 0, 0}, 159, 159, { 0, 500, 2, 1, 0, ',' }},
+       {0x044B, 0x004B, 257, 49, 44883, 44889, 44905, 40149, 40153, 35857, 44261, {40157, 0, 0, 0}, 160, 160, { 0, 500, 2, 1, 0, ',' }},
+       {0x044C, 0x004C, 257, 49, 44936, 44942, 44960, 40260, 40264, 40228, 44261, {40268, 0, 0, 0}, 161, 161, { 0, 500, 2, 1, 0, ',' }},
+       {0x044D, 0x004D, 257, 49, 45000, 45006, 45023, 40349, 40353, 14516, 44261, {40357, 0, 0, 0}, 162, 162, { 0, 500, 2, 1, 0, ',' }},
+       {0x044E, 0x004E, 257, 49, 45060, 45066, 45082, 40437, 2565, 40410, 44261, {40441, 0, 0, 0}, 163, 163, { 0, 500, 2, 1, 0, ',' }},
+       {0x0451, 0x0051, 257, 21, 45113, 45119, 45135, 40573, 40577, 40537, 13340, {0, 0, 0, 0}, 164, 164, { 0, 500, 2, 1, 0, ',' }},
+       {0x0452, 0x0052, 257, 37, 45181, 45187, 45210, 40598, 40602, 40581, 45233, {0, 0, 0, 0}, 165, 165, { 1252, 20285, 10000, 850, 0, ',' }},
+       {0x0453, 0x0053, 257, 59, 45236, 45242, 45259, 40643, 40647, 40606, 45311, {0, 0, 0, 0}, 166, 166, { 0, 500, 2, 1, 0, ',' }},
+       {0x0454, 0x0054, 257, 62, 45314, 45320, 45331, 40668, 40672, 40651, 45353, {0, 0, 0, 0}, 167, 167, { 0, 500, 2, 1, 0, ',' }},
+       {0x0456, 0x0056, 257, 32, 45356, 45362, 45379, 40695, 40699, 40676, 41704, {37082, 0, 0, 0}, 168, 168, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0457, 0x0057, 257, 49, 45396, 45403, 45419, 40734, 40703, 40703, 44261, {0, 0, 0, 0}, 169, 169, { 0, 500, 2, 1, 0, ',' }},
+       {0x045B, 0x005B, 257, 65, 45453, 45459, 45479, 40765, 40769, 40738, 45529, {40773, 0, 0, 0}, 170, 170, { 0, 500, 2, 1, 0, ',' }},
+       {0x045E, 0x005E, 257, 33, 45532, 45538, 45557, 40816, 40820, 7865, 45588, {40824, 0, 0, 0}, 171, 171, { 0, 500, 2, 1, 0, ';' }},
+       {0x0461, 0x0061, 257, 82, 45591, 45597, 45612, 40939, 40943, 2059, 45649, {40947, 0, 0, 0}, 172, 172, { 0, 500, 2, 1, 0, ',' }},
+       {0x0463, 0x0063, 1024, 1, 45652, 45658, 45679, 41016, 41020, 40997, 45709, {0, 0, 0, 0}, 173, 173, { 0, 500, 2, 1, 1, ';' }},
+       {0x0464, 0x0064, 257, 87, 45712, 45719, 45742, 41037, 41024, 41024, 45763, {41041, 0, 0, 0}, 174, 174, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x0468, 0x7C68, 257, 78, 45766, 45777, 45800, 41073, 41077, 41064, 45817, {0, 0, 0, 0}, 175, 175, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x046A, 0x006A, 257, 78, 45820, 45826, 45843, 41106, 41110, 41081, 45817, {0, 0, 0, 0}, 176, 176, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x046C, 0x006C, 257, 118, 45889, 45896, 41133, 41150, 41114, 41114, 43931, {0, 0, 0, 0}, 177, 177, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x046F, 0x006F, 257, 39, 45926, 45932, 45956, 41181, 41185, 41154, 45987, {0, 0, 0, 0}, 178, 178, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0470, 0x0070, 257, 78, 45990, 45996, 45996, 41194, 41198, 14510, 45817, {0, 0, 0, 0}, 179, 179, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x0478, 0x0078, 257, 21, 46011, 46017, 46036, 41226, 41230, 41202, 13340, {41234, 0, 0, 0}, 180, 180, { 0, 500, 2, 1, 0, ',' }},
+       {0x047E, 0x007E, 257, 36, 46055, 46061, 46077, 41267, 41271, 41247, 42088, {41275, 0, 0, 0}, 181, 181, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0482, 0x0082, 257, 36, 46096, 46102, 46119, 41314, 41318, 41295, 42088, {0, 0, 0, 0}, 182, 182, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0485, 0x0085, 257, 96, 46137, 46144, 41397, 41415, 41387, 41387, 42732, {0, 0, 0, 0}, 183, 183, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0487, 0x0087, 257, 97, 46159, 46165, 46165, 41434, 41438, 41419, 46186, {0, 0, 0, 0}, 184, 184, { 1252, 37, 10000, 437, 0, ';' }},
+       {0x0491, 0x0091, 257, 37, 46189, 46195, 46228, 41471, 41475, 41442, 45233, {41479, 0, 0, 0}, 185, 185, { 1252, 20285, 10000, 850, 0, ',' }},
+       {0x0801, 0x0001, 257, 50, 46264, 46270, 46284, 46314, 36541, 36512, 46318, {36545, 0, 0, 0}, 186, 186, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0804, 0x0004, 257, 21, 46321, 36770, 46327, 36744, 36748, 36752, 13340, {36755, 0, 0, 0}, 187, 187, { 936, 500, 10008, 936, 0, ',' }},
+       {0x0807, 0x0007, 257, 19, 46343, 46349, 46370, 46388, 36911, 36889, 13261, {36915, 0, 0, 0}, 188, 188, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0809, 0x0009, 257, 37, 46392, 46398, 46398, 46423, 37031, 37016, 45233, {37035, 0, 0, 0}, 189, 189, { 1252, 20285, 10000, 850, 0, ',' }},
+       {0x080A, 0x000A, 257, 76, 46427, 46433, 46450, 46469, 37078, 37054, 46473, {37082, 0, 0, 0}, 190, 190, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x080C, 0x000C, 257, 10, 46476, 46482, 46499, 46520, 37178, 37154, 46524, {37182, 0, 0, 0}, 191, 191, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0810, 0x0010, 257, 19, 46527, 46533, 46555, 46575, 37385, 37361, 13261, {37082, 0, 0, 0}, 192, 192, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0813, 0x0013, 257, 10, 46579, 46585, 46601, 46622, 37508, 37484, 46524, {37512, 0, 0, 0}, 193, 193, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0814, 0x7814, 257, 81, 46626, 46632, 46659, 46675, 46679, 46683, 42491, {36868, 0, 0, 0}, 194, 194, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0816, 0x0016, 257, 91, 46686, 46692, 46714, 46736, 37642, 37613, 46740, {37646, 0, 0, 0}, 195, 195, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x081D, 0x001D, 257, 34, 46743, 46749, 46767, 46785, 38001, 37978, 42044, {36868, 0, 0, 0}, 196, 196, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x082C, 0x742C, 257, 7, 46789, 46800, 43756, 46835, 38780, 14519, 43784, {38784, 0, 0, 0}, 197, 197, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x083C, 0x003C, 257, 47, 46839, 46845, 46861, 39392, 39396, 39375, 46877, {39400, 0, 0, 0}, 198, 198, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x083E, 0x003E, 257, 13, 46880, 46886, 46901, 46924, 39448, 39421, 46928, {39452, 0, 0, 0}, 199, 199, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0843, 0x7843, 257, 114, 46931, 46942, 44554, 39651, 39655, 39631, 44588, {0, 0, 0, 0}, 200, 200, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0845, 0x0045, 257, 9, 46971, 46977, 46998, 47041, 39690, 39659, 47045, {39694, 0, 0, 0}, 201, 201, { 0, 500, 2, 1, 0, ',' }},
+       {0x0850, 0x7C50, 257, 21, 47048, 47059, 40516, 47088, 40533, 40503, 13340, {0, 0, 0, 0}, 202, 202, { 0, 500, 2, 1, 0, ',' }},
+       {0x0C01, 0x0001, 257, 31, 47092, 47098, 47113, 47137, 36541, 36512, 47141, {36545, 0, 0, 0}, 203, 203, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0C04, 0x7C04, 257, 42, 47144, 47150, 47193, 47230, 36748, 36752, 47234, {41758, 0, 0, 0}, 204, 204, { 950, 500, 10002, 950, 0, ',' }},
+       {0x0C07, 0x0007, 257, 5, 47237, 47243, 47260, 47282, 36911, 36889, 47286, {36915, 0, 0, 0}, 205, 205, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0C09, 0x0009, 257, 6, 47289, 47295, 47295, 47315, 37031, 37016, 47319, {37035, 0, 0, 0}, 206, 206, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0C0A, 0x000A, 257, 32, 47322, 47328, 47344, 47363, 37078, 37054, 41704, {37082, 0, 0, 0}, 207, 207, { 1252, 20284, 10000, 850, 0, ';' }},
+       {0x0C0C, 0x000C, 257, 18, 47367, 47373, 47389, 47408, 37178, 37154, 47412, {37182, 0, 0, 0}, 208, 208, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0C3B, 0x003B, 257, 34, 47415, 47421, 47445, 47471, 47475, 39333, 42044, {0, 0, 0, 0}, 209, 209, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x1001, 0x0001, 257, 69, 47479, 47485, 47500, 47528, 36541, 36512, 47532, {36545, 0, 0, 0}, 210, 210, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x1004, 0x0004, 257, 100, 47535, 47541, 47573, 47592, 36748, 36752, 47596, {36755, 0, 0, 0}, 211, 211, { 936, 500, 10008, 936, 0, ',' }},
+       {0x1007, 0x0007, 257, 67, 47599, 47605, 47625, 47645, 36911, 36889, 47649, {36915, 0, 0, 0}, 212, 212, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x1009, 0x0009, 257, 18, 47652, 47658, 47658, 47675, 37031, 37016, 47412, {37035, 0, 0, 0}, 213, 213, { 1252, 37, 10000, 850, 0, ',' }},
+       {0x100A, 0x000A, 257, 41, 47679, 47685, 47705, 47726, 37078, 37054, 47730, {37082, 0, 0, 0}, 214, 214, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x100C, 0x000C, 257, 19, 47733, 47739, 47760, 47779, 37178, 37154, 13261, {37182, 0, 0, 0}, 215, 215, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x1401, 0x0001, 257, 28, 47783, 47789, 47806, 47838, 36541, 36512, 47842, {36545, 0, 0, 0}, 216, 216, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x1404, 0x7C04, 257, 74, 47845, 47851, 47890, 47927, 36748, 36752, 47931, {41758, 0, 0, 0}, 217, 217, { 950, 500, 10002, 950, 0, ',' }},
+       {0x1407, 0x0007, 257, 64, 47934, 47940, 47963, 47987, 36911, 36889, 47991, {36915, 0, 0, 0}, 218, 218, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x1409, 0x0009, 257, 83, 47994, 48000, 48000, 48022, 37031, 37016, 48026, {37035, 0, 0, 0}, 219, 219, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x140A, 0x000A, 257, 23, 48029, 48035, 48056, 48078, 37078, 37054, 48082, {37082, 0, 0, 0}, 220, 220, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x140C, 0x000C, 257, 67, 48085, 48091, 48111, 48134, 37178, 37154, 47649, {37182, 0, 0, 0}, 221, 221, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x1801, 0x0001, 257, 70, 48138, 48144, 48161, 48191, 36541, 36512, 48195, {36545, 0, 0, 0}, 222, 222, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x1809, 0x0009, 257, 47, 48198, 48204, 48204, 48222, 37031, 37016, 46877, {37035, 0, 0, 0}, 223, 223, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x180A, 0x000A, 257, 85, 48226, 48232, 48249, 48268, 37078, 37054, 48272, {37082, 0, 0, 0}, 224, 224, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x180C, 0x000C, 257, 71, 48275, 48281, 48297, 48316, 37178, 37154, 48320, {37182, 0, 0, 0}, 225, 225, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x181A, 0x701A, 257, 8, 48323, 48334, 48374, 48426, 48430, 48434, 48437, {48440, 0, 0, 0}, 226, 226, { 1250, 870, 10082, 852, 0, ';' }},
+       {0x1C01, 0x0001, 257, 107, 48463, 48469, 48486, 48512, 36541, 36512, 48516, {36545, 0, 0, 0}, 227, 227, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x1C09, 0x0009, 257, 118, 48519, 48525, 48525, 48548, 37031, 37016, 43931, {37035, 0, 0, 0}, 228, 228, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x1C0A, 0x000A, 257, 27, 48552, 48558, 48587, 48620, 37078, 37054, 48624, {37082, 0, 0, 0}, 229, 229, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x1C1A, 0x6C1A, 257, 8, 48627, 48638, 48374, 48681, 48685, 48434, 48437, {38891, 0, 0, 0}, 230, 230, { 1251, 21025, 10007, 855, 0, ';' }},
+       {0x2001, 0x0001, 257, 84, 48689, 48695, 48709, 48737, 36541, 36512, 48741, {36545, 0, 0, 0}, 231, 231, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x2009, 0x0009, 257, 54, 48744, 48750, 48750, 48768, 37031, 37016, 48772, {37035, 0, 0, 0}, 232, 232, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x200A, 0x000A, 257, 115, 48775, 48781, 48801, 48822, 37078, 37054, 48826, {37082, 0, 0, 0}, 233, 233, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x2401, 0x0001, 257, 117, 48829, 48835, 48850, 48878, 36541, 36512, 48882, {36545, 0, 0, 0}, 234, 234, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x240A, 0x000A, 257, 22, 48885, 48891, 48910, 48930, 37078, 37054, 48934, {37082, 0, 0, 0}, 235, 235, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x241A, 0x701A, 257, 95, 48937, 48948, 48972, 49000, 9243, 48434, 49004, {48440, 0, 0, 0}, 236, 236, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x2801, 0x0001, 257, 104, 49007, 49013, 49028, 49056, 36541, 36512, 49060, {36545, 0, 0, 0}, 237, 237, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x2809, 0x0009, 257, 17, 49063, 49069, 49069, 49086, 37031, 37016, 49090, {37035, 0, 0, 0}, 238, 238, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x280A, 0x000A, 257, 86, 49093, 49099, 49114, 49131, 37078, 37054, 49135, {37082, 0, 0, 0}, 239, 239, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x281A, 0x6C1A, 257, 95, 49138, 49149, 48972, 49176, 9243, 48434, 49004, {38891, 0, 0, 0}, 240, 240, { 1251, 21025, 10007, 855, 0, ';' }},
+       {0x2C01, 0x0001, 257, 55, 49180, 49186, 49202, 49232, 36541, 36512, 49236, {36545, 0, 0, 0}, 241, 241, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x2C09, 0x0009, 257, 109, 49239, 49245, 49245, 49275, 37031, 37016, 49279, {37035, 0, 0, 0}, 242, 242, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x2C0A, 0x000A, 257, 4, 49282, 49288, 49308, 49329, 37078, 37054, 49333, {37082, 0, 0, 0}, 243, 243, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x2C1A, 0x701A, 257, 72, 49336, 49347, 49375, 49408, 9243, 48434, 49412, {48440, 0, 0, 0}, 244, 244, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x3001, 0x0001, 257, 63, 49415, 49421, 49438, 49466, 36541, 36512, 49470, {36545, 0, 0, 0}, 245, 245, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x3009, 0x0009, 257, 119, 49473, 49479, 49479, 49498, 37031, 37016, 49502, {37035, 0, 0, 0}, 246, 246, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x300A, 0x000A, 257, 29, 49505, 49511, 49529, 49548, 37078, 37054, 49552, {37082, 0, 0, 0}, 247, 247, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x301A, 0x6C1A, 257, 72, 49555, 49566, 49375, 49597, 9243, 48434, 49412, {38891, 0, 0, 0}, 248, 248, { 1251, 21025, 10007, 855, 0, ';' }},
+       {0x3401, 0x0001, 257, 61, 49601, 49607, 49623, 49653, 36541, 36512, 49657, {36545, 0, 0, 0}, 249, 249, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x3409, 0x0009, 257, 87, 49660, 49666, 49666, 49688, 37031, 37016, 45763, {37035, 0, 0, 0}, 250, 250, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x340A, 0x000A, 257, 20, 49692, 49698, 49714, 49731, 37078, 37054, 49735, {37082, 0, 0, 0}, 251, 251, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x3801, 0x0001, 257, 0, 49738, 49744, 49774, 49838, 36541, 36512, 49842, {36545, 0, 0, 0}, 252, 252, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x380A, 0x000A, 257, 113, 49845, 49851, 49869, 49888, 37078, 37054, 49892, {37082, 0, 0, 0}, 253, 253, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x3C01, 0x0001, 257, 12, 49895, 49901, 49918, 49950, 36541, 36512, 49954, {36545, 0, 0, 0}, 254, 254, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x3C0A, 0x000A, 257, 92, 49957, 49963, 49982, 50002, 37078, 37054, 50006, {37082, 0, 0, 0}, 255, 255, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x4001, 0x0001, 257, 93, 50009, 50015, 50030, 50054, 36541, 36512, 50058, {36545, 0, 0, 0}, 256, 256, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x4009, 0x0009, 257, 49, 50061, 50067, 50067, 50083, 37031, 37016, 44261, {37035, 0, 0, 0}, 257, 257, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x400A, 0x000A, 257, 14, 50087, 50093, 50111, 50130, 37078, 37054, 50134, {37082, 0, 0, 0}, 258, 258, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x440A, 0x000A, 257, 103, 50137, 50143, 50165, 50188, 37078, 37054, 50192, {37082, 0, 0, 0}, 259, 259, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x4809, 0x0009, 257, 100, 50195, 50201, 50201, 50221, 37031, 37016, 47596, {37035, 0, 0, 0}, 260, 260, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x480A, 0x000A, 257, 43, 50225, 50231, 50250, 50270, 37078, 37054, 50274, {37082, 0, 0, 0}, 261, 261, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x4C0A, 0x000A, 257, 79, 50277, 50283, 50303, 50324, 37078, 37054, 50328, {37082, 0, 0, 0}, 262, 262, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x500A, 0x000A, 257, 90, 50331, 50337, 50359, 50382, 37078, 37054, 50386, {37082, 0, 0, 0}, 263, 263, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x540A, 0x000A, 257, 112, 50389, 50395, 50419, 50445, 37078, 37054, 42003, {37082, 0, 0, 0}, 264, 264, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x6C1A, 0x7C1A, 257, -1, 50449, 50457, 50476, 49176, 9243, 48434, 0, {38891, 0, 0, 0}, 265, 265, { 1251, 21025, 10007, 855, 0, ';' }},
+       {0x701A, 0x7C1A, 257, -1, 50489, 50497, 50476, 49000, 9243, 48434, 0, {48440, 0, 0, 0}, 266, 266, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x742C, 0x002C, 257, -1, 50513, 50521, 38762, 46835, 38780, 14519, 0, {38784, 0, 0, 0}, 267, 267, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x7804, 0x007F, 257, -1, 36752, 36770, 36737, 36744, 36748, 36752, 0, {36755, 0, 0, 0}, 268, 268, { 936, 500, 10008, 936, 0, ',' }},
+       {0x7814, 0x0014, 257, -1, 46683, 50544, 50562, 46675, 46679, 46683, 0, {36868, 0, 0, 0}, 269, 269, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x781A, 0x007F, 257, -1, 50570, 50573, 50581, 50590, 50594, 50570, 0, {48440, 0, 0, 0}, 270, 270, { 1250, 870, 10082, 852, 0, ';' }},
+       {0x782C, 0x002C, 257, -1, 50598, 50606, 38762, 38776, 38780, 14519, 0, {38784, 0, 0, 0}, 271, 271, { 1254, 20905, 10081, 857, 0, ';' }},
+       {0x7843, 0x0043, 257, -1, 50626, 50634, 39640, 39651, 39655, 39631, 0, {0, 0, 0, 0}, 272, 272, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x7850, 0x0050, 257, -1, 50651, 50659, 40516, 50680, 40533, 40503, 0, {0, 0, 0, 0}, 273, 273, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x7C04, 0x7804, 257, -1, 50684, 41713, 36737, 41751, 36748, 36752, 0, {41758, 0, 0, 0}, 274, 274, { 950, 500, 10002, 950, 0, ',' }},
+       {0x7C04, 0x7C04, 257, -1, 50692, 50699, 36737, 41751, 36748, 36752, 0, {41758, 0, 0, 0}, 275, 275, { 950, 500, 10002, 950, 0, ',' }},
+       {0x7C14, 0x0014, 257, -1, 37561, 50728, 50746, 37553, 37557, 37561, 0, {36868, 0, 0, 0}, 276, 276, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x7C1A, 0x007F, 257, -1, 48434, 50760, 50476, 50768, 9243, 48434, 0, {38891, 0, 0, 0}, 277, 277, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x7C28, 0x0028, 257, -1, 50772, 50780, 0, 38605, 38609, 38596, 0, {0, 0, 0, 0}, 278, 278, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x7C43, 0x0043, 257, -1, 50797, 50805, 39640, 39651, 39655, 39631, 0, {0, 0, 0, 0}, 279, 279, { 1254, 500, 10029, 857, 0, ';' }},
+       {0x7C50, 0x0050, 257, -1, 50819, 50827, 40516, 47088, 40533, 40503, 0, {0, 0, 0, 0}, 280, 280, { 0, 500, 2, 1, 0, ',' }},
+       {0x7C5F, 0x005F, 257, -1, 50849, 50858, 40899, 40909, 40869, 40869, 0, {0, 0, 0, 0}, 281, 281, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x7C68, 0x0068, 257, -1, 50892, 50900, 41067, 41073, 41077, 41064, 0, {0, 0, 0, 0}, 282, 282, { 1252, 37, 10000, 437, 0, ',' }}
 };
 
 
 static const CultureInfoNameEntry culture_name_entries [] = {
-       {38664, 50},     /* af */
-       {50545, 145},    /* af-za */
-       {7860, 80},      /* am */
-       {50551, 171},    /* am-et */
-       {36143, 0},      /* ar */
-       {50557, 252},    /* ar-ae */
-       {50563, 254},    /* ar-bh */
-       {50569, 216},    /* ar-dz */
-       {50575, 203},    /* ar-eg */
-       {50581, 186},    /* ar-iq */
-       {50587, 241},    /* ar-jo */
-       {50593, 249},    /* ar-kw */
-       {50599, 245},    /* ar-lb */
-       {50605, 210},    /* ar-ly */
-       {50611, 222},    /* ar-ma */
-       {50617, 231},    /* ar-om */
-       {50623, 256},    /* ar-qa */
-       {50629, 97},     /* ar-sa */
-       {50635, 237},    /* ar-sy */
-       {50641, 227},    /* ar-tn */
-       {50647, 234},    /* ar-ye */
-       {14511, 70},     /* as */
-       {50653, 162},    /* as-in */
-       {14514, 44},     /* az */
-       {50659, 267},    /* az-cyrl */
-       {50667, 197},    /* az-cyrl-az */
-       {50678, 271},    /* az-latn */
-       {50686, 139},    /* az-latn-az */
-       {37936, 35},     /* be */
-       {50697, 130},    /* be-by */
-       {36204, 1},      /* bg */
-       {50703, 98},     /* bg-bg */
-       {39290, 62},     /* bn */
-       {50709, 201},    /* bn-bd */
-       {50715, 155},    /* bn-in */
-       {40168, 73},     /* bo */
-       {50721, 164},    /* bo-cn */
-       {40878, 91},     /* br */
-       {50727, 181},    /* br-fr */
-       {50201, 270},    /* bs */
-       {36286, 2},      /* ca */
-       {50733, 99},     /* ca-es */
-       {36422, 5},      /* cs */
-       {50739, 101},    /* cs-cz */
-       {40212, 74},     /* cy */
-       {50745, 165},    /* cy-gb */
-       {36475, 6},      /* da */
-       {50751, 102},    /* da-dk */
-       {36520, 7},      /* de */
-       {50757, 205},    /* de-at */
-       {50763, 188},    /* de-ch */
-       {50769, 103},    /* de-de */
-       {50775, 218},    /* de-li */
-       {50781, 212},    /* de-lu */
-       {36571, 8},      /* el */
-       {50787, 104},    /* el-gr */
-       {36647, 9},      /* en */
-       {50793, 206},    /* en-au */
-       {50799, 238},    /* en-bz */
-       {50805, 213},    /* en-ca */
-       {50811, 189},    /* en-gb */
-       {50817, 223},    /* en-ie */
-       {50823, 257},    /* en-in */
-       {50829, 232},    /* en-jm */
-       {50835, 219},    /* en-nz */
-       {50841, 250},    /* en-ph */
-       {50847, 260},    /* en-sg */
-       {50853, 242},    /* en-tt */
-       {50859, 105},    /* en-us */
-       {50865, 228},    /* en-za */
-       {50871, 246},    /* en-zw */
-       {36685, 10},     /* es */
-       {50877, 243},    /* es-ar */
-       {50883, 258},    /* es-bo */
-       {50889, 251},    /* es-cl */
-       {50895, 235},    /* es-co */
-       {50901, 220},    /* es-cr */
-       {50907, 229},    /* es-do */
-       {50913, 247},    /* es-ec */
-       {50919, 207},    /* es-es */
-       {50925, 214},    /* es-gt */
-       {50931, 261},    /* es-hn */
-       {50937, 190},    /* es-mx */
-       {50943, 262},    /* es-ni */
-       {50949, 224},    /* es-pa */
-       {50955, 239},    /* es-pe */
-       {50961, 263},    /* es-pr */
-       {50967, 255},    /* es-py */
-       {50973, 259},    /* es-sv */
-       {50979, 264},    /* es-us */
-       {50985, 253},    /* es-uy */
-       {50991, 233},    /* es-ve */
-       {38078, 37},     /* et */
-       {50997, 132},    /* et-ee */
-       {38433, 45},     /* eu */
-       {51003, 140},    /* eu-es */
-       {38244, 41},     /* fa */
-       {51009, 136},    /* fa-ir */
-       {36735, 11},     /* fi */
-       {51015, 106},    /* fi-fi */
-       {40655, 84},     /* fil */
-       {51021, 174},    /* fil-ph */
-       {38812, 52},     /* fo */
-       {51028, 147},    /* fo-fo */
-       {36785, 12},     /* fr */
-       {51034, 191},    /* fr-be */
-       {51040, 208},    /* fr-ca */
-       {51046, 215},    /* fr-ch */
-       {51052, 107},    /* fr-fr */
-       {51058, 221},    /* fr-lu */
-       {51064, 225},    /* fr-mc */
-       {39006, 56},     /* ga */
-       {51070, 198},    /* ga-ie */
-       {41073, 96},     /* gd */
-       {51076, 185},    /* gd-gb */
-       {40307, 77},     /* gl */
-       {51082, 168},    /* gl-es */
-       {40953, 93},     /* gsw */
-       {39428, 64},     /* gu */
-       {51088, 156},    /* gu-in */
-       {40695, 85},     /* ha */
-       {51094, 282},    /* ha-latn */
-       {51102, 175},    /* ha-latn-ng */
-       {36835, 13},     /* he */
-       {51113, 108},    /* he-il */
-       {38841, 53},     /* hi */
-       {51119, 148},    /* hi-in */
-       {37477, 26},     /* hr */
-       {51125, 121},    /* hr-hr */
-       {36897, 14},     /* hu */
-       {51131, 109},    /* hu-hu */
-       {38346, 43},     /* hy */
-       {51137, 138},    /* hy-am */
-       {37790, 33},     /* id */
-       {51143, 128},    /* id-id */
-       {14505, 89},     /* ig */
-       {51149, 179},    /* ig-ng */
-       {40833, 90},     /* ii */
-       {51155, 180},    /* ii-cn */
-       {36941, 15},     /* is */
-       {51161, 110},    /* is-is */
-       {36992, 16},     /* it */
-       {51167, 192},    /* it-ch */
-       {51173, 111},    /* it-it */
-       {37020, 17},     /* ja */
-       {51179, 112},    /* ja-jp */
-       {38705, 51},     /* ka */
-       {51185, 146},    /* ka-ge */
-       {39100, 58},     /* kk */
-       {40785, 88},     /* kl */
-       {51191, 178},    /* kl-gl */
-       {40237, 75},     /* km */
-       {51197, 166},    /* km-kh */
-       {35582, 68},     /* kn */
-       {51203, 160},    /* kn-in */
-       {37077, 18},     /* ko */
-       {51209, 113},    /* ko-kr */
-       {40334, 78},     /* kok */
-       {51215, 169},    /* kok-in */
-       {39180, 59},     /* ky */
-       {51222, 152},    /* ky-kg */
-       {40282, 76},     /* lo */
-       {51228, 167},    /* lo-la */
-       {38172, 39},     /* lt */
-       {51234, 134},    /* lt-lt */
-       {38124, 38},     /* lv */
-       {51240, 133},    /* lv-lv */
-       {38479, 46},     /* mk */
-       {51246, 141},    /* mk-mk */
-       {39859, 69},     /* ml */
-       {51252, 161},    /* ml-in */
-       {40134, 72},     /* mn */
-       {51258, 273},    /* mn-cyrl */
-       {51266, 280},    /* mn-mong */
-       {51274, 202},    /* mn-mong-cn */
-       {40041, 71},     /* mr */
-       {51285, 163},    /* mr-in */
-       {39052, 57},     /* ms */
-       {51291, 199},    /* ms-bn */
-       {51297, 151},    /* ms-my */
-       {38918, 54},     /* mt */
-       {51303, 149},    /* mt-mt */
-       {37192, 276},    /* nb */
-       {51309, 115},    /* nb-no */
-       {2082, 82},      /* ne */
-       {51315, 172},    /* ne-np */
-       {37115, 19},     /* nl */
-       {51321, 193},    /* nl-be */
-       {51327, 114},    /* nl-nl */
-       {46314, 269},    /* nn */
-       {51333, 194},    /* nn-no */
-       {37165, 20},     /* no */
-       {40745, 87},     /* nso */
-       {51339, 177},    /* nso-za */
-       {40926, 92},     /* oc */
-       {51346, 182},    /* oc-fr */
-       {14520, 65},     /* or */
-       {51352, 157},    /* or-in */
-       {39390, 63},     /* pa */
-       {37195, 21},     /* pl */
-       {51358, 116},    /* pl-pl */
-       {40628, 83},     /* ps */
-       {51364, 173},    /* ps-af */
-       {37244, 22},     /* pt */
-       {51370, 117},    /* pt-br */
-       {51376, 195},    /* pt-pt */
-       {37300, 23},     /* rm */
-       {51382, 118},    /* rm-ch */
-       {37349, 24},     /* ro */
-       {51388, 119},    /* ro-ro */
-       {37397, 25},     /* ru */
-       {51394, 120},    /* ru-ru */
-       {41050, 95},     /* rw */
-       {51400, 184},    /* rw-rw */
-       {41018, 94},     /* sah */
-       {51406, 183},    /* sah-ru */
-       {38964, 55},     /* se */
-       {51413, 209},    /* se-fi */
-       {51419, 150},    /* se-no */
-       {40369, 79},     /* si */
-       {51425, 170},    /* si-lk */
-       {37529, 27},     /* sk */
-       {51431, 122},    /* sk-sk */
-       {38021, 36},     /* sl */
-       {51437, 131},    /* sl-si */
-       {37583, 28},     /* sq */
-       {51443, 123},    /* sq-al */
-       {48065, 277},    /* sr */
-       {51449, 265},    /* sr-cyrl */
-       {51457, 230},    /* sr-cyrl-ba */
-       {51468, 248},    /* sr-cyrl-me */
-       {51479, 240},    /* sr-cyrl-rs */
-       {51490, 266},    /* sr-latn */
-       {51498, 226},    /* sr-latn-ba */
-       {51509, 244},    /* sr-latn-me */
-       {51520, 236},    /* sr-latn-rs */
-       {37609, 29},     /* sv */
-       {51531, 196},    /* sv-fi */
-       {51537, 124},    /* sv-se */
-       {39212, 60},     /* sw */
-       {51543, 153},    /* sw-ke */
-       {39556, 66},     /* ta */
-       {51549, 158},    /* ta-in */
-       {39654, 67},     /* te */
-       {51555, 159},    /* te-in */
-       {38227, 40},     /* tg */
-       {51561, 278},    /* tg-cyrl */
-       {51569, 135},    /* tg-cyrl-tj */
-       {37636, 30},     /* th */
-       {51580, 125},    /* th-th */
-       {38566, 47},     /* tn */
-       {51586, 142},    /* tn-za */
-       {37693, 31},     /* tr */
-       {51592, 126},    /* tr-tr */
-       {40500, 81},     /* tzm */
-       {51598, 281},    /* tzm-latn */
-       {37848, 34},     /* uk */
-       {51607, 129},    /* uk-ua */
-       {37735, 32},     /* ur */
-       {51613, 127},    /* ur-pk */
-       {39262, 61},     /* uz */
-       {51619, 272},    /* uz-cyrl */
-       {51627, 200},    /* uz-cyrl-uz */
-       {51638, 279},    /* uz-latn */
-       {51646, 154},    /* uz-latn-uz */
-       {38298, 42},     /* vi */
-       {51657, 137},    /* vi-vn */
-       {38593, 48},     /* xh */
-       {51663, 143},    /* xh-za */
-       {40712, 86},     /* yo */
-       {51669, 176},    /* yo-ng */
-       {36377, 268},    /* zh */
-       {51675, 4},      /* zh-chs */
-       {51682, 274},    /* zh-cht */
-       {51689, 187},    /* zh-cn */
-       {51695, 3},      /* zh-hans */
-       {51703, 275},    /* zh-hant */
-       {51711, 204},    /* zh-hk */
-       {51717, 217},    /* zh-mo */
-       {51723, 211},    /* zh-sg */
-       {51729, 100},    /* zh-tw */
-       {38619, 49},     /* zu */
-       {51735, 144}     /* zu-za */
+       {39033, 50},     /* af */
+       {50914, 145},    /* af-za */
+       {7865, 80},      /* am */
+       {50920, 171},    /* am-et */
+       {36512, 0},      /* ar */
+       {50926, 252},    /* ar-ae */
+       {50932, 254},    /* ar-bh */
+       {50938, 216},    /* ar-dz */
+       {50944, 203},    /* ar-eg */
+       {50950, 186},    /* ar-iq */
+       {50956, 241},    /* ar-jo */
+       {50962, 249},    /* ar-kw */
+       {50968, 245},    /* ar-lb */
+       {50974, 210},    /* ar-ly */
+       {50980, 222},    /* ar-ma */
+       {50986, 231},    /* ar-om */
+       {50992, 256},    /* ar-qa */
+       {50998, 97},     /* ar-sa */
+       {51004, 237},    /* ar-sy */
+       {51010, 227},    /* ar-tn */
+       {51016, 234},    /* ar-ye */
+       {14516, 70},     /* as */
+       {51022, 162},    /* as-in */
+       {14519, 44},     /* az */
+       {51028, 267},    /* az-cyrl */
+       {51036, 197},    /* az-cyrl-az */
+       {51047, 271},    /* az-latn */
+       {51055, 139},    /* az-latn-az */
+       {38305, 35},     /* be */
+       {51066, 130},    /* be-by */
+       {36573, 1},      /* bg */
+       {51072, 98},     /* bg-bg */
+       {39659, 62},     /* bn */
+       {51078, 201},    /* bn-bd */
+       {51084, 155},    /* bn-in */
+       {40537, 73},     /* bo */
+       {51090, 164},    /* bo-cn */
+       {41247, 91},     /* br */
+       {51096, 181},    /* br-fr */
+       {50570, 270},    /* bs */
+       {36655, 2},      /* ca */
+       {51102, 99},     /* ca-es */
+       {36791, 5},      /* cs */
+       {51108, 101},    /* cs-cz */
+       {40581, 74},     /* cy */
+       {51114, 165},    /* cy-gb */
+       {36844, 6},      /* da */
+       {51120, 102},    /* da-dk */
+       {36889, 7},      /* de */
+       {51126, 205},    /* de-at */
+       {51132, 188},    /* de-ch */
+       {51138, 103},    /* de-de */
+       {51144, 218},    /* de-li */
+       {51150, 212},    /* de-lu */
+       {36940, 8},      /* el */
+       {51156, 104},    /* el-gr */
+       {37016, 9},      /* en */
+       {51162, 206},    /* en-au */
+       {51168, 238},    /* en-bz */
+       {51174, 213},    /* en-ca */
+       {51180, 189},    /* en-gb */
+       {51186, 223},    /* en-ie */
+       {51192, 257},    /* en-in */
+       {51198, 232},    /* en-jm */
+       {51204, 219},    /* en-nz */
+       {51210, 250},    /* en-ph */
+       {51216, 260},    /* en-sg */
+       {51222, 242},    /* en-tt */
+       {51228, 105},    /* en-us */
+       {51234, 228},    /* en-za */
+       {51240, 246},    /* en-zw */
+       {37054, 10},     /* es */
+       {51246, 243},    /* es-ar */
+       {51252, 258},    /* es-bo */
+       {51258, 251},    /* es-cl */
+       {51264, 235},    /* es-co */
+       {51270, 220},    /* es-cr */
+       {51276, 229},    /* es-do */
+       {51282, 247},    /* es-ec */
+       {51288, 207},    /* es-es */
+       {51294, 214},    /* es-gt */
+       {51300, 261},    /* es-hn */
+       {51306, 190},    /* es-mx */
+       {51312, 262},    /* es-ni */
+       {51318, 224},    /* es-pa */
+       {51324, 239},    /* es-pe */
+       {51330, 263},    /* es-pr */
+       {51336, 255},    /* es-py */
+       {51342, 259},    /* es-sv */
+       {51348, 264},    /* es-us */
+       {51354, 253},    /* es-uy */
+       {51360, 233},    /* es-ve */
+       {38447, 37},     /* et */
+       {51366, 132},    /* et-ee */
+       {38802, 45},     /* eu */
+       {51372, 140},    /* eu-es */
+       {38613, 41},     /* fa */
+       {51378, 136},    /* fa-ir */
+       {37104, 11},     /* fi */
+       {51384, 106},    /* fi-fi */
+       {41024, 84},     /* fil */
+       {51390, 174},    /* fil-ph */
+       {39181, 52},     /* fo */
+       {51397, 147},    /* fo-fo */
+       {37154, 12},     /* fr */
+       {51403, 191},    /* fr-be */
+       {51409, 208},    /* fr-ca */
+       {51415, 215},    /* fr-ch */
+       {51421, 107},    /* fr-fr */
+       {51427, 221},    /* fr-lu */
+       {51433, 225},    /* fr-mc */
+       {39375, 56},     /* ga */
+       {51439, 198},    /* ga-ie */
+       {41442, 96},     /* gd */
+       {51445, 185},    /* gd-gb */
+       {40676, 77},     /* gl */
+       {51451, 168},    /* gl-es */
+       {41322, 93},     /* gsw */
+       {39797, 64},     /* gu */
+       {51457, 156},    /* gu-in */
+       {41064, 85},     /* ha */
+       {51463, 282},    /* ha-latn */
+       {51471, 175},    /* ha-latn-ng */
+       {37204, 13},     /* he */
+       {51482, 108},    /* he-il */
+       {39210, 53},     /* hi */
+       {51488, 148},    /* hi-in */
+       {37846, 26},     /* hr */
+       {51494, 121},    /* hr-hr */
+       {37266, 14},     /* hu */
+       {51500, 109},    /* hu-hu */
+       {38715, 43},     /* hy */
+       {51506, 138},    /* hy-am */
+       {38159, 33},     /* id */
+       {51512, 128},    /* id-id */
+       {14510, 89},     /* ig */
+       {51518, 179},    /* ig-ng */
+       {41202, 90},     /* ii */
+       {51524, 180},    /* ii-cn */
+       {37310, 15},     /* is */
+       {51530, 110},    /* is-is */
+       {37361, 16},     /* it */
+       {51536, 192},    /* it-ch */
+       {51542, 111},    /* it-it */
+       {37389, 17},     /* ja */
+       {51548, 112},    /* ja-jp */
+       {39074, 51},     /* ka */
+       {51554, 146},    /* ka-ge */
+       {39469, 58},     /* kk */
+       {41154, 88},     /* kl */
+       {51560, 178},    /* kl-gl */
+       {40606, 75},     /* km */
+       {51566, 166},    /* km-kh */
+       {35857, 68},     /* kn */
+       {51572, 160},    /* kn-in */
+       {37446, 18},     /* ko */
+       {51578, 113},    /* ko-kr */
+       {40703, 78},     /* kok */
+       {51584, 169},    /* kok-in */
+       {39549, 59},     /* ky */
+       {51591, 152},    /* ky-kg */
+       {40651, 76},     /* lo */
+       {51597, 167},    /* lo-la */
+       {38541, 39},     /* lt */
+       {51603, 134},    /* lt-lt */
+       {38493, 38},     /* lv */
+       {51609, 133},    /* lv-lv */
+       {38848, 46},     /* mk */
+       {51615, 141},    /* mk-mk */
+       {40228, 69},     /* ml */
+       {51621, 161},    /* ml-in */
+       {40503, 72},     /* mn */
+       {51627, 273},    /* mn-cyrl */
+       {51635, 280},    /* mn-mong */
+       {51643, 202},    /* mn-mong-cn */
+       {40410, 71},     /* mr */
+       {51654, 163},    /* mr-in */
+       {39421, 57},     /* ms */
+       {51660, 199},    /* ms-bn */
+       {51666, 151},    /* ms-my */
+       {39287, 54},     /* mt */
+       {51672, 149},    /* mt-mt */
+       {37561, 276},    /* nb */
+       {51678, 115},    /* nb-no */
+       {2059, 82},      /* ne */
+       {51684, 172},    /* ne-np */
+       {37484, 19},     /* nl */
+       {51690, 193},    /* nl-be */
+       {51696, 114},    /* nl-nl */
+       {46683, 269},    /* nn */
+       {51702, 194},    /* nn-no */
+       {37534, 20},     /* no */
+       {41114, 87},     /* nso */
+       {51708, 177},    /* nso-za */
+       {41295, 92},     /* oc */
+       {51715, 182},    /* oc-fr */
+       {14525, 65},     /* or */
+       {51721, 157},    /* or-in */
+       {39759, 63},     /* pa */
+       {37564, 21},     /* pl */
+       {51727, 116},    /* pl-pl */
+       {40997, 83},     /* ps */
+       {51733, 173},    /* ps-af */
+       {37613, 22},     /* pt */
+       {51739, 117},    /* pt-br */
+       {51745, 195},    /* pt-pt */
+       {37669, 23},     /* rm */
+       {51751, 118},    /* rm-ch */
+       {37718, 24},     /* ro */
+       {51757, 119},    /* ro-ro */
+       {37766, 25},     /* ru */
+       {51763, 120},    /* ru-ru */
+       {41419, 95},     /* rw */
+       {51769, 184},    /* rw-rw */
+       {41387, 94},     /* sah */
+       {51775, 183},    /* sah-ru */
+       {39333, 55},     /* se */
+       {51782, 209},    /* se-fi */
+       {51788, 150},    /* se-no */
+       {40738, 79},     /* si */
+       {51794, 170},    /* si-lk */
+       {37898, 27},     /* sk */
+       {51800, 122},    /* sk-sk */
+       {38390, 36},     /* sl */
+       {51806, 131},    /* sl-si */
+       {37952, 28},     /* sq */
+       {51812, 123},    /* sq-al */
+       {48434, 277},    /* sr */
+       {51818, 265},    /* sr-cyrl */
+       {51826, 230},    /* sr-cyrl-ba */
+       {51837, 248},    /* sr-cyrl-me */
+       {51848, 240},    /* sr-cyrl-rs */
+       {51859, 266},    /* sr-latn */
+       {51867, 226},    /* sr-latn-ba */
+       {51878, 244},    /* sr-latn-me */
+       {51889, 236},    /* sr-latn-rs */
+       {37978, 29},     /* sv */
+       {51900, 196},    /* sv-fi */
+       {51906, 124},    /* sv-se */
+       {39581, 60},     /* sw */
+       {51912, 153},    /* sw-ke */
+       {39925, 66},     /* ta */
+       {51918, 158},    /* ta-in */
+       {40023, 67},     /* te */
+       {51924, 159},    /* te-in */
+       {38596, 40},     /* tg */
+       {51930, 278},    /* tg-cyrl */
+       {51938, 135},    /* tg-cyrl-tj */
+       {38005, 30},     /* th */
+       {51949, 125},    /* th-th */
+       {38935, 47},     /* tn */
+       {51955, 142},    /* tn-za */
+       {38062, 31},     /* tr */
+       {51961, 126},    /* tr-tr */
+       {40869, 81},     /* tzm */
+       {51967, 281},    /* tzm-latn */
+       {38217, 34},     /* uk */
+       {51976, 129},    /* uk-ua */
+       {38104, 32},     /* ur */
+       {51982, 127},    /* ur-pk */
+       {39631, 61},     /* uz */
+       {51988, 272},    /* uz-cyrl */
+       {51996, 200},    /* uz-cyrl-uz */
+       {52007, 279},    /* uz-latn */
+       {52015, 154},    /* uz-latn-uz */
+       {38667, 42},     /* vi */
+       {52026, 137},    /* vi-vn */
+       {38962, 48},     /* xh */
+       {52032, 143},    /* xh-za */
+       {41081, 86},     /* yo */
+       {52038, 176},    /* yo-ng */
+       {36752, 268},    /* zh */
+       {52044, 3},      /* zh-chs */
+       {52051, 275},    /* zh-cht */
+       {52058, 187},    /* zh-cn */
+       {52064, 4},      /* zh-hans */
+       {52072, 274},    /* zh-hant */
+       {52080, 204},    /* zh-hk */
+       {52086, 217},    /* zh-mo */
+       {52092, 211},    /* zh-sg */
+       {52098, 100},    /* zh-tw */
+       {38988, 49},     /* zu */
+       {52104, 144}     /* zu-za */
 };
 
 
 static const RegionInfoEntry region_entries [] = {
-       { 224,49473,46768,46768,51741,51762,36079,51809,51813,51841},
-       { 3,45340,51865,51865,51869,51881,35859,51900,51904,51919},
-       { 6,42520,51932,51932,51936,51944,35585,51955,51959,0},
-       { 7,3804,47822,47822,51972,51980,35659,52028,52032,0},
-       { 11,48964,47469,47469,52046,52046,35488,48687,52056,52071},
-       { 14,46917,52086,52086,52090,52098,35473,52110,52114,52114},
-       { 12,46950,52119,52119,52123,52123,35488,52133,52137,52137},
-       { 5,43415,38407,38407,52155,52166,35887,52178,52182,52200},
-       { 25,48068,52220,52220,52224,52247,35977,52284,52288,52324},
-       { 23,46676,52367,52367,52371,52382,35925,52407,52411,52428},
-       { 21,46155,37971,37971,52469,52477,35473,52110,52114,52486},
-       { 35,41292,36236,36236,52491,52500,35457,52517,52521,52535},
-       { 17,49585,52561,52561,52565,52573,36089,52588,52592,52607},
-       { 37,46559,52631,52631,52635,52635,35488,52642,52646,52660},
-       { 26,49765,52673,52673,52677,52677,36113,40204,52685,52704},
-       { 32,42212,52714,52714,52718,52725,35551,52732,52736,52751},
-       { 29,42906,52767,52767,52771,52779,0,52796,52800,52817},
-       { 24,48721,52849,52849,52853,52853,35488,52860,52864,52864},
-       { 39,47043,52878,52878,52882,52882,35488,52889,52893,52909},
-       { 223,13256,52925,52925,52929,52941,0,52948,52952,52964},
-       { 46,49366,52978,52978,52982,52982,35488,52988,52992,53005},
-       { 45,13335,53018,53018,53022,53028,35815,53047,53051,53064},
-       { 51,48565,53083,53083,53087,53087,35488,53096,53100,53115},
-       { 54,47713,53131,53131,53135,53135,35959,53146,53150,53169},
-       { 75,41455,53190,53190,53194,53209,35481,53227,53231,53253},
-       { 94,41545,36538,36538,53268,53276,35473,52110,52114,52114},
-       { 61,41497,53288,53288,53292,53300,35485,53308,53312,53325},
-       { 65,48255,53337,53337,53341,53360,35488,53382,53386,53401},
-       { 4,47473,53417,53417,53421,53429,35949,53444,53448,53463},
-       { 66,49183,53487,53487,53491,53491,35488,53499,53503,53513},
-       { 70,43004,50076,50076,53535,53543,35473,52110,52114,52486},
-       { 67,46772,53549,53549,53553,53559,35929,53566,53570,53585},
-       { 217,41335,36705,36705,53603,53609,35473,52110,52114,52486},
-       { 73,45219,53617,53617,53621,53630,35839,53646,53650,53665},
-       { 77,41675,36752,36752,53691,53699,35473,52110,52114,52486},
-       { 81,43835,53705,53705,53709,53723,35485,53308,53312,53732},
-       { 84,41719,36805,36805,53745,53745,35473,52110,52114,52486},
-       { 242,44864,53752,53752,53756,53771,35820,53784,53788,53811},
-       { 88,43781,53833,53833,53837,53845,0,53876,53880,53894},
-       { 93,45618,53929,53929,53933,53943,35485,53308,53312,53960},
-       { 98,41601,53978,53978,53982,53989,35473,52110,52114,54002},
-       { 99,47361,54011,54011,54015,54015,7769,54025,54029,54048},
-       { 104,46865,54069,54069,54073,54093,35488,54121,54125,54142},
-       { 106,49905,54149,54149,54153,54153,2494,54162,54166,54183},
-       { 108,42411,37498,37498,54202,54210,35582,54219,54223,54237},
-       { 109,41820,36917,36917,54242,54250,35503,54264,54268,54285},
-       { 111,42769,54299,54299,54303,54303,35608,54313,54317,54335},
-       { 68,46508,54352,54352,54356,54364,35473,52110,52114,52114},
-       { 117,41768,54370,54370,54374,54381,35499,54392,54396,54415},
-       { 113,43892,37821,37821,54422,54428,35665,54441,54445,54458},
-       { 121,45949,54493,54493,54497,54502,35898,54515,54519,54531},
-       { 116,43193,54553,54553,54557,54562,35651,54573,54577,54590},
-       { 110,41869,36964,36964,54610,54618,35485,54626,54630,54647},
-       { 118,41912,37012,37012,54663,54669,35473,52110,52114,52114},
-       { 124,48403,54676,54676,54680,54680,35488,54688,54692,54692},
-       { 126,48867,54708,54708,54712,54719,36049,54732,54736,54752},
-       { 122,41957,37042,37042,54774,54780,35477,54787,54791,54804},
-       { 129,44145,54814,54814,54818,54818,35679,54824,54828,54844},
-       { 130,44102,54862,54862,54866,54877,35672,54898,54902,0},
-       { 40,44942,40274,40274,54917,54926,35823,54948,54952,54967},
-       { 134,42012,37097,37097,54972,54984,35543,54997,55001,55018},
-       { 136,49288,55035,55035,55039,55046,36069,55059,55063,55077},
-       { 138,44984,40299,40299,55099,40289,35827,55104,55108,55120},
-       { 139,49101,55130,55130,55134,55142,36059,55153,55157,55172},
-       { 145,47622,55194,55194,55198,55198,0,52948,52952,55212},
-       { 42,45160,55230,55230,55234,55244,35831,55276,55280,55297},
-       { 141,43102,55332,55332,55336,55346,35648,55354,55358,55375},
-       { 147,47280,55381,55381,55385,55396,35473,52110,52114,52114},
-       { 140,43050,55406,55406,55410,55417,35631,55425,55429,55442},
-       { 148,47163,55456,55456,55460,55466,35939,55477,55481,55494},
-       { 159,47826,40068,40068,55514,55522,35963,55535,55539,55555},
-       { 158,47951,55575,55575,55579,55579,35473,52110,52114,52486},
-       { 270,49043,55586,55586,55590,55601,35473,52110,52114,55619},
-       { 19618,43531,55624,55624,55628,55638,0,55624,55659,55676},
-       { 151,47562,55708,55708,55712,55728,0,55756,55760,55776},
-       { 163,43931,38935,38935,55786,55786,35473,52110,52114,55792},
-       { 166,46104,55797,55797,55801,55808,35488,55816,55820,55833},
-       { 167,44036,55847,55847,55851,55851,35669,55860,55864,55882},
-       { 175,45448,55899,55899,55903,55911,35866,55920,55924,55939},
-       { 182,49959,55945,55945,55949,55949,36120,55959,55963,55983},
-       { 176,42064,37135,37135,56006,56018,35473,52110,52114,52114},
-       { 177,42122,37184,37184,56028,56035,35485,56041,56045,56061},
-       { 178,45280,56075,56075,56079,56085,35846,56101,56105,0},
-       { 183,47657,56120,56120,56124,56124,35488,56136,56140,56140},
-       { 164,48372,56159,56159,56163,56168,35996,56179,56183,56194},
-       { 192,47903,39420,39420,56214,56221,35973,56229,56233,56251},
-       { 187,48766,56268,56268,56272,56277,36037,56283,56287,56306},
-       { 201,45394,56324,56324,56328,56340,35862,56350,56354,56354},
-       { 190,42708,56370,56370,56374,56383,35603,56398,56402,56418},
-       { 191,42163,56446,56446,56450,56457,35547,56464,56468,56481},
-       { 202,50017,56495,56495,56499,56499,35488,53499,53503,53513},
-       { 193,46371,56511,56511,56515,56515,35473,52110,52114,52114},
-       { 185,49637,56524,56524,56528,56528,36099,56537,56541,56560},
-       { 197,49689,56579,56579,56583,56589,36103,56596,56600,56612},
-       { 200,42307,56630,56630,56634,56642,0,56651,56655,56668},
-       { 271,48635,50399,50399,56682,56689,36022,56702,56706,56720},
-       { 203,42363,37423,37423,56733,56740,35558,56753,56757,56771},
-       { 204,45817,56803,56803,56807,56807,35870,56814,56818,0},
-       { 205,13253,56832,56832,56836,56849,35401,56896,56900,56912},
-       { 221,42564,56932,56932,56936,56943,35485,56951,56955,56969},
-       { 215,47227,56982,56982,56986,56996,0,57006,57010,57027},
-       { 212,42962,57040,57040,57044,57053,35473,52110,52114,57063},
-       { 143,42473,57068,57068,57072,57081,35473,52110,52114,52114},
-       { 72,49823,38048,38048,57102,57102,36116,53499,53503,53513},
-       { 222,48691,57114,57114,57118,57124,36027,57135,57139,57152},
-       { 227,42611,37654,37654,57172,37644,35596,57181,57185,57195},
-       { 228,43145,57214,57214,57218,0,35672,57229,57233,57252},
-       { 234,48147,57265,57265,57269,57277,35980,57286,57290,57305},
-       { 235,42657,57326,57326,57330,57337,35600,57346,57350,57363},
-       { 225,48910,57377,57377,57381,57381,35488,57401,57405,57405},
-       { 237,41386,57432,57432,57436,57443,35873,57450,57454,57472},
-       { 241,42836,37882,37882,57482,57490,35611,57505,57509,57527},
-       { 244,41634,57561,57561,57565,57565,35488,53499,53503,53503},
-       { 246,49523,57579,57579,57583,57583,35488,57591,57595,57610},
-       { 247,44219,39282,39282,57624,57635,35892,57656,57660,57675},
-       { 249,48457,57694,57694,57698,57698,36006,57708,57712,57732},
-       { 251,43251,57752,57752,57756,57764,35655,57775,57779,57795},
-       { 261,48513,57803,57803,57807,57813,36012,57824,57828,57840},
-       { 209,43562,57858,57858,57862,0,10506,57875,57879,0},
-       { 264,49133,57898,57898,57902,57902,35488,53499,53503,53503}
+       { 224,49842,47137,47137,52110,52131,36448,52178,52182,52210},
+       { 3,45709,52234,52234,52238,52250,36228,52269,52273,52288},
+       { 6,42889,52301,52301,52305,52313,35860,52324,52328,0},
+       { 7,3781,48191,48191,52341,52349,36009,52397,52401,0},
+       { 11,49333,47838,47838,52415,52415,35586,49056,52425,52440},
+       { 14,47286,52455,52455,52459,52467,35481,52479,52483,52483},
+       { 12,47319,52488,52488,52492,52492,35586,52502,52506,52506},
+       { 5,43784,38776,38776,52524,52535,36256,52547,52551,52569},
+       { 25,48437,52589,52589,52593,52616,36346,52653,52657,52693},
+       { 23,47045,52736,52736,52740,52751,36294,52776,52780,52797},
+       { 21,46524,38340,38340,52838,52846,35481,52479,52483,52855},
+       { 35,41661,36605,36605,52860,52869,35465,52886,52890,52904},
+       { 17,49954,52930,52930,52934,52942,36458,52957,52961,52976},
+       { 37,46928,53000,53000,53004,53004,35586,53011,53015,53029},
+       { 26,50134,53042,53042,53046,53046,36482,40573,53054,53073},
+       { 32,42581,53083,53083,53087,53094,35751,53101,53105,53120},
+       { 29,43275,53136,53136,53140,53148,0,53165,53169,53186},
+       { 24,49090,53218,53218,53222,53222,35586,53229,53233,53233},
+       { 39,47412,53247,53247,53251,53251,35586,53258,53262,53278},
+       { 223,13261,53294,53294,53298,53310,0,53317,53321,53333},
+       { 46,49735,53347,53347,53351,53351,35586,53357,53361,53374},
+       { 45,13340,53387,53387,53391,53397,36184,53416,53420,53433},
+       { 51,48934,53452,53452,53456,53456,35586,53465,53469,53484},
+       { 54,48082,53500,53500,53504,53504,36328,53515,53519,53538},
+       { 75,41824,53559,53559,53563,53578,35506,53596,53600,53622},
+       { 94,41914,36907,36907,53637,53645,35481,52479,52483,52483},
+       { 61,41866,53657,53657,53661,53669,35534,53677,53681,53694},
+       { 65,48624,53706,53706,53710,53729,35586,53751,53755,53770},
+       { 4,47842,53786,53786,53790,53798,36318,53813,53817,53832},
+       { 66,49552,53856,53856,53860,53860,35586,53868,53872,53882},
+       { 70,43373,50445,50445,53904,53912,35481,52479,52483,52855},
+       { 67,47141,53918,53918,53922,53928,36298,53935,53939,53954},
+       { 217,41704,37074,37074,53972,53978,35481,52479,52483,52855},
+       { 73,45588,53986,53986,53990,53999,36208,54015,54019,54034},
+       { 77,42044,37121,37121,54060,54068,35481,52479,52483,52855},
+       { 81,44204,54074,54074,54078,54092,35534,53677,53681,54101},
+       { 84,42088,37174,37174,54114,54114,35481,52479,52483,52855},
+       { 242,45233,54121,54121,54125,54140,36189,54153,54157,54180},
+       { 88,44150,54202,54202,54206,54214,0,54245,54249,54263},
+       { 93,45987,54298,54298,54302,54312,35534,53677,53681,54329},
+       { 98,41970,54347,54347,54351,54358,35481,52479,52483,54371},
+       { 99,47730,54380,54380,54384,54384,7774,54394,54398,54417},
+       { 104,47234,54438,54438,54442,54462,35586,54490,54494,54511},
+       { 106,50274,54518,54518,54522,54522,2471,54531,54535,54552},
+       { 108,42780,37867,37867,54571,54579,35857,54588,54592,54606},
+       { 109,42189,37286,37286,54611,54619,35636,54633,54637,54654},
+       { 111,43138,54668,54668,54672,54672,35883,54682,54686,54704},
+       { 68,46877,54721,54721,54725,54733,35481,52479,52483,52483},
+       { 117,42137,54739,54739,54743,54750,35632,54761,54765,54784},
+       { 113,44261,38190,38190,54791,54797,36034,54810,54814,54827},
+       { 121,46318,54862,54862,54866,54871,36267,54884,54888,54900},
+       { 116,43562,54922,54922,54926,54931,36001,54942,54946,54959},
+       { 110,42238,37333,37333,54979,54987,35534,54995,54999,55016},
+       { 118,42281,37381,37381,55032,55038,35481,52479,52483,52483},
+       { 124,48772,55045,55045,55049,55049,35586,55057,55061,55061},
+       { 126,49236,55077,55077,55081,55088,36418,55101,55105,55121},
+       { 122,42326,37411,37411,55143,55149,35502,55156,55160,55173},
+       { 129,44514,55183,55183,55187,55187,36048,55193,55197,55213},
+       { 130,44471,55231,55231,55235,55246,36041,55267,55271,0},
+       { 40,45311,40643,40643,55286,55295,36192,55317,55321,55336},
+       { 134,42381,37466,37466,55341,55353,35686,55366,55370,55387},
+       { 136,49657,55404,55404,55408,55415,36438,55428,55432,55446},
+       { 138,45353,40668,40668,55468,40658,36196,55473,55477,55489},
+       { 139,49470,55499,55499,55503,55511,36428,55522,55526,55541},
+       { 145,47991,55563,55563,55567,55567,0,53317,53321,55581},
+       { 42,45529,55599,55599,55603,55613,36200,55645,55649,55666},
+       { 141,43471,55701,55701,55705,55715,35975,55723,55727,55744},
+       { 147,47649,55750,55750,55754,55765,35481,52479,52483,52483},
+       { 140,43419,55775,55775,55779,55786,35933,55794,55798,55811},
+       { 148,47532,55825,55825,55829,55835,36308,55846,55850,55863},
+       { 159,48195,40437,40437,55883,55891,36332,55904,55908,55924},
+       { 158,48320,55944,55944,55948,55948,35481,52479,52483,52855},
+       { 270,49412,55955,55955,55959,55970,35481,52479,52483,55988},
+       { 19618,43900,55993,55993,55997,56007,0,55993,56028,56045},
+       { 151,47931,56077,56077,56081,56097,0,56125,56129,56145},
+       { 163,44300,39304,39304,56155,56155,35481,52479,52483,56161},
+       { 166,46473,56166,56166,56170,56177,35586,56185,56189,56202},
+       { 167,44405,56216,56216,56220,56220,36038,56229,56233,56251},
+       { 175,45817,56268,56268,56272,56280,36235,56289,56293,56308},
+       { 182,50328,56314,56314,56318,56318,36489,56328,56332,56352},
+       { 176,42433,37504,37504,56375,56387,35481,52479,52483,52483},
+       { 177,42491,37553,37553,56397,56404,35534,56410,56414,56430},
+       { 178,45649,56444,56444,56448,56454,36215,56470,56474,0},
+       { 183,48026,56489,56489,56493,56493,35586,56505,56509,56509},
+       { 164,48741,56528,56528,56532,56537,36365,56548,56552,56563},
+       { 192,48272,39789,39789,56583,56590,36342,56598,56602,56620},
+       { 187,49135,56637,56637,56641,56646,36406,56652,56656,56675},
+       { 201,45763,56693,56693,56697,56709,36231,56719,56723,56723},
+       { 190,43077,56739,56739,56743,56752,35878,56767,56771,56787},
+       { 191,42532,56815,56815,56819,56826,35709,56833,56837,56850},
+       { 202,50386,56864,56864,56868,56868,35586,53868,53872,53882},
+       { 193,46740,56880,56880,56884,56884,35481,52479,52483,52483},
+       { 185,50006,56893,56893,56897,56897,36468,56906,56910,56929},
+       { 197,50058,56948,56948,56952,56958,36472,56965,56969,56981},
+       { 200,42676,56999,56999,57003,57011,0,57020,57024,57037},
+       { 271,49004,50768,50768,57051,57058,36391,57071,57075,57089},
+       { 203,42732,37792,37792,57102,57109,35778,57122,57126,57140},
+       { 204,46186,57172,57172,57176,57176,36239,57183,57187,0},
+       { 205,13258,57201,57201,57205,57218,35409,57265,57269,57281},
+       { 221,42933,57301,57301,57305,57312,35534,57320,57324,57338},
+       { 215,47596,57351,57351,57355,57365,0,57375,57379,57396},
+       { 212,43331,57409,57409,57413,57422,35481,52479,52483,57432},
+       { 143,42842,57437,57437,57441,57450,35481,52479,52483,52483},
+       { 72,50192,38417,38417,57471,57471,36485,53868,53872,53882},
+       { 222,49060,57483,57483,57487,57493,36396,57504,57508,57521},
+       { 227,42980,38023,38023,57541,38013,35871,57550,57554,57564},
+       { 228,43514,57583,57583,57587,0,36041,57598,57602,57621},
+       { 234,48516,57634,57634,57638,57646,36349,57655,57659,57674},
+       { 235,43026,57695,57695,57699,57706,35875,57715,57719,57732},
+       { 225,49279,57746,57746,57750,57750,35586,57770,57774,57774},
+       { 237,41755,57801,57801,57805,57812,36242,57819,57823,57841},
+       { 241,43205,38251,38251,57851,57859,35886,57874,57878,57896},
+       { 244,42003,57930,57930,57934,57934,35586,53868,53872,53872},
+       { 246,49892,57948,57948,57952,57952,35586,57960,57964,57979},
+       { 247,44588,39651,39651,57993,58004,36261,58025,58029,58044},
+       { 249,48826,58063,58063,58067,58067,36375,58077,58081,58101},
+       { 251,43620,58121,58121,58125,58133,36005,58144,58148,58164},
+       { 261,48882,58172,58172,58176,58182,36381,58193,58197,58209},
+       { 209,43931,58227,58227,58231,0,10511,58244,58248,0},
+       { 264,49502,58267,58267,58271,58271,35586,53868,53872,53872}
 };
 
 
 static const RegionInfoNameEntry region_name_entries [] = {
-       {49473, 0},      /* AE */
-       {45340, 1},      /* AF */
-       {42520, 2},      /* AL */
-       {3804, 3},       /* AM */
-       {48964, 4},      /* AR */
-       {46917, 5},      /* AT */
-       {46950, 6},      /* AU */
-       {43415, 7},      /* AZ */
-       {48068, 8},      /* BA */
-       {46676, 9},      /* BD */
-       {46155, 10},     /* BE */
-       {41292, 11},     /* BG */
-       {49585, 12},     /* BH */
-       {46559, 13},     /* BN */
-       {49765, 14},     /* BO */
-       {42212, 15},     /* BR */
-       {42906, 16},     /* BY */
-       {48721, 17},     /* BZ */
-       {47043, 18},     /* CA */
-       {13256, 19},     /* CH */
-       {49366, 20},     /* CL */
-       {13335, 21},     /* CN */
-       {48565, 22},     /* CO */
-       {47713, 23},     /* CR */
-       {41455, 24},     /* CZ */
-       {41545, 25},     /* DE */
-       {41497, 26},     /* DK */
-       {48255, 27},     /* DO */
-       {47473, 28},     /* DZ */
-       {49183, 29},     /* EC */
-       {43004, 30},     /* EE */
-       {46772, 31},     /* EG */
-       {41335, 32},     /* ES */
-       {45219, 33},     /* ET */
-       {41675, 34},     /* FI */
-       {43835, 35},     /* FO */
-       {41719, 36},     /* FR */
-       {44864, 37},     /* GB */
-       {43781, 38},     /* GE */
-       {45618, 39},     /* GL */
-       {41601, 40},     /* GR */
-       {47361, 41},     /* GT */
-       {46865, 42},     /* HK */
-       {49905, 43},     /* HN */
-       {42411, 44},     /* HR */
-       {41820, 45},     /* HU */
-       {42769, 46},     /* ID */
-       {46508, 47},     /* IE */
-       {41768, 48},     /* IL */
-       {43892, 49},     /* IN */
-       {45949, 50},     /* IQ */
-       {43193, 51},     /* IR */
-       {41869, 52},     /* IS */
-       {41912, 53},     /* IT */
-       {48403, 54},     /* JM */
-       {48867, 55},     /* JO */
-       {41957, 56},     /* JP */
-       {44145, 57},     /* KE */
-       {44102, 58},     /* KG */
-       {44942, 59},     /* KH */
-       {42012, 60},     /* KR */
-       {49288, 61},     /* KW */
-       {44984, 62},     /* LA */
-       {49101, 63},     /* LB */
-       {47622, 64},     /* LI */
-       {45160, 65},     /* LK */
-       {43102, 66},     /* LT */
-       {47280, 67},     /* LU */
-       {43050, 68},     /* LV */
-       {47163, 69},     /* LY */
-       {47826, 70},     /* MA */
-       {47951, 71},     /* MC */
-       {49043, 72},     /* ME */
-       {43531, 73},     /* MK */
-       {47562, 74},     /* MO */
-       {43931, 75},     /* MT */
-       {46104, 76},     /* MX */
-       {44036, 77},     /* MY */
-       {45448, 78},     /* NG */
-       {49959, 79},     /* NI */
-       {42064, 80},     /* NL */
-       {42122, 81},     /* NO */
-       {45280, 82},     /* NP */
-       {47657, 83},     /* NZ */
-       {48372, 84},     /* OM */
-       {47903, 85},     /* PA */
-       {48766, 86},     /* PE */
-       {45394, 87},     /* PH */
-       {42708, 88},     /* PK */
-       {42163, 89},     /* PL */
-       {50017, 90},     /* PR */
-       {46371, 91},     /* PT */
-       {49637, 92},     /* PY */
-       {49689, 93},     /* QA */
-       {42307, 94},     /* RO */
-       {48635, 95},     /* RS */
-       {42363, 96},     /* RU */
-       {45817, 97},     /* RW */
-       {13253, 98},     /* SA */
-       {42564, 99},     /* SE */
-       {47227, 100},    /* SG */
-       {42962, 101},    /* SI */
-       {42473, 102},    /* SK */
-       {49823, 103},    /* SV */
-       {48691, 104},    /* SY */
-       {42611, 105},    /* TH */
-       {43145, 106},    /* TJ */
-       {48147, 107},    /* TN */
-       {42657, 108},    /* TR */
-       {48910, 109},    /* TT */
-       {41386, 110},    /* TW */
-       {42836, 111},    /* UA */
-       {41634, 112},    /* US */
-       {49523, 113},    /* UY */
-       {44219, 114},    /* UZ */
-       {48457, 115},    /* VE */
-       {43251, 116},    /* VN */
-       {48513, 117},    /* YE */
-       {43562, 118},    /* ZA */
-       {49133, 119}     /* ZW */
+       {49842, 0},      /* AE */
+       {45709, 1},      /* AF */
+       {42889, 2},      /* AL */
+       {3781, 3},       /* AM */
+       {49333, 4},      /* AR */
+       {47286, 5},      /* AT */
+       {47319, 6},      /* AU */
+       {43784, 7},      /* AZ */
+       {48437, 8},      /* BA */
+       {47045, 9},      /* BD */
+       {46524, 10},     /* BE */
+       {41661, 11},     /* BG */
+       {49954, 12},     /* BH */
+       {46928, 13},     /* BN */
+       {50134, 14},     /* BO */
+       {42581, 15},     /* BR */
+       {43275, 16},     /* BY */
+       {49090, 17},     /* BZ */
+       {47412, 18},     /* CA */
+       {13261, 19},     /* CH */
+       {49735, 20},     /* CL */
+       {13340, 21},     /* CN */
+       {48934, 22},     /* CO */
+       {48082, 23},     /* CR */
+       {41824, 24},     /* CZ */
+       {41914, 25},     /* DE */
+       {41866, 26},     /* DK */
+       {48624, 27},     /* DO */
+       {47842, 28},     /* DZ */
+       {49552, 29},     /* EC */
+       {43373, 30},     /* EE */
+       {47141, 31},     /* EG */
+       {41704, 32},     /* ES */
+       {45588, 33},     /* ET */
+       {42044, 34},     /* FI */
+       {44204, 35},     /* FO */
+       {42088, 36},     /* FR */
+       {45233, 37},     /* GB */
+       {44150, 38},     /* GE */
+       {45987, 39},     /* GL */
+       {41970, 40},     /* GR */
+       {47730, 41},     /* GT */
+       {47234, 42},     /* HK */
+       {50274, 43},     /* HN */
+       {42780, 44},     /* HR */
+       {42189, 45},     /* HU */
+       {43138, 46},     /* ID */
+       {46877, 47},     /* IE */
+       {42137, 48},     /* IL */
+       {44261, 49},     /* IN */
+       {46318, 50},     /* IQ */
+       {43562, 51},     /* IR */
+       {42238, 52},     /* IS */
+       {42281, 53},     /* IT */
+       {48772, 54},     /* JM */
+       {49236, 55},     /* JO */
+       {42326, 56},     /* JP */
+       {44514, 57},     /* KE */
+       {44471, 58},     /* KG */
+       {45311, 59},     /* KH */
+       {42381, 60},     /* KR */
+       {49657, 61},     /* KW */
+       {45353, 62},     /* LA */
+       {49470, 63},     /* LB */
+       {47991, 64},     /* LI */
+       {45529, 65},     /* LK */
+       {43471, 66},     /* LT */
+       {47649, 67},     /* LU */
+       {43419, 68},     /* LV */
+       {47532, 69},     /* LY */
+       {48195, 70},     /* MA */
+       {48320, 71},     /* MC */
+       {49412, 72},     /* ME */
+       {43900, 73},     /* MK */
+       {47931, 74},     /* MO */
+       {44300, 75},     /* MT */
+       {46473, 76},     /* MX */
+       {44405, 77},     /* MY */
+       {45817, 78},     /* NG */
+       {50328, 79},     /* NI */
+       {42433, 80},     /* NL */
+       {42491, 81},     /* NO */
+       {45649, 82},     /* NP */
+       {48026, 83},     /* NZ */
+       {48741, 84},     /* OM */
+       {48272, 85},     /* PA */
+       {49135, 86},     /* PE */
+       {45763, 87},     /* PH */
+       {43077, 88},     /* PK */
+       {42532, 89},     /* PL */
+       {50386, 90},     /* PR */
+       {46740, 91},     /* PT */
+       {50006, 92},     /* PY */
+       {50058, 93},     /* QA */
+       {42676, 94},     /* RO */
+       {49004, 95},     /* RS */
+       {42732, 96},     /* RU */
+       {46186, 97},     /* RW */
+       {13258, 98},     /* SA */
+       {42933, 99},     /* SE */
+       {47596, 100},    /* SG */
+       {43331, 101},    /* SI */
+       {42842, 102},    /* SK */
+       {50192, 103},    /* SV */
+       {49060, 104},    /* SY */
+       {42980, 105},    /* TH */
+       {43514, 106},    /* TJ */
+       {48516, 107},    /* TN */
+       {43026, 108},    /* TR */
+       {49279, 109},    /* TT */
+       {41755, 110},    /* TW */
+       {43205, 111},    /* UA */
+       {42003, 112},    /* US */
+       {49892, 113},    /* UY */
+       {44588, 114},    /* UZ */
+       {48826, 115},    /* VE */
+       {43620, 116},    /* VN */
+       {48882, 117},    /* YE */
+       {43931, 118},    /* ZA */
+       {49502, 119}     /* ZW */
 };
 
 
@@ -1424,18 +1424,6 @@ static const char locale_strings [] = {
        "\xd8\xb4\xd9\x88\xd8\xa7\xd9\x84\0"
        "\xd8\xb0\xd9\x88 \xd8\xa7\xd9\x84\xd9\x82\xd8\xb9\xd8\xaf\xd8\xa9\0"
        "\xd8\xb0\xd9\x88 \xd8\xa7\xd9\x84\xd8\xad\xd8\xac\xd8\xa9\0"
-       "1\0"
-       "2\0"
-       "3\0"
-       "4\0"
-       "5\0"
-       "6\0"
-       "7\0"
-       "8\0"
-       "9\0"
-       "10\0"
-       "11\0"
-       "12\0"
        "/\0"
        ":\0"
        "dd/MM/yyyy\0"
@@ -1563,9 +1551,9 @@ static const char locale_strings [] = {
        "d'/'MMMM'/'yyyy\0"
        "d' 'MMMM' 'yyyy\0"
        "H:mm\0"
-       "HH'H'mm'''\0"
+       "HH'H'mm'\\''\0"
        "H:mm:ss\0"
-       "HH'H'mm'''ss''''\0"
+       "HH'H'mm'\\''ss'\\'\\''\0"
        "yyyy'\xe5\xb9\xb4'M'\xe6\x9c\x88'd'\xe6\x97\xa5'\0"
        "yyyy/M/d\0"
        "yyyy'\xe5\xb9\xb4'M'\xe6\x9c\x88'\0"
@@ -2148,7 +2136,7 @@ static const char locale_strings [] = {
        "n\xc3\xb3v\0"
        "des\0"
        "d. M. yyyy.\0"
-       "d. M. '''yy.\0"
+       "d. M. '\\''yy.\0"
        "yy MM dd\0"
        "m.\0"
        "p.\0"
@@ -2209,6 +2197,18 @@ static const char locale_strings [] = {
        "\xe6\x9c\xa8\0"
        "\xe9\x87\x91\0"
        "\xe5\x9c\x9f\0"
+       "1\0"
+       "2\0"
+       "3\0"
+       "4\0"
+       "5\0"
+       "6\0"
+       "7\0"
+       "8\0"
+       "9\0"
+       "10\0"
+       "11\0"
+       "12\0"
        "yy/MM/dd' ('ddd')'\0"
        "yy/M/d' ('ddd')'\0"
        "yyyy/MM/dd' ('ddd')'\0"
@@ -3373,8 +3373,8 @@ static const char locale_strings [] = {
        "\xe0\xa4\x85\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa5\x82\xe0\xa4\xac\xe0\xa4\xb0\0"
        "\xe0\xa4\xa8\xe0\xa4\xb5\xe0\xa4\xae\xe0\xa5\x8d\xe0\xa4\xac\xe0\xa4\xb0\0"
        "\xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa4\xae\xe0\xa5\x8d\xe0\xa4\xac\xe0\xa4\xb0\0"
-       "dddd, d' ta' 'MMMM yyyy\0"
-       "d' ta' 'MMMM\0"
+       "dddd, d' ta\\' 'MMMM yyyy\0"
+       "d' ta\\' 'MMMM\0"
        "QN\0"
        "WN\0"
        "Il-\xc4\xa6\x61\x64\x64\0"
@@ -3413,7 +3413,7 @@ static const char locale_strings [] = {
        "Ott\0"
        "Di\xc4\x8b\0"
        "ddMMyyyy\0"
-       "d' ta' 'MMMM yyyy\0"
+       "d' ta\\' 'MMMM yyyy\0"
        "MMMM d'. b. 'yyyy\0"
        "MMMM d'. b. '\0"
        "i.b.\0"
@@ -4927,23 +4927,44 @@ static const char locale_strings [] = {
        "NaN\0"
        "\xe2\x80\xb0\0"
        "\xe2\x82\xac\0"
+       "-Infinit\0"
+       "Infinit\0"
        "\xef\xbf\xa5\0"
        "K\xc4\x8d\0"
+       "-nekone\xc4\x8dno\0"
+       "+nekone\xc4\x8dno\0"
        "kr\0"
+       "-unendlich\0"
+       "+unendlich\0"
+       "-\xce\x86\xcf\x80\xce\xb5\xce\xb9\xcf\x81\xce\xbf\0"
+       "\xce\x86\xcf\x80\xce\xb5\xce\xb9\xcf\x81\xce\xbf\0"
        "$\0"
+       "-Infinito\0"
+       "Infinito\0"
        "ep\xc3\xa4luku\0"
+       "-Infini\0"
+       "+Infini\0"
        "\xe2\x82\xaa\0"
        "Ft\0"
        "EiTa\0"
        "\xe2\x88\x92Infinity\0"
        "\xe2\x88\x92\0"
+       "+Infinito\0"
        "NaN\xef\xbc\x88\xe9\x9d\x9e\xe6\x95\xb0\xef\xbc\x89\0"
        "\xe2\x82\xa9\0"
+       "-oneindig\0"
+       "oneindig\0"
        "z\xc5\x82\0"
+       "-niesko\xc5\x84\x63zono\xc5\x9b\xc4\x87\0"
+       "+niesko\xc5\x84\x63zono\xc5\x9b\xc4\x87\0"
        "R$\0"
        "\xe2\x80\x99\0"
+       "\xe2\x88\x92infinit\0"
+       "+infinit\0"
        "\xd1\x80\xd1\x83\xd0\xb1.\0"
        "\xd0\xbd\xd0\xb5 \xd1\x87\xd0\xb8\xd1\x81\xd0\xbb\xd0\xbe\0"
+       "-\xd0\xb1\xd0\xb5\xd1\x81\xd0\xba\xd0\xbe\xd0\xbd\xd0\xb5\xd1\x87\xd0\xbd\xd0\xbe\xd1\x81\xd1\x82\xd1\x8c\0"
+       "\xd0\xb1\xd0\xb5\xd1\x81\xd0\xba\xd0\xbe\xd0\xbd\xd0\xb5\xd1\x87\xd0\xbd\xd0\xbe\xd1\x81\xd1\x82\xd1\x8c\0"
        "kn\0"
        "Lek\0"
        "\xc2\xa4\xc2\xa4\xc2\xa4\0"
@@ -4953,12 +4974,20 @@ static const char locale_strings [] = {
        "Rp\0"
        "\xe2\x82\xb4\0"
        "\xd0\x9d\xd0\xb5 \xd1\x87\xd0\xb8\xd1\x81\xd0\xbb\xd0\xbe\0"
+       "-neskon\xc4\x8dnost\0"
+       "neskon\xc4\x8dnost\0"
        "Ls\0"
        "nav\xc2\xa0skaitlis\0"
+       "\xe2\x88\x92\x62\x65zgal\xc4\xab\x62\x61\0"
+       "bezgal\xc4\xab\x62\x61\0"
        "Lt\0"
+       "\xe2\x88\x92\x62\x65galyb\xc4\x97\0"
+       "begalyb\xc4\x97\0"
        "\xef\xb7\xbc\0"
        "\xe2\x82\xab\0"
        "\xd5\xa4\xd6\x80.\0"
+       "-Infinitu\0"
+       "Infinitu\0"
        "\xe2\x82\xb9\0"
        "RM\0"
        "\xd1\x81\xd0\xbe\xd0\xbc\0"
@@ -5037,15 +5066,15 @@ static const char locale_strings [] = {
        "CAT\0"
        "cat\0"
        "calendari gregori\xc3\xa0\0"
-       "zh-Hans\0"
-       "Chinese (Simplified)\0"
+       "zh-CHS\0"
+       "Chinese (Simplified) Legacy\0"
        "\xe4\xb8\xad\xe6\x96\x87\0"
        "CHS\0"
        "zho\0"
        "zh\0"
        "\xe5\x85\xac\xe5\x8e\x86\0"
-       "zh-CHS\0"
-       "Chinese (Simplified) Legacy\0"
+       "zh-Hans\0"
+       "Chinese (Simplified)\0"
        "cs\0"
        "Czech\0"
        "\xc4\x8d\x65\xc5\xa1tina\0"
@@ -6244,9 +6273,9 @@ static const char locale_strings [] = {
        "mn-Cyrl\0"
        "Mongolian (Cyrillic)\0"
        "MNN\0"
+       "zh-Hant\0"
        "zh-CHT\0"
        "Chinese (Traditional) Legacy\0"
-       "zh-Hant\0"
        "Norwegian Bokm\xc3\xa5l\0"
        "norsk bokm\xc3\xa5l\0"
        "Serbian\0"
index f868aa37864f4b6a29a22da3d790a4fcf17c4db7..f38a054125710fab5281f9e0facb68b7aa1e5e4f 100644 (file)
@@ -326,10 +326,10 @@ mono_method_desc_new (const char *name, gboolean include_namespace)
                g_free (class_nspace);
                return NULL;
        }
-       *method_name++ = 0;
        /* allow two :: to separate the method name */
-       if (*method_name == ':')
-               method_name++;
+       if (method_name != class_nspace && method_name [-1] == ':')
+               method_name [-1] = 0;
+       *method_name++ = 0;
        class_name = strrchr (class_nspace, '.');
        if (class_name) {
                *class_name++ = 0;
index a923ff70eb7662e63848bd5867edf725ea1d9b63..39d226d3b25038728185704b3d0d6d70a5f8363a 100644 (file)
@@ -552,11 +552,15 @@ DECINLINE static void rshift192(guint64* pclo, guint64* pcmi, guint64* pchi)
     *pchi >>= 1;
 }
 
+#if defined(__native_client__) && (defined(__i386__) || defined(__x86_64))
+#define USE_X86_32BIT_INSTRUCTIONS 1
+#endif
+
 static inline gint
 my_g_bit_nth_msf (gsize mask)
 {
        /* Mask is expected to be != 0 */
-#if defined(__i386__) && defined(__GNUC__)
+#if (defined(__i386__) && defined(__GNUC__)) || defined(USE_X86_32BIT_INSTRUCTIONS)
        int r;
 
        __asm__("bsrl %1,%0\n\t"
@@ -1477,17 +1481,6 @@ DECINLINE static void buildIEEE754Double(double* pd, int sign, int texp, guint64
 
     PRECONDITION(sign == 0 || sign == 1);
     *p = (((guint64)sign) << 63) | (((guint64)((1023+texp)&0x7ff)) << 52) | mantisse;
-#ifdef ARM_FPU_FPA
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-    {
-           guint32 temp;
-           guint32 *t = (guint32*)p;
-           temp = t [0];
-           t [0] = t [1];
-           t [1] = temp;
-    }
-#endif
-#endif
 }
 
 double mono_decimal2double(/*[In]*/decimal_repr* pA)
@@ -1580,4 +1573,3 @@ gint32 mono_decimalSetExponent(/*[In, Out]*/decimal_repr* pA, gint32 texp)
 }
 
 #endif /* DISABLE_DECIMAL */
-
index b9fad3052974c39851d4a0b365742be582a41ce5..f337d0770a958826b26f9bc8e89c253685d87a5d 100644 (file)
@@ -420,9 +420,6 @@ typedef void (*MonoFreeDomainFunc) (MonoDomain *domain);
 void
 mono_install_free_domain_hook (MonoFreeDomainFunc func) MONO_INTERNAL;
 
-void 
-mono_init_com_types (void) MONO_INTERNAL;
-
 void 
 mono_cleanup (void) MONO_INTERNAL;
 
index 56c0e02806d93900dda095156ecc4e0a9c509f1f..4f7bcfb8ea9edd8d8fcfa971be637659f086d933 100644 (file)
@@ -35,6 +35,7 @@
 #include <mono/metadata/mono-debug-debugger.h>
 #include <mono/metadata/mono-config.h>
 #include <mono/metadata/threads-types.h>
+#include <mono/metadata/runtime.h>
 #include <metadata/threads.h>
 #include <metadata/profiler-private.h>
 #include <mono/metadata/coree.h>
@@ -1301,6 +1302,7 @@ mono_init_internal (const char *filename, const char *exe_filename, const char *
        mono_classes_init ();
        mono_loader_init ();
        mono_reflection_init ();
+       mono_runtime_init_tls ();
 
        /* FIXME: When should we release this memory? */
        MONO_GC_REGISTER_ROOT_FIXED (appdomains_list);
@@ -1606,13 +1608,6 @@ mono_init_internal (const char *filename, const char *exe_filename, const char *
                mono_defaults.corlib, "System.Reflection", "CustomAttributeData");
 
        /* these are initialized lazily when COM features are used */
-#ifndef DISABLE_COM
-       mono_defaults.variant_class = NULL;
-       mono_defaults.com_object_class = NULL;
-       mono_defaults.com_interop_proxy_class = NULL;
-       mono_defaults.iunknown_class = NULL;
-       mono_defaults.idispatch_class = NULL;
-#endif
 
        mono_class_init (mono_defaults.array_class);
        mono_defaults.generic_nullable_class = mono_class_from_name (
@@ -1686,48 +1681,6 @@ mono_init_version (const char *domain_name, const char *version)
        return mono_init_internal (domain_name, NULL, version);
 }
 
-#ifndef DISABLE_COM
-/**
- * mono_init_com_types:
- *
- * Initializes all types needed for COM Interop in mono_defaults structure. 
- */
-void 
-mono_init_com_types (void)
-{
-       static gboolean initialized = FALSE;
-
-       if (initialized)
-               return;
-       
-       /* FIXME: do I need some threading protection here */
-
-       g_assert (mono_defaults.corlib);
-
-       mono_defaults.variant_class = mono_class_from_name (
-               mono_defaults.corlib, "System", "Variant");
-       g_assert (mono_defaults.variant_class != 0);
-
-       mono_defaults.com_object_class = mono_class_from_name (
-               mono_defaults.corlib, "System", "__ComObject");
-       g_assert (mono_defaults.com_object_class != 0);
-
-       mono_defaults.com_interop_proxy_class = mono_class_from_name (
-               mono_defaults.corlib, "Mono.Interop", "ComInteropProxy");
-       g_assert (mono_defaults.com_interop_proxy_class != 0);
-
-       mono_defaults.iunknown_class = mono_class_from_name (
-               mono_defaults.corlib, "Mono.Interop", "IUnknown");
-       g_assert (mono_defaults.iunknown_class != 0);
-
-       mono_defaults.idispatch_class = mono_class_from_name (
-               mono_defaults.corlib, "Mono.Interop", "IDispatch");
-       g_assert (mono_defaults.idispatch_class != 0);
-
-       initialized = TRUE;
-}
-#endif /*DISABLE_COM*/
-
 /**
  * mono_cleanup:
  *
@@ -1973,8 +1926,22 @@ mono_domain_free (MonoDomain *domain, gboolean force)
        /* This needs to be done before closing assemblies */
        mono_gc_clear_domain (domain);
 
+       /* Close dynamic assemblies first, since they have no ref count */
+       for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
+               MonoAssembly *ass = tmp->data;
+               if (!ass->image || !ass->image->dynamic)
+                       continue;
+               mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Unloading domain %s[%p], assembly %s[%p], ref_count=%d", domain->friendly_name, domain, ass->aname.name, ass, ass->ref_count);
+               if (!mono_assembly_close_except_image_pools (ass))
+                       tmp->data = NULL;
+       }
+
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
                MonoAssembly *ass = tmp->data;
+               if (!ass)
+                       continue;
+               if (!ass->image || ass->image->dynamic)
+                       continue;
                mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Unloading domain %s[%p], assembly %s[%p], ref_count=%d", domain->friendly_name, domain, ass->aname.name, ass, ass->ref_count);
                if (!mono_assembly_close_except_image_pools (ass))
                        tmp->data = NULL;
index 67b592c1ca57b6117791f4db79f5a3136b4d67f0..d8ffb90b49e4711782a37127ae39ae5e63c1bc32 100644 (file)
@@ -779,6 +779,36 @@ mono_get_exception_runtime_wrapped (MonoObject *wrapped_exception)
    return (MonoException*)ex;
 }      
 
+static gboolean
+append_frame_and_continue (MonoMethod *method, gpointer ip, size_t native_offset, gboolean managed, gpointer user_data)
+{
+       MonoDomain *domain = mono_domain_get ();
+       GString *text = (GString*)user_data;
+
+       if (method) {
+               char *msg = mono_debug_print_stack_frame (method, native_offset, domain);
+               g_string_append_printf (text, "%s\n", msg);
+               g_free (msg);
+       } else {
+               g_string_append_printf (text, "<unknown native frame 0x%x>\n", ip);
+       }
+
+       return FALSE;
+}
+
+char *
+mono_exception_get_managed_backtrace (MonoException *exc)
+{
+       GString *text;
+
+       text = g_string_new_len (NULL, 20);
+
+       if (!mono_get_eh_callbacks ()->mono_exception_walk_trace (exc, append_frame_and_continue, text))
+               g_string_append (text, "managed backtrace not available\n");
+
+       return g_string_free (text, FALSE);
+}
+
 char *
 mono_exception_get_native_backtrace (MonoException *exc)
 {
index ac7b0c41cc3f4bac4f2aa4e50c6bf68ef12d9c7b..c0ed5de44936919449bbcde49d1450bf97972e1f 100644 (file)
@@ -824,9 +824,9 @@ ves_icall_System_IO_MonoIO_Read (HANDLE handle, MonoArray *dest,
        *error=ERROR_SUCCESS;
 
        MONO_CHECK_ARG_NULL (dest);
-       
-       if (dest_offset + count > mono_array_length (dest))
-               return 0;
+
+       if (dest_offset > mono_array_length (dest) - count)
+               mono_raise_exception (mono_get_exception_argument ("array", "array too small. numBytes/offset wrong."));
 
        buffer = mono_array_addr (dest, guchar, dest_offset);
        result = ReadFile (handle, buffer, count, &n, NULL);
@@ -854,8 +854,8 @@ ves_icall_System_IO_MonoIO_Write (HANDLE handle, MonoArray *src,
 
        MONO_CHECK_ARG_NULL (src);
        
-       if (src_offset + count > mono_array_length (src))
-               return 0;
+       if (src_offset > mono_array_length (src) - count)
+               mono_raise_exception (mono_get_exception_argument ("array", "array too small. numBytes/offset wrong."));
        
        buffer = mono_array_addr (src, guchar, src_offset);
        result = WriteFile (handle, buffer, count, &n, NULL);
index 24880dd582069d86913aa22193264a92e5ec2eb8..2ef9a933b32d4dd9ac68fe75a183c6f8ed3dcd35 100644 (file)
@@ -219,8 +219,8 @@ typedef struct {
        int alloc_type;
 } AllocatorWrapperInfo;
 
-MonoMethod* mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box) MONO_INTERNAL;
-MonoMethod* mono_gc_get_managed_array_allocator (MonoVTable *vtable, int rank) MONO_INTERNAL;
+MonoMethod* mono_gc_get_managed_allocator (MonoClass *klass, gboolean for_box) MONO_INTERNAL;
+MonoMethod* mono_gc_get_managed_array_allocator (MonoClass *klass) MONO_INTERNAL;
 MonoMethod *mono_gc_get_managed_allocator_by_type (int atype) MONO_INTERNAL;
 
 guint32 mono_gc_get_managed_allocator_types (void) MONO_INTERNAL;
@@ -343,6 +343,7 @@ typedef struct _RefQueueEntry RefQueueEntry;
 struct _RefQueueEntry {
        void *dis_link;
        guint32 gchandle;
+       MonoDomain *domain;
        void *user_data;
        RefQueueEntry *next;
 };
index f0a6ef10c95fe8714d6884224cb9c6574eff6d69..7a46d49301de2653b0b4aace9ad1914371faaf00 100644 (file)
@@ -36,6 +36,7 @@
 #include <mono/utils/mono-counters.h>
 #include <mono/utils/dtrace.h>
 #include <mono/utils/mono-threads.h>
+#include <mono/utils/atomic.h>
 
 #ifndef HOST_WIN32
 #include <pthread.h>
@@ -262,20 +263,14 @@ mono_gc_out_of_memory (size_t size)
 static void
 object_register_finalizer (MonoObject *obj, void (*callback)(void *, void*))
 {
-#if HAVE_BOEHM_GC
-       guint offset = 0;
        MonoDomain *domain;
 
        if (obj == NULL)
                mono_raise_exception (mono_get_exception_argument_null ("obj"));
-       
-       domain = obj->vtable->domain;
 
-#ifndef GC_DEBUG
-       /* This assertion is not valid when GC_DEBUG is defined */
-       g_assert (GC_base (obj) == (char*)obj - offset);
-#endif
+       domain = obj->vtable->domain;
 
+#if HAVE_BOEHM_GC
        if (mono_domain_is_unloading (domain) && (callback != NULL))
                /*
                 * Can't register finalizers in a dying appdomain, since they
@@ -292,17 +287,14 @@ object_register_finalizer (MonoObject *obj, void (*callback)(void *, void*))
 
        mono_domain_finalizers_unlock (domain);
 
-       GC_REGISTER_FINALIZER_NO_ORDER ((char*)obj - offset, callback, GUINT_TO_POINTER (offset), NULL, NULL);
+       mono_gc_register_for_finalization (obj, callback);
 #elif defined(HAVE_SGEN_GC)
-       if (obj == NULL)
-               mono_raise_exception (mono_get_exception_argument_null ("obj"));
-
        /*
         * If we register finalizers for domains that are unloading we might
         * end up running them while or after the domain is being cleared, so
         * the objects will not be valid anymore.
         */
-       if (!mono_domain_is_unloading (obj->vtable->domain))
+       if (!mono_domain_is_unloading (domain))
                mono_gc_register_for_finalization (obj, callback);
 #endif
 }
@@ -341,6 +333,10 @@ mono_domain_finalize (MonoDomain *domain, guint32 timeout)
        HANDLE done_event;
        MonoInternalThread *thread = mono_thread_internal_current ();
 
+#if defined(__native_client__)
+       return FALSE;
+#endif
+
        if (mono_thread_internal_current () == gc_thread)
                /* We are called from inside a finalizer, not much we can do here */
                return FALSE;
@@ -1136,6 +1132,7 @@ mono_gc_init (void)
        MONO_GC_REGISTER_ROOT_FIXED (gc_handles [HANDLE_NORMAL].entries);
        MONO_GC_REGISTER_ROOT_FIXED (gc_handles [HANDLE_PINNED].entries);
 
+       mono_counters_register ("Created object count", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &mono_stats.new_object_count);
        mono_counters_register ("Minor GC collections", MONO_COUNTER_GC | MONO_COUNTER_INT, &gc_stats.minor_gc_count);
        mono_counters_register ("Major GC collections", MONO_COUNTER_GC | MONO_COUNTER_INT, &gc_stats.major_gc_count);
        mono_counters_register ("Minor GC time", MONO_COUNTER_GC | MONO_COUNTER_TIME_INTERVAL, &gc_stats.minor_gc_time_usecs);
@@ -1459,14 +1456,10 @@ reference_queue_clear_for_domain (MonoDomain *domain)
                RefQueueEntry **iter = &queue->queue;
                RefQueueEntry *entry;
                while ((entry = *iter)) {
-                       MonoObject *obj;
+                       if (entry->domain == domain) {
 #ifdef HAVE_SGEN_GC
-                       obj = mono_gc_weak_link_get (&entry->dis_link);
-                       if (obj && mono_object_domain (obj) == domain) {
                                mono_gc_weak_link_remove (&entry->dis_link, TRUE);
 #else
-                       obj = mono_gchandle_get_target (entry->gchandle);
-                       if (obj && mono_object_domain (obj) == domain) {
                                mono_gchandle_free ((guint32)entry->gchandle);
 #endif
                                ref_list_remove_element (iter, entry);
@@ -1526,6 +1519,7 @@ mono_gc_reference_queue_add (MonoReferenceQueue *queue, MonoObject *obj, void *u
 
        entry = g_new0 (RefQueueEntry, 1);
        entry->user_data = user_data;
+       entry->domain = mono_object_domain (obj);
 
 #ifdef HAVE_SGEN_GC
        mono_gc_weak_link_add (&entry->dis_link, obj, TRUE);
index 93569b9d56ba442b3f05d59377c9815e1adc9f76..3f17c54959334bae62abfe7bcbd741731d874e01 100644 (file)
@@ -715,11 +715,6 @@ ICALL(MARSHAL_22, "QueryInterfaceInternal", ves_icall_System_Runtime_InteropServ
 #endif
 ICALL(MARSHAL_43, "ReAllocCoTaskMem", ves_icall_System_Runtime_InteropServices_Marshal_ReAllocCoTaskMem)
 ICALL(MARSHAL_23, "ReAllocHGlobal", ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal)
-ICALL(MARSHAL_24, "ReadByte", ves_icall_System_Runtime_InteropServices_Marshal_ReadByte)
-ICALL(MARSHAL_25, "ReadInt16", ves_icall_System_Runtime_InteropServices_Marshal_ReadInt16)
-ICALL(MARSHAL_26, "ReadInt32", ves_icall_System_Runtime_InteropServices_Marshal_ReadInt32)
-ICALL(MARSHAL_27, "ReadInt64", ves_icall_System_Runtime_InteropServices_Marshal_ReadInt64)
-ICALL(MARSHAL_28, "ReadIntPtr", ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr)
 #ifndef DISABLE_COM
 ICALL(MARSHAL_49, "ReleaseComObjectInternal", ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal)
 ICALL(MARSHAL_29, "ReleaseInternal", ves_icall_System_Runtime_InteropServices_Marshal_ReleaseInternal)
@@ -730,19 +725,12 @@ ICALL(MARSHAL_32, "StringToHGlobalAnsi", ves_icall_System_Runtime_InteropService
 ICALL(MARSHAL_33, "StringToHGlobalUni", ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni)
 ICALL(MARSHAL_34, "StructureToPtr", ves_icall_System_Runtime_InteropServices_Marshal_StructureToPtr)
 ICALL(MARSHAL_35, "UnsafeAddrOfPinnedArrayElement", ves_icall_System_Runtime_InteropServices_Marshal_UnsafeAddrOfPinnedArrayElement)
-ICALL(MARSHAL_36, "WriteByte", ves_icall_System_Runtime_InteropServices_Marshal_WriteByte)
-ICALL(MARSHAL_37, "WriteInt16", ves_icall_System_Runtime_InteropServices_Marshal_WriteInt16)
-ICALL(MARSHAL_38, "WriteInt32", ves_icall_System_Runtime_InteropServices_Marshal_WriteInt32)
-ICALL(MARSHAL_39, "WriteInt64", ves_icall_System_Runtime_InteropServices_Marshal_WriteInt64)
-ICALL(MARSHAL_40, "WriteIntPtr", ves_icall_System_Runtime_InteropServices_Marshal_WriteIntPtr)
 ICALL(MARSHAL_41, "copy_from_unmanaged", ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged)
 ICALL(MARSHAL_42, "copy_to_unmanaged", ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged)
 
 ICALL_TYPE(ACTS, "System.Runtime.Remoting.Activation.ActivationServices", ACTS_1)
 ICALL(ACTS_1, "AllocateUninitializedClassInstance", ves_icall_System_Runtime_Activation_ActivationServices_AllocateUninitializedClassInstance)
-#ifndef DISABLE_REMOTING
 ICALL(ACTS_2, "EnableProxyActivation", ves_icall_System_Runtime_Activation_ActivationServices_EnableProxyActivation)
-#endif
 
 ICALL_TYPE(MONOMM, "System.Runtime.Remoting.Messaging.MonoMethodMessage", MONOMM_1)
 ICALL(MONOMM_1, "InitMessage", ves_icall_MonoMethodMessage_InitMessage)
index 2388fbc4d93540090982a03641a218b5e1667aea..317f894fc4392f739403411b3d445e2c88946afd 100644 (file)
@@ -898,18 +898,6 @@ ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray (MonoAr
        }
 #else
        memcpy (mono_array_addr (array, char, 0), field_data, size);
-#ifdef ARM_FPU_FPA
-       if (klass->element_class->byval_arg.type == MONO_TYPE_R8) {
-               gint i;
-               double tmp;
-               double *data = (double*)mono_array_addr (array, double, 0);
-
-               for (i = 0; i < size; i++, data++) {
-                       readr8 (data, &tmp);
-                       *data = tmp;
-               }
-       }
-#endif
 #endif
 }
 
@@ -1807,7 +1795,7 @@ ves_icall_MonoField_GetValueInternal (MonoReflectionField *field, MonoObject *ob
                mono_raise_exception (mono_get_exception_invalid_operation (
                                        "It is illegal to get the value on a field on a type loaded using the ReflectionOnly methods."));
 
-       if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
+       if (mono_security_core_clr_enabled ())
                mono_security_core_clr_ensure_reflection_access_field (cf);
 
        return mono_field_get_value_object (domain, cf, obj);
@@ -1827,7 +1815,7 @@ ves_icall_MonoField_SetValueInternal (MonoReflectionField *field, MonoObject *ob
                mono_raise_exception (mono_get_exception_invalid_operation (
                                        "It is illegal to set the value on a field on a type loaded using the ReflectionOnly methods."));
 
-       if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
+       if (mono_security_core_clr_enabled ())
                mono_security_core_clr_ensure_reflection_access_field (cf);
 
        type = mono_field_get_type_checked (cf, &error);
@@ -2803,7 +2791,7 @@ ves_icall_InternalInvoke (MonoReflectionMethod *method, MonoObject *this, MonoAr
 
        *exc = NULL;
 
-       if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
+       if (mono_security_core_clr_enabled ())
                mono_security_core_clr_ensure_reflection_access_method (m);
 
        if (!(m->flags & METHOD_ATTRIBUTE_STATIC)) {
@@ -4232,16 +4220,17 @@ ves_icall_System_Reflection_Assembly_InternalGetType (MonoReflectionAssembly *as
        if (type->type == MONO_TYPE_CLASS) {
                MonoClass *klass = mono_type_get_class (type);
 
-               if (mono_is_security_manager_active () && !klass->exception_type)
+               if (mono_security_enabled () && !klass->exception_type)
                        /* Some security problems are detected during generic vtable construction */
                        mono_class_setup_vtable (klass);
+
                /* need to report exceptions ? */
                if (throwOnError && klass->exception_type) {
                        /* report SecurityException (or others) that occured when loading the assembly */
                        MonoException *exc = mono_class_get_exception_for_failure (klass);
                        mono_loader_clear_error ();
                        mono_raise_exception (exc);
-               } else if (klass->exception_type == MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND) {
+               } else if (mono_security_enabled () && klass->exception_type == MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND) {
                        return NULL;
                }
        }
@@ -4853,6 +4842,7 @@ ves_icall_System_Reflection_Assembly_GetExecutingAssembly (void)
        MONO_ARCH_SAVE_REGS;
 
        mono_stack_walk_no_il (get_executing, &dest);
+       g_assert (dest);
        return mono_assembly_get_object (mono_domain_get (), dest->klass->image->assembly);
 }
 
@@ -5850,7 +5840,7 @@ ves_icall_System_Delegate_CreateDelegate_internal (MonoReflectionType *type, Mon
 
        mono_assert (delegate_class->parent == mono_defaults.multicastdelegate_class);
 
-       if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR) {
+       if (mono_security_core_clr_enabled ()) {
                if (!mono_security_core_clr_ensure_delegate_creation (method, throwOnBindFailure))
                        return NULL;
        }
@@ -6530,15 +6520,19 @@ ves_icall_System_Environment_Exit (int result)
 {
        MONO_ARCH_SAVE_REGS;
 
-       mono_runtime_shutdown ();
-
-       /* This will kill the tp threads which cannot be suspended */
-       mono_thread_pool_cleanup ();
+/* FIXME: There are some cleanup hangs that should be worked out, but
+ * if the program is going to exit, everything will be cleaned up when
+ * NaCl exits anyway.
+ */
+#ifndef __native_client__
+       if (!mono_runtime_try_shutdown ())
+               mono_thread_exit ();
 
        /* Suspend all managed threads since the runtime is going away */
        mono_thread_suspend_all_other_threads ();
 
        mono_runtime_quit ();
+#endif
 
        /* we may need to do some cleanup here... */
        exit (result);
@@ -6831,6 +6825,15 @@ ves_icall_System_Runtime_Activation_ActivationServices_EnableProxyActivation (Mo
 
        mono_vtable_set_is_remote (vtable, enable);
 }
+
+#else /* DISABLE_REMOTING */
+
+ICALL_EXPORT void
+ves_icall_System_Runtime_Activation_ActivationServices_EnableProxyActivation (MonoReflectionType *type, MonoBoolean enable)
+{
+       g_assert_not_reached ();
+}
+
 #endif
 
 ICALL_EXPORT MonoObject *
@@ -7213,6 +7216,12 @@ mono_ArgIterator_IntGetNextArg (MonoArgIterator *iter)
        iter->args = (guint8*)(((gsize)iter->args + (align) - 1) & ~(align - 1));
 #endif
        res.value = iter->args;
+#if defined(__native_client__) && SIZEOF_REGISTER == 8
+       /* Values are stored as 8 byte register sized objects, but 'value'
+        * is dereferenced as a pointer in other routines.
+        */
+       res.value = (char*)res.value + 4;
+#endif
 #if G_BYTE_ORDER != G_LITTLE_ENDIAN
        if (arg_size <= sizeof (gpointer)) {
                int dummy;
index 69e53b496c20cec8950e87718d13449268aba194..430af42c0cf90c9147866f834a83fdb8b975a07f 100644 (file)
@@ -31,6 +31,7 @@
 #include <mono/utils/mono-path.h>
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/mono-io-portability.h>
+#include <mono/utils/atomic.h>
 #include <mono/metadata/class-internals.h>
 #include <mono/metadata/assembly.h>
 #include <mono/metadata/object-internals.h>
@@ -1535,10 +1536,7 @@ mono_image_close_except_pools (MonoImage *image)
         * MonoImage might outlive its associated MonoAssembly.
         */
        if (image->references && !image->dynamic) {
-               MonoTableInfo *t = &image->tables [MONO_TABLE_ASSEMBLYREF];
-               int i;
-
-               for (i = 0; i < t->rows; i++) {
+               for (i = 0; i < image->nreferences; i++) {
                        if (image->references [i] && image->references [i] != REFERENCE_MISSING) {
                                if (!mono_assembly_close_except_image_pools (image->references [i]))
                                        image->references [i] = NULL;
@@ -1624,6 +1622,7 @@ mono_image_close_except_pools (MonoImage *image)
        free_hash (image->delegate_invoke_generic_cache);
        free_hash (image->delegate_begin_invoke_generic_cache);
        free_hash (image->delegate_end_invoke_generic_cache);
+       free_hash (image->synchronized_generic_cache);
        free_hash (image->remoting_invoke_cache);
        free_hash (image->runtime_invoke_cache);
        free_hash (image->runtime_invoke_direct_cache);
@@ -1713,10 +1712,7 @@ mono_image_close_finish (MonoImage *image)
        image->reflection_info_unregister_classes = NULL;
 
        if (image->references && !image->dynamic) {
-               MonoTableInfo *t = &image->tables [MONO_TABLE_ASSEMBLYREF];
-               int i;
-
-               for (i = 0; i < t->rows; i++) {
+               for (i = 0; i < image->nreferences; i++) {
                        if (image->references [i] && image->references [i] != REFERENCE_MISSING)
                                mono_assembly_close_finish (image->references [i]);
                }
index 3dd967b4534c7541de8bac8b0297ec68ca94f2a7..5132e6bcef0a7fb5d7fbbbbe272158d47f583d3a 100644 (file)
@@ -38,6 +38,7 @@
 #include "mono/utils/mono-counters.h"
 #include "mono/utils/mono-tls.h"
 #include "mono/utils/mono-memory-model.h"
+#include "mono/utils/atomic.h"
 #include <string.h>
 #include <errno.h>
 
@@ -121,9 +122,14 @@ mono_string_from_byvalwstr (gunichar2 *data, int len);
 static void
 mono_byvalarray_to_array (MonoArray *arr, gpointer native_arr, MonoClass *eltype, guint32 elnum);
 
+static void
+mono_byvalarray_to_byte_array (MonoArray *arr, gpointer native_arr, guint32 elnum);
+
 static void
 mono_array_to_byvalarray (gpointer native_arr, MonoArray *arr, MonoClass *eltype, guint32 elnum);
 
+static void
+mono_array_to_byte_byvalarray (gpointer native_arr, MonoArray *arr, guint32 elnum);
 
 static MonoAsyncResult *
 mono_delegate_begin_invoke (MonoDelegate *delegate, gpointer *params);
@@ -204,6 +210,13 @@ mono_signature_no_pinvoke (MonoMethod *method)
        return sig;
 }
 
+void
+mono_marshal_init_tls (void)
+{
+       mono_native_tls_alloc (&last_error_tls_id, NULL);
+       mono_native_tls_alloc (&load_type_info_tls_id, NULL);
+}
+
 void
 mono_marshal_init (void)
 {
@@ -213,8 +226,6 @@ mono_marshal_init (void)
                module_initialized = TRUE;
                InitializeCriticalSection (&marshal_mutex);
                marshal_mutex_initialized = TRUE;
-               mono_native_tls_alloc (&last_error_tls_id, NULL);
-               mono_native_tls_alloc (&load_type_info_tls_id, NULL);
 
                register_icall (ves_icall_System_Threading_Thread_ResetAbort, "ves_icall_System_Threading_Thread_ResetAbort", "void", TRUE);
                register_icall (mono_marshal_string_to_utf16, "mono_marshal_string_to_utf16", "ptr obj", FALSE);
@@ -233,7 +244,9 @@ mono_marshal_init (void)
                register_icall (mono_array_to_lparray, "mono_array_to_lparray", "ptr object", FALSE);
                register_icall (mono_free_lparray, "mono_free_lparray", "void object ptr", FALSE);
                register_icall (mono_byvalarray_to_array, "mono_byvalarray_to_array", "void object ptr ptr int32", FALSE);
+               register_icall (mono_byvalarray_to_byte_array, "mono_byvalarray_to_byte_array", "void object ptr int32", FALSE);
                register_icall (mono_array_to_byvalarray, "mono_array_to_byvalarray", "void ptr object ptr int32", FALSE);
+               register_icall (mono_array_to_byte_byvalarray, "mono_array_to_byte_byvalarray", "void ptr object int32", FALSE);
                register_icall (mono_delegate_to_ftnptr, "mono_delegate_to_ftnptr", "ptr object", FALSE);
                register_icall (mono_ftnptr_to_delegate, "mono_ftnptr_to_delegate", "object ptr ptr", FALSE);
                register_icall (mono_marshal_asany, "mono_marshal_asany", "ptr object int32 int32", FALSE);
@@ -584,11 +597,13 @@ mono_array_to_savearray (MonoArray *array)
 gpointer
 mono_array_to_lparray (MonoArray *array)
 {
+#ifndef DISABLE_COM
        gpointer *nativeArray = NULL;
        int nativeArraySize = 0;
 
        int i = 0;
        MonoClass *klass;
+#endif
 
        if (!array)
                return NULL;
@@ -600,14 +615,12 @@ mono_array_to_lparray (MonoArray *array)
        case MONO_TYPE_VOID:
                g_assert_not_reached ();
                break;
-#ifndef DISABLE_COM
        case MONO_TYPE_CLASS:
                nativeArraySize = array->max_length;
                nativeArray = malloc(sizeof(gpointer) * nativeArraySize);
                for(i = 0; i < nativeArraySize; ++i)    
                        nativeArray[i] = ves_icall_System_Runtime_InteropServices_Marshal_GetIUnknownForObjectInternal(((gpointer*)array->vector)[i]);
                return nativeArray;
-#endif
        case MONO_TYPE_U1:
        case MONO_TYPE_BOOLEAN:
        case MONO_TYPE_I1:
@@ -686,6 +699,12 @@ mono_byvalarray_to_array (MonoArray *arr, gpointer native_arr, MonoClass *elclas
                g_assert_not_reached ();
 }
 
+static void
+mono_byvalarray_to_byte_array (MonoArray *arr, gpointer native_arr, guint32 elnum)
+{
+       mono_byvalarray_to_array (arr, native_arr, mono_defaults.byte_class, elnum);
+}
+
 static void
 mono_array_to_byvalarray (gpointer native_arr, MonoArray *arr, MonoClass *elclass, guint32 elnum)
 {
@@ -709,6 +728,12 @@ mono_array_to_byvalarray (gpointer native_arr, MonoArray *arr, MonoClass *elclas
        }
 }
 
+static void
+mono_array_to_byte_byvalarray (gpointer native_arr, MonoArray *arr, guint32 elnum)
+{
+       mono_array_to_byvalarray (native_arr, arr, mono_defaults.byte_class, elnum);
+}
+
 void
 mono_string_utf8_to_builder (MonoStringBuilder *sb, char *text)
 {
@@ -1340,9 +1365,8 @@ emit_ptr_to_object_conv (MonoMethodBuilder *mb, MonoType *type, MonoMarshalConv
                mono_mb_emit_ldloc (mb, 1);
                mono_mb_emit_byte (mb, CEE_LDIND_REF);
                mono_mb_emit_ldloc (mb, 0);
-               mono_mb_emit_ptr (mb, mono_defaults.byte_class);
                mono_mb_emit_icon (mb, mspec->data.array_data.num_elem);
-               mono_mb_emit_icall (mb, mono_byvalarray_to_array);
+               mono_mb_emit_icall (mb, mono_byvalarray_to_byte_array);
                break;
        }
        case MONO_MARSHAL_CONV_STR_BYVALSTR: 
@@ -1715,9 +1739,8 @@ emit_object_to_ptr_conv (MonoMethodBuilder *mb, MonoType *type, MonoMarshalConv
                mono_mb_emit_ldloc (mb, 1);
                mono_mb_emit_ldloc (mb, 0);     
                mono_mb_emit_byte (mb, CEE_LDIND_REF);
-               mono_mb_emit_ptr (mb, mono_defaults.byte_class);
                mono_mb_emit_icon (mb, mspec->data.array_data.num_elem);
-               mono_mb_emit_icall (mb, mono_array_to_byvalarray);
+               mono_mb_emit_icall (mb, mono_array_to_byte_byvalarray);
                mono_mb_patch_short_branch (mb, pos);
                break;
        }
@@ -1972,13 +1995,12 @@ emit_struct_conv_full (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_obje
                        }
                        case MONO_TYPE_OBJECT: {
 #ifndef DISABLE_COM
-                               mono_init_com_types ();
                                if (to_object) {
                                        static MonoMethod *variant_clear = NULL;
                                        static MonoMethod *get_object_for_native_variant = NULL;
 
                                        if (!variant_clear)
-                                               variant_clear = mono_class_get_method_from_name (mono_defaults.variant_class, "Clear", 0);
+                                               variant_clear = mono_class_get_method_from_name (mono_class_get_variant_class (), "Clear", 0);
                                        if (!get_object_for_native_variant)
                                                get_object_for_native_variant = mono_class_get_method_from_name (mono_defaults.marshal_class, "GetObjectForNativeVariant", 1);
                                        mono_mb_emit_ldloc (mb, 1);
@@ -2570,7 +2592,14 @@ mono_marshal_method_from_wrapper (MonoMethod *wrapper)
                res = mono_marshal_get_wrapper_info (wrapper);
                if (res == NULL)
                        return wrapper;
-               return res;
+               if (wrapper->is_inflated)
+                       /*
+                        * A method cannot be inflated and a wrapper at the same time, so the wrapper info
+                        * contains an uninflated method.
+                        */
+                       return mono_class_inflate_generic_method (res, mono_method_get_context (wrapper));
+               else
+                       return res;
        case MONO_WRAPPER_MANAGED_TO_NATIVE:
                info = mono_marshal_get_wrapper_info (wrapper);
                if (info && (info->subtype == WRAPPER_SUBTYPE_NONE || info->subtype == WRAPPER_SUBTYPE_NATIVE_FUNC_AOT))
@@ -2664,6 +2693,77 @@ get_wrapper_target_class (MonoImage *image)
        return klass;
 }
 
+/*
+ * Wrappers for generic methods should be instances of generic wrapper methods, i.e .the wrapper for Sort<int> should be
+ * an instance of the wrapper for Sort<T>. This is required for full-aot to work.
+ */
+
+/*
+ * check_generic_wrapper_cache:
+ *
+ *   Check CACHE for the wrapper of the generic instance ORIG_METHOD, and return it if it is found.
+ * KEY should be the key for ORIG_METHOD in the cache, while DEF_KEY should be the key of its
+ * generic method definition.
+ */
+static MonoMethod*
+check_generic_wrapper_cache (GHashTable *cache, MonoMethod *orig_method, gpointer key, gpointer def_key)
+{
+       MonoMethod *res;
+       MonoMethod *inst, *def;
+       MonoGenericContext *ctx;
+       MonoMethod *def_method;
+
+       g_assert (orig_method->is_inflated);
+       def_method = ((MonoMethodInflated*)orig_method)->declaring;
+       ctx = mono_method_get_context (orig_method);
+
+       /*
+        * Look for the instance
+        */
+       res = mono_marshal_find_in_cache (cache, key);
+       if (res)
+               return res;
+
+       /*
+        * Look for the definition
+        */
+       def = mono_marshal_find_in_cache (cache, def_key);
+       if (def) {
+               inst = mono_class_inflate_generic_method (def, ctx);
+               /* Cache it */
+               mono_memory_barrier ();
+               mono_marshal_lock ();
+               res = g_hash_table_lookup (cache, key);
+               if (!res) {
+                       g_hash_table_insert (cache, key, inst);
+                       res = inst;
+               }
+               mono_marshal_unlock ();
+               return res;
+       }
+       return NULL;
+}
+
+static MonoMethod*
+cache_generic_wrapper (GHashTable *cache, MonoMethod *orig_method, MonoMethod *def, MonoGenericContext *ctx, gpointer key)
+{
+       MonoMethod *inst, *res;
+
+       /*
+        * We use the same cache for the generic definition and the instances.
+        */
+       inst = mono_class_inflate_generic_method (def, ctx);
+       mono_memory_barrier ();
+       mono_marshal_lock ();
+       res = g_hash_table_lookup (cache, key);
+       if (!res) {
+               g_hash_table_insert (cache, key, inst);
+               res = inst;
+       }
+       mono_marshal_unlock ();
+       return res;
+}
+
 static MonoMethod*
 check_generic_delegate_wrapper_cache (GHashTable *cache, MonoMethod *orig_method, MonoMethod *def_method, MonoGenericContext *ctx)
 {
@@ -3077,7 +3177,7 @@ mono_marshal_get_remoting_invoke (MonoMethod *method)
 
        /* this seems to be the best plase to put this, as all remoting invokes seem to get filtered through here */
 #ifndef DISABLE_COM
-       if (mono_class_is_com_object (method->klass) || method->klass == mono_defaults.com_object_class) {
+       if (mono_class_is_com_object (method->klass) || method->klass == mono_class_get_com_object_class ()) {
                MonoVTable *vtable = mono_class_vtable (mono_domain_get (), method->klass);
                g_assert (vtable); /*FIXME do proper error handling*/
 
@@ -4420,9 +4520,12 @@ mono_marshal_get_string_ctor_signature (MonoMethod *method)
 static MonoType*
 get_runtime_invoke_type (MonoType *t, gboolean ret)
 {
-       if (t->byref)
+       if (t->byref) {
+               if (t->type == MONO_TYPE_GENERICINST && mono_class_is_nullable (mono_class_from_mono_type (t)))
+                       return t;
                /* Can't share this with 'I' as that needs another indirection */
-               return t;
+               return &mono_defaults.int_class->this_arg;
+       }
 
        if (MONO_TYPE_IS_REFERENCE (t))
                return &mono_defaults.object_class->byval_arg;
@@ -4433,18 +4536,21 @@ get_runtime_invoke_type (MonoType *t, gboolean ret)
 
 handle_enum:
        switch (t->type) {
+               /* Can't share these as the argument needs to be loaded using sign/zero extension */
+               /*
        case MONO_TYPE_U1:
                return &mono_defaults.sbyte_class->byval_arg;
        case MONO_TYPE_U2:
                return &mono_defaults.int16_class->byval_arg;
        case MONO_TYPE_U4:
                return &mono_defaults.int32_class->byval_arg;
+               */
        case MONO_TYPE_U8:
                return &mono_defaults.int64_class->byval_arg;
        case MONO_TYPE_BOOLEAN:
-               return &mono_defaults.sbyte_class->byval_arg;
+               return &mono_defaults.byte_class->byval_arg;
        case MONO_TYPE_CHAR:
-               return &mono_defaults.int16_class->byval_arg;
+               return &mono_defaults.uint16_class->byval_arg;
        case MONO_TYPE_U:
        case MONO_TYPE_PTR:
                return &mono_defaults.int_class->byval_arg;
@@ -4844,8 +4950,6 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual)
                         * Create a new signature to reflect this.
                         */
                        callsig = signature_dup_add_this (method->klass->image, mono_method_signature (method), method->klass);
-                       /* Can't share this as it would be shared with static methods taking an IntPtr argument */
-                       need_direct_wrapper = TRUE;
                } else {
                        if (method->dynamic)
                                callsig = signature_dup (method->klass->image, mono_method_signature (method));
@@ -5316,6 +5420,10 @@ mono_marshal_get_ldfld_wrapper (MonoType *type)
                        mono_mb_emit_byte (mb, CEE_LDIND_REF);
                }
                break;
+       case MONO_TYPE_VAR:
+       case MONO_TYPE_MVAR:
+               mono_mb_emit_op (mb, CEE_LDOBJ, klass);
+               break;
        default:
                g_warning ("type %x not implemented", type->type);
                g_assert_not_reached ();
@@ -5644,6 +5752,8 @@ mono_marshal_get_stfld_wrapper (MonoType *type)
                mono_mb_emit_op (mb, CEE_STOBJ, klass);
                break;
        case MONO_TYPE_GENERICINST:
+       case MONO_TYPE_VAR:
+       case MONO_TYPE_MVAR:
                mono_mb_emit_op (mb, CEE_STOBJ, klass);
                break;
        default:
@@ -7267,8 +7377,6 @@ emit_marshal_variant (EmitMarshalContext *m, int argnum, MonoType *t,
        static MonoMethod *get_object_for_native_variant = NULL;
        static MonoMethod *get_native_variant_for_object = NULL;
 
-       mono_init_com_types ();
-       
        if (!get_object_for_native_variant)
                get_object_for_native_variant = mono_class_get_method_from_name (mono_defaults.marshal_class, "GetObjectForNativeVariant", 1);
        g_assert (get_object_for_native_variant);
@@ -7279,12 +7387,12 @@ emit_marshal_variant (EmitMarshalContext *m, int argnum, MonoType *t,
 
        switch (action) {
        case MARSHAL_ACTION_CONV_IN: {
-               conv_arg = mono_mb_add_local (mb, &mono_defaults.variant_class->byval_arg);
+               conv_arg = mono_mb_add_local (mb, &mono_class_get_variant_class ()->byval_arg);
                
                if (t->byref)
-                       *conv_arg_type = &mono_defaults.variant_class->this_arg;
+                       *conv_arg_type = &mono_class_get_variant_class ()->this_arg;
                else
-                       *conv_arg_type = &mono_defaults.variant_class->byval_arg;
+                       *conv_arg_type = &mono_class_get_variant_class ()->byval_arg;
 
                if (t->byref && !(t->attrs & PARAM_ATTRIBUTE_IN) && t->attrs & PARAM_ATTRIBUTE_OUT)
                        break;
@@ -7301,7 +7409,7 @@ emit_marshal_variant (EmitMarshalContext *m, int argnum, MonoType *t,
                static MonoMethod *variant_clear = NULL;
 
                if (!variant_clear)
-                       variant_clear = mono_class_get_method_from_name (mono_defaults.variant_class, "Clear", 0);
+                       variant_clear = mono_class_get_method_from_name (mono_class_get_variant_class (), "Clear", 0);
                g_assert (variant_clear);
 
 
@@ -7334,9 +7442,9 @@ emit_marshal_variant (EmitMarshalContext *m, int argnum, MonoType *t,
                conv_arg = mono_mb_add_local (mb, &mono_defaults.object_class->byval_arg);
 
                if (t->byref)
-                       *conv_arg_type = &mono_defaults.variant_class->this_arg;
+                       *conv_arg_type = &mono_class_get_variant_class ()->this_arg;
                else
-                       *conv_arg_type = &mono_defaults.variant_class->byval_arg;
+                       *conv_arg_type = &mono_class_get_variant_class ()->byval_arg;
 
                if (t->byref && !(t->attrs & PARAM_ATTRIBUTE_IN) && t->attrs & PARAM_ATTRIBUTE_OUT)
                        break;
@@ -9767,7 +9875,10 @@ mono_marshal_get_isinst (MonoClass *klass)
        static MonoMethodSignature *isint_sig = NULL;
        GHashTable *cache;
        MonoMethod *res;
-       int pos_was_ok, pos_failed, pos_end, pos_end2;
+       int pos_was_ok, pos_end;
+#ifndef DISABLE_REMOTING
+       int pos_end2, pos_failed;
+#endif
        char *name;
        MonoMethodBuilder *mb;
 
@@ -9870,7 +9981,9 @@ mono_marshal_get_castclass (MonoClass *klass)
        static MonoMethodSignature *castclass_sig = NULL;
        GHashTable *cache;
        MonoMethod *res;
+#ifndef DISABLE_REMOTING
        int pos_was_ok, pos_was_ok2;
+#endif
        char *name;
        MonoMethodBuilder *mb;
        WrapperInfo *info;
@@ -10192,6 +10305,19 @@ mono_marshal_get_synchronized_inner_wrapper (MonoMethod *method)
        WrapperInfo *info;
        MonoMethodSignature *sig;
        MonoMethod *res;
+       MonoGenericContext *ctx = NULL;
+       MonoMethod *orig_method = NULL;
+       MonoGenericContainer *container = NULL;
+
+       if (method->is_inflated && !mono_method_get_context (method)->method_inst) {
+               orig_method = method;
+               ctx = &((MonoMethodInflated*)method)->context;
+               method = ((MonoMethodInflated*)method)->declaring;
+               container = mono_method_get_generic_container (method);
+               if (!container)
+                       container = method->klass->generic_container;
+               g_assert (container);
+       }
 
        mb = mono_mb_new (method->klass, method->name, MONO_WRAPPER_UNKNOWN);
 #ifndef DISABLE_JIT
@@ -10204,6 +10330,8 @@ mono_marshal_get_synchronized_inner_wrapper (MonoMethod *method)
        info = mono_wrapper_info_create (res, WRAPPER_SUBTYPE_SYNCHRONIZED_INNER);
        info->d.synchronized_inner.method = method;
        mono_marshal_set_wrapper_info (res, info);
+       if (ctx)
+               res = mono_class_inflate_generic_method (res, ctx);
        return res;
 }
 
@@ -10221,15 +10349,39 @@ mono_marshal_get_synchronized_wrapper (MonoMethod *method)
        MonoMethod *res;
        GHashTable *cache;
        int i, pos, this_local, ret_local = 0;
+       MonoGenericContext *ctx = NULL;
+       MonoMethod *orig_method = NULL;
+       MonoGenericContainer *container = NULL;
 
        g_assert (method);
 
        if (method->wrapper_type == MONO_WRAPPER_SYNCHRONIZED)
                return method;
 
-       cache = get_cache (&method->klass->image->synchronized_cache, mono_aligned_addr_hash, NULL);
-       if ((res = mono_marshal_find_in_cache (cache, method)))
-               return res;
+       /* FIXME: Support generic methods too */
+       if (method->is_inflated && !mono_method_get_context (method)->method_inst) {
+               orig_method = method;
+               ctx = &((MonoMethodInflated*)method)->context;
+               method = ((MonoMethodInflated*)method)->declaring;
+               container = mono_method_get_generic_container (method);
+               if (!container)
+                       container = method->klass->generic_container;
+               g_assert (container);
+       }
+
+       /*
+        * Check cache
+        */
+       if (ctx) {
+               cache = get_cache (&method->klass->image->synchronized_generic_cache, mono_aligned_addr_hash, NULL);
+               res = check_generic_wrapper_cache (cache, orig_method, orig_method, method);
+               if (res)
+                       return res;
+       } else {
+               cache = get_cache (&method->klass->image->synchronized_cache, mono_aligned_addr_hash, NULL);
+               if ((res = mono_marshal_find_in_cache (cache, method)))
+                       return res;
+       }
 
        sig = signature_dup (method->klass->image, mono_method_signature (method));
        sig->pinvoke = 0;
@@ -10320,7 +10472,10 @@ mono_marshal_get_synchronized_wrapper (MonoMethod *method)
        for (i = 0; i < sig->param_count; i++)
                mono_mb_emit_ldarg (mb, i + (sig->hasthis == TRUE));
 
-       mono_mb_emit_managed_call (mb, method, NULL);
+       if (ctx)
+               mono_mb_emit_managed_call (mb, mono_class_inflate_generic_method (method, &container->context), NULL);
+       else
+               mono_mb_emit_managed_call (mb, method, NULL);
 
        if (!MONO_TYPE_IS_VOID (sig->ret))
                mono_mb_emit_stloc (mb, ret_local);
@@ -10345,8 +10500,14 @@ mono_marshal_get_synchronized_wrapper (MonoMethod *method)
        mono_mb_set_clauses (mb, 1, clause);
 #endif
 
-       res = mono_mb_create_and_cache (cache, method,
-                                                                       mb, sig, sig->param_count + 16);
+       if (ctx) {
+               MonoMethod *def;
+               def = mono_mb_create_and_cache (cache, method, mb, sig, sig->param_count + 16);
+               res = cache_generic_wrapper (cache, orig_method, def, ctx, orig_method);
+       } else {
+               res = mono_mb_create_and_cache (cache, method,
+                                                                               mb, sig, sig->param_count + 16);
+       }
        mono_mb_free (mb);
 
        return res;     
@@ -11443,122 +11604,6 @@ ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged (gpointer s
        memcpy (dest_addr, src, length * element_size);
 }
 
-#if NO_UNALIGNED_ACCESS
-#define RETURN_UNALIGNED(type, addr) \
-       { \
-               type val; \
-               memcpy(&val, p + offset, sizeof(val)); \
-               return val; \
-       }
-#define WRITE_UNALIGNED(type, addr, val) \
-       memcpy(addr, &val, sizeof(type))
-#else
-#define RETURN_UNALIGNED(type, addr) \
-       return *(type*)(p + offset);
-#define WRITE_UNALIGNED(type, addr, val) \
-       (*(type *)(addr) = (val))
-#endif
-
-gpointer
-ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr (gpointer ptr, gint32 offset)
-{
-       char *p = ptr;
-
-       MONO_ARCH_SAVE_REGS;
-
-       RETURN_UNALIGNED(gpointer, p + offset);
-}
-
-unsigned char
-ves_icall_System_Runtime_InteropServices_Marshal_ReadByte (gpointer ptr, gint32 offset)
-{
-       char *p = ptr;
-
-       MONO_ARCH_SAVE_REGS;
-
-       return *(unsigned char*)(p + offset);
-}
-
-gint16
-ves_icall_System_Runtime_InteropServices_Marshal_ReadInt16 (gpointer ptr, gint32 offset)
-{
-       char *p = ptr;
-
-       MONO_ARCH_SAVE_REGS;
-
-       RETURN_UNALIGNED(gint16, p + offset);
-}
-
-gint32
-ves_icall_System_Runtime_InteropServices_Marshal_ReadInt32 (gpointer ptr, gint32 offset)
-{
-       char *p = ptr;
-
-       MONO_ARCH_SAVE_REGS;
-
-       RETURN_UNALIGNED(gint32, p + offset);
-}
-
-gint64
-ves_icall_System_Runtime_InteropServices_Marshal_ReadInt64 (gpointer ptr, gint32 offset)
-{
-       char *p = ptr;
-
-       MONO_ARCH_SAVE_REGS;
-
-       RETURN_UNALIGNED(gint64, p + offset);
-}
-
-void
-ves_icall_System_Runtime_InteropServices_Marshal_WriteByte (gpointer ptr, gint32 offset, unsigned char val)
-{
-       char *p = ptr;
-
-       MONO_ARCH_SAVE_REGS;
-
-       *(unsigned char*)(p + offset) = val;
-}
-
-void
-ves_icall_System_Runtime_InteropServices_Marshal_WriteIntPtr (gpointer ptr, gint32 offset, gpointer val)
-{
-       char *p = ptr;
-
-       MONO_ARCH_SAVE_REGS;
-
-       WRITE_UNALIGNED(gpointer, p + offset, val);
-}
-
-void
-ves_icall_System_Runtime_InteropServices_Marshal_WriteInt16 (gpointer ptr, gint32 offset, gint16 val)
-{
-       char *p = ptr;
-
-       MONO_ARCH_SAVE_REGS;
-
-       WRITE_UNALIGNED(gint16, p + offset, val);
-}
-
-void
-ves_icall_System_Runtime_InteropServices_Marshal_WriteInt32 (gpointer ptr, gint32 offset, gint32 val)
-{
-       char *p = ptr;
-
-       MONO_ARCH_SAVE_REGS;
-
-       WRITE_UNALIGNED(gint32, p + offset, val);
-}
-
-void
-ves_icall_System_Runtime_InteropServices_Marshal_WriteInt64 (gpointer ptr, gint32 offset, gint64 val)
-{
-       char *p = ptr;
-
-       MONO_ARCH_SAVE_REGS;
-
-       WRITE_UNALIGNED(gint64, p + offset, val);
-}
-
 MonoString *
 ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi (char *ptr)
 {
@@ -11728,7 +11773,8 @@ ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type (gpointer s
 
        MONO_ARCH_SAVE_REGS;
 
-       MONO_CHECK_ARG_NULL (src);
+       if (src == NULL)
+               return NULL;
        MONO_CHECK_ARG_NULL (type);
 
        klass = mono_class_from_mono_type (type->type);
index a8f7057d6294272322cbde71319577a086d3f966..981a8a6dd4c5425a1d51f68cddbf1d28f45e1d28 100644 (file)
@@ -192,6 +192,9 @@ typedef void (*RuntimeInvokeDynamicFunction) (void *args, MonoObject **exc, void
 void
 mono_marshal_init (void) MONO_INTERNAL;
 
+void
+mono_marshal_init_tls (void) MONO_INTERNAL;
+
 void
 mono_marshal_cleanup (void) MONO_INTERNAL;
 
@@ -394,36 +397,6 @@ void
 ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged (gpointer src, gint32 start_index,
                                                                      MonoArray *dest, gint32 length) MONO_INTERNAL;
 
-gpointer
-ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr (gpointer ptr, gint32 offset) MONO_INTERNAL;
-
-unsigned char
-ves_icall_System_Runtime_InteropServices_Marshal_ReadByte (gpointer ptr, gint32 offset) MONO_INTERNAL;
-
-gint16
-ves_icall_System_Runtime_InteropServices_Marshal_ReadInt16 (gpointer ptr, gint32 offset) MONO_INTERNAL;
-
-gint32
-ves_icall_System_Runtime_InteropServices_Marshal_ReadInt32 (gpointer ptr, gint32 offset) MONO_INTERNAL;
-
-gint64
-ves_icall_System_Runtime_InteropServices_Marshal_ReadInt64 (gpointer ptr, gint32 offset) MONO_INTERNAL;
-
-void
-ves_icall_System_Runtime_InteropServices_Marshal_WriteByte (gpointer ptr, gint32 offset, unsigned char val) MONO_INTERNAL;
-
-void
-ves_icall_System_Runtime_InteropServices_Marshal_WriteIntPtr (gpointer ptr, gint32 offset, gpointer val) MONO_INTERNAL;
-
-void
-ves_icall_System_Runtime_InteropServices_Marshal_WriteInt16 (gpointer ptr, gint32 offset, gint16 val) MONO_INTERNAL;
-
-void
-ves_icall_System_Runtime_InteropServices_Marshal_WriteInt32 (gpointer ptr, gint32 offset, gint32 val) MONO_INTERNAL;
-
-void
-ves_icall_System_Runtime_InteropServices_Marshal_WriteInt64 (gpointer ptr, gint32 offset, gint64 val) MONO_INTERNAL;
-
 MonoString *
 ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi (char *ptr) MONO_INTERNAL;
 
index d0029658c9d31ebe5571d5b483127d88a3ae7555..d85bf5cc4e4ba66f3679ee2ce127a88d821cfeb3 100644 (file)
@@ -196,6 +196,7 @@ struct _MonoImage {
         * It is NULL terminated.
         */
        MonoAssembly **references;
+       int nreferences;
 
        MonoImage **modules;
        guint32 module_count;
@@ -281,6 +282,7 @@ struct _MonoImage {
        GHashTable *cominterop_wrapper_cache; /* LOCKING: marshal lock */
        GHashTable *thunk_invoke_cache;
        GHashTable *wrapper_param_names;
+       GHashTable *synchronized_generic_cache;
 
        /*
         * indexed by MonoClass pointers
index 72991f977fa567f2167123bdefe4cb6c15f6323e..94780bb0d5a469511d2ed0cb47b8f35996197f7e 100644 (file)
@@ -1096,7 +1096,7 @@ string_cmp (VerifyContext *ctx, const char *str, guint offset)
 static gboolean
 mono_verifier_is_corlib (MonoImage *image)
 {
-       gboolean trusted_location = (mono_security_get_mode () != MONO_SECURITY_MODE_CORE_CLR) ? 
+       gboolean trusted_location = !mono_security_core_clr_enabled () ?
                        TRUE : mono_security_core_clr_is_platform_image (image);
 
        return trusted_location && image->module_name && !strcmp ("mscorlib.dll", image->module_name);
index 1e4d56fcdc9b7aab76482331aa9333f830aa8794..a8db2e2d8939bb0f7026b100270316850f1137fb 100644 (file)
@@ -2430,15 +2430,18 @@ collect_inflated_signature_images (MonoInflatedMethodSignature *sig, CollectData
 static void
 collect_method_images (MonoMethodInflated *method, CollectData *data)
 {
+       MonoMethod *m = method->declaring;
+
        add_image (method->declaring->klass->image, data);
        if (method->context.class_inst)
                collect_ginst_images (method->context.class_inst, data);
        if (method->context.method_inst)
                collect_ginst_images (method->context.method_inst, data);
        /*
-       if (((MonoMethod*)method)->signature)
-               collect_signature_images (mono_method_signature ((MonoMethod*)method), data);
-       */
+        * Dynamic assemblies have no references, so the images they depend on can be unloaded before them.
+        */
+       if (m->klass->image->dynamic)
+               collect_signature_images (mono_method_signature (m), data);
 }
 
 static void
@@ -4068,7 +4071,7 @@ mono_metadata_interfaces_from_typedef (MonoImage *meta, guint32 index, guint *co
  * 
  * Returns: the 1-based index into the TypeDef table of the type
  * where the type described by @index is nested.
- * Retruns 0 if @index describes a non-nested type.
+ * Returns 0 if @index describes a non-nested type.
  */
 guint32
 mono_metadata_nested_in_typedef (MonoImage *meta, guint32 index)
index 5a1edeb210fc2d57ab3132e44a3896e54f1f24c5..43a5e83933cb4202383cc99ac07da7eb688f482a 100644 (file)
@@ -179,6 +179,8 @@ mono_mb_create_method (MonoMethodBuilder *mb, MonoMethodSignature *signature, in
        }
 
        method->signature = signature;
+       if (!signature->hasthis)
+               method->flags |= METHOD_ATTRIBUTE_STATIC;
 
 #ifndef DISABLE_JIT
        if (max_stack < 8)
index 75e5ceaf2e2b95abeab0ab08f66ff35cbf8f6c37..9933f1dd48730ba5f4d5ae377a67752543063a85 100644 (file)
@@ -26,6 +26,7 @@
 #include <mono/metadata/marshal.h>
 #include <mono/metadata/profiler-private.h>
 #include <mono/utils/mono-time.h>
+#include <mono/utils/atomic.h>
 
 /*
  * Pull the list of opcodes
index 88991604f853f41ed209d32f50c64ba2ac7897db..1ae1ea53f11e3bfccfae8bda87ef306e376f14f9 100644 (file)
@@ -564,7 +564,7 @@ mono_config_parse (const char *filename) {
        mono_config_parse_file (mono_cfg);
        g_free (mono_cfg);
 
-#ifndef TARGET_WIN32
+#if !defined(TARGET_WIN32) && !defined(__native_client__)
        home = g_get_home_dir ();
        user_cfg = g_strconcat (home, G_DIR_SEPARATOR_S, ".mono/config", NULL);
        mono_config_parse_file (user_cfg);
index 01be2ef71f21fb348c8d664a0aecc1e0f0952070..3ab5bf6ffe571be8b63f84b1a93b07d7a7a410ad 100644 (file)
@@ -12,6 +12,7 @@
 #include <mono/metadata/mono-cq.h>
 #include <mono/metadata/mono-mlist.h>
 #include <mono/utils/mono-memory-model.h>
+#include <mono/utils/atomic.h>
 
 #define CQ_DEBUG(...)
 //#define CQ_DEBUG(...) g_message(__VA_ARGS__)
index 9743232da1b45a4b9093d06621170279423fb85f..6eff0ecbda320d6a165b4be0582e800fa2fdc057 100644 (file)
@@ -652,6 +652,12 @@ mono_debug_add_method (MonoMethod *method, MonoDebugMethodJitInfo *jit, MonoDoma
        for (i = 0; i < jit->num_locals; i++)
                write_variable (&jit->locals [i], ptr, &ptr);
 
+       *ptr++ = jit->gsharedvt_info_var ? 1 : 0;
+       if (jit->gsharedvt_info_var) {
+               write_variable (jit->gsharedvt_info_var, ptr, &ptr);
+               write_variable (jit->gsharedvt_locals_var, ptr, &ptr);
+       }
+
        size = ptr - oldptr;
        g_assert (size < max_size);
        total_size = size + sizeof (MonoDebugMethodAddress);
@@ -827,6 +833,8 @@ mono_debug_free_method_jit_info (MonoDebugMethodJitInfo *jit)
        g_free (jit->this_var);
        g_free (jit->params);
        g_free (jit->locals);
+       g_free (jit->gsharedvt_info_var);
+       g_free (jit->gsharedvt_locals_var);
        g_free (jit);
 }
 
@@ -871,6 +879,13 @@ mono_debug_read_method (MonoDebugMethodAddress *address)
        for (i = 0; i < jit->num_locals; i++)
                read_variable (&jit->locals [i], ptr, &ptr);
 
+       if (*ptr++) {
+               jit->gsharedvt_info_var = g_new0 (MonoDebugVarInfo, 1);
+               jit->gsharedvt_locals_var = g_new0 (MonoDebugVarInfo, 1);
+               read_variable (jit->gsharedvt_info_var, ptr, &ptr);
+               read_variable (jit->gsharedvt_locals_var, ptr, &ptr);
+       }
+
        return jit;
 }
 
index 9494a79f6770197ccacea4561f71a68bcf05668b..daba9e2ee1cdf81f35105014fd1b097b0bd296e0 100644 (file)
@@ -88,6 +88,8 @@ struct _MonoDebugMethodJitInfo {
        MonoDebugVarInfo *params;
        uint32_t num_locals;
        MonoDebugVarInfo *locals;
+       MonoDebugVarInfo *gsharedvt_info_var;
+       MonoDebugVarInfo *gsharedvt_locals_var;
 };
 
 struct _MonoDebugMethodAddressList {
@@ -122,6 +124,12 @@ struct _MonoDebugSourceLocation {
 /* The variable is dead. */
 #define MONO_DEBUG_VAR_ADDRESS_MODE_DEAD               0x30000000
 
+/* Same as REGOFFSET, but do an indirection */
+#define MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR            0x40000000
+
+/* gsharedvt local */
+#define MONO_DEBUG_VAR_ADDRESS_MODE_GSHAREDVT_LOCAL            0x50000000
+
 struct _MonoDebugVarInfo {
        uint32_t index;
        uint32_t offset;
index 6cee6415259bddbf97127c6dbf933e01494e6b7d..343b97194a2144e4bb4104c6cc07f03014af20ab 100644 (file)
@@ -14,19 +14,6 @@ typedef union {
        unsigned char cval [8];
 } mono_rdouble;
 
-#ifdef ARM_FPU_FPA
-#define MONO_DOUBLE_ASSERT_ENDIANITY(dbl_ptr) \
-       do { \
-               mono_rdouble r; \
-               r.fval = *dbl_ptr;      \
-               r.ival = (guint64) *((guint32 *) r.cval) << 32 |        \
-                               *((guint32 *) (r.cval + 4));    \
-               *dbl_ptr = r.fval;      \
-       } while (0)
-#else
-#define MONO_DOUBLE_ASSERT_ENDIANITY(dbl_ptr)
-#endif
-
 #if NO_UNALIGNED_ACCESS
 
 guint16 mono_read16 (const unsigned char *x);
@@ -56,7 +43,6 @@ guint64 mono_read64 (const unsigned char *x);
        do {    \
                mono_rdouble mf;        \
                mf.ival = read64 ((x)); \
-               MONO_DOUBLE_ASSERT_ENDIANITY (&mf.fval);        \
                *(dest) = mf.fval;      \
        } while (0)
 
index 700cd9e498abc011709e879426d4189357fb14bf..ec72516a2b394f8fc4db25163ad9a6354000bbf7 100644 (file)
@@ -38,6 +38,7 @@
 #include "utils/mono-proclib.h"
 #include "utils/mono-networkinterfaces.h"
 #include "utils/mono-error-internals.h"
+#include "utils/atomic.h"
 #include <mono/io-layer/io-layer.h>
 
 /* map of CounterSample.cs */
index 0cfec34e1424db8ab2408e320de71f161593f5dd..157b529fe9bcefc159684ec955de792f8c3e9fcf 100644 (file)
@@ -13,6 +13,7 @@
 #include <mono/metadata/mono-wsq.h>
 #include <mono/utils/mono-semaphore.h>
 #include <mono/utils/mono-tls.h>
+#include <mono/utils/atomic.h>
 
 #define INITIAL_LENGTH 32
 #define WSQ_DEBUG(...)
index 83494def459eb6b950edf09339c7466e8d4ff56f..e7fcb2d03b407e68d84dea83dc51469ee32bddb2 100644 (file)
@@ -1,16 +1,81 @@
-
 #if defined(__native_client__)
 
-#ifdef HAVE_CONFIG_H
-#include <config.h>
+#include "nacl-stub.h"
+
+struct group *getgrnam(const char *name)
+{
+       return NULL;
+}
+
+struct group *getgrgid(gid_t gid)
+{
+       errno = EIO;
+       return NULL;
+}
+
+int fsync(int fd)
+{
+       errno = EINVAL;
+       return -1;
+}
+
+#ifdef USE_NEWLIB
+dev_t makedev(int maj, int min)
+{
+       return (maj)*256+(min);
+}
+
+int utime(const char *filename, const void *times)
+{
+       errno = EACCES;
+       return -1;
+}
+
+int kill(pid_t pid, int sig)
+{
+       errno = EACCES;
+       return -1;
+}
+
+int getrusage(int who, void *usage)
+{
+       errno = EACCES;
+       return -1;
+}
+
+int lstat(const char *path, struct stat *buf)
+{
+       return stat (path, buf);
+}
+
+int getdtablesize(void)
+{
+#ifdef OPEN_MAX
+  return OPEN_MAX;
+#else
+  return 256;
+#endif
+}
+
+size_t getpagesize(void)
+{
+#ifdef PAGE_SIZE
+  return PAGE_SIZE;
+#else
+  return 4096;
+#endif
+}
+
+int sem_trywait(sem_t *sem) {
+  g_assert_not_reached ();
+  return -1;
+}
+
+int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout) {
+  g_assert_not_reached ();
+  return -1;
+}
+
 #endif
-#include <eglib/src/glib.h>
-#include <errno.h>
-#include <sys/types.h>
-
-struct group *getgrnam(const char *name) { return NULL; }
-struct group *getgrgid(gid_t gid) { errno=EIO; return NULL; }
-int fsync(int fd) { errno=EINVAL; return -1; }
-dev_t makedev(guint32 maj, guint32 min) { return (maj)*256+(min); }
 
 #endif
index 4d48eb50adc2f72ede553b7a8d1518908fd1e073..13446ee0ecd627f90e82238d4401d33bcb8e0bdb 100644 (file)
@@ -11,6 +11,7 @@
 #include <mono/metadata/mono-gc.h>
 #include <mono/metadata/gc-internal.h>
 #include <mono/metadata/runtime.h>
+#include <mono/utils/mono-threads.h>
 
 #ifdef HAVE_NULL_GC
 
@@ -22,6 +23,8 @@ mono_gc_base_init (void)
        memset (&cb, 0, sizeof (cb));
        cb.mono_method_is_critical = mono_runtime_is_critical_method;
        cb.mono_gc_pthread_create = (gpointer)mono_gc_pthread_create;
+
+       mono_threads_init (&cb, sizeof (MonoThreadInfo));
 }
 
 void
@@ -215,13 +218,13 @@ mono_gc_is_critical_method (MonoMethod *method)
 }
 
 MonoMethod*
-mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box)
+mono_gc_get_managed_allocator (MonoClass *klass, gboolean for_box)
 {
        return NULL;
 }
 
 MonoMethod*
-mono_gc_get_managed_array_allocator (MonoVTable *vtable, int rank)
+mono_gc_get_managed_array_allocator (MonoClass *klass)
 {
        return NULL;
 }
index 6c64c8e56a13b78cbae09e3d0d49f8608f7c148d..f66d147a88e9baee6fc21fa2941455cc13c4dbaf 100644 (file)
@@ -414,13 +414,13 @@ struct _MonoInternalThread {
        gpointer android_tid;
        gpointer thread_pinning_ref;
        gint32 ignore_next_signal;
+       MonoMethod *async_invoke_method;
        /* 
         * These fields are used to avoid having to increment corlib versions
         * when a new field is added to this structure.
         * Please synchronize any changes with InternalThread in Thread.cs, i.e. add the
         * same field there.
         */
-       gpointer unused0;
        gpointer unused1;
        gpointer unused2;
 };
@@ -578,12 +578,14 @@ typedef struct {
 } MonoRuntimeCallbacks;
 
 typedef gboolean (*MonoInternalStackWalk) (MonoStackFrameInfo *frame, MonoContext *ctx, gpointer data);
+typedef gboolean (*MonoInternalExceptionFrameWalk) (MonoMethod *method, gpointer ip, size_t native_offset, gboolean managed, gpointer user_data);
 
 typedef struct {
        void (*mono_walk_stack_with_ctx) (MonoInternalStackWalk func, MonoContext *ctx, MonoUnwindOptions options, void *user_data);
        void (*mono_walk_stack_with_state) (MonoInternalStackWalk func, MonoThreadUnwindState *state, MonoUnwindOptions options, void *user_data);
        void (*mono_raise_exception) (MonoException *ex);
        void (*mono_raise_exception_with_ctx) (MonoException *ex, MonoContext *ctx);
+       gboolean (*mono_exception_walk_trace) (MonoException *ex, MonoInternalExceptionFrameWalk func, gpointer user_data);
        gboolean (*mono_install_handler_block_guard) (MonoThreadUnwindState *unwind_state);
 } MonoRuntimeExceptionHandlingCallbacks;
 
@@ -1603,6 +1605,9 @@ mono_exception_get_native_backtrace (MonoException *exc) MONO_INTERNAL;
 MonoString *
 ves_icall_Mono_Runtime_GetNativeStackTrace (MonoException *exc) MONO_INTERNAL;
 
+char *
+mono_exception_get_managed_backtrace (MonoException *exc) MONO_INTERNAL;
+
 #endif /* __MONO_OBJECT_INTERNALS_H__ */
 
 
index c5ffe7f0cbe61a4cf2f23123ee9be3f5c526fad2..dec04e059cf71c8980dcb2b8d77f57f0f4faa8e7 100644 (file)
@@ -2171,7 +2171,7 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
        mono_loader_unlock ();
 
        /* Initialization is now complete, we can throw if the InheritanceDemand aren't satisfied */
-       if (mono_is_security_manager_active () && (class->exception_type == MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND) && raise_on_error)
+       if (mono_security_enabled () && (class->exception_type == MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND) && raise_on_error)
                mono_raise_exception (mono_class_get_exception_for_failure (class));
 
        /* make sure the parent is initialized */
@@ -2627,7 +2627,7 @@ mono_remote_class_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mon
                type = ((MonoReflectionType *)rp->class_to_proxy)->type;
                klass = mono_class_from_mono_type (type);
 #ifndef DISABLE_COMf
-               if ((mono_class_is_com_object (klass) || (mono_defaults.com_object_class && klass == mono_defaults.com_object_class)) && !mono_vtable_is_remote (mono_class_vtable (mono_domain_get (), klass)))
+               if ((mono_class_is_com_object (klass) || (mono_class_get_com_object_class () && klass == mono_class_get_com_object_class ())) && !mono_vtable_is_remote (mono_class_vtable (mono_domain_get (), klass)))
                        remote_class->default_vtable = mono_class_proxy_vtable (domain, remote_class, MONO_REMOTING_TARGET_COMINTEROP);
                else
 #endif
@@ -2750,7 +2750,7 @@ mono_object_get_virtual_method (MonoObject *obj, MonoMethod *method)
                        res = mono_marshal_get_remoting_invoke_with_check (res);
                else {
 #ifndef DISABLE_COM
-                       if (klass == mono_defaults.com_object_class || mono_class_is_com_object (klass))
+                       if (klass == mono_class_get_com_object_class () || mono_class_is_com_object (klass))
                                res = mono_cominterop_get_invoke (res);
                        else
 #endif
@@ -3178,14 +3178,7 @@ mono_field_get_value_object (MonoDomain *domain, MonoClassField *field, MonoObje
                is_static = TRUE;
 
                if (!is_literal) {
-                       vtable = mono_class_vtable (domain, field->parent);
-                       if (!vtable) {
-                               char *name = mono_type_get_full_name (field->parent);
-                               /*FIXME extend this to use the MonoError api*/
-                               g_warning ("Could not retrieve the vtable for type %s in mono_field_get_value_object", name);
-                               g_free (name);
-                               return NULL;
-                       }
+                       vtable = mono_class_vtable_full (domain, field->parent, TRUE);
                        if (!vtable->initialized)
                                mono_runtime_class_init (vtable);
                }
@@ -6094,7 +6087,15 @@ mono_print_unhandled_exception (MonoObject *exc)
                        MonoObject *other_exc = NULL;
                        str = mono_object_to_string (exc, &other_exc);
                        if (other_exc) {
-                               message = g_strdup ("Nested exception, bailing out");
+                               char *original_backtrace = mono_exception_get_managed_backtrace ((MonoException*)exc);
+                               char *nested_backtrace = mono_exception_get_managed_backtrace ((MonoException*)other_exc);
+                               
+                               message = g_strdup_printf ("Nested exception detected.\nOriginal Exception: %s\nNested exception:%s\n",
+                                       original_backtrace, nested_backtrace);
+
+                               g_free (original_backtrace);
+                               g_free (nested_backtrace);
+                               free_message = TRUE;
                        } else if (str) {
                                message = mono_string_to_utf8_checked (str, &error);
                                if (!mono_error_ok (&error)) {
index ee7af61a57a81ff7d451ae04addf5cc6d6beecc5..496c3c7f5ff9e66909157c08f3c7dd0a5c381ce6 100644 (file)
@@ -454,6 +454,7 @@ verify_image_file (const char *fname)
        assembly->in_gac = FALSE;
        assembly->image = image;
        image->assembly = assembly;
+       mono_assembly_fill_assembly_name (image, &assembly->aname);
 
        /*Finish initializing the runtime*/
        mono_install_assembly_load_hook (pedump_assembly_load_hook, NULL);
index 97b264b6a31bdd7d17025754557a160bc7d6e630..4ed1203f85df3390b9d75bd5c597ec955c0c6dea 100644 (file)
@@ -182,6 +182,8 @@ ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_RngClose (gpoint
 
 #elif defined (__native_client__)
 
+#include <time.h>
+
 MonoBoolean
 ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_RngOpen (void)
 {
index 50f5d2cb2d8053c971ea8e900632edc5d5fb94d6..c2ff521e3b055736c0d79f2a541d025f12de4b6e 100644 (file)
@@ -1753,13 +1753,7 @@ encode_constant (MonoDynamicImage *assembly, MonoObject *val, guint32 *ret_type)
        char *p, *box_val;
        char* buf;
        guint32 idx = 0, len = 0, dummy = 0;
-#ifdef ARM_FPU_FPA
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-       guint32 fpa_double [2];
-       guint32 *fpa_p;
-#endif
-#endif
-       
+
        p = buf = g_malloc (64);
        if (!val) {
                *ret_type = MONO_TYPE_CLASS;
@@ -1792,14 +1786,6 @@ handle_enum:
                break;
        case MONO_TYPE_R8:
                len = 8;
-#ifdef ARM_FPU_FPA
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-               fpa_p = (guint32*)box_val;
-               fpa_double [0] = fpa_p [1];
-               fpa_double [1] = fpa_p [0];
-               box_val = (char*)fpa_double;
-#endif
-#endif
                break;
        case MONO_TYPE_VALUETYPE: {
                MonoClass *klass = val->vtable->klass;
@@ -9398,18 +9384,7 @@ handle_enum:
                p += 4;
                break;
        case MONO_TYPE_R8:
-#if defined(ARM_FPU_FPA) && G_BYTE_ORDER == G_LITTLE_ENDIAN
-               p [0] = argval [4];
-               p [1] = argval [5];
-               p [2] = argval [6];
-               p [3] = argval [7];
-               p [4] = argval [0];
-               p [5] = argval [1];
-               p [6] = argval [2];
-               p [7] = argval [3];
-#else
                swap_with_size (p, argval, 8, 1);
-#endif
                p += 8;
                break;
        case MONO_TYPE_U8:
@@ -11570,7 +11545,7 @@ mono_reflection_create_dynamic_method (MonoReflectionDynamicMethod *mb)
                        ref = resolve_object (mb->module->image, obj, &handle_class, NULL);
                        if (!ref)
                                ex = mono_get_exception_type_load (NULL, NULL);
-                       else if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
+                       else if (mono_security_core_clr_enabled ())
                                ex = mono_security_core_clr_ensure_dynamic_method_resolved_object (ref, handle_class);
 
                        if (ex) {
index ed32066b8dc1e1f2e6493efa075786db69799c5d..7b14f436536eb13fb0b509a6c2645ccd816bcda8 100644 (file)
 #include <mono/metadata/runtime.h>
 #include <mono/metadata/monitor.h>
 #include <mono/metadata/threads-types.h>
+#include <mono/metadata/threadpool.h>
+#include <mono/metadata/marshal.h>
+#include <mono/utils/atomic.h>
+
+static gboolean shutting_down_inited = FALSE;
+static gboolean shutting_down = FALSE;
+
+/** 
+ * mono_runtime_set_shutting_down:
+ *
+ * Invoked by System.Environment.Exit to flag that the runtime
+ * is shutting down.
+ *
+ * Deprecated. This function can break the shutdown sequence.
+ */
+void
+mono_runtime_set_shutting_down (void)
+{
+       shutting_down = TRUE;
+}
+
+/**
+ * mono_runtime_is_shutting_down:
+ *
+ * Returns whether the runtime has been flagged for shutdown.
+ *
+ * This is consumed by the P:System.Environment.HasShutdownStarted
+ * property.
+ *
+ */
+gboolean
+mono_runtime_is_shutting_down (void)
+{
+       return shutting_down;
+}
 
 static void
 fire_process_exit_event (MonoDomain *domain, gpointer user_data)
@@ -45,22 +80,39 @@ mono_runtime_fire_process_exit_event (void)
 #endif
 }
 
-/*
-Initialize runtime shutdown.
-After this call completes the thread pool will stop accepting new jobs and
 
-*/
-void
-mono_runtime_shutdown (void)
+/*
+ * Try to initialize runtime shutdown.
+ * After this call completes the thread pool will stop accepting new jobs and no further threads will be created.
+ *
+ * @return true if shutdown was initiated by this call or false is other thread beat this one
+ */
+gboolean
+mono_runtime_try_shutdown (void)
 {
+       if (InterlockedCompareExchange (&shutting_down_inited, TRUE, FALSE))
+               return FALSE;
+
        mono_runtime_fire_process_exit_event ();
 
+       shutting_down = TRUE;
+
        mono_threads_set_shutting_down ();
 
        /* No new threads will be created after this point */
 
        mono_runtime_set_shutting_down ();
 
+       /* This will kill the tp threads which cannot be suspended */
+       mono_thread_pool_cleanup ();
+
+       /*TODO move the follow to here:
+       mono_thread_suspend_all_other_threads (); OR  mono_thread_wait_all_other_threads
+
+       mono_runtime_quit ();
+       */
+
+       return TRUE;
 }
 
 
@@ -71,3 +123,17 @@ mono_runtime_is_critical_method (MonoMethod *method)
                return TRUE;
        return FALSE;
 }
+
+/*
+Coordinate the creation of all remaining TLS slots in the runtime.
+No further TLS slots should be created after this function finishes.
+This restriction exists because AOT requires offsets to be constant
+across runs.
+*/
+void
+mono_runtime_init_tls (void)
+{
+       mono_marshal_init_tls ();
+       mono_thread_pool_init_tls ();
+       mono_thread_init_tls ();
+}
index 086b51a12cb85b99ad6118e34ebac3ff933d872c..83f17b7d33ec5ea767724f8f72af6d5ea1298960 100644 (file)
@@ -15,8 +15,9 @@
 MONO_BEGIN_DECLS
 
 gboolean mono_runtime_is_critical_method (MonoMethod *method) MONO_INTERNAL;
-void mono_runtime_shutdown (void) MONO_INTERNAL;
+gboolean mono_runtime_try_shutdown (void) MONO_INTERNAL;
 
+void mono_runtime_init_tls (void) MONO_INTERNAL;
 MONO_END_DECLS
 
 #endif /* _MONO_METADATA_RUNTIME_H_ */
index 0e165611a5363fea05698cf692d831e6b2d7e2b9..1be63ffc2240dbfcce52661320765620449a384d 100644 (file)
 
 gboolean mono_security_core_clr_test = FALSE;
 
+static MonoSecurityCoreCLROptions security_core_clr_options = MONO_SECURITY_CORE_CLR_OPTIONS_DEFAULT;
+
+/**
+ * mono_security_core_clr_set_options:
+ * @options: the new options for the coreclr system to use
+ *
+ * By default, the CoreCLRs security model forbids execution trough reflection of methods not visible from the calling code.
+ * Even if the method being called is not in a platform assembly. For non moonlight CoreCLR users this restriction does not
+ * make a lot of sense, since the author could have just changed the non platform assembly to allow the method to be called.
+ * This function allows specific relaxations from the default behaviour to be set.
+ *
+ * Use MONO_SECURITY_CORE_CLR_OPTIONS_DEFAULT for the default coreclr coreclr behaviour as used in Moonlight.
+ *
+ * Use MONO_SECURITY_CORE_CLR_OPTIONS_RELAX_REFLECTION to allow transparent code to execute methods and access 
+ * fields that are not in platformcode, even if those methods and fields are private or otherwise not visible to the calling code.
+ *
+ * Use MONO_SECURITY_CORE_CLR_OPTIONS_RELAX_DELEGATE to allow delegates to be created that point at methods that are not in
+ * platformcode even if those methods and fields are private or otherwise not visible to the calling code.
+ *
+ */
+void
+mono_security_core_clr_set_options (MonoSecurityCoreCLROptions options) {
+       security_core_clr_options = options;
+}
+
+/**
+ * mono_security_core_clr_get_options:
+ *
+ * Retrieves the current options used by the coreclr system.
+ */
+
+MonoSecurityCoreCLROptions
+mono_security_core_clr_get_options ()
+{
+       return security_core_clr_options;
+}
+
+/*
+ * default_platform_check:
+ *
+ *     Default platform check. Always TRUE for current corlib (minimum 
+ *     trust-able subset) otherwise return FALSE. Any real CoreCLR host
+ *     should provide its own callback to define platform code (i.e.
+ *     this default is meant for test only).
+ */
+static gboolean
+default_platform_check (const char *image_name)
+{
+       if (mono_defaults.corlib) {
+               return (strcmp (mono_defaults.corlib->name, image_name) == 0);
+       } else {
+               /* this can get called even before we load corlib (e.g. the EXE itself) */
+               const char *corlib = "mscorlib.dll";
+               int ilen = strlen (image_name);
+               int clen = strlen (corlib);
+               return ((ilen >= clen) && (strcmp ("mscorlib.dll", image_name + ilen - clen) == 0));
+       }
+}
+
+static MonoCoreClrPlatformCB platform_callback = default_platform_check;
+
+/*
+ * mono_security_core_clr_determine_platform_image:
+ *
+ *  Call the supplied callback (from mono_security_set_core_clr_platform_callback) 
+ *  to determine if this image represents platform code.
+ */
+gboolean
+mono_security_core_clr_determine_platform_image (MonoImage *image)
+{
+       return platform_callback (image->name);
+}
+
+/*
+ * mono_security_set_core_clr_platform_callback:
+ *
+ *  Set the callback function that will be used to determine if an image
+ *  is part, or not, of the platform code.
+ */
+void
+mono_security_set_core_clr_platform_callback (MonoCoreClrPlatformCB callback)
+{
+       platform_callback = callback;
+}
+
+/*
+ * mono_security_core_clr_is_platform_image:
+ *
+ *   Return the (cached) boolean value indicating if this image represent platform code
+ */
+gboolean
+mono_security_core_clr_is_platform_image (MonoImage *image)
+{
+       return image->core_clr_platform_code;
+}
+
+/* Note: The above functions are outside this guard so that the public API isn't affected. */
+
+#ifndef DISABLE_SECURITY
+
 static MonoClass*
 security_critical_attribute (void)
 {
@@ -409,45 +509,6 @@ mono_security_core_clr_require_elevated_permissions (void)
 }
 
 
-static MonoSecurityCoreCLROptions security_core_clr_options = MONO_SECURITY_CORE_CLR_OPTIONS_DEFAULT;
-
-/**
- * mono_security_core_clr_set_options:
- * @options: the new options for the coreclr system to use
- *
- * By default, the CoreCLRs security model forbids execution trough reflection of methods not visible from the calling code.
- * Even if the method being called is not in a platform assembly. For non moonlight CoreCLR users this restriction does not
- * make a lot of sense, since the author could have just changed the non platform assembly to allow the method to be called.
- * This function allows specific relaxations from the default behaviour to be set.
- *
- * Use MONO_SECURITY_CORE_CLR_OPTIONS_DEFAULT for the default coreclr coreclr behaviour as used in Moonlight.
- *
- * Use MONO_SECURITY_CORE_CLR_OPTIONS_RELAX_REFLECTION to allow transparent code to execute methods and access 
- * fields that are not in platformcode, even if those methods and fields are private or otherwise not visible to the calling code.
- *
- * Use MONO_SECURITY_CORE_CLR_OPTIONS_RELAX_DELEGATE to allow delegates to be created that point at methods that are not in
- * platformcode even if those methods and fields are private or otherwise not visible to the calling code.
- *
- */
-
-void 
-mono_security_core_clr_set_options (MonoSecurityCoreCLROptions options) {
-       security_core_clr_options = options;
-}
-
-/**
- * mono_security_core_clr_get_options:
- *
- * Retrieves the current options used by the coreclr system.
- */
-
-MonoSecurityCoreCLROptions
-mono_security_core_clr_get_options ()
-{
-       return security_core_clr_options;
-}
-
-
 /*
  * check_field_access:
  *
@@ -934,73 +995,90 @@ mono_security_core_clr_method_level (MonoMethod *method, gboolean with_class_lev
 }
 
 /*
- * mono_security_core_clr_is_platform_image:
+ * mono_security_enable_core_clr:
  *
- *   Return the (cached) boolean value indicating if this image represent platform code
+ *   Enable the verifier and the CoreCLR security model
  */
-gboolean
-mono_security_core_clr_is_platform_image (MonoImage *image)
+void
+mono_security_enable_core_clr ()
 {
-       return image->core_clr_platform_code;
+       mono_verifier_set_mode (MONO_VERIFIER_MODE_VERIFIABLE);
+       mono_security_set_mode (MONO_SECURITY_MODE_CORE_CLR);
 }
 
-/*
- * default_platform_check:
- *
- *     Default platform check. Always TRUE for current corlib (minimum 
- *     trust-able subset) otherwise return FALSE. Any real CoreCLR host
- *     should provide its own callback to define platform code (i.e.
- *     this default is meant for test only).
- */
-static gboolean
-default_platform_check (const char *image_name)
+#else
+
+void
+mono_security_core_clr_check_inheritance (MonoClass *class)
 {
-       if (mono_defaults.corlib) {
-               return (strcmp (mono_defaults.corlib->name, image_name) == 0);
-       } else {
-               /* this can get called even before we load corlib (e.g. the EXE itself) */
-               const char *corlib = "mscorlib.dll";
-               int ilen = strlen (image_name);
-               int clen = strlen (corlib);
-               return ((ilen >= clen) && (strcmp ("mscorlib.dll", image_name + ilen - clen) == 0));
-       }
 }
 
-static MonoCoreClrPlatformCB platform_callback = default_platform_check;
+void
+mono_security_core_clr_check_override (MonoClass *class, MonoMethod *override, MonoMethod *base)
+{
+}
 
-/*
- * mono_security_core_clr_determine_platform_image:
- *
- *     Call the supplied callback (from mono_security_set_core_clr_platform_callback) 
- *     to determine if this image represents platform code.
- */
 gboolean
-mono_security_core_clr_determine_platform_image (MonoImage *image)
+mono_security_core_clr_require_elevated_permissions (void)
 {
-       return platform_callback (image->name);
+       return FALSE;
 }
 
-/*
- * mono_security_enable_core_clr:
- *
- *   Enable the verifier and the CoreCLR security model
- */
 void
-mono_security_enable_core_clr ()
+mono_security_core_clr_ensure_reflection_access_field (MonoClassField *field)
 {
-       mono_verifier_set_mode (MONO_VERIFIER_MODE_VERIFIABLE);
-       mono_security_set_mode (MONO_SECURITY_MODE_CORE_CLR);
 }
 
-/*
- * mono_security_set_core_clr_platform_callback:
- *
- *     Set the callback function that will be used to determine if an image
- *     is part, or not, of the platform code.
- */
 void
-mono_security_set_core_clr_platform_callback (MonoCoreClrPlatformCB callback)
+mono_security_core_clr_ensure_reflection_access_method (MonoMethod *method)
+{
+}
+
+gboolean
+mono_security_core_clr_ensure_delegate_creation (MonoMethod *method, gboolean throwOnBindFailure)
+{
+       return TRUE;
+}
+
+MonoException*
+mono_security_core_clr_ensure_dynamic_method_resolved_object (gpointer ref, MonoClass *handle_class)
+{
+       return NULL;
+}
+
+gboolean
+mono_security_core_clr_can_access_internals (MonoImage *accessing, MonoImage* accessed)
+{
+       return TRUE;
+}
+
+MonoException*
+mono_security_core_clr_is_field_access_allowed (MonoMethod *caller, MonoClassField *field)
+{
+       return NULL;
+}
+
+MonoException*
+mono_security_core_clr_is_call_allowed (MonoMethod *caller, MonoMethod *callee)
+{
+       return NULL;
+}
+
+MonoSecurityCoreCLRLevel
+mono_security_core_clr_class_level (MonoClass *class)
+{
+       return MONO_SECURITY_CORE_CLR_TRANSPARENT;
+}
+
+MonoSecurityCoreCLRLevel
+mono_security_core_clr_method_level (MonoMethod *method, gboolean with_class_level)
+{
+       return MONO_SECURITY_CORE_CLR_TRANSPARENT;
+}
+
+void
+mono_security_enable_core_clr ()
 {
-       platform_callback = callback;
 }
 
+#endif /* DISABLE_SECURITY */
index cab10abf6f11d9834e9c628c375e6f08eb8aa00d..9aec02998bc7334502880d57a1dc3c7d2d5a83f8 100644 (file)
@@ -9,17 +9,10 @@
 
 #include "security-manager.h"
 
-
-/* Internal stuff */
-
-static MonoSecurityManager secman;
+static MonoSecurityMode mono_security_mode = MONO_SECURITY_MODE_NONE;
 static MonoBoolean mono_security_manager_activated = FALSE;
 static MonoBoolean mono_security_manager_enabled = TRUE;
 static MonoBoolean mono_security_manager_execution = TRUE;
-static MonoSecurityMode mono_security_mode = MONO_SECURITY_MODE_NONE;
-
-
-/* Public stuff */
 
 void
 mono_security_set_mode (MonoSecurityMode mode)
@@ -33,6 +26,26 @@ mono_security_get_mode (void)
        return mono_security_mode;
 }
 
+/*
+ * Note: The security manager is activate once when executing the Mono. This 
+ * is not meant to be a turn on/off runtime switch.
+ */
+void
+mono_activate_security_manager (void)
+{
+       mono_security_manager_activated = TRUE;
+}
+
+gboolean
+mono_is_security_manager_active (void)
+{
+       return mono_security_manager_activated;
+}
+
+#ifndef DISABLE_SECURITY
+
+static MonoSecurityManager secman;
+
 MonoSecurityManager*
 mono_security_manager_get_methods (void)
 {
@@ -160,23 +173,26 @@ mono_secman_inheritancedemand_method (MonoMethod *override, MonoMethod *base)
        }
 }
 
+#else
+
+MonoSecurityManager*
+mono_security_manager_get_methods (void)
+{
+       return NULL;
+}
 
-/*
- * Note: The security manager is activate once when executing the Mono. This 
- * is not meant to be a turn on/off runtime switch.
- */
 void
-mono_activate_security_manager (void)
+mono_secman_inheritancedemand_class (MonoClass *klass, MonoClass *parent)
 {
-       mono_security_manager_activated = TRUE;
 }
 
-gboolean
-mono_is_security_manager_active (void)
+void
+mono_secman_inheritancedemand_method (MonoMethod *override, MonoMethod *base)
 {
-       return mono_security_manager_activated;
 }
 
+#endif /* DISABLE_SECURITY */
+
 /*
  * @publickey  An encoded (with header) public key
  * @size       The length of the public key
index 2548eed80dff826f4736ac48c82c2fb7d66def9a..747f61723b397f08a6c23d58e32335e7bcfe1bc5 100644 (file)
@@ -63,17 +63,18 @@ typedef struct {
        MonoClass *suppressunmanagedcodesecurity;       /* System.Security.SuppressUnmanagedCodeSecurityAttribute */
 } MonoSecurityManager;
 
-/* Initialization/utility functions */
-void mono_activate_security_manager (void) MONO_INTERNAL;
-gboolean mono_is_security_manager_active (void) MONO_INTERNAL;
-MonoSecurityManager* mono_security_manager_get_methods (void) MONO_INTERNAL;
 gboolean mono_is_ecma_key (const char *publickey, int size) MONO_INTERNAL;
 MonoMethod* mono_get_context_capture_method (void) MONO_INTERNAL;
 
 void mono_secman_inheritancedemand_class (MonoClass *klass, MonoClass *parent) MONO_INTERNAL;
 void mono_secman_inheritancedemand_method (MonoMethod *override, MonoMethod *base) MONO_INTERNAL;
 
+/* Initialization/utility functions */
+void mono_activate_security_manager (void) MONO_INTERNAL;
+MonoSecurityManager* mono_security_manager_get_methods (void) MONO_INTERNAL;
+
 /* Security mode */
+gboolean mono_is_security_manager_active (void) MONO_INTERNAL;
 void mono_security_set_mode (MonoSecurityMode mode) MONO_INTERNAL;
 MonoSecurityMode mono_security_get_mode (void) MONO_INTERNAL;
 
@@ -84,5 +85,16 @@ MonoBoolean ves_icall_System_Security_SecurityManager_get_CheckExecutionRights (
 void ves_icall_System_Security_SecurityManager_set_CheckExecutionRights (MonoBoolean value) MONO_INTERNAL;
 MonoBoolean ves_icall_System_Security_SecurityManager_GetLinkDemandSecurity (MonoReflectionMethod *m, MonoDeclSecurityActions *kactions, MonoDeclSecurityActions *mactions) MONO_INTERNAL;
 
+#ifndef DISABLE_SECURITY
+#define mono_security_enabled() (mono_is_security_manager_active ())
+#define mono_security_cas_enabled() (mono_security_get_mode () == MONO_SECURITY_MODE_CAS)
+#define mono_security_core_clr_enabled() (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
+#define mono_security_smcs_hack_enabled() (mono_security_get_mode () == MONO_SECURITY_MODE_SMCS_HACK)
+#else
+#define mono_security_enabled() (FALSE)
+#define mono_security_cas_enabled() (FALSE)
+#define mono_security_core_clr_enabled() (FALSE)
+#define mono_security_smcs_hack_enabled() (FALSE)
+#endif
 
 #endif /* _MONO_METADATA_SECURITY_MANAGER_H_ */
index 55cd85bc75b084f63ec8caa3c40f9e1aaf15d814..4f4ffb18e6e00ab10ea9dd1c545a9d2dd65a3ff5 100644 (file)
@@ -347,6 +347,7 @@ mono_gc_try_alloc_obj_nolock (MonoVTable *vtable, size_t size)
        TLAB_ACCESS_INIT;
 
        size = ALIGN_UP (size);
+       SGEN_ASSERT (9, size >= sizeof (MonoObject), "Object too small");
 
        g_assert (vtable->gc_descr);
        if (size > SGEN_MAX_SMALL_OBJ_SIZE)
@@ -434,6 +435,24 @@ mono_gc_alloc_obj (MonoVTable *vtable, size_t size)
        void *res;
 #ifndef DISABLE_CRITICAL_REGION
        TLAB_ACCESS_INIT;
+
+       if (G_UNLIKELY (has_per_allocation_action)) {
+               static int alloc_count;
+               int current_alloc = InterlockedIncrement (&alloc_count);
+
+               if (verify_before_allocs) {
+                       if ((current_alloc % verify_before_allocs) == 0)
+                               sgen_check_whole_heap_stw ();
+               }
+               if (collect_before_allocs) {
+                       if (((current_alloc % collect_before_allocs) == 0) && nursery_section) {
+                               LOCK_GC;
+                               sgen_perform_collection (0, GENERATION_NURSERY, "collect-before-alloc-triggered", TRUE);
+                               UNLOCK_GC;
+                       }
+               }
+       }
+
        ENTER_CRITICAL_REGION;
        res = mono_gc_try_alloc_obj_nolock (vtable, size);
        if (res) {
@@ -692,6 +711,7 @@ create_allocator (int atype)
        if (!registered) {
                mono_register_jit_icall (mono_gc_alloc_obj, "mono_gc_alloc_obj", mono_create_icall_signature ("object ptr int"), FALSE);
                mono_register_jit_icall (mono_gc_alloc_vector, "mono_gc_alloc_vector", mono_create_icall_signature ("object ptr int int"), FALSE);
+               mono_register_jit_icall (mono_gc_alloc_string, "mono_gc_alloc_string", mono_create_icall_signature ("object ptr int int32"), FALSE);
                registered = TRUE;
        }
 
@@ -704,14 +724,23 @@ create_allocator (int atype)
        } else if (atype == ATYPE_VECTOR) {
                num_params = 2;
                name = "AllocVector";
+       } else if (atype == ATYPE_STRING) {
+               num_params = 2;
+               name = "AllocString";
        } else {
                g_assert_not_reached ();
        }
 
        csig = mono_metadata_signature_alloc (mono_defaults.corlib, num_params);
-       csig->ret = &mono_defaults.object_class->byval_arg;
-       for (i = 0; i < num_params; ++i)
-               csig->params [i] = &mono_defaults.int_class->byval_arg;
+       if (atype == ATYPE_STRING) {
+               csig->ret = &mono_defaults.string_class->byval_arg;
+               csig->params [0] = &mono_defaults.int_class->byval_arg;
+               csig->params [1] = &mono_defaults.int32_class->byval_arg;
+       } else {
+               csig->ret = &mono_defaults.object_class->byval_arg;
+               for (i = 0; i < num_params; ++i)
+                       csig->params [i] = &mono_defaults.int_class->byval_arg;
+       }
 
        mb = mono_mb_new (mono_defaults.object_class, name, MONO_WRAPPER_ALLOC);
 
@@ -785,6 +814,16 @@ create_allocator (int atype)
                mono_mb_set_clauses (mb, 1, clause);
                mono_mb_patch_branch (mb, pos_leave);
                /* end catch */
+       } else if (atype == ATYPE_STRING) {
+               /* a string allocator method takes the args: (vtable, len) */
+               /* bytes = (sizeof (MonoString) + ((len + 1) * 2)); */
+               mono_mb_emit_ldarg (mb, 1);
+               mono_mb_emit_icon (mb, 1);
+               mono_mb_emit_byte (mb, MONO_CEE_SHL);
+               //WE manually fold the above + 2 here
+               mono_mb_emit_icon (mb, sizeof (MonoString) + 2);
+               mono_mb_emit_byte (mb, CEE_ADD);
+               mono_mb_emit_stloc (mb, size_var);
        } else {
                g_assert_not_reached ();
        }
@@ -849,6 +888,9 @@ create_allocator (int atype)
        } else if (atype == ATYPE_VECTOR) {
                mono_mb_emit_ldarg (mb, 1);
                mono_mb_emit_icall (mb, mono_gc_alloc_vector);
+       } else if (atype == ATYPE_STRING) {
+               mono_mb_emit_ldarg (mb, 1);
+               mono_mb_emit_icall (mb, mono_gc_alloc_string);
        } else {
                g_assert_not_reached ();
        }
@@ -883,6 +925,22 @@ create_allocator (int atype)
 #else
                mono_mb_emit_byte (mb, CEE_STIND_I4);
 #endif
+       } else  if (atype == ATYPE_STRING) {
+               /* need to set length and clear the last char */
+               /* s->length = len; */
+               mono_mb_emit_ldloc (mb, p_var);
+               mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoString, length));
+               mono_mb_emit_byte (mb, MONO_CEE_ADD);
+               mono_mb_emit_ldarg (mb, 1);
+               mono_mb_emit_byte (mb, MONO_CEE_STIND_I4);
+               /* s->chars [len] = 0; */
+               mono_mb_emit_ldloc (mb, p_var);
+               mono_mb_emit_ldloc (mb, size_var);
+               mono_mb_emit_icon (mb, 2);
+               mono_mb_emit_byte (mb, MONO_CEE_SUB);
+               mono_mb_emit_byte (mb, MONO_CEE_ADD);
+               mono_mb_emit_icon (mb, 0);
+               mono_mb_emit_byte (mb, MONO_CEE_STIND_I2);
        }
 
        /*
@@ -915,10 +973,9 @@ create_allocator (int atype)
  *     object allocate (MonoVTable *vtable)
  */
 MonoMethod*
-mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box)
+mono_gc_get_managed_allocator (MonoClass *klass, gboolean for_box)
 {
 #ifdef MANAGED_ALLOCATION
-       MonoClass *klass = vtable->klass;
 
 #ifdef HAVE_KW_THREAD
        int tlab_next_offset = -1;
@@ -929,21 +986,21 @@ mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box)
        if (tlab_next_offset == -1 || tlab_temp_end_offset == -1)
                return NULL;
 #endif
-
+       if (collect_before_allocs)
+               return NULL;
        if (!mono_runtime_has_tls_get ())
                return NULL;
        if (klass->instance_size > tlab_size)
                return NULL;
+
        if (klass->has_finalize || mono_class_is_marshalbyref (klass) || (mono_profiler_get_events () & MONO_PROFILE_ALLOCATIONS))
                return NULL;
        if (klass->rank)
                return NULL;
        if (klass->byval_arg.type == MONO_TYPE_STRING)
-               return NULL;
-       if (collect_before_allocs)
-               return NULL;
-
-       if (ALIGN_TO (klass->instance_size, ALLOC_ALIGN) < MAX_SMALL_OBJ_SIZE)
+               return mono_gc_get_managed_allocator_by_type (ATYPE_STRING);
+       /* Generic classes have dynamic field and can go above MAX_SMALL_OBJ_SIZE. */
+       if (ALIGN_TO (klass->instance_size, ALLOC_ALIGN) < MAX_SMALL_OBJ_SIZE && !mono_class_is_open_constructed_type (&klass->byval_arg))
                return mono_gc_get_managed_allocator_by_type (ATYPE_SMALL);
        else
                return mono_gc_get_managed_allocator_by_type (ATYPE_NORMAL);
@@ -953,11 +1010,9 @@ mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box)
 }
 
 MonoMethod*
-mono_gc_get_managed_array_allocator (MonoVTable *vtable, int rank)
+mono_gc_get_managed_array_allocator (MonoClass *klass)
 {
 #ifdef MANAGED_ALLOCATION
-       MonoClass *klass = vtable->klass;
-
 #ifdef HAVE_KW_THREAD
        int tlab_next_offset = -1;
        int tlab_temp_end_offset = -1;
@@ -968,7 +1023,7 @@ mono_gc_get_managed_array_allocator (MonoVTable *vtable, int rank)
                return NULL;
 #endif
 
-       if (rank != 1)
+       if (klass->rank != 1)
                return NULL;
        if (!mono_runtime_has_tls_get ())
                return NULL;
index fb332822da72e7ba6f95eb226f0c2a01bbc0ccd1..40448b28696b9b1f117cae7a8ae86aa38491c07a 100644 (file)
@@ -569,8 +569,20 @@ sgen_bridge_processing_stw_step (void)
        dyn_array_int_init (&merge_array);
 
        current_time = 0;
+       /*
+       First we insert all bridges into the hash table and then we do dfs1.
+
+       It must be done in 2 steps since the bridge arrays doesn't come in reverse topological order,
+       which means that we can have entry N pointing to entry N + 1.
+
+       If we dfs1 entry N before N + 1 is registered we'll not consider N + 1 for this bridge
+       pass and not create the required xref between the two.
+       */
+       for (i = 0; i < registered_bridges.size; ++i)
+               register_bridge_object (DYN_ARRAY_PTR_REF (&registered_bridges, i));
+
        for (i = 0; i < registered_bridges.size; ++i)
-               dfs1 (register_bridge_object (DYN_ARRAY_PTR_REF (&registered_bridges, i)), NULL);
+               dfs1 (get_hash_entry (DYN_ARRAY_PTR_REF (&registered_bridges, i), NULL), NULL);
 
        SGEN_TV_GETTIME (atv);
        step_2 = SGEN_TV_ELAPSED (btv, atv);
index 949d722cc2ccac2a7f07c17cd1e23c8c86838c4a..4ce7384f1cd3cdd5b3916a7d25afc447929f2922 100644 (file)
@@ -47,6 +47,7 @@
 
 guint8 *sgen_cardtable;
 
+static gboolean need_mod_union;
 
 #ifdef HEAVY_STATISTICS
 long long marked_cards;
@@ -82,7 +83,7 @@ static void
 sgen_card_table_wbarrier_set_field (MonoObject *obj, gpointer field_ptr, MonoObject* value)
 {
        *(void**)field_ptr = value;
-       if (sgen_ptr_in_nursery (value))
+       if (need_mod_union || sgen_ptr_in_nursery (value))
                sgen_card_table_mark_address ((mword)field_ptr);
        sgen_dummy_use (value);
 }
@@ -91,7 +92,7 @@ static void
 sgen_card_table_wbarrier_set_arrayref (MonoArray *arr, gpointer slot_ptr, MonoObject* value)
 {
        *(void**)slot_ptr = value;
-       if (sgen_ptr_in_nursery (value))
+       if (need_mod_union || sgen_ptr_in_nursery (value))
                sgen_card_table_mark_address ((mword)slot_ptr);
        sgen_dummy_use (value); 
 }
@@ -111,7 +112,7 @@ sgen_card_table_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int
                for (; dest >= start; --src, --dest) {
                        gpointer value = *src;
                        *dest = value;
-                       if (sgen_ptr_in_nursery (value))
+                       if (need_mod_union || sgen_ptr_in_nursery (value))
                                sgen_card_table_mark_address ((mword)dest);
                        sgen_dummy_use (value);
                }
@@ -120,7 +121,7 @@ sgen_card_table_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int
                for (; dest < end; ++src, ++dest) {
                        gpointer value = *src;
                        *dest = value;
-                       if (sgen_ptr_in_nursery (value))
+                       if (need_mod_union || sgen_ptr_in_nursery (value))
                                sgen_card_table_mark_address ((mword)dest);
                        sgen_dummy_use (value);
                }
@@ -278,6 +279,74 @@ sgen_card_table_find_address (char *addr)
        return sgen_card_table_address_is_marked ((mword)addr);
 }
 
+static gboolean
+sgen_card_table_find_address_with_cards (char *cards_start, guint8 *cards, char *addr)
+{
+       cards_start = sgen_card_table_align_pointer (cards_start);
+       return cards [(addr - cards_start) >> CARD_BITS];
+}
+
+static void
+update_mod_union (guint8 *dest, gboolean init, guint8 *start_card, guint8 *end_card)
+{
+       size_t num_cards = end_card - start_card;
+       if (init) {
+               memcpy (dest, start_card, num_cards);
+       } else {
+               int i;
+               for (i = 0; i < num_cards; ++i)
+                       dest [i] |= start_card [i];
+       }
+}
+
+static guint8*
+alloc_mod_union (size_t num_cards)
+{
+       return sgen_alloc_internal_dynamic (num_cards, INTERNAL_MEM_CARDTABLE_MOD_UNION, TRUE);
+}
+
+guint8*
+sgen_card_table_update_mod_union (guint8 *dest, char *obj, mword obj_size, size_t *out_num_cards)
+{
+       guint8 *result = dest;
+       guint8 *start_card = sgen_card_table_get_card_address ((mword)obj);
+       guint8 *end_card = sgen_card_table_get_card_address ((mword)obj + obj_size - 1) + 1;
+       gboolean init = dest == NULL;
+       size_t num_cards;
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+       if (end_card < start_card) {
+               guint8 *edge_card = sgen_cardtable + CARD_COUNT_IN_BYTES;
+               size_t num_cards_to_edge = edge_card - start_card;
+
+               num_cards = (end_card + CARD_COUNT_IN_BYTES) - start_card;
+               if (init) {
+                       result = dest = alloc_mod_union (num_cards);
+                       //g_print ("%d cards for %d bytes: %p\n", num_cards, num_bytes, dest);
+               }
+
+               update_mod_union (dest, init, start_card, edge_card);
+
+               SGEN_ASSERT (0, num_cards == (edge_card - start_card) + (end_card - sgen_cardtable), "wrong number of cards");
+
+               dest += num_cards_to_edge;
+               start_card = sgen_cardtable;
+       } else
+#endif
+       {
+               num_cards = end_card - start_card;
+               if (init)
+                       result = dest = alloc_mod_union (num_cards);
+       }
+
+       update_mod_union (dest, init, start_card, end_card);
+
+       if (out_num_cards)
+               *out_num_cards = num_cards;
+
+       return result;
+}
+
 #ifdef SGEN_HAVE_OVERLAPPING_CARDS
 
 static void
@@ -710,26 +779,9 @@ sgen_card_table_init (SgenRemeberedSet *remset)
        remset->prepare_for_major_collection = sgen_card_table_prepare_for_major_collection;
 
        remset->find_address = sgen_card_table_find_address;
-}
-
-#else
-
-void
-sgen_card_table_mark_address (mword address)
-{
-       g_assert_not_reached ();
-}
+       remset->find_address_with_cards = sgen_card_table_find_address_with_cards;
 
-void
-sgen_card_table_mark_range (mword address, mword size)
-{
-       g_assert_not_reached ();
-}
-
-guint8*
-mono_gc_get_card_table (int *shift_bits, gpointer *mask)
-{
-       return NULL;
+       need_mod_union = sgen_get_major_collector ()->is_concurrent;
 }
 
 #endif /*HAVE_SGEN_GC*/
index efdd8f90584bd45fd0bf34a06f1693d228a9fa32..4e74206d44fb44258480293d4d995be145116fb1 100644 (file)
@@ -32,6 +32,8 @@ void sgen_cardtable_scan_object (char *obj, mword obj_size, guint8 *cards,
 
 gboolean sgen_card_table_get_card_data (guint8 *dest, mword address, mword cards) MONO_INTERNAL;
 
+guint8* sgen_card_table_update_mod_union (guint8 *dest, char *obj, mword obj_size, size_t *out_num_cards) MONO_INTERNAL;
+
 void sgen_card_table_init (SgenRemeberedSet *remset) MONO_INTERNAL;
 
 /*How many bytes a single card covers*/
index c5e5db48463a4beb43f3e39a7632ee994fcfe8bf..45c6f2093a8283b09b439abc391e9b57379eb67d 100644 (file)
@@ -200,6 +200,59 @@ sgen_check_consistency (void)
                g_assert (!missing_remsets);
 }
 
+static gboolean
+is_major_or_los_object_marked (char *obj)
+{
+       if (sgen_safe_object_get_size ((MonoObject*)obj) > SGEN_MAX_SMALL_OBJ_SIZE) {
+               return sgen_los_object_is_pinned (obj);
+       } else {
+               return sgen_get_major_collector ()->is_object_live (obj);
+       }
+}
+
+#undef HANDLE_PTR
+#define HANDLE_PTR(ptr,obj)    do {    \
+       if (*(ptr) && !sgen_ptr_in_nursery ((char*)*(ptr)) && !is_major_or_los_object_marked ((char*)*(ptr))) { \
+               if (!sgen_get_remset ()->find_address_with_cards (start, cards, (char*)(ptr))) { \
+                       SGEN_LOG (0, "major->major reference %p at offset %td in object %p (%s.%s) not found in remsets.", *(ptr), (char*)(ptr) - (char*)(obj), (obj), ((MonoObject*)(obj))->vtable->klass->name_space, ((MonoObject*)(obj))->vtable->klass->name); \
+                       binary_protocol_missing_remset ((obj), (gpointer)LOAD_VTABLE ((obj)), (char*)(ptr) - (char*)(obj), *(ptr), (gpointer)LOAD_VTABLE(*(ptr)), object_is_pinned (*(ptr))); \
+               }                                                                                                                               \
+       }                                                                                                                                       \
+       } while (0)
+
+static void
+check_mod_union_callback (char *start, size_t size, void *dummy)
+{
+       gboolean in_los = (gboolean) (size_t) dummy;
+       GCVTable *vt = (GCVTable*)LOAD_VTABLE (start);
+       guint8 *cards;
+       SGEN_LOG (8, "Scanning object %p, vtable: %p (%s)", start, vt, vt->klass->name);
+
+       if (!is_major_or_los_object_marked (start))
+               return;
+
+       if (in_los)
+               cards = sgen_los_header_for_object (start)->cardtable_mod_union;
+       else
+               cards = sgen_get_major_collector ()->get_cardtable_mod_union_for_object (start);
+
+       SGEN_ASSERT (0, cards, "we must have mod union for marked major objects");
+
+#include "sgen-scan-object.h"
+}
+
+void
+sgen_check_mod_union_consistency (void)
+{
+       missing_remsets = FALSE;
+
+       major_collector.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)check_mod_union_callback, (void*)FALSE);
+
+       sgen_los_iterate_objects ((IterateObjectCallbackFunc)check_mod_union_callback, (void*)TRUE);
+
+       if (!binary_protocol_is_enabled ())
+               g_assert (!missing_remsets);
+}
 
 #undef HANDLE_PTR
 #define HANDLE_PTR(ptr,obj)    do {                                    \
@@ -365,7 +418,7 @@ FIXME Flag missing remsets due to pinning as non fatal
 static void
 verify_object_pointers_callback (char *start, size_t size, void *data)
 {
-       gboolean allow_missing_pinned = (gboolean)data;
+       gboolean allow_missing_pinned = (gboolean) (size_t) data;
 
 #include "sgen-scan-object.h"
 }
@@ -381,9 +434,9 @@ sgen_check_whole_heap (gboolean allow_missing_pinned)
        setup_valid_nursery_objects ();
 
        broken_heap = FALSE;
-       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data, verify_object_pointers_callback, (void*)allow_missing_pinned, FALSE);
-       major_collector.iterate_objects (TRUE, TRUE, verify_object_pointers_callback, (void*)allow_missing_pinned);
-       sgen_los_iterate_objects (verify_object_pointers_callback, (void*)allow_missing_pinned);
+       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data, verify_object_pointers_callback, (void*) (size_t) allow_missing_pinned, FALSE);
+       major_collector.iterate_objects (TRUE, TRUE, verify_object_pointers_callback, (void*) (size_t) allow_missing_pinned);
+       sgen_los_iterate_objects (verify_object_pointers_callback, (void*) (size_t) allow_missing_pinned);
 
        g_assert (!broken_heap);
 }
@@ -488,7 +541,7 @@ find_pinning_reference (char *obj, size_t size)
 static void
 check_marked_callback (char *start, size_t size, void *dummy)
 {
-       gboolean is_los = (gboolean)dummy;
+       gboolean is_los = (gboolean) (size_t) dummy;
 
        if (is_los) {
                if (!sgen_los_object_is_pinned (start))
@@ -513,7 +566,7 @@ sgen_check_major_heap_marked (void)
 static void
 check_nursery_objects_pinned_callback (char *obj, size_t size, void *data /* ScanCopyContext *ctx */)
 {
-       gboolean pinned = (gboolean)data;
+       gboolean pinned = (gboolean) (size_t) data;
 
        g_assert (!SGEN_OBJECT_IS_FORWARDED (obj));
        if (pinned)
@@ -527,7 +580,7 @@ sgen_check_nursery_objects_pinned (gboolean pinned)
 {
        sgen_clear_nursery_fragments ();
        sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
-                       (IterateObjectCallbackFunc)check_nursery_objects_pinned_callback, (void*)pinned /* (void*)&ctx */, FALSE);
+                       (IterateObjectCallbackFunc)check_nursery_objects_pinned_callback, (void*) (size_t) pinned /* (void*)&ctx */, FALSE);
 }
 
 #endif /*HAVE_SGEN_GC*/
index 8862bff63309d7546c520d29bbf17d3af11efc1d..bb350a9e91ffbde1a81bc6a46ab1d8c2f6de801c 100644 (file)
@@ -31,6 +31,7 @@
 #include "metadata/sgen-gray.h"
 #include "metadata/sgen-protocol.h"
 #include "utils/dtrace.h"
+#include "utils/mono-counters.h"
 
 #define ptr_in_nursery sgen_ptr_in_nursery
 
@@ -230,12 +231,66 @@ register_for_finalization (MonoObject *obj, void *user_data, int generation)
        }
 }
 
+/*
+ * We're using (mostly) non-locking staging queues for finalizers and weak links to speed
+ * up registering them.  Otherwise we'd have to take the GC lock.
+ *
+ * The queues are arrays of `StageEntry`, plus a `next_entry` index.  Threads add entries to
+ * the queue via `add_stage_entry()` in a linear fashion until it fills up, in which case
+ * `process_stage_entries()` is called to drain it.  A garbage collection will also drain
+ * the queues via the same function.  That implies that `add_stage_entry()`, since it
+ * doesn't take a lock, must be able to run concurrently with `process_stage_entries()`,
+ * though it doesn't have to make progress while the queue is drained.  In fact, once it
+ * detects that the queue is being drained, it blocks until the draining is done.
+ *
+ * The protocol must guarantee that entries in the queue are causally ordered, otherwise two
+ * entries for the same location might get switched, resulting in the earlier one being
+ * committed and the later one ignored.
+ *
+ * `next_entry` is the index of the next entry to be filled, or `-1` if the queue is
+ * currently being drained.  Each entry has a state:
+ *
+ * `STAGE_ENTRY_FREE`: The entry is free.  Its data fields must be `NULL`.
+ *
+ * `STAGE_ENTRY_BUSY`: The entry is currently being filled in.
+ *
+ * `STAGE_ENTRY_USED`: The entry is completely filled in and must be processed in the next
+ * draining round.
+ *
+ * `STAGE_ENTRY_INVALID`: The entry was busy during queue draining and therefore
+ * invalidated.  Entries that are `BUSY` can obviously not be processed during a drain, but
+ * we can't leave them in place because new entries might be inserted before them, including
+ * from the same thread, violating causality.  An alternative would be not to reset
+ * `next_entry` to `0` after a drain, but to the index of the last `BUSY` entry plus one,
+ * but that can potentially waste the whole queue.
+ *
+ * State transitions:
+ *
+ * | from    | to      | filler? | drainer? |
+ * +---------+---------+---------+----------+
+ * | FREE    | BUSY    | X       |          |
+ * | BUSY    | FREE    | X       |          |
+ * | BUSY    | USED    | X       |          |
+ * | BUSY    | INVALID |         | X        |
+ * | USED    | FREE    |         | X        |
+ * | INVALID | FREE    | X       |          |
+ *
+ * `next_entry` can be incremented either by the filler thread that set the corresponding
+ * entry to `BUSY`, or by another filler thread that's trying to get a `FREE` slot.  If that
+ * other thread wasn't allowed to increment, it would block on the first filler thread.
+ *
+ * An entry's state, once it's set from `FREE` to `BUSY` by a filler thread, can only be
+ * changed by that same thread or by the drained.  The drainer can only set a `BUSY` thread
+ * to `INVALID`, so it needs to be set to `FREE` again by the original filler thread.
+ */
+
 #define STAGE_ENTRY_FREE       0
 #define STAGE_ENTRY_BUSY       1
 #define STAGE_ENTRY_USED       2
+#define STAGE_ENTRY_INVALID    3
 
 typedef struct {
-       gint32 state;
+       volatile gint32 state;
        MonoObject *obj;
        void *user_data;
 } StageEntry;
@@ -245,75 +300,217 @@ typedef struct {
 static volatile gint32 next_fin_stage_entry = 0;
 static StageEntry fin_stage_entries [NUM_FIN_STAGE_ENTRIES];
 
+/*
+ * This is used to lock the stage when processing is forced, i.e. when it's triggered by a
+ * garbage collection.  In that case, the world is already stopped and there's only one
+ * thread operating on the queue.
+ */
+static void
+lock_stage_for_processing (volatile gint32 *next_entry)
+{
+       *next_entry = -1;
+}
+
+/*
+ * When processing is triggered by an overflow, we don't want to take the GC lock
+ * immediately, and then set `next_index` to `-1`, because another thread might have drained
+ * the queue in the mean time.  Instead, we make sure the overflow is still there, we
+ * atomically set `next_index`, and only once that happened do we take the GC lock.
+ */
+static gboolean
+try_lock_stage_for_processing (int num_entries, volatile gint32 *next_entry)
+{
+       gint32 old = *next_entry;
+       if (old < num_entries)
+               return FALSE;
+       return InterlockedCompareExchange (next_entry, -1, old) == old;
+}
+
 /* LOCKING: requires that the GC lock is held */
 static void
-process_stage_entries (int num_entries, volatile gint32 *next_entry, StageEntry *entries, void (*process_func) (MonoObject*, void*))
+process_stage_entries (int num_entries, volatile gint32 *next_entry, StageEntry *entries, void (*process_func) (MonoObject*, void*, int))
 {
        int i;
-       int num_registered = 0;
-       int num_busy = 0;
+
+       /*
+        * This can happen if after setting `next_index` to `-1` in
+        * `try_lock_stage_for_processing()`, a GC was triggered, which then drained the
+        * queue and reset `next_entry`.
+        *
+        * We have the GC lock now, so if it's still `-1`, we can't be interrupted by a GC.
+        */
+       if (*next_entry != -1)
+               return;
 
        for (i = 0; i < num_entries; ++i) {
-               gint32 state = entries [i].state;
+               gint32 state;
 
-               if (state == STAGE_ENTRY_BUSY)
-                       ++num_busy;
+       retry:
+               state = entries [i].state;
 
-               if (state != STAGE_ENTRY_USED ||
-                               InterlockedCompareExchange (&entries [i].state, STAGE_ENTRY_BUSY, STAGE_ENTRY_USED) != STAGE_ENTRY_USED) {
+               switch (state) {
+               case STAGE_ENTRY_FREE:
+               case STAGE_ENTRY_INVALID:
                        continue;
+               case STAGE_ENTRY_BUSY:
+                       /* BUSY -> INVALID */
+                       /*
+                        * This must be done atomically, because the filler thread can set
+                        * the entry to `USED`, in which case we must process it, so we must
+                        * detect that eventuality.
+                        */
+                       if (InterlockedCompareExchange (&entries [i].state, STAGE_ENTRY_INVALID, STAGE_ENTRY_BUSY) != STAGE_ENTRY_BUSY)
+                               goto retry;
+                       continue;
+               case STAGE_ENTRY_USED:
+                       break;
+               default:
+                       SGEN_ASSERT (0, FALSE, "Invalid stage entry state");
+                       break;
                }
 
-               process_func (entries [i].obj, entries [i].user_data);
+               /* state is USED */
+
+               process_func (entries [i].obj, entries [i].user_data, i);
 
                entries [i].obj = NULL;
                entries [i].user_data = NULL;
 
                mono_memory_write_barrier ();
 
+               /* USED -> FREE */
+               /*
+                * This transition only happens here, so we don't have to do it atomically.
+                */
                entries [i].state = STAGE_ENTRY_FREE;
-
-               ++num_registered;
        }
 
-       *next_entry = 0;
+       mono_memory_write_barrier ();
 
-       /* g_print ("stage busy %d reg %d\n", num_busy, num_registered); */
+       *next_entry = 0;
 }
 
-static gboolean
+#ifdef HEAVY_STATISTICS
+static long long stat_overflow_abort = 0;
+static long long stat_wait_for_processing = 0;
+static long long stat_increment_other_thread = 0;
+static long long stat_index_decremented = 0;
+static long long stat_entry_invalidated = 0;
+static long long stat_success = 0;
+#endif
+
+static int
 add_stage_entry (int num_entries, volatile gint32 *next_entry, StageEntry *entries, MonoObject *obj, void *user_data)
 {
-       gint32 index;
-
-       do {
-               do {
-                       index = *next_entry;
-                       if (index >= num_entries)
-                               return FALSE;
-               } while (InterlockedCompareExchange (next_entry, index + 1, index) != index);
-
+       gint32 index, new_next_entry, old_next_entry;
+       gint32 previous_state;
+
+ retry:
+       for (;;) {
+               index = *next_entry;
+               if (index >= num_entries) {
+                       HEAVY_STAT (++stat_overflow_abort);
+                       return -1;
+               }
+               if (index < 0) {
+                       /*
+                        * Backed-off waiting is way more efficient than even using a
+                        * dedicated lock for this.
+                        */
+                       while ((index = *next_entry) < 0) {
+                               /*
+                                * This seems like a good value.  Determined by timing
+                                * sgen-weakref-stress.exe.
+                                */
+                               g_usleep (200);
+                               HEAVY_STAT (++stat_wait_for_processing);
+                       }
+                       continue;
+               }
+               /* FREE -> BUSY */
+               if (entries [index].state != STAGE_ENTRY_FREE ||
+                               InterlockedCompareExchange (&entries [index].state, STAGE_ENTRY_BUSY, STAGE_ENTRY_FREE) != STAGE_ENTRY_FREE) {
+                       /*
+                        * If we can't get the entry it must be because another thread got
+                        * it first.  We don't want to wait for that thread to increment
+                        * `next_entry`, so we try to do it ourselves.  Whether we succeed
+                        * or not, we start over.
+                        */
+                       if (*next_entry == index) {
+                               InterlockedCompareExchange (next_entry, index + 1, index);
+                               //g_print ("tried increment for other thread\n");
+                               HEAVY_STAT (++stat_increment_other_thread);
+                       }
+                       continue;
+               }
+               /* state is BUSY now */
+               mono_memory_write_barrier ();
                /*
-                * We don't need a write barrier here.  *next_entry is just a
-                * help for finding an index, its value is irrelevant for
-                * correctness.
+                * Incrementing `next_entry` must happen after setting the state to `BUSY`.
+                * If it were the other way around, it would be possible that after a filler
+                * incremented the index, other threads fill up the queue, the queue is
+                * drained, the original filler finally fills in the slot, but `next_entry`
+                * ends up at the start of the queue, and new entries are written in the
+                * queue in front of, not behind, the original filler's entry.
+                *
+                * We don't actually require that the CAS succeeds, but we do require that
+                * the value of `next_entry` is not lower than our index.  Since the drainer
+                * sets it to `-1`, that also takes care of the case that the drainer is
+                * currently running.
                 */
-       } while (entries [index].state != STAGE_ENTRY_FREE ||
-                       InterlockedCompareExchange (&entries [index].state, STAGE_ENTRY_BUSY, STAGE_ENTRY_FREE) != STAGE_ENTRY_FREE);
+               old_next_entry = InterlockedCompareExchange (next_entry, index + 1, index);
+               if (old_next_entry < index) {
+                       /* BUSY -> FREE */
+                       /* INVALID -> FREE */
+                       /*
+                        * The state might still be `BUSY`, or the drainer could have set it
+                        * to `INVALID`.  In either case, there's no point in CASing.  Set
+                        * it to `FREE` and start over.
+                        */
+                       entries [index].state = STAGE_ENTRY_FREE;
+                       HEAVY_STAT (++stat_index_decremented);
+                       continue;
+               }
+               break;
+       }
+
+       SGEN_ASSERT (0, index >= 0 && index < num_entries, "Invalid index");
 
        entries [index].obj = obj;
        entries [index].user_data = user_data;
 
        mono_memory_write_barrier ();
 
-       entries [index].state = STAGE_ENTRY_USED;
+       new_next_entry = *next_entry;
+       mono_memory_read_barrier ();
+       /* BUSY -> USED */
+       /*
+        * A `BUSY` entry will either still be `BUSY` or the drainer will have set it to
+        * `INVALID`.  In the former case, we set it to `USED` and we're finished.  In the
+        * latter case, we reset it to `FREE` and start over.
+        */
+       previous_state = InterlockedCompareExchange (&entries [index].state, STAGE_ENTRY_USED, STAGE_ENTRY_BUSY);
+       if (previous_state == STAGE_ENTRY_BUSY) {
+               SGEN_ASSERT (0, new_next_entry >= index || new_next_entry < 0, "Invalid next entry index - as long as we're busy, other thread can only increment or invalidate it");
+               HEAVY_STAT (++stat_success);
+               return index;
+       }
+
+       SGEN_ASSERT (0, previous_state == STAGE_ENTRY_INVALID, "Invalid state transition - other thread can only make busy state invalid");
+       entries [index].obj = NULL;
+       entries [index].user_data = NULL;
+       mono_memory_write_barrier ();
+       /* INVALID -> FREE */
+       entries [index].state = STAGE_ENTRY_FREE;
+
+       HEAVY_STAT (++stat_entry_invalidated);
 
-       return TRUE;
+       goto retry;
 }
 
 /* LOCKING: requires that the GC lock is held */
 static void
-process_fin_stage_entry (MonoObject *obj, void *user_data)
+process_fin_stage_entry (MonoObject *obj, void *user_data, int index)
 {
        if (ptr_in_nursery (obj))
                register_for_finalization (obj, user_data, GENERATION_NURSERY);
@@ -325,16 +522,19 @@ process_fin_stage_entry (MonoObject *obj, void *user_data)
 void
 sgen_process_fin_stage_entries (void)
 {
+       lock_stage_for_processing (&next_fin_stage_entry);
        process_stage_entries (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry, fin_stage_entries, process_fin_stage_entry);
 }
 
 void
 mono_gc_register_for_finalization (MonoObject *obj, void *user_data)
 {
-       while (!add_stage_entry (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry, fin_stage_entries, obj, user_data)) {
-               LOCK_GC;
-               sgen_process_fin_stage_entries ();
-               UNLOCK_GC;
+       while (add_stage_entry (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry, fin_stage_entries, obj, user_data) == -1) {
+               if (try_lock_stage_for_processing (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry)) {
+                       LOCK_GC;
+                       process_stage_entries (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry, fin_stage_entries, process_fin_stage_entry);
+                       UNLOCK_GC;
+               }
        }
 }
 
@@ -447,9 +647,13 @@ sgen_null_link_in_range (int generation, gboolean before_finalization, ScanCopyC
                suspended right in between setting the content to null and staging the unregister.
 
                The rest of this code cannot handle null links as DISLINK_OBJECT (NULL) produces an invalid address.
+
+               We should simply skip the entry as the staged removal will take place during the next GC.
                */
-               if (!*link)
+               if (!*link) {
+                       SGEN_LOG (5, "Dislink %p was externally nullified", link);
                        continue;
+               }
 
                track = DISLINK_TRACK (link);
                /*
@@ -463,11 +667,18 @@ sgen_null_link_in_range (int generation, gboolean before_finalization, ScanCopyC
                 */
                if (track != before_finalization) {
                        object = DISLINK_OBJECT (link);
+                       /*
+                       We should guard against a null object been hidden. This can sometimes happen.
+                       */
+                       if (!object) {
+                               SGEN_LOG (5, "Dislink %p with a hidden null object", link);
+                               continue;
+                       }
 
                        if (!major_collector.is_object_live (object)) {
                                if (sgen_gc_is_object_ready_for_finalization (object)) {
                                        *link = NULL;
-                                       binary_protocol_dislink_update (link, NULL, 0);
+                                       binary_protocol_dislink_update (link, NULL, 0, 0);
                                        SGEN_LOG (5, "Dislink nullified at %p to GCed object %p", link, object);
                                        SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
                                        continue;
@@ -489,14 +700,14 @@ sgen_null_link_in_range (int generation, gboolean before_finalization, ScanCopyC
                                                g_assert (copy);
                                                *link = HIDE_POINTER (copy, track);
                                                add_or_remove_disappearing_link ((MonoObject*)copy, link, GENERATION_OLD);
-                                               binary_protocol_dislink_update (link, copy, track);
+                                               binary_protocol_dislink_update (link, copy, track, 0);
 
                                                SGEN_LOG (5, "Upgraded dislink at %p to major because object %p moved to %p", link, object, copy);
 
                                                continue;
                                        } else {
                                                *link = HIDE_POINTER (copy, track);
-                                               binary_protocol_dislink_update (link, copy, track);
+                                               binary_protocol_dislink_update (link, copy, track, 0);
                                                SGEN_LOG (5, "Updated dislink at %p to %p", link, DISLINK_OBJECT (link));
                                        }
                                }
@@ -519,7 +730,7 @@ sgen_null_links_for_domain (MonoDomain *domain, int generation)
 
                        if (*link) {
                                *link = NULL;
-                               binary_protocol_dislink_update (link, NULL, 0);
+                               binary_protocol_dislink_update (link, NULL, 0, 0);
                                free = FALSE;
                                /*
                                 * This can happen if finalizers are not ran, i.e. Environment.Exit ()
@@ -552,7 +763,7 @@ sgen_null_links_with_predicate (int generation, WeakLinkAlivePredicateFunc predi
 
                if (!is_alive) {
                        *link = NULL;
-                       binary_protocol_dislink_update (link, NULL, 0);
+                       binary_protocol_dislink_update (link, NULL, 0, 0);
                        SGEN_LOG (5, "Dislink nullified by predicate at %p to GCed object %p", link, object);
                        SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
                        continue;
@@ -581,10 +792,13 @@ sgen_remove_finalizers_for_domain (MonoDomain *domain, int generation)
 
 /* LOCKING: requires that the GC lock is held */
 static void
-process_dislink_stage_entry (MonoObject *obj, void *_link)
+process_dislink_stage_entry (MonoObject *obj, void *_link, int index)
 {
        void **link = _link;
 
+       if (index >= 0)
+               binary_protocol_dislink_process_staged (link, obj, index);
+
        add_or_remove_disappearing_link (NULL, link, GENERATION_NURSERY);
        add_or_remove_disappearing_link (NULL, link, GENERATION_OLD);
        if (obj) {
@@ -604,6 +818,7 @@ static StageEntry dislink_stage_entries [NUM_DISLINK_STAGE_ENTRIES];
 void
 sgen_process_dislink_stage_entries (void)
 {
+       lock_stage_for_processing (&next_dislink_stage_entry);
        process_stage_entries (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry, dislink_stage_entries, process_dislink_stage_entry);
 }
 
@@ -629,25 +844,43 @@ sgen_register_disappearing_link (MonoObject *obj, void **link, gboolean track, g
        else
                *link = NULL;
 
-       binary_protocol_dislink_update (link, obj, track);
-
 #if 1
        if (in_gc) {
-               process_dislink_stage_entry (obj, link);
+               binary_protocol_dislink_update (link, obj, track, 0);
+               process_dislink_stage_entry (obj, link, -1);
        } else {
-               while (!add_stage_entry (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry, dislink_stage_entries, obj, link)) {
-                       LOCK_GC;
-                       sgen_process_dislink_stage_entries ();
-                       UNLOCK_GC;
+               int index;
+               binary_protocol_dislink_update (link, obj, track, 1);
+               while ((index = add_stage_entry (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry, dislink_stage_entries, obj, link)) == -1) {
+                       if (try_lock_stage_for_processing (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry)) {
+                               LOCK_GC;
+                               process_stage_entries (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry, dislink_stage_entries, process_dislink_stage_entry);
+                               UNLOCK_GC;
+                       }
                }
+               binary_protocol_dislink_update_staged (link, obj, track, index);
        }
 #else
        if (!in_gc)
                LOCK_GC;
-       process_dislink_stage_entry (obj, link);
+       binary_protocol_dislink_update (link, obj, track, 0);
+       process_dislink_stage_entry (obj, link, -1);
        if (!in_gc)
                UNLOCK_GC;
 #endif
 }
 
+void
+sgen_init_fin_weak_hash (void)
+{
+#ifdef HEAVY_STATISTICS
+       mono_counters_register ("FinWeak Successes", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_success);
+       mono_counters_register ("FinWeak Overflow aborts", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_overflow_abort);
+       mono_counters_register ("FinWeak Wait for processing", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_wait_for_processing);
+       mono_counters_register ("FinWeak Increment other thread", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_increment_other_thread);
+       mono_counters_register ("FinWeak Index decremented", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_index_decremented);
+       mono_counters_register ("FinWeak Entry invalidated", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_entry_invalidated);
+#endif
+}
+
 #endif /* HAVE_SGEN_GC */
index acb5f552567e4179ccc3b957cd95bb3f11704e31..affe3b06729e1ffef9ebd0dc3813694b64d4708a 100644 (file)
@@ -263,6 +263,8 @@ guint32 collect_before_allocs = 0;
 static gboolean whole_heap_check_before_collection = FALSE;
 /* If set, do a heap consistency check before each minor collection */
 static gboolean consistency_check_at_minor_collection = FALSE;
+/* If set, do a mod union consistency check before each finishing collection pause */
+static gboolean mod_union_consistency_check = FALSE;
 /* If set, check whether mark bits are consistent after major collections */
 static gboolean check_mark_bits_after_major_collection = FALSE;
 /* If set, check that all nursery objects are pinned/not pinned, depending on context */
@@ -1046,6 +1048,10 @@ mono_gc_clear_domain (MonoDomain * domain)
 
        LOCK_GC;
 
+       binary_protocol_domain_unload_begin (domain);
+
+       sgen_stop_world (0);
+
        if (concurrent_collection_in_progress)
                sgen_perform_collection (0, GENERATION_OLD, "clear domain", TRUE);
        g_assert (!concurrent_collection_in_progress);
@@ -1110,6 +1116,10 @@ mono_gc_clear_domain (MonoDomain * domain)
                sgen_object_layout_dump (stdout);
        }
 
+       sgen_restart_world (0, NULL);
+
+       binary_protocol_domain_unload_end (domain);
+
        UNLOCK_GC;
 }
 
@@ -3315,6 +3325,9 @@ major_update_or_finish_concurrent_collection (gboolean force_finish)
                return FALSE;
        }
 
+       if (mod_union_consistency_check)
+               sgen_check_mod_union_consistency ();
+
        collect_nursery (&unpin_queue, TRUE);
 
        current_collection_generation = GENERATION_OLD;
@@ -3377,6 +3390,9 @@ sgen_ensure_free_space (size_t size)
        sgen_perform_collection (size, generation_to_collect, reason, FALSE);
 }
 
+/*
+ * LOCKING: Assumes the GC lock is held.
+ */
 void
 sgen_perform_collection (size_t requested_size, int generation_to_collect, const char *reason, gboolean wait_to_finish)
 {
@@ -3387,6 +3403,8 @@ sgen_perform_collection (size_t requested_size, int generation_to_collect, const
        const char *overflow_reason = NULL;
 
        MONO_GC_REQUESTED (generation_to_collect, requested_size, wait_to_finish ? 1 : 0);
+       if (wait_to_finish)
+               binary_protocol_collection_force (generation_to_collect);
 
        g_assert (generation_to_collect == GENERATION_NURSERY || generation_to_collect == GENERATION_OLD);
 
@@ -4224,6 +4242,7 @@ mono_gc_pthread_detach (pthread_t thread)
 void
 mono_gc_pthread_exit (void *retval) 
 {
+       mono_thread_info_dettach ();
        pthread_exit (retval);
 }
 
@@ -4857,6 +4876,7 @@ mono_gc_base_init (void)
        init_stats ();
        sgen_init_internal_allocator ();
        sgen_init_nursery_allocator ();
+       sgen_init_fin_weak_hash ();
 
        sgen_register_fixed_internal_mem_type (INTERNAL_MEM_SECTION, SGEN_SIZEOF_GC_MEM_SECTION);
        sgen_register_fixed_internal_mem_type (INTERNAL_MEM_FINALIZE_READY_ENTRY, sizeof (FinalizeReadyEntry));
@@ -5169,6 +5189,12 @@ mono_gc_base_init (void)
                        } else if (!strcmp (opt, "check-at-minor-collections")) {
                                consistency_check_at_minor_collection = TRUE;
                                nursery_clear_policy = CLEAR_AT_GC;
+                       } else if (!strcmp (opt, "mod-union-consistency-check")) {
+                               if (!major_collector.is_concurrent) {
+                                       sgen_env_var_error (MONO_GC_DEBUG_NAME, "Ignoring.", "`mod-union-consistency-check` only works with concurrent major collector.");
+                                       continue;
+                               }
+                               mod_union_consistency_check = TRUE;
                        } else if (!strcmp (opt, "check-mark-bits")) {
                                check_mark_bits_after_major_collection = TRUE;
                        } else if (!strcmp (opt, "check-nursery-pinned")) {
index 9a5d71415abf4018989c5d264925b9091920df6f..deba1d93aefe4dc1736cf8192065855098c6389d 100644 (file)
@@ -39,7 +39,8 @@ typedef struct _SgenThreadInfo SgenThreadInfo;
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/dtrace.h>
 #include <mono/utils/mono-logger-internal.h>
-#include <mono/io-layer/mono-mutex.h>
+#include <mono/utils/atomic.h>
+#include <mono/utils/mono-mutex.h>
 #include <mono/metadata/class-internals.h>
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/sgen-conf.h>
@@ -135,7 +136,7 @@ struct _GCMemSection {
 #define LOCK_DECLARE(name) mono_mutex_t name
 /* if changing LOCK_INIT to something that isn't idempotent, look at
    its use in mono_gc_base_init in sgen-gc.c */
-#define LOCK_INIT(name)        mono_mutex_init (&(name), NULL)
+#define LOCK_INIT(name)        mono_mutex_init (&(name))
 #define LOCK_GC do {                                           \
                mono_mutex_lock (&gc_mutex);                    \
                MONO_GC_LOCKED ();                              \
@@ -404,6 +405,7 @@ enum {
        INTERNAL_MEM_GRAY_QUEUE,
        INTERNAL_MEM_MS_TABLES,
        INTERNAL_MEM_MS_BLOCK_INFO,
+       INTERNAL_MEM_MS_BLOCK_INFO_SORT,
        INTERNAL_MEM_EPHEMERON_LINK,
        INTERNAL_MEM_WORKER_DATA,
        INTERNAL_MEM_WORKER_JOB_DATA,
@@ -659,6 +661,7 @@ struct _SgenMajorCollector {
        void (*reset_worker_data) (void *data);
        gboolean (*is_valid_object) (char *object);
        gboolean (*describe_pointer) (char *pointer);
+       guint8* (*get_cardtable_mod_union_for_object) (char *object);
        long long (*get_and_reset_num_major_objects_marked) (void);
 };
 
@@ -687,6 +690,7 @@ typedef struct {
 
        void (*finish_minor_collection) (void);
        gboolean (*find_address) (char *addr);
+       gboolean (*find_address_with_cards) (char *cards_start, guint8 *cards, char *addr);
 } SgenRemeberedSet;
 
 SgenRemeberedSet *sgen_get_remset (void) MONO_INTERNAL;
@@ -764,6 +768,8 @@ const char* sgen_safe_name (void* obj) MONO_INTERNAL;
 
 gboolean sgen_object_is_live (void *obj) MONO_INTERNAL;
 
+void  sgen_init_fin_weak_hash (void) MONO_INTERNAL;
+
 gboolean sgen_need_bridge_processing (void) MONO_INTERNAL;
 void sgen_bridge_reset_data (void) MONO_INTERNAL;
 void sgen_bridge_processing_stw_step (void) MONO_INTERNAL;
@@ -983,6 +989,7 @@ typedef enum {
        ATYPE_NORMAL,
        ATYPE_VECTOR,
        ATYPE_SMALL,
+       ATYPE_STRING,
        ATYPE_NUM
 } SgenAllocatorType;
 
@@ -995,6 +1002,7 @@ gboolean sgen_has_managed_allocator (void);
 /* Debug support */
 
 void sgen_check_consistency (void);
+void sgen_check_mod_union_consistency (void);
 void sgen_check_major_refs (void);
 void sgen_check_whole_heap (gboolean allow_missing_pinning);
 void sgen_check_whole_heap_stw (void) MONO_INTERNAL;
index 659b7cdccb10c9efc4b8ec60f3ad1c8bd5ab5996..e2a7d6012270562ef163e4ee985a8a3e90a01b45 100644 (file)
@@ -256,19 +256,7 @@ sgen_section_gray_queue_init (SgenSectionGrayQueue *queue, gboolean locked, Gray
 
        queue->locked = locked;
        if (locked) {
-#ifdef HOST_WIN32
-               /*
-                * mono_mutex_t is a critical section on Win32, which
-                * is recursive by default.  mono_mutexattr_t is not
-                * defined there.
-                */
-               mono_mutex_init (&queue->lock, NULL);
-#else
-               mono_mutexattr_t attr;
-               mono_mutexattr_init (&attr);
-               mono_mutexattr_settype (&attr, MONO_MUTEX_RECURSIVE);
-               mono_mutex_init (&queue->lock, &attr);
-#endif
+               mono_mutex_init_recursive (&queue->lock);
        }
 
 #ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
index 47575ea4198f6a8ec45341cada8cb7a06d0983ec..6be8b0d285d30ef92c73b1f54e4397790d5aa74e 100644 (file)
@@ -98,6 +98,7 @@ description_for_type (int type)
        case INTERNAL_MEM_GRAY_QUEUE: return "gray-queue";
        case INTERNAL_MEM_MS_TABLES: return "marksweep-tables";
        case INTERNAL_MEM_MS_BLOCK_INFO: return "marksweep-block-info";
+       case INTERNAL_MEM_MS_BLOCK_INFO_SORT: return "marksweep-block-info-sort";
        case INTERNAL_MEM_EPHEMERON_LINK: return "ephemeron-link";
        case INTERNAL_MEM_WORKER_DATA: return "worker-data";
        case INTERNAL_MEM_WORKER_JOB_DATA: return "worker-job-data";
@@ -180,7 +181,7 @@ sgen_free_internal (void *addr, int type)
        mono_lock_free_free (addr);
 
        if (MONO_GC_INTERNAL_DEALLOC_ENABLED ()) {
-               int size = allocator_sizes [index];
+               int size G_GNUC_UNUSED = allocator_sizes [index];
                MONO_GC_INTERNAL_DEALLOC ((mword)addr, size, type);
        }
 }
index dcf3907874c1c9ab0824a5d32b0047b97c33f848..b273a5ab822bd0cf5f35c3a3590f6c5836723fff 100644 (file)
@@ -554,19 +554,8 @@ sgen_los_update_cardtable_mod_union (void)
        LOSObject *obj;
 
        for (obj = los_object_list; obj; obj = obj->next) {
-               guint8 *start_card = sgen_card_table_get_card_scan_address ((mword)obj->data);
-               guint8 *end_card = sgen_card_table_get_card_scan_address ((mword)obj->data + obj->size - 1) + 1;
-               size_t num_cards = end_card - start_card;
-
-               if (!obj->cardtable_mod_union) {
-                       obj->cardtable_mod_union = sgen_alloc_internal_dynamic (num_cards,
-                                       INTERNAL_MEM_CARDTABLE_MOD_UNION, TRUE);
-                       memcpy (obj->cardtable_mod_union, start_card, num_cards);
-               } else {
-                       int i;
-                       for (i = 0; i < num_cards; ++i)
-                               obj->cardtable_mod_union [i] |= start_card [i];
-               }
+               obj->cardtable_mod_union = sgen_card_table_update_mod_union (obj->cardtable_mod_union,
+                               obj->data, obj->size, NULL);
        }
 }
 
index d8dc8dfdbd7bd02862c25e355ee33f6cef17ca8c..69e0d5603c183c15a2e5556c075ddb43ea6994a9 100644 (file)
@@ -56,7 +56,7 @@
 
 /*
  * Don't allocate single blocks, but alloc a contingent of this many
- * blocks in one swoop.
+ * blocks in one swoop.  This must be a power of two.
  */
 #define MS_BLOCK_ALLOC_NUM     32
 
@@ -232,6 +232,12 @@ static long long stat_major_blocks_freed = 0;
 static long long stat_major_blocks_lazy_swept = 0;
 static long long stat_major_objects_evacuated = 0;
 
+#if SIZEOF_VOID_P != 8
+static long long stat_major_blocks_freed_ideal = 0;
+static long long stat_major_blocks_freed_less_ideal = 0;
+static long long stat_major_blocks_freed_individual = 0;
+static long long stat_major_blocks_alloced_less_ideal = 0;
+#endif
 
 #ifdef SGEN_COUNT_NUMBER_OF_MAJOR_OBJECTS_MARKED
 static long long num_major_objects_marked = 0;
@@ -363,9 +369,21 @@ ms_get_empty_block (void)
 
  retry:
        if (!empty_blocks) {
-               p = sgen_alloc_os_memory_aligned (MS_BLOCK_SIZE * MS_BLOCK_ALLOC_NUM, MS_BLOCK_SIZE, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, "major heap section");
+               /*
+                * We try allocating MS_BLOCK_ALLOC_NUM blocks first.  If that's
+                * unsuccessful, we halve the number of blocks and try again, until we're at
+                * 1.  If that doesn't work, either, we assert.
+                */
+               int alloc_num = MS_BLOCK_ALLOC_NUM;
+               for (;;) {
+                       p = sgen_alloc_os_memory_aligned (MS_BLOCK_SIZE * alloc_num, MS_BLOCK_SIZE, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE,
+                                       alloc_num == 1 ? "major heap section" : NULL);
+                       if (p)
+                               break;
+                       alloc_num >>= 1;
+               }
 
-               for (i = 0; i < MS_BLOCK_ALLOC_NUM; ++i) {
+               for (i = 0; i < alloc_num; ++i) {
                        block = p;
                        /*
                         * We do the free list update one after the
@@ -379,9 +397,13 @@ ms_get_empty_block (void)
                        p += MS_BLOCK_SIZE;
                }
 
-               SGEN_ATOMIC_ADD (num_empty_blocks, MS_BLOCK_ALLOC_NUM);
+               SGEN_ATOMIC_ADD (num_empty_blocks, alloc_num);
 
-               stat_major_blocks_alloced += MS_BLOCK_ALLOC_NUM;
+               stat_major_blocks_alloced += alloc_num;
+#if SIZEOF_VOID_P != 8
+               if (alloc_num != MS_BLOCK_ALLOC_NUM)
+                       stat_major_blocks_alloced_less_ideal += alloc_num;
+#endif
        }
 
        do {
@@ -1844,6 +1866,18 @@ major_finish_major_collection (void)
 {
 }
 
+#if !defined(FIXED_HEAP) && SIZEOF_VOID_P != 8
+static int
+compare_pointers (const void *va, const void *vb) {
+       char *a = *(char**)va, *b = *(char**)vb;
+       if (a < b)
+               return -1;
+       if (a > b)
+               return 1;
+       return 0;
+}
+#endif
+
 static void
 major_have_computer_minor_collection_allowance (void)
 {
@@ -1852,13 +1886,127 @@ major_have_computer_minor_collection_allowance (void)
 
        g_assert (have_swept);
 
+#if SIZEOF_VOID_P != 8
+       {
+               int i, num_empty_blocks_orig, num_blocks, arr_length;
+               void *block;
+               void **empty_block_arr;
+               void **rebuild_next;
+
+               if (num_empty_blocks <= section_reserve)
+                       return;
+               SGEN_ASSERT (0, num_empty_blocks > 0, "section reserve can't be negative");
+
+               num_empty_blocks_orig = num_empty_blocks;
+               empty_block_arr = (void**)sgen_alloc_internal_dynamic (sizeof (void*) * num_empty_blocks_orig,
+                               INTERNAL_MEM_MS_BLOCK_INFO_SORT, FALSE);
+               if (!empty_block_arr)
+                       goto fallback;
+
+               i = 0;
+               for (block = empty_blocks; block; block = *(void**)block)
+                       empty_block_arr [i++] = block;
+               SGEN_ASSERT (0, i == num_empty_blocks, "empty block count wrong");
+
+               qsort (empty_block_arr, num_empty_blocks, sizeof (void*), compare_pointers);
+
+               /*
+                * We iterate over the free blocks, trying to find MS_BLOCK_ALLOC_NUM
+                * contiguous ones.  If we do, we free them.  If that's not enough to get to
+                * section_reserve, we halve the number of contiguous blocks we're looking
+                * for and have another go, until we're done with looking for pairs of
+                * blocks, at which point we give up and go to the fallback.
+                */
+               arr_length = num_empty_blocks_orig;
+               num_blocks = MS_BLOCK_ALLOC_NUM;
+               while (num_empty_blocks > section_reserve && num_blocks > 1) {
+                       int first = -1;
+                       int dest = 0;
+
+                       dest = 0;
+                       for (i = 0; i < arr_length; ++i) {
+                               int d = dest;
+                               void *block = empty_block_arr [i];
+                               SGEN_ASSERT (0, block, "we're not shifting correctly");
+                               if (i != dest) {
+                                       empty_block_arr [dest] = block;
+                                       /*
+                                        * This is not strictly necessary, but we're
+                                        * cautious.
+                                        */
+                                       empty_block_arr [i] = NULL;
+                               }
+                               ++dest;
+
+                               if (first < 0) {
+                                       first = d;
+                                       continue;
+                               }
+
+                               SGEN_ASSERT (0, first >= 0 && d > first, "algorithm is wrong");
+
+                               if ((char*)block != ((char*)empty_block_arr [d-1]) + MS_BLOCK_SIZE) {
+                                       first = d;
+                                       continue;
+                               }
+
+                               if (d + 1 - first == num_blocks) {
+                                       /*
+                                        * We found num_blocks contiguous blocks.  Free them
+                                        * and null their array entries.  As an optimization
+                                        * we could, instead of nulling the entries, shift
+                                        * the following entries over to the left, while
+                                        * we're iterating.
+                                        */
+                                       int j;
+                                       sgen_free_os_memory (empty_block_arr [first], MS_BLOCK_SIZE * num_blocks, SGEN_ALLOC_HEAP);
+                                       for (j = first; j <= d; ++j)
+                                               empty_block_arr [j] = NULL;
+                                       dest = first;
+                                       first = -1;
+
+                                       num_empty_blocks -= num_blocks;
+
+                                       stat_major_blocks_freed += num_blocks;
+                                       if (num_blocks == MS_BLOCK_ALLOC_NUM)
+                                               stat_major_blocks_freed_ideal += num_blocks;
+                                       else
+                                               stat_major_blocks_freed_less_ideal += num_blocks;
+
+                               }
+                       }
+
+                       SGEN_ASSERT (0, dest <= i && dest <= arr_length, "array length is off");
+                       arr_length = dest;
+                       SGEN_ASSERT (0, arr_length == num_empty_blocks, "array length is off");
+
+                       num_blocks >>= 1;
+               }
+
+               /* rebuild empty_blocks free list */
+               rebuild_next = (void**)&empty_blocks;
+               for (i = 0; i < arr_length; ++i) {
+                       void *block = empty_block_arr [i];
+                       SGEN_ASSERT (0, block, "we're missing blocks");
+                       *rebuild_next = block;
+                       rebuild_next = (void**)block;
+               }
+               *rebuild_next = NULL;
+
+               /* free array */
+               sgen_free_internal_dynamic (empty_block_arr, sizeof (void*) * num_empty_blocks_orig, INTERNAL_MEM_MS_BLOCK_INFO_SORT);
+       }
+
+       SGEN_ASSERT (0, num_empty_blocks >= 0, "we freed more blocks than we had in the first place?");
+
+ fallback:
        /*
-        * FIXME: We don't free blocks on 32 bit platforms because it
-        * can lead to address space fragmentation, since we're
-        * allocating blocks in larger contingents.
+        * This is our threshold.  If there's not more empty than used blocks, we won't
+        * release uncontiguous blocks, in fear of fragmenting the address space.
         */
-       if (sizeof (mword) < 8)
+       if (num_empty_blocks <= num_major_sections)
                return;
+#endif
 
        while (num_empty_blocks > section_reserve) {
                void *next = *(void**)empty_blocks;
@@ -1871,6 +2019,9 @@ major_have_computer_minor_collection_allowance (void)
                --num_empty_blocks;
 
                ++stat_major_blocks_freed;
+#if SIZEOF_VOID_P != 8
+               ++stat_major_blocks_freed_individual;
+#endif
        }
 #endif
 }
@@ -2146,6 +2297,9 @@ major_scan_card_table (gboolean mod_union, SgenGrayQueue *queue)
                                 */
                                if (!card_data)
                                        continue;
+#else
+                               g_assert_not_reached ();
+                               card_data = NULL;
 #endif
                        } else {
                                card_data = card_base = sgen_card_table_get_card_scan_address ((mword)block_start);
@@ -2208,25 +2362,21 @@ update_cardtable_mod_union (void)
        MSBlockInfo *block;
 
        FOREACH_BLOCK (block) {
-               guint8 *cards;
-               gboolean init = FALSE;
+               size_t num_cards;
 
-               if (!block->cardtable_mod_union) {
-                       block->cardtable_mod_union = sgen_alloc_internal_dynamic (CARDS_PER_BLOCK,
-                                       INTERNAL_MEM_CARDTABLE_MOD_UNION, TRUE);
-                       init = TRUE;
-               }
+               block->cardtable_mod_union = sgen_card_table_update_mod_union (block->cardtable_mod_union,
+                               block->block, MS_BLOCK_SIZE, &num_cards);
 
-               cards = sgen_card_table_get_card_scan_address ((mword)block->block);
-               if (init) {
-                       memcpy (block->cardtable_mod_union, cards, CARDS_PER_BLOCK);
-               } else {
-                       int i;
-                       for (i = 0; i < CARDS_PER_BLOCK; ++i)
-                               block->cardtable_mod_union [i] |= cards [i];
-               }
+               SGEN_ASSERT (0, num_cards == CARDS_PER_BLOCK, "Number of cards calculation is wrong");
        } END_FOREACH_BLOCK;
 }
+
+static guint8*
+major_get_cardtable_mod_union_for_object (char *obj)
+{
+       MSBlockInfo *block = MS_BLOCK_FOR_OBJ (obj);
+       return &block->cardtable_mod_union [(obj - (char*)sgen_card_table_align_pointer (block->block)) >> CARD_BITS];
+}
 #endif
 
 static void
@@ -2348,6 +2498,13 @@ sgen_marksweep_fixed_init (SgenMajorCollector *collector)
        mono_counters_register ("# major blocks freed", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_major_blocks_freed);
        mono_counters_register ("# major blocks lazy swept", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_major_blocks_lazy_swept);
        mono_counters_register ("# major objects evacuated", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_major_objects_evacuated);
+#if SIZEOF_VOID_P != 8
+       mono_counters_register ("# major blocks freed ideally", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_major_blocks_freed_ideal);
+       mono_counters_register ("# major blocks freed less ideally", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_major_blocks_freed_less_ideal);
+       mono_counters_register ("# major blocks freed individually", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_major_blocks_freed_individual);
+       mono_counters_register ("# major blocks allocated less ideally", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_major_blocks_alloced_less_ideal);
+#endif
+
 #ifdef SGEN_PARALLEL_MARK
 #ifndef HAVE_KW_THREAD
        mono_native_tls_alloc (&workers_free_block_lists_key, NULL);
@@ -2397,8 +2554,10 @@ sgen_marksweep_fixed_init (SgenMajorCollector *collector)
        collector->scan_card_table = major_scan_card_table;
        collector->iterate_live_block_ranges = (void*)(void*) major_iterate_live_block_ranges;
 #ifdef SGEN_HAVE_CONCURRENT_MARK
-       if (is_concurrent)
+       if (is_concurrent) {
                collector->update_cardtable_mod_union = update_cardtable_mod_union;
+               collector->get_cardtable_mod_union_for_object = major_get_cardtable_mod_union_for_object;
+       }
 #endif
        collector->init_to_space = major_init_to_space;
        collector->sweep = major_sweep;
index 7d625644f5c6c946bceb07e832518654595a7259..d16b2b778a6438932f2a4060eb6ebb5ab23b4782 100644 (file)
@@ -70,6 +70,7 @@
 #include "metadata/sgen-protocol.h"
 #include "metadata/sgen-archdep.h"
 #include "metadata/sgen-bridge.h"
+#include "metadata/sgen-memory-governor.h"
 #include "metadata/mono-gc.h"
 #include "metadata/method-builder.h"
 #include "metadata/profiler-private.h"
@@ -151,6 +152,8 @@ static AllocRecord *alloc_records;
 static volatile int next_record;
 static volatile int alloc_count;
 
+void dump_alloc_records (void);
+void verify_alloc_records (void);
 
 static const char*
 get_reason_name (AllocRecord *rec)
index a3de37b0daaa5493d82e0f784c3fefa82e755af8..64be03ffa924aa46feca20f246d1c9b48b5c9d5d 100644 (file)
@@ -232,7 +232,7 @@ sgen_thread_handshake (BOOL suspend)
                        g_assert (info->doing_handshake);
                        info->doing_handshake = FALSE;
                }
-               result = pthread_kill (mono_thread_info_get_tid (info), signum);
+               result = mono_threads_pthread_kill (info, signum);
                if (result == 0) {
                        count++;
                } else {
index 9d9944f43ab02f1383f76669c166ba929582a739..9ada778bc7460520a599b808cd156eaaa734d48e 100644 (file)
@@ -306,7 +306,7 @@ sgen_cement_lookup_or_register (char *obj)
        ++hash [i].count;
        if (hash [i].count == SGEN_CEMENT_THRESHOLD) {
                if (G_UNLIKELY (MONO_GC_OBJ_CEMENTED_ENABLED())) {
-                       MonoVTable *vt = (MonoVTable*)SGEN_LOAD_VTABLE (obj);
+                       MonoVTable *vt G_GNUC_UNUSED = (MonoVTable*)SGEN_LOAD_VTABLE (obj);
                        MONO_GC_OBJ_CEMENTED ((mword)obj, sgen_safe_object_get_size ((MonoObject*)obj),
                                        vt->klass->name_space, vt->klass->name);
                }
index bd686ee92fc2574b607af449682cba9bc480822a..611d6f6bef8ff0d2142cc1d47572189a6ea97710 100644 (file)
 /* If not null, dump binary protocol to this file */
 static FILE *binary_protocol_file = NULL;
 
-static int binary_protocol_use_count = 0;
+/* We set this to -1 to indicate an exclusive lock */
+static volatile int binary_protocol_use_count = 0;
 
 #define BINARY_PROTOCOL_BUFFER_SIZE    (65536 - 2 * 8)
 
 typedef struct _BinaryProtocolBuffer BinaryProtocolBuffer;
 struct _BinaryProtocolBuffer {
-       BinaryProtocolBuffer *next;
-       int index;
+       BinaryProtocolBuffer * volatile next;
+       volatile int index;
        unsigned char buffer [BINARY_PROTOCOL_BUFFER_SIZE];
 };
 
-static BinaryProtocolBuffer *binary_protocol_buffers = NULL;
+static BinaryProtocolBuffer * volatile binary_protocol_buffers = NULL;
 
 void
 binary_protocol_init (const char *filename)
@@ -58,6 +59,53 @@ binary_protocol_is_enabled (void)
        return binary_protocol_file != NULL;
 }
 
+static gboolean
+try_lock_exclusive (void)
+{
+       do {
+               if (binary_protocol_use_count)
+                       return FALSE;
+       } while (InterlockedCompareExchange (&binary_protocol_use_count, -1, 0) != 0);
+       mono_memory_barrier ();
+       return TRUE;
+}
+
+static void
+unlock_exclusive (void)
+{
+       mono_memory_barrier ();
+       SGEN_ASSERT (0, binary_protocol_use_count == -1, "Exclusively locked count must be -1");
+       if (InterlockedCompareExchange (&binary_protocol_use_count, 0, -1) != -1)
+               SGEN_ASSERT (0, FALSE, "Somebody messed with the exclusive lock");
+}
+
+static void
+lock_recursive (void)
+{
+       int old_count;
+       do {
+       retry:
+               old_count = binary_protocol_use_count;
+               if (old_count < 0) {
+                       /* Exclusively locked - retry */
+                       /* FIXME: short back-off */
+                       goto retry;
+               }
+       } while (InterlockedCompareExchange (&binary_protocol_use_count, old_count + 1, old_count) != old_count);
+       mono_memory_barrier ();
+}
+
+static void
+unlock_recursive (void)
+{
+       int old_count;
+       mono_memory_barrier ();
+       do {
+               old_count = binary_protocol_use_count;
+               SGEN_ASSERT (0, old_count > 0, "Locked use count must be at least 1");
+       } while (InterlockedCompareExchange (&binary_protocol_use_count, old_count - 1, old_count) != old_count);
+}
+
 static void
 binary_protocol_flush_buffers_rec (BinaryProtocolBuffer *buffer)
 {
@@ -78,12 +126,15 @@ binary_protocol_flush_buffers (gboolean force)
        if (!binary_protocol_file)
                return;
 
-       if (!force && binary_protocol_use_count != 0)
+       if (!force && !try_lock_exclusive ())
                return;
 
        binary_protocol_flush_buffers_rec (binary_protocol_buffers);
        binary_protocol_buffers = NULL;
 
+       if (!force)
+               unlock_exclusive ();
+
        fflush (binary_protocol_file);
 }
 
@@ -115,15 +166,11 @@ protocol_entry (unsigned char type, gpointer data, int size)
 {
        int index;
        BinaryProtocolBuffer *buffer;
-       int old_count;
 
        if (!binary_protocol_file)
                return;
 
-       do {
-               old_count = binary_protocol_use_count;
-               g_assert (old_count >= 0);
-       } while (InterlockedCompareExchange (&binary_protocol_use_count, old_count + 1, old_count) != old_count);
+       lock_recursive ();
 
  retry:
        buffer = binary_protocol_get_buffer (size + 1);
@@ -144,10 +191,15 @@ protocol_entry (unsigned char type, gpointer data, int size)
 
        g_assert (index <= BINARY_PROTOCOL_BUFFER_SIZE);
 
-       do {
-               old_count = binary_protocol_use_count;
-               g_assert (old_count > 0);
-       } while (InterlockedCompareExchange (&binary_protocol_use_count, old_count - 1, old_count) != old_count);
+       unlock_recursive ();
+}
+
+void
+binary_protocol_collection_force (int generation)
+{
+       SGenProtocolCollectionForce entry = { generation };
+       binary_protocol_flush_buffers (FALSE);
+       protocol_entry (SGEN_PROTOCOL_COLLECTION_FORCE, &entry, sizeof (SGenProtocolCollectionForce));
 }
 
 void
@@ -316,12 +368,40 @@ binary_protocol_cement_reset (void)
 }
 
 void
-binary_protocol_dislink_update (gpointer link, gpointer obj, int track)
+binary_protocol_dislink_update (gpointer link, gpointer obj, int track, int staged)
 {
-       SGenProtocolDislinkUpdate entry = { link, obj, track };
+       SGenProtocolDislinkUpdate entry = { link, obj, track, staged };
        protocol_entry (SGEN_PROTOCOL_DISLINK_UPDATE, &entry, sizeof (SGenProtocolDislinkUpdate));
 }
 
+void
+binary_protocol_dislink_update_staged (gpointer link, gpointer obj, int track, int index)
+{
+       SGenProtocolDislinkUpdateStaged entry = { link, obj, track, index };
+       protocol_entry (SGEN_PROTOCOL_DISLINK_UPDATE_STAGED, &entry, sizeof (SGenProtocolDislinkUpdateStaged));
+}
+
+void
+binary_protocol_dislink_process_staged (gpointer link, gpointer obj, int index)
+{
+       SGenProtocolDislinkProcessStaged entry = { link, obj, index };
+       protocol_entry (SGEN_PROTOCOL_DISLINK_PROCESS_STAGED, &entry, sizeof (SGenProtocolDislinkProcessStaged));
+}
+
+void
+binary_protocol_domain_unload_begin (gpointer domain)
+{
+       SGenProtocolDomainUnload entry = { domain };
+       protocol_entry (SGEN_PROTOCOL_DOMAIN_UNLOAD_BEGIN, &entry, sizeof (SGenProtocolDomainUnload));
+}
+
+void
+binary_protocol_domain_unload_end (gpointer domain)
+{
+       SGenProtocolDomainUnload entry = { domain };
+       protocol_entry (SGEN_PROTOCOL_DOMAIN_UNLOAD_END, &entry, sizeof (SGenProtocolDomainUnload));
+}
+
 #endif
 
 #endif /* HAVE_SGEN_GC */
index 9005a6229178386e9a78e59ff6b29071d8272f4c..18355075cbf4c34c0ada8769957c4a88046ddfea 100644 (file)
@@ -25,6 +25,7 @@
 #ifdef SGEN_BINARY_PROTOCOL
 
 enum {
+       SGEN_PROTOCOL_COLLECTION_FORCE,
        SGEN_PROTOCOL_COLLECTION_BEGIN,
        SGEN_PROTOCOL_COLLECTION_END,
        SGEN_PROTOCOL_ALLOC,
@@ -48,9 +49,17 @@ enum {
        SGEN_PROTOCOL_CARD_SCAN,
        SGEN_PROTOCOL_CEMENT,
        SGEN_PROTOCOL_CEMENT_RESET,
-       SGEN_PROTOCOL_DISLINK_UPDATE
+       SGEN_PROTOCOL_DISLINK_UPDATE,
+       SGEN_PROTOCOL_DISLINK_UPDATE_STAGED,
+       SGEN_PROTOCOL_DISLINK_PROCESS_STAGED,
+       SGEN_PROTOCOL_DOMAIN_UNLOAD_BEGIN,
+       SGEN_PROTOCOL_DOMAIN_UNLOAD_END
 };
 
+typedef struct {
+       int generation;
+} SGenProtocolCollectionForce;
+
 typedef struct {
        int index, generation;
 } SGenProtocolCollection;
@@ -162,8 +171,26 @@ typedef struct {
        gpointer link;
        gpointer obj;
        int track;
+       int staged;
 } SGenProtocolDislinkUpdate;
 
+typedef struct {
+       gpointer link;
+       gpointer obj;
+       int track;
+       int index;
+} SGenProtocolDislinkUpdateStaged;
+
+typedef struct {
+       gpointer link;
+       gpointer obj;
+       int index;
+} SGenProtocolDislinkProcessStaged;
+
+typedef struct {
+       gpointer domain;
+} SGenProtocolDomainUnload;
+
 /* missing: finalizers, dislinks, roots, non-store wbarriers */
 
 void binary_protocol_init (const char *filename) MONO_INTERNAL;
@@ -171,6 +198,7 @@ gboolean binary_protocol_is_enabled (void) MONO_INTERNAL;
 
 void binary_protocol_flush_buffers (gboolean force) MONO_INTERNAL;
 
+void binary_protocol_collection_force (int generation) MONO_INTERNAL;
 void binary_protocol_collection_begin (int index, int generation) MONO_INTERNAL;
 void binary_protocol_collection_end (int index, int generation) MONO_INTERNAL;
 void binary_protocol_alloc (gpointer obj, gpointer vtable, int size) MONO_INTERNAL;
@@ -195,13 +223,18 @@ void binary_protocol_missing_remset (gpointer obj, gpointer obj_vtable, int offs
 void binary_protocol_card_scan (gpointer start, int size) MONO_INTERNAL;
 void binary_protocol_cement (gpointer ptr, gpointer vtable, int size) MONO_INTERNAL;
 void binary_protocol_cement_reset (void) MONO_INTERNAL;
-void binary_protocol_dislink_update (gpointer link, gpointer obj, int track) MONO_INTERNAL;
+void binary_protocol_dislink_update (gpointer link, gpointer obj, int track, int staged) MONO_INTERNAL;
+void binary_protocol_dislink_update_staged (gpointer link, gpointer obj, int track, int index) MONO_INTERNAL;
+void binary_protocol_dislink_process_staged (gpointer link, gpointer obj, int index) MONO_INTERNAL;
+void binary_protocol_domain_unload_begin (gpointer domain) MONO_INTERNAL;
+void binary_protocol_domain_unload_end (gpointer domain) MONO_INTERNAL;
 
 #else
 
 #define binary_protocol_is_enabled()   FALSE
 
 #define binary_protocol_flush_buffers(force)
+#define binary_protocol_collection_force(generation)
 #define binary_protocol_collection_begin(index, generation)
 #define binary_protocol_collection_end(index, generation)
 #define binary_protocol_alloc(obj, vtable, size)
@@ -225,6 +258,10 @@ void binary_protocol_dislink_update (gpointer link, gpointer obj, int track) MON
 #define binary_protocol_card_scan(start, size)
 #define binary_protocol_cement(ptr, vtable, size)
 #define binary_protocol_cement_reset()
-#define binary_protocol_dislink_update(link,obj,track)
+#define binary_protocol_dislink_update(link,obj,track,staged)
+#define binary_protocol_dislink_update_staged(link,obj,track,index)
+#define binary_protocol_dislink_process_staged(link,obj,index)
+#define binary_protocol_domain_unload_begin(domain)
+#define binary_protocol_domain_unload_end(domain)
 
 #endif
index 69a2e9cfa470c3ef9b8381f401de1f840ebb4116..eb24a351a3050f129cc9a9a3da79b7868024d320 100644 (file)
@@ -113,10 +113,10 @@ restart_threads_until_none_in_managed_allocator (void)
                        gboolean result;
                        if (info->skip || info->gc_disabled || !info->joined_stw)
                                continue;
-                       if (!info->thread_is_dying && (!info->stack_start || info->in_critical_region ||
+                       if (!info->thread_is_dying && (!info->stack_start || info->in_critical_region || info->info.inside_critical_region ||
                                        is_ip_in_managed_allocator (info->stopped_domain, info->stopped_ip))) {
                                binary_protocol_thread_restart ((gpointer)mono_thread_info_get_tid (info));
-                               SGEN_LOG (3, "thread %p resumed.", (void*)info->info.native_handle);
+                               SGEN_LOG (3, "thread %p resumed.", (void*) (size_t) info->info.native_handle);
                                result = sgen_resume_thread (info);
                                if (result) {
                                        ++restart_count;
@@ -233,6 +233,7 @@ sgen_stop_world (int generation)
        MONO_GC_WORLD_STOP_END ();
 
        sgen_memgov_collection_start (generation);
+       sgen_bridge_reset_data ();
 
        return count;
 }
@@ -248,6 +249,7 @@ sgen_restart_world (int generation, GGTimingInfo *timing)
        unsigned long usec, bridge_usec;
 
        /* notify the profiler of the leftovers */
+       /* FIXME this is the wrong spot at we can STW for non collection reasons. */
        if (G_UNLIKELY (mono_profiler_events & MONO_PROFILE_GC_MOVES))
                sgen_gc_event_moves ();
        mono_profiler_gc_event (MONO_GC_EVENT_PRE_START_WORLD, generation);
index 4f07f72885346516cce4b5479be92b0dc5def609..77c7fadcac086f76a2ea8baad3f2328f31733ec0 100644 (file)
@@ -460,7 +460,7 @@ sgen_workers_init (int num_workers)
 
        for (i = 0; i < workers_num; ++i) {
                /* private gray queue is inited by the thread itself */
-               mono_mutex_init (&workers_data [i].stealable_stack_mutex, NULL);
+               mono_mutex_init (&workers_data [i].stealable_stack_mutex);
                workers_data [i].stealable_stack_fill = 0;
 
                if (sgen_get_major_collector ()->alloc_worker_data)
index 5a6848ea1c1ac28cff0037795a399caf63eadd94..8723cf6187c52b5cb7fb9b7675e8a605e762906b 100644 (file)
@@ -26,7 +26,9 @@
 #include <errno.h>
 
 #include <sys/types.h>
-#ifndef HOST_WIN32 
+#ifdef HOST_WIN32
+#include <ws2tcpip.h>
+#else
 #include <sys/socket.h>
 #include <sys/ioctl.h>
 #include <netinet/in.h>
@@ -2045,6 +2047,8 @@ static struct in6_addr ipaddress_to_struct_in6_addr(MonoObject *ipaddr)
 #endif /* AF_INET6 */
 #endif
 
+#if defined(__APPLE__)
+
 #if defined(HAVE_GETIFADDRS) && defined(HAVE_IF_NAMETOINDEX)
 static int
 get_local_interface_id (int family)
@@ -2081,6 +2085,8 @@ get_local_interface_id (int family)
 }
 #endif
 
+#endif /* __APPLE__ */
+
 void ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal(SOCKET sock, gint32 level, gint32 name, MonoObject *obj_val, MonoArray *byte_val, gint32 int_val, gint32 *error)
 {
        struct linger linger;
@@ -2322,7 +2328,7 @@ ves_icall_System_Net_Sockets_Socket_WSAIoctl (SOCKET sock, gint32 code,
 
        *error = 0;
        
-       if (code == FIONBIO) {
+       if ((guint32)code == FIONBIO) {
                /* Invalid command. Must use Socket.Blocking */
                return -1;
        }
@@ -3133,7 +3139,7 @@ extern MonoBoolean ves_icall_System_Net_Dns_GetHostByAddr_internal(MonoString *a
        struct sockaddr_in6 saddr6;
        struct addrinfo *info = NULL, hints;
        gint32 family;
-       char hostname[1024] = {0};
+       char hostname[NI_MAXHOST] = {0};
        int flags = 0;
 #else
        struct in_addr inaddr;
index e8a2f1a45741b3248d33e1a1ed238c1d91c81d17..811c2852045508e0e56656b8287d9b27b2a79d71 100644 (file)
@@ -29,6 +29,7 @@
 #include <mono/utils/mono-time.h>
 #include <mono/utils/mono-proclib.h>
 #include <mono/utils/mono-semaphore.h>
+#include <mono/utils/atomic.h>
 #include <errno.h>
 #ifdef HAVE_SYS_TIME_H
 #include <sys/time.h>
@@ -158,6 +159,7 @@ static MonoClass *process_async_call_klass;
 
 static GPtrArray *wsqs;
 CRITICAL_SECTION wsqs_lock;
+static gboolean suspended;
 
 /* Hooks */
 static MonoThreadPoolFunc tp_start_func;
@@ -599,6 +601,7 @@ mono_async_invoke (ThreadPool *tp, MonoAsyncResult *ares)
        MonoObject *res, *exc = NULL;
        MonoArray *out_args = NULL;
        HANDLE wait_event = NULL;
+       MonoInternalThread *thread = mono_thread_internal_current ();
 
        if (ares->execution_context) {
                /* use captured ExecutionContext (if available) */
@@ -611,7 +614,10 @@ mono_async_invoke (ThreadPool *tp, MonoAsyncResult *ares)
        if (ac == NULL) {
                /* Fast path from ThreadPool.*QueueUserWorkItem */
                void *pa = ares->async_state;
+               /* The debugger needs this */
+               thread->async_invoke_method = ((MonoDelegate*)ares->async_delegate)->method;
                res = mono_runtime_delegate_invoke (ares->async_delegate, &pa, &exc);
+               thread->async_invoke_method = NULL;
        } else {
                MonoObject *cb_exc = NULL;
 
@@ -634,7 +640,9 @@ mono_async_invoke (ThreadPool *tp, MonoAsyncResult *ares)
                if (ac != NULL && ac->cb_method) {
                        void *pa = &ares;
                        cb_exc = NULL;
+                       thread->async_invoke_method = ac->cb_method;
                        mono_runtime_invoke (ac->cb_method, ac->cb_target, pa, &cb_exc);
+                       thread->async_invoke_method = NULL;
                        exc = cb_exc;
                } else {
                        exc = NULL;
@@ -762,6 +770,7 @@ monitor_thread (gpointer unused)
        ves_icall_System_Threading_Thread_SetName_internal (thread, mono_string_new (mono_domain_get (), "Threadpool monitor"));
        while (1) {
                ms = 500;
+               i = 10; //number of spurious awakes we tolerate before doing a round of rebalancing.
                do {
                        guint32 ts;
                        ts = mono_msec_ticks ();
@@ -772,11 +781,14 @@ monitor_thread (gpointer unused)
                                break;
                        if (THREAD_WANTS_A_BREAK (thread))
                                mono_thread_interruption_checkpoint ();
-               } while (ms > 0);
+               } while (ms > 0 && i--);
 
                if (mono_runtime_is_shutting_down ())
                        break;
 
+               if (suspended)
+                       continue;
+
                for (i = 0; i < 2; i++) {
                        ThreadPool *tp;
                        tp = pools [i];
@@ -802,7 +814,13 @@ monitor_thread (gpointer unused)
 }
 
 void
-mono_thread_pool_init ()
+mono_thread_pool_init_tls (void)
+{
+       mono_wsq_init ();
+}
+
+void
+mono_thread_pool_init (void)
 {
        gint threads_per_cpu = 1;
        gint thread_count;
@@ -839,7 +857,6 @@ mono_thread_pool_init ()
 
        InitializeCriticalSection (&wsqs_lock);
        wsqs = g_ptr_array_sized_new (MAX (100 * cpu_count, thread_count));
-       mono_wsq_init ();
 
 #ifndef DISABLE_PERFCOUNTERS
        async_tp.pc_nitems = init_perf_counter ("Mono Threadpool", "Work Items Added");
@@ -1083,10 +1100,13 @@ static void
 threadpool_clear_queue (ThreadPool *tp, MonoDomain *domain)
 {
        MonoObject *obj;
-       MonoMList *other;
+       MonoMList *other = NULL;
+       MonoCQ *queue = tp->queue;
+
+       if (!queue)
+               return;
 
-       other = NULL;
-       while (mono_cq_dequeue (tp->queue, &obj)) {
+       while (mono_cq_dequeue (queue, &obj)) {
                if (obj == NULL)
                        continue;
                if (obj->vtable->domain != domain)
@@ -1094,6 +1114,9 @@ threadpool_clear_queue (ThreadPool *tp, MonoDomain *domain)
                threadpool_jobs_dec (obj);
        }
 
+       if (mono_runtime_is_shutting_down ())
+               return;
+
        while (other) {
                threadpool_append_job (tp, (MonoObject *) mono_mlist_get_data (other));
                other = mono_mlist_next (other);
@@ -1675,3 +1698,21 @@ mono_internal_thread_unhandled_exception (MonoObject* exc)
                 mono_thread_internal_reset_abort (mono_thread_internal_current ());
        }
 }
+
+/*
+ * Suspend creation of new threads.
+ */
+void
+mono_thread_pool_suspend (void)
+{
+       suspended = TRUE;
+}
+
+/*
+ * Resume creation of new threads.
+ */
+void
+mono_thread_pool_resume (void)
+{
+       suspended = FALSE;
+}
index c860b7ebfca3face33fa6e8292aab026fc691878..811924b97cc46dd79d8fb9bb20ae14c4bcd3ee20 100644 (file)
@@ -7,6 +7,7 @@
 
 /* No managed code here */
 void mono_thread_pool_init (void) MONO_INTERNAL;
+void mono_thread_pool_init_tls (void) MONO_INTERNAL;
 
 void icall_append_job (MonoObject *ar) MONO_INTERNAL;
 void icall_append_io_job (MonoObject *target, MonoSocketAsyncResult *state) MONO_INTERNAL;
@@ -22,6 +23,9 @@ void mono_thread_pool_cleanup (void) MONO_INTERNAL;
 
 gboolean mono_thread_pool_remove_domain_jobs (MonoDomain *domain, int timeout) MONO_INTERNAL;
 
+void mono_thread_pool_suspend (void) MONO_INTERNAL;
+void mono_thread_pool_resume (void) MONO_INTERNAL;
+
 void
 ves_icall_System_Threading_ThreadPool_GetAvailableThreads (int *workerThreads,
                                                           int *completionPortThreads) MONO_INTERNAL;
index dc1eb41879fea4319aa30e23898c3c18578f66e0..8ebc5391834d540665ca04f640816945ff855c0b 100644 (file)
@@ -184,7 +184,6 @@ void mono_thread_init_apartment_state (void) MONO_INTERNAL;
 void mono_thread_cleanup_apartment_state (void) MONO_INTERNAL;
 
 void mono_threads_set_shutting_down (void) MONO_INTERNAL;
-gboolean mono_threads_is_shutting_down (void) MONO_INTERNAL;
 
 gunichar2* mono_thread_get_name (MonoInternalThread *this_obj, guint32 *name_len) MONO_INTERNAL;
 
@@ -226,5 +225,8 @@ gpointer mono_get_special_static_data_for_thread (MonoInternalThread *thread, gu
 
 MonoException* mono_thread_resume_interruption (void) MONO_INTERNAL;
 void mono_threads_perform_thread_dump (void) MONO_INTERNAL;
+MonoThread *mono_thread_attach_full (MonoDomain *domain, gboolean force_attach) MONO_INTERNAL;
+
+void mono_thread_init_tls (void) MONO_INTERNAL;
 
 #endif /* _MONO_METADATA_THREADS_TYPES_H_ */
index 33c01926d95c8659e0227531511f5d43406a0bc8..2f7e36584a90ca2f1dab88a27a8040ff76696878 100644 (file)
@@ -47,6 +47,7 @@
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/hazard-pointer.h>
 #include <mono/utils/mono-tls.h>
+#include <mono/utils/atomic.h>
 
 #include <mono/metadata/gc-internal.h>
 
@@ -244,7 +245,7 @@ mono_thread_get_tls_offset (void)
  * If handle_store() returns FALSE the thread must not be started
  * because Mono is shutting down.
  */
-static gboolean handle_store(MonoThread *thread)
+static gboolean handle_store(MonoThread *thread, gboolean force_attach)
 {
        mono_threads_lock ();
 
@@ -253,7 +254,7 @@ static gboolean handle_store(MonoThread *thread)
        if (threads_starting_up)
                mono_g_hash_table_remove (threads_starting_up, thread);
 
-       if (shutting_down) {
+       if (shutting_down && !force_attach) {
                mono_threads_unlock ();
                return FALSE;
        }
@@ -389,6 +390,10 @@ static void thread_cleanup (MonoInternalThread *thread)
 
        /* if the thread is not in the hash it has been removed already */
        if (!handle_remove (thread)) {
+               if (thread == mono_thread_internal_current ()) {
+                       mono_domain_unset ();
+                       mono_memory_barrier ();
+               }
                /* This needs to be called even if handle_remove () fails */
                if (mono_thread_cleanup_fn)
                        mono_thread_cleanup_fn (thread);
@@ -398,6 +403,15 @@ static void thread_cleanup (MonoInternalThread *thread)
 
        mono_profiler_thread_end (thread->tid);
 
+       if (thread == mono_thread_internal_current ()) {
+               /*
+                * This will signal async signal handlers that the thread has exited.
+                * The profiler callback needs this to be set, so it cannot be done earlier.
+                */
+               mono_domain_unset ();
+               mono_memory_barrier ();
+       }
+
        if (thread == mono_thread_internal_current ())
                mono_thread_pop_appdomain_ref ();
 
@@ -607,8 +621,6 @@ static guint32 WINAPI start_wrapper_internal(void *data)
 
        THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Start wrapper terminating", __func__, GetCurrentThreadId ()));
 
-       thread_cleanup (internal);
-
        /* Do any cleanup needed for apartment state. This
         * cannot be done in thread_cleanup since thread_cleanup could be 
         * called for a thread other than the current thread.
@@ -616,6 +628,8 @@ static guint32 WINAPI start_wrapper_internal(void *data)
         * for the current thead */
        mono_thread_cleanup_apartment_state ();
 
+       thread_cleanup (internal);
+
        /* Remove the reference to the thread object in the TLS data,
         * so the thread object can be finalized.  This won't be
         * reached if the thread threw an uncaught exception, so those
@@ -625,7 +639,6 @@ static guint32 WINAPI start_wrapper_internal(void *data)
         * to TLS data.)
         */
        SET_CURRENT_OBJECT (NULL);
-       mono_domain_unset ();
 
        return(0);
 }
@@ -781,7 +794,7 @@ mono_thread_create_internal (MonoDomain *domain, gpointer func, gpointer arg, gb
        if (threadpool_thread)
                mono_thread_set_state (internal, ThreadState_Background);
 
-       if (handle_store (thread))
+       if (handle_store (thread, FALSE))
                ResumeThread (thread_handle);
 
        /* Check that the managed and unmanaged layout of MonoInternalThread matches */
@@ -797,6 +810,18 @@ mono_thread_create (MonoDomain *domain, gpointer func, gpointer arg)
        mono_thread_create_internal (domain, func, arg, FALSE, FALSE, 0);
 }
 
+#if defined(HOST_WIN32) && defined(__GNUC__)
+static __inline__ __attribute__((always_inline))
+/* This is not defined by gcc */
+unsigned long long
+__readfsdword (unsigned long long offset)
+{
+       unsigned long long value;
+       __asm__("movl %%fs:%a[offset], %k[value]" : [value] "=q" (value) : [offset] "irm" (offset));
+       return value;
+}
+#endif
+
 /*
  * mono_thread_get_stack_bounds:
  *
@@ -806,29 +831,74 @@ mono_thread_create (MonoDomain *domain, gpointer func, gpointer arg)
 void
 mono_thread_get_stack_bounds (guint8 **staddr, size_t *stsize)
 {
-#if defined(HAVE_PTHREAD_GET_STACKSIZE_NP) && defined(HAVE_PTHREAD_GET_STACKADDR_NP)
-       *staddr = (guint8*)pthread_get_stackaddr_np (pthread_self ());
-       *stsize = pthread_get_stacksize_np (pthread_self ());
+#if defined(HOST_WIN32)
+       /* Windows */
+       /* http://en.wikipedia.org/wiki/Win32_Thread_Information_Block */
+       void* tib = (void*)__readfsdword(0x18);
+       guint8 *stackTop = (guint8*)*(int*)((char*)tib + 4);
+       guint8 *stackBottom = (guint8*)*(int*)((char*)tib + 8);
+
+       *staddr = stackBottom;
+       *stsize = stackTop - stackBottom;
+       return;
+
+#elif defined(HAVE_PTHREAD_GET_STACKSIZE_NP) && defined(HAVE_PTHREAD_GET_STACKADDR_NP)
+       /* Mac OS X */
+       *staddr = (guint8*)pthread_get_stackaddr_np (pthread_self());
+       *stsize = pthread_get_stacksize_np (pthread_self());
 
        /* staddr points to the start of the stack, not the end */
        *staddr -= *stsize;
-       *staddr = (guint8*)((gssize)*staddr & ~(mono_pagesize () - 1));
+
+       /* When running under emacs, sometimes staddr is not aligned to a page size */
+       *staddr = (guint8*)((gssize)*staddr & ~(mono_pagesize() - 1));
        return;
-       /* FIXME: simplify the mess below */
-#elif !defined(HOST_WIN32)
+
+#elif (defined(HAVE_PTHREAD_GETATTR_NP) || defined(HAVE_PTHREAD_ATTR_GET_NP)) && defined(HAVE_PTHREAD_ATTR_GETSTACK)
+       /* Linux, BSD */
+
        pthread_attr_t attr;
        guint8 *current = (guint8*)&attr;
 
+       *staddr = NULL;
+       *stsize = (size_t)-1;
+
        pthread_attr_init (&attr);
-#  ifdef HAVE_PTHREAD_GETATTR_NP
+
+#if     defined(HAVE_PTHREAD_GETATTR_NP)
+       /* Linux */
        pthread_getattr_np (pthread_self(), &attr);
-#  else
-#    ifdef HAVE_PTHREAD_ATTR_GET_NP
+
+#elif   defined(HAVE_PTHREAD_ATTR_GET_NP)
+       /* BSD */
        pthread_attr_get_np (pthread_self(), &attr);
-#    elif defined(sun)
+
+#else
+#error         Cannot determine which API is needed to retrieve pthread attributes.
+#endif
+
+       pthread_attr_getstack (&attr, (void**)staddr, stsize);
+       pthread_attr_destroy (&attr);
+
+       if (*staddr)
+               g_assert ((current > *staddr) && (current < *staddr + *stsize));
+
+       /* When running under emacs, sometimes staddr is not aligned to a page size */
+       *staddr = (guint8*)((gssize)*staddr & ~(mono_pagesize () - 1));
+       return;
+
+#elif defined(__OpenBSD__)
+       /* OpenBSD */
+       /* TODO :   Determine if this code is actually still needed. It may already be covered by the case above. */
+
+       pthread_attr_t attr;
+       guint8 *current = (guint8*)&attr;
+
        *staddr = NULL;
-       pthread_attr_getstacksize (&attr, &stsize);
-#    elif defined(__OpenBSD__)
+       *stsize = (size_t)-1;
+
+       pthread_attr_init (&attr);
+
        stack_t ss;
        int rslt;
 
@@ -837,34 +907,45 @@ mono_thread_get_stack_bounds (guint8 **staddr, size_t *stsize)
 
        *staddr = (guint8*)((size_t)ss.ss_sp - ss.ss_size);
        *stsize = ss.ss_size;
-#    else
-       *staddr = NULL;
-       *stsize = 0;
-       return;
-#    endif
-#  endif
 
-#  if !defined(sun)
-#    if !defined(__OpenBSD__)
-       pthread_attr_getstack (&attr, (void**)staddr, stsize);
-#    endif
+       pthread_attr_destroy (&attr);
+
        if (*staddr)
                g_assert ((current > *staddr) && (current < *staddr + *stsize));
-#  endif
 
+       /* When running under emacs, sometimes staddr is not aligned to a page size */
+       *staddr = (guint8*)((gssize)*staddr & ~(mono_pagesize () - 1));
+       return;
+
+#elif defined(sun) || defined(__native_client__)
+       /* Solaris/Illumos, NaCl */
+       pthread_attr_t attr;
+       pthread_attr_init (&attr);
+       pthread_attr_getstacksize (&attr, &stsize);
        pthread_attr_destroy (&attr);
+       *staddr = NULL;
+       return;
+
 #else
+       /* FIXME:   It'd be better to use the 'error' preprocessor macro here so we know
+                   at compile-time if the target platform isn't supported. */
+#warning "Unable to determine how to retrieve a thread's stack-bounds for this platform in 'mono_thread_get_stack_bounds()'."
        *staddr = NULL;
-       *stsize = (size_t)-1;
+       *stsize = 0;
+       return;
 #endif
-
-       /* When running under emacs, sometimes staddr is not aligned to a page size */
-       *staddr = (guint8*)((gssize)*staddr & ~(mono_pagesize () - 1));
-}      
+}
 
 MonoThread *
 mono_thread_attach (MonoDomain *domain)
 {
+       return mono_thread_attach_full (domain, FALSE);
+}
+
+MonoThread *
+mono_thread_attach_full (MonoDomain *domain, gboolean force_attach)
+{
+       MonoThreadInfo *info;
        MonoInternalThread *thread;
        MonoThread *current_thread;
        HANDLE thread_handle;
@@ -914,9 +995,13 @@ mono_thread_attach (MonoDomain *domain)
 
        THREAD_DEBUG (g_message ("%s: Attached thread ID %"G_GSIZE_FORMAT" (handle %p)", __func__, tid, thread_handle));
 
+       info = mono_thread_info_current ();
+       g_assert (info);
+       thread->thread_info = info;
+
        current_thread = new_thread_with_internal (domain, thread);
 
-       if (!handle_store (current_thread)) {
+       if (!handle_store (current_thread, force_attach)) {
                /* Mono is shutting down, so just wait for the end */
                for (;;)
                        Sleep (10000);
@@ -960,8 +1045,6 @@ mono_thread_detach (MonoThread *thread)
        g_return_if_fail (thread != NULL);
 
        THREAD_DEBUG (g_message ("%s: mono_thread_detach for %p (%"G_GSIZE_FORMAT")", __func__, thread, (gsize)thread->internal_thread->tid));
-       
-       mono_profiler_thread_end (thread->internal_thread->tid);
 
        thread_cleanup (thread->internal_thread);
 
@@ -1128,7 +1211,7 @@ static void mono_thread_start (MonoThread *thread)
         * launched, to avoid the main thread deadlocking while trying
         * to clean up a thread that will never be signalled.
         */
-       if (!handle_store (thread))
+       if (!handle_store (thread, FALSE))
                return;
 
        ResumeThread (internal->handle);
@@ -2528,6 +2611,13 @@ ves_icall_System_Threading_Volatile_Write_T (void *ptr, MonoObject *value)
        mono_gc_wbarrier_generic_nostore (ptr);
 }
 
+void
+mono_thread_init_tls (void)
+{
+       MONO_FAST_TLS_INIT (tls_current_object);
+       mono_native_tls_alloc (&current_object_key, NULL);
+}
+
 void mono_thread_init (MonoThreadStartCB start_cb,
                       MonoThreadAttachCB attach_cb)
 {
@@ -2541,8 +2631,6 @@ void mono_thread_init (MonoThreadStartCB start_cb,
        mono_init_static_data_info (&thread_static_info);
        mono_init_static_data_info (&context_static_info);
 
-       MONO_FAST_TLS_INIT (tls_current_object);
-       mono_native_tls_alloc (&current_object_key, NULL);
        THREAD_DEBUG (g_message ("%s: Allocated current_object_key %d", __func__, current_object_key));
 
        mono_thread_start_cb = start_cb;
@@ -2852,21 +2940,6 @@ mono_threads_set_shutting_down (void)
        }
 }
 
-/** 
- * mono_threads_is_shutting_down:
- *
- * Returns whether a thread has commenced shutdown of Mono.  Note that
- * if the function returns FALSE the caller must not assume that
- * shutdown is not in progress, because the situation might have
- * changed since the function returned.  For that reason this function
- * is of very limited utility.
- */
-gboolean
-mono_threads_is_shutting_down (void)
-{
-       return shutting_down;
-}
-
 void mono_thread_manage (void)
 {
        struct wait_data wait_data;
@@ -2907,10 +2980,12 @@ void mono_thread_manage (void)
                THREAD_DEBUG (g_message ("%s: I have %d threads after waiting.", __func__, wait->num));
        } while(wait->num>0);
 
-       mono_runtime_shutdown ();
-
-       THREAD_DEBUG (g_message ("%s: threadpool cleanup", __func__));
-       mono_thread_pool_cleanup ();
+       /* Mono is shutting down, so just wait for the end */
+       if (!mono_runtime_try_shutdown ()) {
+               /*FIXME mono_thread_suspend probably should call mono_thread_execute_interruption when self interrupting. */
+               mono_thread_suspend (mono_thread_internal_current ());
+               mono_thread_execute_interruption (mono_thread_internal_current ());
+       }
 
        /* 
         * Remove everything but the finalizer thread and self.
@@ -3465,6 +3540,10 @@ collect_appdomain_thread (gpointer key, gpointer value, gpointer user_data)
 gboolean
 mono_threads_abort_appdomain_threads (MonoDomain *domain, int timeout)
 {
+#ifdef __native_client__
+       return FALSE;
+#endif
+
        abort_appdomain_data user_data;
        guint32 start_time;
        int orig_timeout = timeout;
@@ -4440,6 +4519,10 @@ mono_runtime_has_tls_get (void)
 int
 mono_thread_kill (MonoInternalThread *thread, int signal)
 {
+#ifdef __native_client__
+       /* Workaround pthread_kill abort() in NaCl glibc. */
+       return -1;
+#endif
 #ifdef HOST_WIN32
        /* Win32 uses QueueUserAPC and callers of this are guarded */
        g_assert_not_reached ();
@@ -4590,6 +4673,7 @@ transition_to_suspended (MonoInternalThread *thread)
        } else {
                thread->state &= ~ThreadState_SuspendRequested;
                thread->state |= ThreadState_Suspended;
+               mono_thread_info_finish_suspend ();
        }
        LeaveCriticalSection (thread->synch_cs);
 }
@@ -4719,3 +4803,20 @@ resume_thread_internal (MonoInternalThread *thread)
        LeaveCriticalSection (thread->synch_cs);
        return TRUE;
 }
+
+
+/*
+ * mono_thread_is_foreign:
+ * @thread: the thread to query
+ *
+ * This function allows one to determine if a thread was created by the mono runtime and has
+ * a well defined lifecycle or it's a foreigh one, created by the native environment.
+ *
+ * Returns: true if @thread was not created by the runtime.
+ */
+mono_bool
+mono_thread_is_foreign (MonoThread *thread)
+{
+       MonoThreadInfo *info = thread->internal_thread->thread_info;
+       return info->runtime_thread == FALSE;
+}
index 67001bed4cf11618e6e3aaaf30e9203361621b46..2678789b6e6c2cc7d4c1d873b1f3b85eb7efe779 100644 (file)
@@ -46,6 +46,8 @@ extern uint32_t mono_threads_get_default_stacksize (void);
 
 void mono_threads_request_thread_dump (void);
 
+mono_bool mono_thread_is_foreign (MonoThread *thread);
+
 MONO_END_DECLS
 
 #endif /* _MONO_METADATA_THREADS_H_ */
index 12bf0067c8e4f6b25947e0e78bbbe13845490c97..20dbb1ac93d46df68aa962ac5bb57db0b9ef85c9 100644 (file)
@@ -869,7 +869,7 @@ mono_type_is_valid_in_context (VerifyContext *ctx, MonoType *type)
        if (!is_valid_type_in_context (ctx, type)) {
                char *str = mono_type_full_name (type);
                ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid generic type (%s%s) (argument out of range or %s is not generic) at 0x%04x",
-                       type->type == MONO_TYPE_VAR ? "!" : "!!",
+                       str [0] == '!' ? "" : type->type == MONO_TYPE_VAR ? "!" : "!!",
                        str,
                        type->type == MONO_TYPE_VAR ? "class" : "method",
                        ctx->ip_offset),
@@ -2118,6 +2118,9 @@ verifier_class_is_assignable_from (MonoClass *target, MonoClass *candidate)
 
        if (mono_class_has_variant_generic_params (target)) {
                if (MONO_CLASS_IS_INTERFACE (target)) {
+                       if (MONO_CLASS_IS_INTERFACE (candidate) && mono_class_is_variant_compatible (target, candidate, TRUE))
+                               return TRUE;
+
                        if (candidate->rank == 1) {
                                if (verifier_inflate_and_check_compat (target, mono_defaults.generic_ilist_class, candidate->element_class))
                                        return TRUE;
@@ -4500,7 +4503,7 @@ static void
 merge_stacks (VerifyContext *ctx, ILCodeDesc *from, ILCodeDesc *to, gboolean start, gboolean external) 
 {
        MonoError error;
-       int i, j, k;
+       int i, j;
        stack_init (ctx, to);
 
        if (start) {
@@ -4544,6 +4547,14 @@ merge_stacks (VerifyContext *ctx, ILCodeDesc *from, ILCodeDesc *to, gboolean sta
                        continue;
                }
 
+               /*Both slots are the same boxed valuetype. Simply copy it.*/
+               if (stack_slot_is_boxed_value (old_slot) && 
+                       stack_slot_is_boxed_value (new_slot) &&
+                       mono_metadata_type_equal (old_type, new_type)) {
+                       copy_stack_value (new_slot, old_slot);
+                       continue;
+               }
+
                if (mono_type_is_generic_argument (old_type) || mono_type_is_generic_argument (new_type)) {
                        char *old_name = stack_slot_full_name (old_slot); 
                        char *new_name = stack_slot_full_name (new_slot);
@@ -4582,15 +4593,6 @@ merge_stacks (VerifyContext *ctx, ILCodeDesc *from, ILCodeDesc *to, gboolean sta
                                goto end_verify;
                        }
 
-                       for (j = 0; j < old_class->interface_count; ++j) {
-                               for (k = 0; k < new_class->interface_count; ++k) {
-                                       if (mono_metadata_type_equal (&old_class->interfaces [j]->byval_arg, &new_class->interfaces [k]->byval_arg)) {
-                                               match_class = old_class->interfaces [j];
-                                               goto match_found;
-                                       }
-                               }
-                       }
-
                        /* if old class is an interface that new class implements */
                        if (old_class->flags & TYPE_ATTRIBUTE_INTERFACE) {
                                if (verifier_class_is_assignable_from (old_class, new_class)) {
@@ -4950,7 +4952,9 @@ mono_method_verify (MonoMethod *method, int level)
                                ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Catch clause %d with invalid type", i));
                                break;
                        }
-               
+                       if (!mono_type_is_valid_in_context (&ctx, &clause->data.catch_class->byval_arg))
+                               break;
+
                        init_stack_with_value_at_exception_boundary (&ctx, ctx.code + clause->handler_offset, clause->data.catch_class);
                }
                else if (clause->flags == MONO_EXCEPTION_CLAUSE_FILTER) {
@@ -4959,6 +4963,9 @@ mono_method_verify (MonoMethod *method, int level)
                }
        }
 
+       if (!ctx.valid)
+               goto cleanup;
+
        original_bb = bb = mono_basic_block_split (method, &error);
        if (!mono_error_ok (&error)) {
                ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Invalid branch target: %s", mono_error_get_message (&error)));
@@ -6004,7 +6011,7 @@ gboolean
 mono_verifier_is_class_full_trust (MonoClass *klass)
 {
        /* under CoreCLR code is trusted if it is part of the "platform" otherwise all code inside the GAC is trusted */
-       gboolean trusted_location = (mono_security_get_mode () != MONO_SECURITY_MODE_CORE_CLR) ? 
+       gboolean trusted_location = !mono_security_core_clr_enabled () ?
                (klass->image->assembly && klass->image->assembly->in_gac) : mono_security_core_clr_is_platform_image (klass->image);
 
        if (verify_all && verifier_mode == MONO_VERIFIER_MODE_OFF)
@@ -6213,6 +6220,9 @@ verify_generic_parameters (MonoClass *class)
                        MonoClass *ctr = *constraints;
                        MonoType *constraint_type = &ctr->byval_arg;
 
+                       if (!mono_class_can_access_class (class, ctr))
+                               goto fail;
+
                        if (!mono_type_is_valid_type_in_context (constraint_type, &gc->context))
                                goto fail;
 
index 5bf87e135579ae307cdac5a3fcd0e844e40c7be2..6d694bc2957dfc692be3108bf3c3aeb5b2c53528 100644 (file)
 /inssel.c
 /inssel.h
 /mini.pc
-/cpu-pentium.h
-/cpu-g4.h
-/cpu-amd64.h
+/cpu-*.h
 /mono
 /monow
-/cpu-sparc.h
-/cpu-s390.h
-/cpu-x86.h
 /.hidden
 /semantic.cache
 /.project
@@ -33,5 +28,6 @@
 /buildver.h
 /TAGS
 /mono-sgen
+/mono-boehm
 /buildver-sgen.h
-
+/buildver-boehm.h
index 21396bfb853a6f69a6bce3fd670d7c0e9b3fefec..7cb8f84a3d913ce351b1d69ef804ffabf059c540 100644 (file)
@@ -47,7 +47,7 @@ sgenstatic_libs = \
 
 CLASS=$(mcs_topdir)/class/lib/net_4_5
 
-RUNTIME_EXECUTABLE = $(if $(SGEN),$(top_builddir)/mono/mini/mono-sgen,$(top_builddir)/runtime/mono-wrapper)
+RUNTIME_EXECUTABLE = $(if $(BOEHM),$(top_builddir)/mono/mini/mono-boehm,$(top_builddir)/runtime/mono-wrapper)
 
 RUNTIME = MONO_PATH=$(CLASS) $(RUNTIME_EXECUTABLE)
 RUNTIME_AOTCHECK = MONO_PATH=$(CLASS):. $(RUNTIME_EXECUTABLE)
@@ -75,16 +75,20 @@ genmdesc_CFLAGS = $(AM_CFLAGS)
 
 if NO_VERSION_SCRIPT
 monoldflags=$(export_ldflags)
-monobinldflags=$(export_ldflags)
+monobinldflags=$(export_ldflags) $(extra_runtime_ldflags)
 else
 monoldflags=-Wl,-version-script=$(srcdir)/ldscript $(export_ldflags)
-monobinldflags=-Wl,-version-script=$(srcdir)/ldscript.mono $(export_ldflags)
+monobinldflags=-Wl,-version-script=$(srcdir)/ldscript.mono $(export_ldflags) $(extra_runtime_ldflags)
 endif
 
 if HOST_WIN32
-libmono_2_0_la_LDFLAGS=-no-undefined -avoid-version -Wl,--kill-at $(monoldflags)
+libmonoldflags=-no-undefined -avoid-version -Wl,--kill-at $(monoldflags)
 else
-libmono_2_0_la_LDFLAGS=$(monoldflags) -version-info 1:0:0
+if PLATFORM_ANDROID
+libmonoldflags= -avoid-version $(monoldflags)
+else
+libmonoldflags=$(monoldflags) -version-info 1:0:0
+endif
 endif
 
 if JIT_SUPPORTED
@@ -96,9 +100,26 @@ sgen_static_libraries = libmini-static.la $(sgenstatic_libs)
 endif
 
 if SUPPORT_BOEHM
-boehm_libraries = libmono-2.0.la
+boehm_libraries = libmonoboehm-2.0.la
 boehm_static_libraries = libmini-static.la $(static_libs)
-boehm_binaries  = mono
+boehm_binaries  = mono-boehm
+endif
+
+#The mono uses sgen, while libmono remains boehm
+mono_bin_suffix = sgen
+libmono_suffix = boehm
+
+if DISABLE_EXECUTABLES
+else
+bin_SCRIPTS = mono
+noinst_SCRIPTS = mono
+
+mono: mono-$(mono_bin_suffix)
+       ln -sf $< $@
+
+install-exec-hook:
+       ln -sf mono-$(mono_bin_suffix) $(DESTDIR)$(bindir)/mono
+       (cd $(DESTDIR)$(libdir); for i in libmono$(libmono_suffix)*; do ln -sf $$i `echo $$i | sed s/$(libmono_suffix)//` ; done)
 endif
 
 if DISABLE_EXECUTABLES
@@ -110,7 +131,11 @@ bin_PROGRAMS = $(boehm_binaries) $(sgen_binaries)
 endif
 endif
 
+if DISABLE_EXECUTABLES
 noinst_PROGRAMS = genmdesc
+else
+noinst_PROGRAMS = genmdesc mono
+endif
 
 if DISABLE_EXECUTABLES
 shared_libraries = $(boehm_libraries) $(sgen_libraries)
@@ -155,27 +180,42 @@ endif
 
 endif
 
-mono_SOURCES = \
+mono_boehm_SOURCES = \
        main.c
 
 mono_CFLAGS = $(AM_CFLAGS)
 
+mono_boehm_CFLAGS = $(AM_CFLAGS)
+
 AM_CPPFLAGS = $(LIBGC_CPPFLAGS)
 
-mono_sgen_SOURCES = $(mono_SOURCES)
+mono_sgen_SOURCES = \
+       main-sgen.c
+
+mono_SOURCES = \
+       main-sgen.c
+
 mono_sgen_CFLAGS = $(AM_CFLAGS)
 
 # We build this after libmono was built so it contains the date when the final
 # link was done
 if SUPPORT_BOEHM
-buildver.h: libmini-static.la
-       @echo "const char *build_date = \"`date`\";" > buildver.h
-mono-main.$(OBJEXT): buildver.h
+if DISABLE_EXECUTABLES
+buildver-boehm.h: libmini-static.la $(monodir)/mono/metadata/libmonoruntime.la
+else
+buildver-boehm.h: libmini-static.la $(monodir)/mono/metadata/libmonoruntime-static.la
+endif
+       @echo "const char *build_date = \"`date`\";" > buildver-boehm.h
+mono_boehm-main.$(OBJEXT): buildver-boehm.h
 endif
 
-buildver-sgen.h: libmini-static.la
+if DISABLE_EXECUTABLES
+buildver-sgen.h: libmini-static.la $(monodir)/mono/metadata/libmonoruntimesgen.la
+else
+buildver-sgen.h: libmini-static.la $(monodir)/mono/metadata/libmonoruntimesgen-static.la
+endif
        @echo "const char *build_date = \"`date`\";" > buildver-sgen.h
-mono_sgen-main.$(OBJEXT): buildver-sgen.h
+mono_sgen-main-sgen.$(OBJEXT): buildver-sgen.h
 
 if DTRACE_G_REQUIRED
 LIBMONO_DTRACE_OBJECT = .libs/mono-dtrace.$(OBJEXT)
@@ -195,8 +235,8 @@ if STATIC_MONO
 MONO_LIB=$(boehm_static_libraries)
 MONO_SGEN_LIB=$(sgen_static_libraries)
 else 
-MONO_LIB=libmono-2.0.la
-MONO_SGEN_LIB=libmonosgen-2.0.la
+MONO_LIB=libmonoboehm-2.0.la
+MONO_LIBLIB=libmonosgen-2.0.la
 endif
 
 if LOADED_LLVM
@@ -205,7 +245,7 @@ else
 LLVMMONOF=$(LLVM_LIBS) $(LLVM_LDFLAGS)
 endif
 
-mono_LDADD = \
+mono_boehm_LDADD = \
        $(MONO_LIB)             \
        $(GLIB_LIBS)            \
        $(LLVMMONOF)            \
@@ -213,7 +253,7 @@ mono_LDADD = \
        -lm                     \
        $(MONO_DTRACE_OBJECT)
 
-mono_LDFLAGS = \
+mono_boehm_LDFLAGS = \
        $(static_flags) -export-dynamic $(monobinldflags) $(monobin_platform_ldflags)
 
 mono_sgen_LDADD = \
@@ -226,6 +266,14 @@ mono_sgen_LDADD = \
 
 mono_sgen_LDFLAGS = $(static_flags) -export-dynamic $(monobinldflags) $(monobin_platform_ldflags)
 
+# if SUPPORT_SGEN
+# 
+# mono_LDADD = $(mono_sgen_LDADD)
+# mono_LDFLAGS = $(mono_sgen_LDFLAGS)
+# 
+# endif
+
+
 if DTRACE_G_REQUIRED
 
 mono-dtrace.$(OBJEXT): $(top_srcdir)/data/mono.d mini.lo $(monodir)/mono/metadata/libmonoruntime-static.la
@@ -240,9 +288,9 @@ endif
 
 # Create monow.exe, linked for the 'windows' subsystem
 if HOST_WIN32
-monow_LDADD = $(mono_LDADD)
-monow_LDFLAGS = $(mono_LDFLAGS) -mwindows
-monow_SOURCES = $(mono_SOURCES)
+monow_LDADD = $(mono_boehm_LDADD)
+monow_LDFLAGS = $(mono_boehm_LDFLAGS) -mwindows
+monow_SOURCES = $(mono_boehm_SOURCES)
 endif
 
 genmdesc_SOURCES = \
@@ -293,12 +341,6 @@ sparc_sources = \
        exceptions-sparc.c      \
        tramp-sparc.c
 
-s390_sources = \
-       mini-s390.c             \
-       mini-s390.h             \
-       exceptions-s390.c       \
-       tramp-s390.c
-
 s390x_sources = \
        mini-s390x.c            \
        mini-s390x.h            \
@@ -414,6 +456,10 @@ test_sources =                     \
        gshared.cs
 
 regtests=basic.exe basic-float.exe basic-long.exe basic-calls.exe objects.exe arrays.exe basic-math.exe exceptions.exe iltests.exe devirtualization.exe generics.exe basic-simd.exe
+if NACL_CODEGEN
+test_sources += nacl.cs
+regtests += nacl.exe
+endif
 
 if X86
 if MONO_DEBUGGER_SUPPORTED
@@ -459,7 +505,7 @@ arch_define=__mips__
 endif
 
 if ARM
-# pick up arm_dpimacros.h and arm_fpamacros.h
+# pick up arm_dpimacros.h
 ARCH_CFLAGS = -I../arch/arm
 arch_sources = $(arm_sources)
 arch_built=cpu-arm.h
@@ -478,13 +524,7 @@ arch_built=cpu-sparc.h
 arch_define=__sparc__
 endif
 
-if S390
-arch_sources = $(s390_sources)
-arch_built=cpu-s390.h
-arch_define=__s390__
-endif
-
-if S390x
+if S390X
 arch_sources = $(s390x_sources)
 arch_built=cpu-s390x.h
 arch_define=__s390__
@@ -515,17 +555,15 @@ endif
 libmini_la_SOURCES = $(common_sources) $(llvm_sources) $(arch_sources) $(os_sources)
 libmini_la_CFLAGS = $(mono_CFLAGS)
 
-libmono_2_0_la_SOURCES =
-libmono_2_0_la_CFLAGS = $(mono_CFLAGS)
-libmono_2_0_la_LIBADD = libmini.la $(libs) $(LIBMONO_DTRACE_OBJECT)
+libmonoboehm_2_0_la_SOURCES =
+libmonoboehm_2_0_la_CFLAGS = $(mono_boehm_CFLAGS)
+libmonoboehm_2_0_la_LIBADD = libmini.la $(libs) $(LIBMONO_DTRACE_OBJECT)
+libmonoboehm_2_0_la_LDFLAGS = $(libmonoldflags)
 
 libmonosgen_2_0_la_SOURCES =
 libmonosgen_2_0_la_CFLAGS = $(mono_sgen_CFLAGS)
 libmonosgen_2_0_la_LIBADD = libmini.la $(sgen_libs) $(LIBMONO_DTRACE_OBJECT)
-
-if PLATFORM_ANDROID
-libmonosgen_2_0_la_LDFLAGS = -avoid-version
-endif
+libmonosgen_2_0_la_LDFLAGS = $(libmonoldflags)
 
 if MOONLIGHT
 libmono_moon_la_SOURCES = $(libmini_la_SOURCES)
@@ -553,10 +591,10 @@ libmonoinclude_HEADERS = jit.h
 
 CSFLAGS = -unsafe -nowarn:0219,0169,0414,0649
 
-basic-simd.exe: basic-simd.cs
+basic-simd.exe: basic-simd.cs TestDriver.dll
        $(MCS) -out:$@ $(CSFLAGS) $< -r:TestDriver.dll -r:Mono.Simd.dll
 
-nacl.exe: nacl.cs
+nacl.exe: nacl.cs TestDriver.dll
        $(MCS) -out:$@ $(CSFLAGS) $< -r:TestDriver.dll -r:Mono.Simd.dll
 
 generics.exe: generics.cs TestDriver.dll generics-variant-types.dll
@@ -591,7 +629,11 @@ endif !NACL_CODEGEN
 if CROSS_COMPILING
 GENMDESC_PRG=perl $(srcdir)/genmdesc.pl $(arch_define) $(srcdir) $(GENMDESC_OPTS)
 else !CROSS_COMPILING
+if NACL_CODEGEN
+GENMDESC_PRG=perl $(srcdir)/genmdesc.pl $(arch_define) $(srcdir) $(GENMDESC_OPTS)
+else
 GENMDESC_PRG=./genmdesc $(GENMDESC_OPTS)
+endif
 endif !CROSS_COMPILING
 
 cpu-x86.h: cpu-x86.md genmdesc$(EXEEXT)
@@ -612,9 +654,6 @@ cpu-arm.h: cpu-arm.md genmdesc$(EXEEXT)
 cpu-sparc.h: cpu-sparc.md genmdesc$(EXEEXT)
        $(GENMDESC_PRG) cpu-sparc.h sparc_desc $(srcdir)/cpu-sparc.md
 
-cpu-s390.h: cpu-s390.md genmdesc$(EXEEXT)
-       $(GENMDESC_PRG) cpu-s390.h s390_cpu_desc $(srcdir)/cpu-s390.md
-
 cpu-s390x.h: cpu-s390x.md genmdesc$(EXEEXT)
        $(GENMDESC_PRG) cpu-s390x.h s390x_cpu_desc $(srcdir)/cpu-s390x.md
 
@@ -632,7 +671,11 @@ checktests: $(regtests)
        for i in $(regtests); do $(RUNTIME) $$i; done
 
 rcheck: mono $(regtests)
+if NACL_CODEGEN
+       for i in $(regtests); do echo "running test $$i"; $(RUNTIME) $$i --exclude 'NaClDisable' || exit 1; done
+else
        $(RUNTIME) --regression $(regtests)
+endif
 
 gctest: mono gc-test.exe
        MONO_DEBUG_OPTIONS=clear-nursery-at-gc $(RUNTIME) --regression gc-test.exe
@@ -694,7 +737,7 @@ docu: mini.sgm
 check-local: rcheck
 
 clean-local:
-       rm -f mono a.out gmon.out *.o buildver.h buildver-sgen.h test.exe
+       rm -f mono a.out gmon.out *.o buildver-boehm.h buildver-sgen.h test.exe
 
 pkgconfigdir = $(libdir)/pkgconfig
 
@@ -714,7 +757,6 @@ EXTRA_DIST = TestDriver.cs ldscript ldscript.mono \
        $(arm_sources) cpu-arm.md               \
        $(mips_sources) cpu-mips.md             \
        $(sparc_sources) cpu-sparc.md           \
-       $(s390_sources) cpu-s390.md             \
        $(s390x_sources) cpu-s390x.md           \
        $(ia64_sources) cpu-ia64.md             \
        $(windows_sources)                      \
@@ -745,3 +787,9 @@ patch-automake:
 
 tags:
        etags -o TAGS `find .. -name "*.h" -o -name "*.c"`
+
+if HAS_EXTENSION_MODULE
+else
+Makefile.am: Makefile.am.in
+       cp $< $@
+endif
index e18cc14c779eea521e9f3ab6e33a60ac31e7be14..b1c9918d7195f4a635821848152cb157b0c0cb9a 100644 (file)
@@ -71,6 +71,8 @@
 
 #if defined(__linux__) || defined(__native_client_codegen__)
 #define RODATA_SECT ".rodata"
+#elif defined(TARGET_MACH)
+#define RODATA_SECT ".section __TEXT, __const"
 #else
 #define RODATA_SECT ".text"
 #endif
@@ -131,6 +133,7 @@ typedef struct MonoAotOptions {
        gboolean no_direct_calls;
        gboolean use_trampolines_page;
        gboolean no_instances;
+       gboolean gnu_asm;
        int nthreads;
        int ntrampolines;
        int nrgctx_trampolines;
@@ -200,6 +203,7 @@ typedef struct MonoAotCompile {
        char *static_linking_symbol;
        CRITICAL_SECTION mutex;
        gboolean use_bin_writer;
+       gboolean gas_line_numbers;
        MonoImageWriter *w;
        MonoDwarfWriter *dwarf;
        FILE *fp;
@@ -226,6 +230,7 @@ typedef struct MonoAotCompile {
        GHashTable *plt_entry_debug_sym_cache;
        gboolean thumb_mixed, need_no_dead_strip, need_pt_gnu_stack;
        GHashTable *ginst_hash;
+       GHashTable *dwarf_ln_filenames;
        gboolean global_symbols;
        gboolean direct_method_addresses;
 } MonoAotCompile;
@@ -526,6 +531,26 @@ encode_sleb128 (gint32 value, guint8 *buf, guint8 **endbuf)
        *endbuf = p;
 }
 
+static void
+emit_unset_mode (MonoAotCompile *acfg)
+{
+       img_writer_emit_unset_mode (acfg->w);
+}
+
+static G_GNUC_UNUSED void
+emit_set_thumb_mode (MonoAotCompile *acfg)
+{
+       emit_unset_mode (acfg);
+       fprintf (acfg->fp, ".code 16\n");
+}
+
+static G_GNUC_UNUSED void
+emit_set_arm_mode (MonoAotCompile *acfg)
+{
+       emit_unset_mode (acfg);
+       fprintf (acfg->fp, ".code 32\n");
+}
+
 /* ARCHITECTURE SPECIFIC CODE */
 
 #if defined(TARGET_X86) || defined(TARGET_AMD64) || defined(TARGET_ARM) || defined(TARGET_POWERPC)
@@ -607,6 +632,11 @@ arch_init (MonoAotCompile *acfg)
        acfg->llvm_label_prefix = "";
        acfg->user_symbol_prefix = "";
 
+#if defined(TARGET_AMD64) && defined(TARGET_MACH)
+       /* osx contains an old as which doesn't support avx opcodes */
+       g_string_append (acfg->llc_args, "-mattr=-avx");
+#endif
+
 #ifdef TARGET_ARM
        if (acfg->aot_opts.mtriple && strstr (acfg->aot_opts.mtriple, "darwin")) {
                g_string_append (acfg->llc_args, "-mattr=+v6");
@@ -629,6 +659,7 @@ arch_init (MonoAotCompile *acfg)
        acfg->user_symbol_prefix = "_";
        acfg->llvm_label_prefix = "_";
        acfg->need_no_dead_strip = TRUE;
+       acfg->aot_opts.gnu_asm = TRUE;
 #endif
 
 #if defined(__linux__) && !defined(TARGET_ARM)
@@ -653,7 +684,7 @@ arch_emit_direct_call (MonoAotCompile *acfg, const char *target, gboolean extern
 #if defined(TARGET_X86) || defined(TARGET_AMD64)
        /* Need to make sure this is exactly 5 bytes long */
        if (external && !acfg->use_bin_writer) {
-               img_writer_emit_unset_mode (acfg->w);
+               emit_unset_mode (acfg);
                fprintf (acfg->fp, "call %s\n", target);
        } else {
                emit_byte (acfg, '\xe8');
@@ -671,7 +702,7 @@ arch_emit_direct_call (MonoAotCompile *acfg, const char *target, gboolean extern
                img_writer_emit_reloc (acfg->w, R_ARM_CALL, target, -8);
                emit_bytes (acfg, buf, 4);
        } else {
-               img_writer_emit_unset_mode (acfg->w);
+               emit_unset_mode (acfg);
                fprintf (acfg->fp, "bl %s\n", target);
        }
        *call_size = 4;
@@ -679,7 +710,7 @@ arch_emit_direct_call (MonoAotCompile *acfg, const char *target, gboolean extern
        if (acfg->use_bin_writer) {
                g_assert_not_reached ();
        } else {
-               img_writer_emit_unset_mode (acfg->w);
+               emit_unset_mode (acfg);
                fprintf (acfg->fp, "bl %s\n", target);
                *call_size = 4;
        }
@@ -732,7 +763,7 @@ arch_emit_got_offset (MonoAotCompile *acfg, guint8 *code, int *code_size)
 {
 #if defined(TARGET_POWERPC64)
        g_assert (!acfg->use_bin_writer);
-       img_writer_emit_unset_mode (acfg->w);
+       emit_unset_mode (acfg);
        /* 
         * The ppc32 code doesn't seem to work on ppc64, the assembler complains about
         * unsupported relocations. So we store the got address into the .Lgot_addr
@@ -747,7 +778,7 @@ arch_emit_got_offset (MonoAotCompile *acfg, guint8 *code, int *code_size)
        *code_size = 16;
 #elif defined(TARGET_POWERPC)
        g_assert (!acfg->use_bin_writer);
-       img_writer_emit_unset_mode (acfg->w);
+       emit_unset_mode (acfg);
        fprintf (acfg->fp, ".L%d:\n", acfg->label_generator);
        fprintf (acfg->fp, "lis 0, (%s + 4 - .L%d)@h\n", acfg->got_symbol, acfg->label_generator);
        fprintf (acfg->fp, "ori 0, 0, (%s + 4 - .L%d)@l\n", acfg->got_symbol, acfg->label_generator);
@@ -883,7 +914,7 @@ arch_emit_plt_entry (MonoAotCompile *acfg, int index)
 
                /* The GOT address is guaranteed to be in r30 by OP_LOAD_GOTADDR */
                g_assert (!acfg->use_bin_writer);
-               img_writer_emit_unset_mode (acfg->w);
+               emit_unset_mode (acfg);
                fprintf (acfg->fp, "lis 11, %d@h\n", offset);
                fprintf (acfg->fp, "ori 11, 11, %d@l\n", offset);
                fprintf (acfg->fp, "add 11, 11, 30\n");
@@ -915,13 +946,23 @@ arch_emit_llvm_plt_entry (MonoAotCompile *acfg, int index)
        /* LLVM calls the PLT entries using bl, so these have to be thumb2 */
        /* The caller already transitioned to thumb */
        /* The code below should be 12 bytes long */
+       /* clang has trouble encoding these instructions, so emit the binary */
+#if 0
        fprintf (acfg->fp, "ldr ip, [pc, #8]\n");
        /* thumb can't encode ld pc, [pc, ip] */
        fprintf (acfg->fp, "add ip, pc, ip\n");
        fprintf (acfg->fp, "ldr ip, [ip, #0]\n");
        fprintf (acfg->fp, "bx ip\n");
+#endif
+       emit_set_thumb_mode (acfg);
+       fprintf (acfg->fp, ".4byte 0xc008f8df\n");
+       fprintf (acfg->fp, ".2byte 0x44fc\n");
+       fprintf (acfg->fp, ".4byte 0xc000f8dc\n");
+       fprintf (acfg->fp, ".2byte 0x4760\n");
        emit_symbol_diff (acfg, acfg->got_symbol, ".", ((acfg->plt_got_offset_base + index) * sizeof (gpointer)) + 4);
        emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
+       emit_unset_mode (acfg);
+       emit_set_arm_mode (acfg);
 #else
        g_assert_not_reached ();
 #endif
@@ -1229,7 +1270,7 @@ arch_emit_specific_trampoline (MonoAotCompile *acfg, int offset, int *tramp_size
         * in the second got slot of every aot image. The caller already computed
         * the address of its got and placed it into r30.
         */
-       img_writer_emit_unset_mode (acfg->w);
+       emit_unset_mode (acfg);
        /* Load mscorlib got address */
        fprintf (acfg->fp, "%s 0, %d(30)\n", PPC_LD_OP, (int)sizeof (gpointer));
        /* Load generic trampoline address */
@@ -1336,6 +1377,7 @@ arch_emit_unbox_trampoline (MonoAotCompile *acfg, MonoCompile *cfg, MonoMethod *
                fprintf (acfg->fp, "add r0, r0, #%d\n", (int)sizeof (MonoObject));
                fprintf (acfg->fp, "b %s\n", call_target);
                fprintf (acfg->fp, ".arm\n");
+               fprintf (acfg->fp, ".align 2\n");
                return;
        }
 
@@ -1460,7 +1502,7 @@ arch_emit_static_rgctx_trampoline (MonoAotCompile *acfg, int offset, int *tramp_
         * in the second got slot of every aot image. The caller already computed
         * the address of its got and placed it into r30.
         */
-       img_writer_emit_unset_mode (acfg->w);
+       emit_unset_mode (acfg);
        /* Load mscorlib got address */
        fprintf (acfg->fp, "%s 0, %d(30)\n", PPC_LD_OP, (int)sizeof (gpointer));
        /* Load rgctx */
@@ -1874,7 +1916,7 @@ arch_emit_autoreg (MonoAotCompile *acfg, char *symbol)
 {
 #if defined(TARGET_POWERPC) && defined(__mono_ilp32__)
        /* Based on code generated by gcc */
-       img_writer_emit_unset_mode (acfg->w);
+       emit_unset_mode (acfg);
 
        fprintf (acfg->fp,
 #if defined(_MSC_VER) || defined(MONO_CROSS_COMPILE) 
@@ -2841,8 +2883,6 @@ get_plt_entry (MonoAotCompile *acfg, MonoJumpInfo *patch_info)
 
                new_ji = mono_patch_info_dup_mp (acfg->mempool, patch_info);
 
-               // g_assert (mono_patch_info_equal (patch_info, new_ji));
-
                res = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoPltEntry));
                res->plt_offset = acfg->plt_offset;
                res->ji = new_ji;
@@ -2858,6 +2898,10 @@ get_plt_entry (MonoAotCompile *acfg, MonoJumpInfo *patch_info)
 
                g_hash_table_insert (acfg->plt_offset_to_entry, GUINT_TO_POINTER (res->plt_offset), res);
 
+               //g_assert (mono_patch_info_equal (patch_info, new_ji));
+               //mono_print_ji (patch_info); printf ("\n");
+               //g_hash_table_print_stats (acfg->patch_to_plt_entry);
+
                acfg->plt_offset ++;
        }
 
@@ -2947,21 +2991,24 @@ add_method (MonoAotCompile *acfg, MonoMethod *method)
        return add_method_full (acfg, method, FALSE, 0);
 }
 
-static void
-add_extra_method (MonoAotCompile *acfg, MonoMethod *method)
-{
-       add_method_full (acfg, method, TRUE, 0);
-}
-
 static void
 add_extra_method_with_depth (MonoAotCompile *acfg, MonoMethod *method, int depth)
 {
+       if (mono_method_is_generic_sharable_full (method, FALSE, TRUE, FALSE))
+               method = mini_get_shared_method (method);
+
        if (acfg->aot_opts.log_generics)
                printf ("%*sAdding method %s.\n", depth, "", mono_method_full_name (method, TRUE));
 
        add_method_full (acfg, method, TRUE, depth);
 }
 
+static void
+add_extra_method (MonoAotCompile *acfg, MonoMethod *method)
+{
+       add_extra_method_with_depth (acfg, method, 0);
+}
+
 static void
 add_jit_icall_wrapper (gpointer key, gpointer value, gpointer user_data)
 {
@@ -3185,11 +3232,9 @@ add_wrappers (MonoAotCompile *acfg)
        }
 
        if (strcmp (acfg->image->assembly->aname.name, "mscorlib") == 0) {
-#ifdef MONO_ARCH_HAVE_TLS_GET
                MonoMethodDesc *desc;
                MonoMethod *orig_method;
                int nallocators;
-#endif
 
                /* Runtime invoke wrappers */
 
@@ -3261,34 +3306,34 @@ add_wrappers (MonoAotCompile *acfg)
                /* stelemref */
                add_method (acfg, mono_marshal_get_stelemref ());
 
-#ifdef MONO_ARCH_HAVE_TLS_GET
-               /* Managed Allocators */
-               nallocators = mono_gc_get_managed_allocator_types ();
-               for (i = 0; i < nallocators; ++i) {
-                       m = mono_gc_get_managed_allocator_by_type (i);
-                       if (m)
-                               add_method (acfg, m);
-               }
+               if (MONO_ARCH_HAVE_TLS_GET) {
+                       /* Managed Allocators */
+                       nallocators = mono_gc_get_managed_allocator_types ();
+                       for (i = 0; i < nallocators; ++i) {
+                               m = mono_gc_get_managed_allocator_by_type (i);
+                               if (m)
+                                       add_method (acfg, m);
+                       }
 
-               /* Monitor Enter/Exit */
-               desc = mono_method_desc_new ("Monitor:Enter(object,bool&)", FALSE);
-               orig_method = mono_method_desc_search_in_class (desc, mono_defaults.monitor_class);
-               /* This is a v4 method */
-               if (orig_method) {
+                       /* Monitor Enter/Exit */
+                       desc = mono_method_desc_new ("Monitor:Enter(object,bool&)", FALSE);
+                       orig_method = mono_method_desc_search_in_class (desc, mono_defaults.monitor_class);
+                       /* This is a v4 method */
+                       if (orig_method) {
+                               method = mono_monitor_get_fast_path (orig_method);
+                               if (method)
+                                       add_method (acfg, method);
+                       }
+                       mono_method_desc_free (desc);
+
+                       desc = mono_method_desc_new ("Monitor:Exit(object)", FALSE);
+                       orig_method = mono_method_desc_search_in_class (desc, mono_defaults.monitor_class);
+                       g_assert (orig_method);
+                       mono_method_desc_free (desc);
                        method = mono_monitor_get_fast_path (orig_method);
                        if (method)
-                       add_method (acfg, method);
+                               add_method (acfg, method);
                }
-               mono_method_desc_free (desc);
-
-               desc = mono_method_desc_new ("Monitor:Exit(object)", FALSE);
-               orig_method = mono_method_desc_search_in_class (desc, mono_defaults.monitor_class);
-               g_assert (orig_method);
-               mono_method_desc_free (desc);
-               method = mono_monitor_get_fast_path (orig_method);
-               if (method)
-                       add_method (acfg, method);
-#endif
 
                /* Stelemref wrappers */
                {
@@ -3439,8 +3484,26 @@ add_wrappers (MonoAotCompile *acfg)
                token = MONO_TOKEN_METHOD_DEF | (i + 1);
                method = mono_get_method (acfg->image, token, NULL);
 
-               if (method->iflags & METHOD_IMPL_ATTRIBUTE_SYNCHRONIZED && !method->is_generic)
-                       add_method (acfg, mono_marshal_get_synchronized_wrapper (method));
+               if (method->iflags & METHOD_IMPL_ATTRIBUTE_SYNCHRONIZED) {
+                       if (method->is_generic) {
+                               // FIXME:
+                       } else if (method->klass->generic_container) {
+                               MonoGenericContext ctx;
+                               MonoMethod *inst, *gshared, *m;
+
+                               /*
+                                * Create a generic wrapper for a generic instance, and AOT that.
+                                */
+                               create_gsharedvt_inst (acfg, method, &ctx);
+                               inst = mono_class_inflate_generic_method (method, &ctx);        
+                               m = mono_marshal_get_synchronized_wrapper (inst);
+                               g_assert (m->is_inflated);
+                               gshared = mini_get_shared_method_full (m, FALSE, TRUE);
+                               add_method (acfg, gshared);
+                       } else {
+                               add_method (acfg, mono_marshal_get_synchronized_wrapper (method));
+                       }
+               }
        }
 
        /* pinvoke wrappers */
@@ -3580,7 +3643,8 @@ add_wrappers (MonoAotCompile *acfg)
                        continue;
                }
 
-               if (klass->valuetype && !klass->generic_container && can_marshal_struct (klass)) {
+               if (klass->valuetype && !klass->generic_container && can_marshal_struct (klass) &&
+                       !(klass->nested_in && strstr (klass->nested_in->name, "<PrivateImplementationDetails>") == klass->nested_in->name)) {
                        add_method (acfg, mono_marshal_get_struct_to_ptr (klass));
                        add_method (acfg, mono_marshal_get_ptr_to_struct (klass));
                }
@@ -3607,6 +3671,19 @@ has_type_vars (MonoClass *klass)
        return FALSE;
 }
 
+static gboolean
+is_vt_inst (MonoGenericInst *inst)
+{
+       int i;
+
+       for (i = 0; i < inst->type_argc; ++i) {
+               MonoType *t = inst->type_argv [i];
+               if (t->type == MONO_TYPE_VALUETYPE)
+                       return TRUE;
+       }
+       return FALSE;
+}
+
 static gboolean
 method_has_type_vars (MonoMethod *method)
 {
@@ -3677,6 +3754,7 @@ add_generic_class_with_depth (MonoAotCompile *acfg, MonoClass *klass, int depth,
        MonoMethod *method;
        MonoClassField *field;
        gpointer iter;
+       gboolean use_gsharedvt = FALSE;
 
        if (!acfg->ginst_hash)
                acfg->ginst_hash = g_hash_table_new (NULL, NULL);
@@ -3709,9 +3787,16 @@ add_generic_class_with_depth (MonoAotCompile *acfg, MonoClass *klass, int depth,
 
        g_hash_table_insert (acfg->ginst_hash, klass, klass);
 
+       /*
+        * Use gsharedvt for generic collections with vtype arguments to avoid code blowup.
+        * Enable this only for some classes since gsharedvt might not support all methods.
+        */
+       if ((acfg->opts & MONO_OPT_GSHAREDVT) && klass->image == mono_defaults.corlib && klass->generic_class && klass->generic_class->context.class_inst && is_vt_inst (klass->generic_class->context.class_inst) && (!strcmp (klass->name, "Dictionary`2") || !strcmp (klass->name, "List`1")))
+               use_gsharedvt = TRUE;
+
        iter = NULL;
        while ((method = mono_class_get_methods (klass, &iter))) {
-               if (mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, FALSE))
+               if (mono_method_is_generic_sharable_full (method, FALSE, FALSE, use_gsharedvt))
                        /* Already added */
                        continue;
 
@@ -3985,7 +4070,7 @@ add_generic_instances (MonoAotCompile *acfg)
                 * If the method is fully sharable, it was already added in place of its
                 * generic definition.
                 */
-               if (mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, FALSE))
+               if (mono_method_is_generic_sharable_full (method, FALSE, FALSE, FALSE))
                        continue;
 
                /*
@@ -4141,6 +4226,10 @@ is_direct_callable (MonoAotCompile *acfg, MonoMethod *method, MonoJumpInfo *patc
                                direct_callable = FALSE;
                        }
 
+                       if (callee_cfg->method->wrapper_type == MONO_WRAPPER_ALLOC)
+                               /* sgen does some initialization when the allocator method is created */
+                               direct_callable = FALSE;
+
                        if (direct_callable)
                                return TRUE;
                }
@@ -4186,6 +4275,119 @@ get_pinvoke_import (MonoAotCompile *acfg, MonoMethod *method)
        return import;
 }
 
+static gint
+compare_lne (MonoDebugLineNumberEntry *a, MonoDebugLineNumberEntry *b)
+{
+       if (a->native_offset == b->native_offset)
+               return a->il_offset - b->il_offset;
+       else
+               return a->native_offset - b->native_offset;
+}
+
+/*
+ * compute_line_numbers:
+ *
+ * Returns a sparse array of size CODE_SIZE containing MonoDebugSourceLocation* entries for the native offsets which have a corresponding line number
+ * entry.
+ */
+static MonoDebugSourceLocation**
+compute_line_numbers (MonoMethod *method, int code_size, MonoDebugMethodJitInfo *debug_info)
+{
+       MonoDebugMethodInfo *minfo;
+       MonoDebugLineNumberEntry *ln_array;
+       MonoDebugSourceLocation *loc;
+       int i, prev_line, prev_il_offset;
+       int *native_to_il_offset = NULL;
+       MonoDebugSourceLocation **res;
+       gboolean first;
+
+       minfo = mono_debug_lookup_method (method);
+       if (!minfo)
+               return NULL;
+       // FIXME: This seems to happen when two methods have the same cfg->method_to_register
+       if (debug_info->code_size != code_size)
+               return NULL;
+
+       g_assert (code_size);
+
+       /* Compute the native->IL offset mapping */
+
+       ln_array = g_new0 (MonoDebugLineNumberEntry, debug_info->num_line_numbers);
+       memcpy (ln_array, debug_info->line_numbers, debug_info->num_line_numbers * sizeof (MonoDebugLineNumberEntry));
+
+       qsort (ln_array, debug_info->num_line_numbers, sizeof (MonoDebugLineNumberEntry), (gpointer)compare_lne);
+
+       native_to_il_offset = g_new0 (int, code_size + 1);
+
+       for (i = 0; i < debug_info->num_line_numbers; ++i) {
+               int j;
+               MonoDebugLineNumberEntry *lne = &ln_array [i];
+
+               if (i == 0) {
+                       for (j = 0; j < lne->native_offset; ++j)
+                               native_to_il_offset [j] = -1;
+               }
+
+               if (i < debug_info->num_line_numbers - 1) {
+                       MonoDebugLineNumberEntry *lne_next = &ln_array [i + 1];
+
+                       for (j = lne->native_offset; j < lne_next->native_offset; ++j)
+                               native_to_il_offset [j] = lne->il_offset;
+               } else {
+                       for (j = lne->native_offset; j < code_size; ++j)
+                               native_to_il_offset [j] = lne->il_offset;
+               }
+       }
+       g_free (ln_array);
+
+       /* Compute the native->line number mapping */
+       res = g_new0 (MonoDebugSourceLocation*, code_size);
+       prev_il_offset = -1;
+       prev_line = -1;
+       first = TRUE;
+       for (i = 0; i < code_size; ++i) {
+               int il_offset = native_to_il_offset [i];
+
+               if (il_offset == -1 || il_offset == prev_il_offset)
+                       continue;
+               prev_il_offset = il_offset;
+               loc = mono_debug_symfile_lookup_location (minfo, il_offset);
+               if (!(loc && loc->source_file))
+                       continue;
+               if (loc->row == prev_line) {
+                       mono_debug_symfile_free_location (loc);
+                       continue;
+               }
+               prev_line = loc->row;
+               //printf ("D: %s:%d il=%x native=%x\n", loc->source_file, loc->row, il_offset, i);
+               if (first)
+                       /* This will cover the prolog too */
+                       res [0] = loc;
+               else
+                       res [i] = loc;
+               first = FALSE;
+       }
+       return res;
+}
+
+static int
+get_file_index (MonoAotCompile *acfg, const char *source_file)
+{
+       int findex;
+
+       // FIXME: Free these
+       if (!acfg->dwarf_ln_filenames)
+               acfg->dwarf_ln_filenames = g_hash_table_new (g_str_hash, g_str_equal);
+       findex = GPOINTER_TO_INT (g_hash_table_lookup (acfg->dwarf_ln_filenames, source_file));
+       if (!findex) {
+               findex = g_hash_table_size (acfg->dwarf_ln_filenames) + 1;
+               g_hash_table_insert (acfg->dwarf_ln_filenames, g_strdup (source_file), GINT_TO_POINTER (findex));
+               emit_unset_mode (acfg);
+               fprintf (acfg->fp, ".file %d \"%s\"\n", findex, mono_dwarf_escape_path (source_file));
+       }
+       return findex;
+}
+
 /*
  * emit_and_reloc_code:
  *
@@ -4195,12 +4397,13 @@ get_pinvoke_import (MonoAotCompile *acfg, MonoMethod *method)
  * since trampolines are needed to make PTL work.
  */
 static void
-emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, guint32 code_len, MonoJumpInfo *relocs, gboolean got_only)
+emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, guint32 code_len, MonoJumpInfo *relocs, gboolean got_only, MonoDebugMethodJitInfo *debug_info)
 {
        int i, pindex, start_index, method_index;
        GPtrArray *patches;
        MonoJumpInfo *patch_info;
        MonoMethodHeader *header;
+       MonoDebugSourceLocation **locs = NULL;
        gboolean skip, direct_call, external_call;
        guint32 got_slot;
        const char *direct_call_target;
@@ -4212,6 +4415,15 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
                method_index = get_method_index (acfg, method);
        }
 
+       if (acfg->gas_line_numbers && method && debug_info) {
+               locs = compute_line_numbers (method, code_len, debug_info);
+               if (!locs) {
+                       int findex = get_file_index (acfg, "<unknown>");
+                       emit_unset_mode (acfg);
+                       fprintf (acfg->fp, ".loc %d %d 0\n", findex, 1);
+               }
+       }
+
        /* Collect and sort relocations */
        patches = g_ptr_array_new ();
        for (patch_info = relocs; patch_info; patch_info = patch_info->next)
@@ -4227,6 +4439,16 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
                                break;
                }
 
+               if (locs && locs [i]) {
+                       MonoDebugSourceLocation *loc = locs [i];
+                       int findex;
+
+                       findex = get_file_index (acfg, loc->source_file);
+                       emit_unset_mode (acfg);
+                       fprintf (acfg->fp, ".loc %d %d 0\n", findex, loc->row);
+                       mono_debug_symfile_free_location (loc);
+               }
+
 #ifdef MONO_ARCH_AOT_SUPPORTED
                skip = FALSE;
                if (patch_info && (patch_info->ip.i == i) && (pindex < patches->len)) {
@@ -4344,13 +4566,22 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
 
                        /* Try to emit multiple bytes at once */
                        if (pindex < patches->len && patch_info->ip.i > i) {
-                               emit_bytes (acfg, code + i, patch_info->ip.i - i);
-                               i = patch_info->ip.i - 1;
+                               int limit;
+
+                               for (limit = i + 1; limit < patch_info->ip.i; ++limit) {
+                                       if (locs && locs [limit])
+                                               break;
+                               }
+
+                               emit_bytes (acfg, code + i, limit - i);
+                               i = limit - 1;
                        } else {
                                emit_bytes (acfg, code + i, 1);
                        }
                }
        }
+
+       g_free (locs);
 }
 
 /*
@@ -4471,7 +4702,7 @@ emit_method_code (MonoAotCompile *acfg, MonoCompile *cfg)
 
        acfg->cfgs [method_index]->got_offset = acfg->got_offset;
 
-       emit_and_reloc_code (acfg, method, code, cfg->code_len, cfg->patch_info, FALSE);
+       emit_and_reloc_code (acfg, method, code, cfg->code_len, cfg->patch_info, FALSE, mono_debug_find_method (cfg->jit_info->method, mono_domain_get ()));
 
        emit_line (acfg);
 
@@ -4612,7 +4843,7 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
                }
 
                encode_value (offset, p, &p);
-               g_assert (entry->info_type < 256);
+               g_assert ((int)entry->info_type < 256);
                g_assert (entry->data->type < 256);
                encode_value ((entry->in_mrgctx ? 1 : 0) | (entry->info_type << 1) | (entry->data->type << 9), p, &p);
                encode_patch (acfg, entry->data, p, &p);
@@ -4630,10 +4861,37 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
        case MONO_PATCH_INFO_SIGNATURE:
                encode_signature (acfg, (MonoMethodSignature*)patch_info->data.target, p, &p);
                break;
+       case MONO_PATCH_INFO_TLS_OFFSET:
+               encode_value (GPOINTER_TO_INT (patch_info->data.target), p, &p);
+               break;
        case MONO_PATCH_INFO_GSHAREDVT_CALL:
                encode_signature (acfg, (MonoMethodSignature*)patch_info->data.gsharedvt->sig, p, &p);
                encode_method_ref (acfg, patch_info->data.gsharedvt->method, p, &p);
                break;
+       case MONO_PATCH_INFO_GSHAREDVT_METHOD: {
+               MonoGSharedVtMethodInfo *info = patch_info->data.gsharedvt_method;
+               int i;
+
+               encode_method_ref (acfg, info->method, p, &p);
+               encode_value (info->entries->len, p, &p);
+               for (i = 0; i < info->entries->len; ++i) {
+                       MonoRuntimeGenericContextInfoTemplate *template = g_ptr_array_index (info->entries, i);
+
+                       encode_value (template->info_type, p, &p);
+                       switch (mini_rgctx_info_type_to_patch_info_type (template->info_type)) {
+                       case MONO_PATCH_INFO_CLASS:
+                               encode_klass_ref (acfg, mono_class_from_mono_type (template->data), p, &p);
+                               break;
+                       case MONO_PATCH_INFO_FIELD:
+                               encode_field_info (acfg, template->data, p, &p);
+                               break;
+                       default:
+                               g_assert_not_reached ();
+                               break;
+                       }
+               }
+               break;
+       }
        default:
                g_warning ("unable to handle jump info %d", patch_info->type);
                g_assert_not_reached ();
@@ -5227,11 +5485,12 @@ emit_plt (MonoAotCompile *acfg)
                                if (callee_cfg) {
                                        if (acfg->thumb_mixed && !callee_cfg->compile_llvm) {
                                                /* LLVM calls the PLT entries using bl, so emit a stub */
+                                               emit_set_thumb_mode (acfg);
                                                fprintf (acfg->fp, "\n.thumb_func\n");
                                                emit_label (acfg, plt_entry->llvm_symbol);
                                                fprintf (acfg->fp, "bx pc\n");
                                                fprintf (acfg->fp, "nop\n");
-                                               fprintf (acfg->fp, ".arm\n");
+                                               emit_set_arm_mode (acfg);
                                                fprintf (acfg->fp, "b %s\n", callee_cfg->asm_symbol);
                                        } else {
                                                fprintf (acfg->fp, "\n.set %s, %s\n", plt_entry->llvm_symbol, callee_cfg->asm_symbol);
@@ -5252,7 +5511,7 @@ emit_plt (MonoAotCompile *acfg)
 
                if (debug_sym) {
                        if (acfg->need_no_dead_strip) {
-                               img_writer_emit_unset_mode (acfg->w);
+                               emit_unset_mode (acfg);
                                fprintf (acfg->fp, "    .no_dead_strip %s\n", debug_sym);
                        }
                        emit_local_symbol (acfg, debug_sym, NULL, TRUE);
@@ -5373,7 +5632,7 @@ emit_trampoline_full (MonoAotCompile *acfg, int got_offset, MonoTrampInfo *info,
         * The code should access everything through the GOT, so we pass
         * TRUE here.
         */
-       emit_and_reloc_code (acfg, NULL, code, code_size, ji, TRUE);
+       emit_and_reloc_code (acfg, NULL, code, code_size, ji, TRUE, NULL);
 
        emit_symbol_size (acfg, start_symbol, ".");
 
@@ -5924,6 +6183,7 @@ can_encode_method (MonoAotCompile *acfg, MonoMethod *method)
                        case MONO_WRAPPER_DELEGATE_INVOKE:
                        case MONO_WRAPPER_DELEGATE_BEGIN_INVOKE:
                        case MONO_WRAPPER_DELEGATE_END_INVOKE:
+                       case MONO_WRAPPER_SYNCHRONIZED:
                                break;
                        case MONO_WRAPPER_MANAGED_TO_MANAGED:
                        case MONO_WRAPPER_CASTCLASS: {
@@ -6048,6 +6308,8 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
         * does not need to support them by creating a fake GOT etc.
         */
        cfg = mini_method_compile (method, acfg->opts, mono_get_root_domain (), FALSE, TRUE, 0);
+       mono_loader_clear_error ();
+
        if (cfg->exception_type == MONO_EXCEPTION_GENERIC_SHARING_FAILED) {
                if (acfg->aot_opts.print_skipped_methods)
                        printf ("Skip (gshared failure): %s (%s)\n", mono_method_full_name (method, TRUE), cfg->exception_message);
@@ -6068,6 +6330,7 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
                mono_destroy_compile (cfg);
                return;
        }
+       cfg->method_index = index;
 
        /* Nullify patches which need no aot processing */
        for (patch_info = cfg->patch_info; patch_info; patch_info = patch_info->next) {
@@ -6143,7 +6406,7 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
                                MonoMethod *m = patch_info->data.method;
                                if (m->is_inflated) {
                                        if (!(mono_class_generic_sharing_enabled (m->klass) &&
-                                                 mono_method_is_generic_sharable_impl_full (m, FALSE, FALSE, FALSE)) &&
+                                                 mono_method_is_generic_sharable_full (m, FALSE, FALSE, FALSE)) &&
                                                !method_has_type_vars (m)) {
                                                if (m->iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL) {
                                                        if (acfg->aot_opts.full_aot)
@@ -6162,7 +6425,7 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
                        case MONO_PATCH_INFO_VTABLE: {
                                MonoClass *klass = patch_info->data.klass;
 
-                               if (klass->generic_class && !mono_generic_context_is_sharable (&klass->generic_class->context, FALSE))
+                               if (klass->generic_class && !mini_class_is_generic_sharable (klass))
                                        add_generic_class_with_depth (acfg, klass, depth + 5, "vtable");
                                break;
                        }
@@ -6438,6 +6701,13 @@ mono_aot_get_plt_symbol (MonoJumpInfoType type, gconstpointer data)
 #endif
 }
 
+int
+mono_aot_get_method_index (MonoMethod *method)
+{
+       g_assert (llvm_acfg);
+       return get_method_index (llvm_acfg, method);
+}
+
 MonoJumpInfo*
 mono_aot_patch_info_dup (MonoJumpInfo* ji)
 {
@@ -6541,10 +6811,15 @@ emit_llvm_file (MonoAotCompile *acfg)
        if (acfg->aot_opts.mtriple)
                g_string_append_printf (acfg->llc_args, " -mtriple=%s", acfg->aot_opts.mtriple);
 
+#if defined(TARGET_MACH) && defined(TARGET_ARM)
+       /* ios requires PIC code now */
+       g_string_append_printf (acfg->llc_args, " -relocation-model=pic");
+#else
        if (llvm_acfg->aot_opts.static_link)
                g_string_append_printf (acfg->llc_args, " -relocation-model=static");
        else
                g_string_append_printf (acfg->llc_args, " -relocation-model=pic");
+#endif
        unlink (acfg->tmpfname);
 
        command = g_strdup_printf ("%sllc %s -disable-gnu-eh-frame -enable-mono-eh-frame -o %s %s.opt.bc", acfg->aot_opts.llvm_path, acfg->llc_args->str, acfg->tmpfname, acfg->tmpfname);
@@ -6631,12 +6906,18 @@ emit_code (MonoAotCompile *acfg)
                        emit_alignment (acfg, AOT_FUNC_ALIGNMENT);
 #endif
 
-                       if (acfg->thumb_mixed && cfg->compile_llvm)
+                       if (acfg->thumb_mixed && cfg->compile_llvm) {
+                               emit_set_thumb_mode (acfg);
                                fprintf (acfg->fp, "\n.thumb_func\n");
+                       }
 
                        emit_label (acfg, symbol);
 
                        arch_emit_unbox_trampoline (acfg, cfg, cfg->orig_method, cfg->asm_symbol);
+
+                       if (acfg->thumb_mixed && cfg->compile_llvm) {
+                               emit_set_arm_mode (acfg);
+                       }
                }
 
                if (cfg->compile_llvm)
@@ -6649,6 +6930,8 @@ emit_code (MonoAotCompile *acfg)
        emit_section_change (acfg, ".text", 0);
        emit_alignment (acfg, 8);
        emit_label (acfg, symbol);
+       /* To distinguish it from the next symbol */
+       emit_int32 (acfg, 0);
 
        /* 
         * Add .no_dead_strip directives for all LLVM methods to prevent the OSX linker
@@ -6669,24 +6952,39 @@ emit_code (MonoAotCompile *acfg)
        if (acfg->direct_method_addresses) {
                acfg->flags |= MONO_AOT_FILE_FLAG_DIRECT_METHOD_ADDRESSES;
 
+               /*
+                * To work around linker issues, we emit a table of branches, and disassemble them at runtime.
+                * This is PIE code, and the linker can update it if needed.
+                */
                sprintf (symbol, "method_addresses");
-               emit_section_change (acfg, RODATA_SECT, 1);
+               emit_section_change (acfg, ".text", 1);
                emit_alignment (acfg, 8);
                emit_label (acfg, symbol);
+               emit_local_symbol (acfg, symbol, "method_addresses_end", TRUE);
+               emit_unset_mode (acfg);
+               if (acfg->need_no_dead_strip)
+                       fprintf (acfg->fp, "    .no_dead_strip %s\n", symbol);
 
                for (i = 0; i < acfg->nmethods; ++i) {
                        if (acfg->cfgs [i]) {
-                               emit_pointer (acfg, acfg->cfgs [i]->asm_symbol);
+                               if (acfg->thumb_mixed && acfg->cfgs [i]->compile_llvm)
+                                       fprintf (acfg->fp, "\tblx %s\n", acfg->cfgs [i]->asm_symbol);
+                               else
+                                       fprintf (acfg->fp, "\tbl %s\n", acfg->cfgs [i]->asm_symbol);
                        } else {
-                               emit_pointer (acfg, NULL);
+                               fprintf (acfg->fp, "\tbl method_addresses\n");
                        }
                }
 
+               sprintf (symbol, "method_addresses_end");
+               emit_label (acfg, symbol);
+
                /* Empty */
                sprintf (symbol, "code_offsets");
                emit_section_change (acfg, RODATA_SECT, 1);
                emit_alignment (acfg, 8);
                emit_label (acfg, symbol);
+               emit_int32 (acfg, 0);
        } else {
                sprintf (symbol, "code_offsets");
                emit_section_change (acfg, RODATA_SECT, 1);
@@ -6725,7 +7023,10 @@ emit_code (MonoAotCompile *acfg)
 
        /* Emit a sorted table mapping methods to their unbox trampolines */
        sprintf (symbol, "unbox_trampolines");
-       emit_section_change (acfg, RODATA_SECT, 1);
+       if (acfg->direct_method_addresses)
+               emit_section_change (acfg, ".text", 0);
+       else
+               emit_section_change (acfg, RODATA_SECT, 0);
        emit_alignment (acfg, 8);
        emit_label (acfg, symbol);
 
@@ -6747,10 +7048,15 @@ emit_code (MonoAotCompile *acfg)
                        sprintf (symbol, "ut_%d", index);
 
                        emit_int32 (acfg, index);
-                       if (acfg->direct_method_addresses)
-                               emit_pointer (acfg, symbol);
-                       else
+                       if (acfg->direct_method_addresses) {
+                               emit_unset_mode (acfg);
+                               if (acfg->thumb_mixed && cfg->compile_llvm)
+                                       fprintf (acfg->fp, "\n\tblx %s\n", symbol);
+                               else
+                                       fprintf (acfg->fp, "\n\tbl %s\n", symbol);
+                       } else {
                                emit_symbol_diff (acfg, symbol, end_symbol, 0);
+                       }
                        /* Make sure the table is sorted by index */
                        g_assert (index > prev_index);
                        prev_index = index;
@@ -7041,6 +7347,7 @@ emit_extra_methods (MonoAotCompile *acfg)
                value = get_method_index (acfg, method);
 
                hash = mono_aot_method_hash (method) % table_size;
+               //printf ("X: %s %d\n", mono_method_full_name (method, 1), hash);
 
                chain_lengths [hash] ++;
                max_chain_length = MAX (max_chain_length, chain_lengths [hash]);
@@ -7601,9 +7908,10 @@ emit_file_info (MonoAotCompile *acfg)
        emit_pointer (acfg, "method_info_offsets");
        emit_pointer (acfg, "ex_info_offsets");
        emit_pointer (acfg, "code_offsets");
-#ifdef MONOTOUCH
-       emit_pointer (acfg, "method_addresses");
-#endif
+       if (acfg->direct_method_addresses)
+               emit_pointer (acfg, "method_addresses");
+       else
+               emit_pointer (acfg, NULL);
        emit_pointer (acfg, "extra_method_info_offsets");
        emit_pointer (acfg, "extra_method_table");
        emit_pointer (acfg, "got_info_offsets");
@@ -7665,7 +7973,6 @@ emit_file_info (MonoAotCompile *acfg)
                memset (&t, 0, sizeof (MonoType));
                t.type = MONO_TYPE_R8;
                mono_type_size (&t, &align);
-
                emit_int32 (acfg, align);
 
                memset (&t, 0, sizeof (MonoType));
@@ -7799,6 +8106,14 @@ collect_methods (MonoAotCompile *acfg)
                method = mono_get_method (acfg->image, token, NULL);
                if (!method)
                        continue;
+               /*
+               if (strcmp (method->name, "gshared2"))
+                       continue;
+               */
+               /*
+               if (!strstr (method->klass->image->name, "mini"))
+                       continue;
+               */
                if (method->is_generic || method->klass->generic_container) {
                        MonoMethod *gshared;
 
@@ -8109,9 +8424,14 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
        int i, res;
        MonoAotCompile *acfg;
        char *outfile_name, *tmp_outfile_name, *p;
+       char llvm_stats_msg [256];
        TV_DECLARE (atv);
        TV_DECLARE (btv);
 
+#ifndef MONO_ARCH_GSHAREDVT_SUPPORTED
+       opts &= ~MONO_OPT_GSHAREDVT;
+#endif
+
        printf ("Mono Ahead of Time compiler - compiling assembly %s\n", image->name);
 
        acfg = acfg_create (ass, opts);
@@ -8213,6 +8533,12 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 
        acfg->method_index = 1;
 
+       // FIXME:
+       /*
+       if (acfg->aot_opts.full_aot)
+               mono_set_partial_sharing_supported (TRUE);
+       */
+
        collect_methods (acfg);
 
        acfg->cfgs_size = acfg->methods->len + 32;
@@ -8342,12 +8668,19 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                }
        }
 
+       if (acfg->aot_opts.dwarf_debug && acfg->aot_opts.asm_only && acfg->aot_opts.gnu_asm) {
+               /*
+                * CLANG supports GAS .file/.loc directives, so emit line number information this way
+                */
+               acfg->gas_line_numbers = TRUE;
+       }
+
        if (!acfg->aot_opts.nodebug || acfg->aot_opts.dwarf_debug) {
                if (acfg->aot_opts.dwarf_debug && mono_debug_format == MONO_DEBUG_FORMAT_NONE) {
                        fprintf (stderr, "The dwarf AOT option requires the --debug option.\n");
                        return 1;
                }
-               acfg->dwarf = mono_dwarf_writer_create (acfg->w, NULL, 0, FALSE);
+               acfg->dwarf = mono_dwarf_writer_create (acfg->w, NULL, 0, FALSE, !acfg->gas_line_numbers);
        }
 
        img_writer_emit_start (acfg->w);
@@ -8423,9 +8756,14 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
        if (acfg->llvm)
                g_assert (acfg->got_offset <= acfg->final_got_size);
 
+       if (acfg->llvm)
+               sprintf (llvm_stats_msg, ", LLVM: %d (%d%%)", acfg->stats.llvm_count, acfg->stats.mcount ? (acfg->stats.llvm_count * 100) / acfg->stats.mcount : 100);
+       else
+               strcpy (llvm_stats_msg, "");
        printf ("Code: %d Info: %d Ex Info: %d Unwind Info: %d Class Info: %d PLT: %d GOT Info: %d GOT: %d Offsets: %d\n", acfg->stats.code_size, acfg->stats.info_size, acfg->stats.ex_info_size, acfg->stats.unwind_info_size, acfg->stats.class_info_size, acfg->plt_offset, acfg->stats.got_info_size, (int)(acfg->got_offset * sizeof (gpointer)), acfg->stats.offsets_size);
-       printf ("Compiled: %d/%d (%d%%), No GOT slots: %d (%d%%), Direct calls: %d (%d%%)\n", 
+       printf ("Compiled: %d/%d (%d%%)%s, No GOT slots: %d (%d%%), Direct calls: %d (%d%%)\n", 
                        acfg->stats.ccount, acfg->stats.mcount, acfg->stats.mcount ? (acfg->stats.ccount * 100) / acfg->stats.mcount : 100,
+                       llvm_stats_msg,
                        acfg->stats.methods_without_got_slots, acfg->stats.mcount ? (acfg->stats.methods_without_got_slots * 100) / acfg->stats.mcount : 100,
                        acfg->stats.direct_calls, acfg->stats.all_calls ? (acfg->stats.direct_calls * 100) / acfg->stats.all_calls : 100);
        if (acfg->stats.genericcount)
@@ -8436,8 +8774,6 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                printf ("%d methods contain lmf pointers (%d%%)\n", acfg->stats.lmfcount, acfg->stats.mcount ? (acfg->stats.lmfcount * 100) / acfg->stats.mcount : 100);
        if (acfg->stats.ocount)
                printf ("%d methods have other problems (%d%%)\n", acfg->stats.ocount, acfg->stats.mcount ? (acfg->stats.ocount * 100) / acfg->stats.mcount : 100);
-       if (acfg->llvm)
-               printf ("Methods compiled with LLVM: %d (%d%%)\n", acfg->stats.llvm_count, acfg->stats.mcount ? (acfg->stats.llvm_count * 100) / acfg->stats.mcount : 100);
 
        TV_GETTIME (atv);
        res = img_writer_emit_writeout (acfg->w);
index 878bf7adeaafac1ab23f0324e637432dcc180a4d..d6190013ff8570af5e132bc8011171a756349d7e 100644 (file)
@@ -1491,6 +1491,28 @@ check_usable (MonoAssembly *assembly, MonoAotFileInfo *info, char **out_msg)
        return usable;
 }
 
+/* This returns an interop address */
+static void*
+get_arm_bl_target (guint32 *ins_addr)
+{
+#ifdef TARGET_ARM
+       guint32 ins = *ins_addr;
+       gint32 offset;
+
+       if ((ins >> ARMCOND_SHIFT) == ARMCOND_NV) {
+               /* blx */
+               offset = (((int)(((ins & 0xffffff) << 1) | ((ins >> 24) & 0x1))) << 7) >> 7;
+               return (char*)ins_addr + (offset * 2) + 8 + 1;
+       } else {
+               offset = (((int)ins & 0xffffff) << 8) >> 8;
+               return (char*)ins_addr + (offset * 4) + 8;
+       }
+#else
+       g_assert_not_reached ();
+       return NULL;
+#endif
+}
+
 static void
 load_aot_module (MonoAssembly *assembly, gpointer user_data)
 {
@@ -1505,6 +1527,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
        int i, version;
        guint8 *blob;
        gboolean do_load_image = TRUE;
+       int align_double, align_int64;
 
        if (mono_compile_aot)
                return;
@@ -1519,7 +1542,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
        if (assembly->image->dynamic || assembly->ref_only)
                return;
 
-       if (mono_security_get_mode () == MONO_SECURITY_MODE_CAS)
+       if (mono_security_cas_enabled ())
                return;
 
        mono_aot_lock ();
@@ -1595,9 +1618,28 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
                return;
        }
 
+#if defined (TARGET_ARM) && defined (TARGET_MACH)
+       {
+               MonoType t;
+               int align = 0;
+
+               memset (&t, 0, sizeof (MonoType));
+               t.type = MONO_TYPE_R8;
+               mono_type_size (&t, &align);
+               align_double = align;
+
+               memset (&t, 0, sizeof (MonoType));
+               t.type = MONO_TYPE_I8;
+               align_int64 = align;
+       }
+#else
+       align_double = __alignof__ (double);
+       align_int64 = __alignof__ (gint64);
+#endif
+
        /* Sanity check */
-       g_assert (info->double_align == __alignof__ (double));
-       g_assert (info->long_align == __alignof__ (gint64));
+       g_assert (info->double_align == align_double);
+       g_assert (info->long_align == align_int64);
 
        blob = info->blob;
 
@@ -1691,10 +1733,13 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
                /* Compute code_offsets from the method addresses */
                amodule->code_offsets = g_malloc0 (amodule->info.nmethods * sizeof (gint32));
                for (i = 0; i < amodule->info.nmethods; ++i) {
-                       if (!amodule->method_addresses [i])
+                       /* method_addresses () contains a table of branches, since the ios linker can update those correctly */
+                       void *addr = get_arm_bl_target ((guint32*)(amodule->method_addresses + i));
+
+                       if (addr == amodule->method_addresses)
                                amodule->code_offsets [i] = 0xffffffff;
                        else
-                               amodule->code_offsets [i] = (char*)amodule->method_addresses [i] - (char*)amodule->code;
+                               amodule->code_offsets [i] = (char*)addr - (char*)amodule->code;
                }
        }
 #endif
@@ -1840,7 +1885,9 @@ mono_aot_init (void)
        InitializeCriticalSection (&aot_page_mutex);
        aot_modules = g_hash_table_new (NULL, NULL);
 
+#ifndef __native_client__
        mono_install_assembly_load_hook (load_aot_module, NULL);
+#endif
 
        if (g_getenv ("MONO_LASTAOT"))
                mono_last_aot_method = atoi (g_getenv ("MONO_LASTAOT"));
@@ -2100,14 +2147,10 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
 
        /* Header */
        version = *p;
-       g_assert (version == 1 || version == 2);
+       g_assert (version == 3);
+       p ++;
+       func_encoding = *p;
        p ++;
-       if (version == 2) {
-               func_encoding = *p;
-               p ++;
-       } else {
-               func_encoding = DW_EH_PE_pcrel;
-       }
        p = ALIGN_PTR_TO (p, 4);
 
        fde_count = *(guint32*)p;
@@ -2118,30 +2161,20 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
        cie = p + ((fde_count + 1) * 8);
 
        /* Binary search in the table to find the entry for code */
-       offset = code - amodule->mono_eh_frame;
-
+       offset = code - amodule->code;
        left = 0;
        right = fde_count;
        while (TRUE) {
                pos = (left + right) / 2;
 
-               offset1 = table [(pos * 2)];
+               /* The table contains method index/fde offset pairs */
+               g_assert (table [(pos * 2)] != -1);
+               offset1 = amodule->code_offsets [table [(pos * 2)]];
                if (pos + 1 == fde_count) {
-                       /* FIXME: */
                        offset2 = amodule->code_end - amodule->code;
                } else {
-                       /* Encoded as DW_EH_PE_pcrel, but relative to mono_eh_frame */
-                       offset2 = table [(pos + 1) * 2];
-               }
-
-               if (func_encoding == DW_EH_PE_absptr) {
-                       /*
-                        * Encoded as DW_EH_PE_absptr, because the ios linker can move functions inside object files to make thumb work,
-                        * so the offsets between two symbols in the text segment are not assembler constant.
-                        */
-                       g_assert (sizeof(gpointer) == 4);
-                       offset1 -= (gint32)(gsize)amodule->mono_eh_frame;
-                       offset2 -= (gint32)(gsize)amodule->mono_eh_frame;
+                       g_assert (table [(pos + 1) * 2] != -1);
+                       offset2 = amodule->code_offsets [table [(pos + 1) * 2]];
                }
 
                if (offset < offset1)
@@ -2152,13 +2185,13 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
                        break;
        }
 
-       if (func_encoding == DW_EH_PE_absptr) {
-               code_start = (gpointer)(gsize)table [(pos * 2)];
-               code_end = (gpointer)(gsize)table [(pos * 2) + 2];
+       code_start = amodule->code + amodule->code_offsets [table [(pos * 2)]];
+       if (pos + 1 == fde_count) {
+               /* The +1 entry in the table contains the length of the last method */
+               int len = table [(pos + 1) * 2];
+               code_end = code_start + len;
        } else {
-               code_start = amodule->mono_eh_frame + table [(pos * 2)];
-               /* This won't overflow because there is +1 entry in the table */
-               code_end = amodule->mono_eh_frame + table [(pos * 2) + 2];
+               code_end = amodule->code + amodule->code_offsets [table [(pos + 1) * 2]];
        }
        code_len = code_end - code_start;
 
@@ -2955,6 +2988,9 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
        case MONO_PATCH_INFO_SIGNATURE:
                ji->data.target = decode_signature (aot_module, p, &p);
                break;
+       case MONO_PATCH_INFO_TLS_OFFSET:
+               ji->data.target = GINT_TO_POINTER (decode_value (p, &p));
+               break;
        case MONO_PATCH_INFO_GSHAREDVT_CALL: {
                MonoJumpInfoGSharedVtCall *info = g_new0 (MonoJumpInfoGSharedVtCall, 1);
                info->sig = decode_signature (aot_module, p, &p);
@@ -2965,6 +3001,41 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                ji->data.target = info;
                break;
        }
+       case MONO_PATCH_INFO_GSHAREDVT_METHOD: {
+               MonoGSharedVtMethodInfo *info = g_new0 (MonoGSharedVtMethodInfo, 1);
+               int i, nentries;
+               
+               info->method = decode_resolve_method_ref (aot_module, p, &p);
+               g_assert (info->method);
+               nentries = decode_value (p, &p);
+               info->entries = g_ptr_array_new ();
+               for (i = 0; i < nentries; ++i) {
+                       MonoRuntimeGenericContextInfoTemplate *template = g_new0 (MonoRuntimeGenericContextInfoTemplate, 1);
+
+                       template->info_type = decode_value (p, &p);
+                       switch (mini_rgctx_info_type_to_patch_info_type (template->info_type)) {
+                       case MONO_PATCH_INFO_CLASS: {
+                               MonoClass *klass = decode_klass_ref (aot_module, p, &p);
+                               if (!klass)
+                                       goto cleanup;
+                               template->data = &klass->byval_arg;
+                               break;
+                       }
+                       case MONO_PATCH_INFO_FIELD:
+                               template->data = decode_field_info (aot_module, p, &p);
+                               if (!template->data)
+                                       goto cleanup;
+                               break;
+                       default:
+                               g_assert_not_reached ();
+                               break;
+                       }
+
+                       g_ptr_array_add (info->entries, template);
+               }
+               ji->data.target = info;
+               break;
+       }
        default:
                g_warning ("unhandled type %d", ji->type);
                g_assert_not_reached ();
@@ -3415,7 +3486,8 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
        g_assert (klass->inited);
 
        /* Find method index */
-       if (method->is_inflated && !method->wrapper_type && mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, FALSE)) {
+       method_index = 0xffffff;
+       if (method->is_inflated && !method->wrapper_type && mono_method_is_generic_sharable_full (method, FALSE, FALSE, FALSE)) {
                /* 
                 * For generic methods, we store the fully shared instance in place of the
                 * original method.
@@ -3519,7 +3591,17 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
                                return code;
                }
 
-               if (method_index == 0xffffff && method->is_inflated && mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE)) {
+               if (method_index == 0xffffff && method->is_inflated && mono_method_is_generic_sharable_full (method, FALSE, TRUE, FALSE)) {
+                       /* Partial sharing */
+                       MonoMethod *shared;
+
+                       shared = mini_get_shared_method (method);
+                       method_index = find_extra_method (shared, &amodule);
+                       if (method_index != 0xffffff)
+                               method = shared;
+               }
+
+               if (method_index == 0xffffff && method->is_inflated && mono_method_is_generic_sharable_full (method, FALSE, FALSE, TRUE)) {
                        /* gsharedvt */
                        /* Use the all-vt shared method since this is what was AOTed */
                        method_index = find_extra_method (mini_get_shared_method_full (method, TRUE, TRUE), &amodule);
@@ -4344,9 +4426,9 @@ mono_aot_get_unbox_trampoline (MonoMethod *method)
        guint32 *ut, *ut_end, *entry;
        int low, high, entry_index;
 
-       if (method->is_inflated && !mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, FALSE)) {
+       if (method->is_inflated && !mono_method_is_generic_sharable_full (method, FALSE, FALSE, FALSE)) {
                method_index = find_extra_method (method, &amodule);
-               if (method_index == 0xffffff && mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE)) {
+               if (method_index == 0xffffff && mono_method_is_generic_sharable_full (method, FALSE, FALSE, TRUE)) {
                        MonoMethod *shared = mini_get_shared_method_full (method, TRUE, TRUE);
                        method_index = find_extra_method (shared, &amodule);
                }
@@ -4372,7 +4454,7 @@ mono_aot_get_unbox_trampoline (MonoMethod *method)
                        high = entry_index;
                } else {
                        if (amodule->info.flags & MONO_AOT_FILE_FLAG_DIRECT_METHOD_ADDRESSES)
-                               code = (gpointer)(gsize)entry [1];
+                               code = get_arm_bl_target (entry + 1);
                        else
                                code = amodule->code + entry [1];
                        break;
index e52c2c70e9daa25244c4f8c8bd2bb2a85b6a0341..9598aa735cb3f18b51138b53a1e4b028c811b285 100644 (file)
@@ -23,11 +23,18 @@ using System.Reflection;
  * the IL code looks.
  */
 
-class Tests {
-
-       static int Main () {
-               return TestDriver.RunTests (typeof (Tests));
-       }
+#if MOBILE
+class ArrayTests
+#else
+class Tests
+#endif
+{
+
+#if !MOBILE
+       public static int Main (string[] args) {
+               return TestDriver.RunTests (typeof (Tests), args);
+       }
+#endif
        
        public static int test_10_create () {
                int[] a = new int [10];
@@ -101,30 +108,31 @@ class Tests {
                return 0;
        }
 
-       private Int32[] m_array = new int [10];
-       
-       void setBit (int bitIndex, bool value) {
-               int index = bitIndex/32;
-               int shift = bitIndex%32;
+       class BitClass {
+               private Int32[] m_array = new int [10];
 
-               Int32 theBit = 1 << shift;
-               if (value)
-                       m_array[index] |= theBit;
-               else
-                       m_array[index] &= ~theBit;
-       }
-       
-       bool getBit (int bitIndex) {
-               int index = bitIndex/32;
-               int shift = bitIndex%32;
+               public void setBit (int bitIndex, bool value) {
+                       int index = bitIndex/32;
+                       int shift = bitIndex%32;
 
-               Int32 theBit = m_array[index] & (1 << shift);
-               return (theBit == 0) ? false : true;
+                       Int32 theBit = 1 << shift;
+                       if (value)
+                               m_array[index] |= theBit;
+                       else
+                               m_array[index] &= ~theBit;
+               }
+       
+               public bool getBit (int bitIndex) {
+                       int index = bitIndex/32;
+                       int shift = bitIndex%32;
 
+                       Int32 theBit = m_array[index] & (1 << shift);
+                       return (theBit == 0) ? false : true;
+               }
        }
        
        public static int test_1_bit_index () {
-               Tests t = new Tests ();
+               var t = new BitClass ();
                t.setBit (0, true);
                t.setBit (3, true);
                if (t.getBit (1))
@@ -499,10 +507,13 @@ class Tests {
                return y;
        }
 
+       class RefClass {
+       }
+
        public static int test_0_stelem_ref_null_opt () {
-               object[] arr = new Tests [1];
+               object[] arr = new RefClass [1];
 
-               arr [0] = new Tests ();
+               arr [0] = new RefClass ();
                arr [0] = null;
 
                return arr [0] == null ? 0 : 1;
index 5ad874b3dfaf90d4ab35b0f176b809ef6b29b5c2..41cb62405cb82a0137e5573c04d5d677786123a4 100644 (file)
@@ -23,11 +23,18 @@ using System.Reflection;
  * the IL code looks.
  */
 
-class Tests {
-
-       static int Main () {
-               return TestDriver.RunTests (typeof (Tests));
-       }
+#if MOBILE
+class CallsTests
+#else
+class Tests
+#endif
+{
+
+#if !MOBILE
+       public static int Main (string[] args) {
+               return TestDriver.RunTests (typeof (Tests), args);
+       }
+#endif
 
        static void dummy () {
        }
index df8f6666f0d4b2c3144cd7730a74f52a09851393..9a48e772f13697afed6f587cb98679ede03cd4da 100644 (file)
@@ -26,11 +26,18 @@ using System.Reflection;
 /* A comparison made to same variable. */
 #pragma warning disable 1718
 
-class Tests {
-
-       public static int Main () {
-               return TestDriver.RunTests (typeof (Tests));
+#if MOBILE
+class FloatTests
+#else
+class Tests
+#endif
+{
+
+#if !MOBILE
+       public static int Main (string[] args) {
+               return TestDriver.RunTests (typeof (Tests), args);
        }
+#endif
        
        public static int test_0_beq () {
                double a = 2.0;
index 19c33016558ce9370177433000f1f37c5ba24f5d..11fa4e1b63c5689398c243139bac281091b077aa 100644 (file)
@@ -23,11 +23,18 @@ using System.Reflection;
  * the IL code looks.
  */
 
-class Tests {
-
-       public static int Main () {
-               return TestDriver.RunTests (typeof (Tests));
-       }
+#if MOBILE
+class LongTests
+#else
+class Tests
+#endif
+{
+
+#if !MOBILE
+       public static int Main (string[] args) {
+               return TestDriver.RunTests (typeof (Tests), args);
+       }
+#endif
 
        public static int test_10_simple_cast () {
                long a = 10;
index d2fa1ede9bc9317e245a730a233024d36f6bc81c..854b21e5868870a4ca21709eff65612f6bdfdcde 100644 (file)
@@ -23,11 +23,18 @@ using System.Reflection;
  * the IL code looks.
  */
 
-class Tests {
-
-       public static int Main () {
-               return TestDriver.RunTests (typeof (Tests));
+#if MOBILE
+class MathTests
+#else
+class Tests
+#endif
+{
+
+#if !MOBILE
+       public static int Main (string[] args) {
+               return TestDriver.RunTests (typeof (Tests), args);
        }
+#endif
        
        public static int test_0_sin_precision () {
                double d1 = Math.Sin (1);
index b700efa87e39503de0291560b09a388d4600241e..477af333e9b4a8401a8b6ec5ab4e7646e6044ac3 100644 (file)
@@ -23,11 +23,18 @@ using System.Reflection;
  * the IL code looks.
  */
 
-class Tests {
-
-       static int Main () {
-               return TestDriver.RunTests (typeof (Tests));
-       }
+#if MOBILE
+class BasicTests
+#else
+class Tests
+#endif
+{
+
+#if !MOBILE
+       public static int Main (string[] args) {
+               return TestDriver.RunTests (typeof (Tests), args);
+       }
+#endif
        
        public static int test_0_return () {
                return 0;
@@ -1361,4 +1368,4 @@ class Tests {
 
                return k == -32768 ? 0 : 1;
        }
-}
\ No newline at end of file
+}
index 53ed0755411e7a8495e061e605a45123aaf322b3..6fdf39699bed4bf229d2e15f24304fcf0b5b2432 100644 (file)
@@ -292,6 +292,7 @@ amd64_set_xmmreg_r4: dest:f src1:f len:14 clob:m
 amd64_set_xmmreg_r8: dest:f src1:f len:14 clob:m
 amd64_save_sp_to_lmf: len:16
 tls_get: dest:i len:16
+tls_get_reg: dest:i src1:i len:20
 atomic_add_i4: src1:b src2:i dest:i len:32
 atomic_add_new_i4: src1:b src2:i dest:i len:32
 atomic_exchange_i4: src1:b src2:i dest:a len:32
@@ -318,6 +319,9 @@ sext_i1: dest:i src1:i len:4
 sext_i2: dest:i src1:i len:4
 sext_i4: dest:i src1:i len:8
 
+laddcc: dest:i src1:i src2:i len:3 clob:1
+lsubcc: dest:i src1:i src2:i len:3 clob:1
+
 # 32 bit opcodes
 int_add: dest:i src1:i src2:i clob:1 len:4 nacl:7
 int_sub: dest:i src1:i src2:i clob:1 len:4 nacl:7
index fc873899a61b7bda2fa9e0a2ce23af502b536896..0ff8a13f839d70f0fb2aa495dafc4b64ca3f0de5 100644 (file)
@@ -212,10 +212,10 @@ tls_get: len:8 dest:i clob:c
 int_add: dest:i src1:i src2:i len:4
 int_sub: dest:i src1:i src2:i len:4
 int_mul: dest:i src1:i src2:i len:4
-int_div: dest:i src1:i src2:i len:40
-int_div_un: dest:i src1:i src2:i len:16
-int_rem: dest:i src1:i src2:i len:48
-int_rem_un: dest:i src1:i src2:i len:24
+int_div: dest:i src1:i src2:i len:4
+int_div_un: dest:i src1:i src2:i len:4
+int_rem: dest:i src1:i src2:i len:8
+int_rem_un: dest:i src1:i src2:i len:8
 int_and: dest:i src1:i src2:i len:4
 int_or: dest:i src1:i src2:i len:4
 int_xor: dest:i src1:i src2:i len:4
index 968822a88ce5987e9fd315e4ec6322934fa1c9d8..41c1b5840c2fbac384d03e8b5360888cb1ae1571 100644 (file)
@@ -177,7 +177,7 @@ not_null: src1:i len:0
 # 32 bit opcodes
 int_add: dest:i src1:i src2:i len:4
 int_sub: dest:i src1:i src2:i len:4
-int_mul: dest:i src1:i src2:i len:4
+int_mul: dest:i src1:i src2:i len:16
 int_div: dest:i src1:i src2:i len:84
 int_div_un: dest:i src1:i src2:i len:40
 int_rem: dest:i src1:i src2:i len:84
@@ -278,7 +278,7 @@ icompare_imm: src1:i len:12
 # 64 bit opcodes
 long_add: dest:i src1:i src2:i len:4
 long_sub: dest:i src1:i src2:i len:4
-long_mul: dest:i src1:i src2:i len:8
+long_mul: dest:i src1:i src2:i len:32
 long_mul_imm: dest:i src1:i len:4
 long_div: dest:i src1:i src2:i len:40
 long_div_un: dest:i src1:i src2:i len:16
diff --git a/mono/mini/cpu-s390.md b/mono/mini/cpu-s390.md
deleted file mode 100644 (file)
index 7817a19..0000000
+++ /dev/null
@@ -1,334 +0,0 @@
-# S/390 64-bit cpu description file
-# this file is read by genmdesc to pruduce a table with all the relevant information
-# about the cpu instructions that may be used by the regsiter allocator, the scheduler
-# and other parts of the arch-dependent part of mini.
-#
-# An opcode name is followed by a colon and optional specifiers.
-# A specifier has a name, a colon and a value. Specifiers are separated by white space.
-# Here is a description of the specifiers valid for this file and their possible values.
-#
-# dest:register       describes the destination register of an instruction
-# src1:register       describes the first source register of an instruction
-# src2:register       describes the second source register of an instruction
-#
-# register may have the following values:
-#      i  integer register
-#      a  r3 register (output from calls)
-#      b  base register (used in address references)
-#      f  floating point register
-#
-# len:number         describe the maximun length in bytes of the instruction
-# number is a positive integer
-#
-# cost:number        describe how many cycles are needed to complete the instruction (unused)
-#
-# clob:spec          describe if the instruction clobbers registers or has special needs
-#
-# spec can be one of the following characters:
-#      c  clobbers caller-save registers
-#      r  'reserves' the destination register until a later instruction unreserves it
-#          used mostly to set output registers in function calls
-#
-# flags:spec        describe if the instruction uses or sets the flags (unused)
-#
-# spec can be one of the following chars:
-#      s  sets the flags
-#       u  uses the flags
-#       m  uses and modifies the flags
-#
-# res:spec          describe what units are used in the processor (unused)
-#
-# delay:            describe delay slots (unused)
-#
-# the required specifiers are: len, clob (if registers are clobbered), the registers
-# specifiers if the registers are actually used, flags (when scheduling is implemented).
-#
-# See the code in mini-x86.c for more details on how the specifiers are used.
-#
-
-nop: len:4
-relaxed_nop: len:4
-
-adc: dest:i src1:i src2:i len:6
-add_ovf_carry: dest:i src1:1 src2:i len:28
-add_ovf_un_carry: dest:i src1:1 src2:i len:28
-addcc: dest:i src1:i src2:i len:6
-aot_const: dest:i len:8
-atomic_add_i4: src1:b src2:i dest:i len:20
-atomic_exchange_i4: src1:b src2:i dest:i len:20
-atomic_add_new_i4: src1:b src2:i dest:i len:24
-br: len:6
-br_reg: src1:i len:8
-break: len:6
-call: dest:o len:6 clob:c
-call_handler: len:12 clob:c
-call_membase: dest:o src1:b len:12 clob:c
-call_reg: dest:o src1:i len:8 clob:c
-ceq: dest:i len:12
-cgt.un: dest:i len:12
-cgt: dest:i len:12
-checkthis: src1:b len:4
-ckfinite: dest:f src1:f len:22
-clt.un: dest:i len:12
-clt: dest:i len:12
-compare: src1:i src2:i len:4
-compare_imm: src1:i len:14
-cond_exc_c: len:8
-cond_exc_eq: len:8
-cond_exc_ge: len:8
-cond_exc_ge_un: len:8
-cond_exc_gt: len:8
-cond_exc_gt_un: len:8
-cond_exc_le: len:8
-cond_exc_le_un: len:8
-cond_exc_lt: len:8
-cond_exc_lt_un: len:8
-cond_exc_nc: len:8
-cond_exc_ne_un: len:8
-cond_exc_no: len:8
-cond_exc_ov: len:8
-endfinally: len: 20
-fcall: dest:g len:10 clob:c
-fcall_membase: dest:g src1:b len:14 clob:c
-fcall_reg: dest:g src1:i len:10 clob:c
-fcompare: src1:f src2:f len:14
-float_add: dest:f src1:f src2:f len:6
-float_beq: len:10
-float_bge: len:10
-float_bge_un: len:8
-float_bgt: len:10
-float_ble: len:10
-float_ble_un: len:8
-float_blt: len:10
-float_blt_un: len:8
-float_bne_un: len:8
-float_bgt_un: len:8
-float_ceq: dest:i src1:f src2:f len:16
-float_cgt: dest:i src1:f src2:f len:16
-float_cgt_un: dest:i src1:f src2:f len:16
-float_clt: dest:i src1:f src2:f len:16
-float_clt_un: dest:i src1:f src2:f len:16
-float_conv_to_i1: dest:i src1:f len:50
-float_conv_to_i2: dest:i src1:f len:50
-float_conv_to_i4: dest:i src1:f len:50
-float_conv_to_i8: dest:l src1:f len:50
-float_conv_to_i: dest:i src1:f len:52
-float_conv_to_r4: dest:f src1:f len:4
-float_conv_to_u1: dest:i src1:f len:62
-float_conv_to_u2: dest:i src1:f len:62
-float_conv_to_u4: dest:i src1:f len:62
-float_conv_to_u8: dest:l src1:f len:62
-float_conv_to_u: dest:i src1:f len:36
-float_div: dest:f src1:f src2:f len:6
-float_div_un: dest:f src1:f src2:f len:6
-float_mul: dest:f src1:f src2:f len:6
-float_neg: dest:f src1:f len:6
-float_not: dest:f src1:f len:6
-float_rem: dest:f src1:f src2:f len:16
-float_rem_un: dest:f src1:f src2:f len:16
-float_sub: dest:f src1:f src2:f len:6
-fmove: dest:f src1:f len:4
-iconst: dest:i len:16
-jmp: len:56
-label: len:0
-lcall: dest:L len:8 clob:c
-lcall_membase: dest:L src1:b len:12 clob:c
-lcall_reg: dest:L src1:i len:8 clob:c
-load_membase: dest:i src1:b len:18
-loadi1_membase: dest:i src1:b len:40
-loadi2_membase: dest:i src1:b len:24
-loadi4_membase: dest:i src1:b len:18
-loadi8_membase: dest:i src1:b
-loadr4_membase: dest:f src1:b len:20
-loadr8_membase: dest:f src1:b len:18
-loadu1_membase: dest:i src1:b len:26
-loadu2_membase: dest:i src1:b len:26
-loadu4_mem: dest:i len:8
-loadu4_membase: dest:i src1:b len:18
-localloc: dest:i src1:i len:72
-long_add: len: 18 dest:l src1:l src2:i clob:1
-long_add_ovf_un: len:22 dest:l src1:l src2:i clob:1
-long_add_ovf: len:28 dest:l src1:l src2:i clob:1
-long_conv_to_ovf_i: dest:i src1:i src2:i len:44
-long_conv_to_r_un: dest:f src1:i src2:i len:37 
-long_conv_to_r4: dest:f src1:i len:4
-long_conv_to_r8: dest:f src1:i len:4
-long_mul_ovf: len: 18
-long_mul_ovf_un: len: 18 
-long_sub: len: 18 dest:l src1:l src2:i clob:1
-long_sub_ovf_un: len:22 dest:l src1:l src2:i clob:1
-long_sub_ovf: len:36 dest:l src1:l src2:i clob:1
-memory_barrier: len: 10
-move: dest:i src1:i len:4
-bigmul: len:2 dest:l src1:a src2:i
-bigmul_un: len:2 dest:l src1:a src2:i
-endfilter: src1:i len:12
-rethrow: src1:i len:8
-oparglist: src1:i len:20
-r4const: dest:f len:22
-r8const: dest:f len:18
-s390_bkchain: len:16 dest:i src1:i
-s390_move: len:48 dest:b src1:b
-s390_setf4ret: dest:f src1:f len:4
-tls_get: dest:i len:44
-sbb: dest:i src1:i src2:i len:8
-setlret: src1:i src2:i len:12
-sqrt: dest:f src1:f len:4
-start_handler: len:18
-store_membase_imm: dest:b len:32
-store_membase_reg: dest:b src1:i len:18
-storei1_membase_imm: dest:b len:32
-storei1_membase_reg: dest:b src1:i len:18
-storei2_membase_imm: dest:b len:32
-storei2_membase_reg: dest:b src1:i len:18
-storei4_membase_imm: dest:b len:32
-storei4_membase_reg: dest:b src1:i len:18
-storei8_membase_imm: dest:b 
-storei8_membase_reg: dest:b src1:i 
-storer4_membase_reg: dest:b src1:f len:22
-storer8_membase_reg: dest:b src1:f len:22
-sub_ovf_carry: dest:i src1:1 src2:i len:28
-sub_ovf_un_carry: dest:i src1:1 src2:i len:28
-subcc: dest:i src1:i src2:i len:6
-throw: src1:i len:8
-vcall: len:8 clob:c
-vcall_membase: src1:b len:12 clob:c
-vcall_reg: src1:i len:8 clob:c
-voidcall: len:8 clob:c
-voidcall_membase: src1:b len:12 clob:c
-voidcall_reg: src1:i len:8 clob:c
-
-# 32 bit opcodes
-int_add: dest:i src1:i src2:i len:6
-int_sub: dest:i src1:i src2:i len:6
-int_mul: dest:i src1:i src2:i len:6
-int_div: dest:a src1:i src2:i len:10
-int_div_un: dest:a src1:i src2:i len:12 
-int_and: dest:i src1:i src2:i len:6
-int_or: dest:i src1:i src2:i len:4
-int_xor: dest:i src1:i src2:i len:4
-int_rem: dest:d src1:i src2:i len:10
-int_rem_un: dest:d src1:i src2:i len:12
-int_shl: dest:i src1:i src2:i clob:s len:8
-int_shr: dest:i src1:i src2:i clob:s len:8
-int_shr_un: dest:i src1:i src2:i clob:s len:8
-int_add_ovf: len: 24 dest:i src1:i src2:i
-int_add_ovf_un: len: 10 dest:i src1:i src2:i
-int_sub_ovf: len:24 dest:i src1:i src2:i
-int_sub_ovf_un: len:10 dest:i src1:i src2:i 
-int_mul_ovf: dest:i src1:i src2:i len:42
-int_mul_ovf_un: dest:i src1:i src2:i len:20
-
-int_neg: dest:i src1:i len:4
-int_not: dest:i src1:i len:8
-int_conv_to_i1: dest:i src1:i len:16
-int_conv_to_i2: dest:i src1:i len:16
-int_conv_to_i4: dest:i src1:i len:2
-int_conv_to_r4: dest:f src1:i len:4
-int_conv_to_r8: dest:f src1:i len:4
-int_conv_to_u1: dest:i src1:i len:8
-int_conv_to_u2: dest:i src1:i len:16
-int_conv_to_u4: dest:i src1:i
-
-int_conv_to_r_un: dest:f src1:i len:30
-
-int_beq: len:8
-int_bge_un: len:8
-int_bge: len:8
-int_bgt_un: len:8
-int_bgt: len:8
-int_ble_un: len:8
-int_ble: len:8
-int_blt_un: len:8
-int_blt: len:8
-int_bne_un: len:8
-
-mul_imm: dest:i src1:i len:20
-adc_imm: dest:i src1:i len:18
-add_imm: dest:i src1:i len:18
-addcc_imm: dest:i src1:i len:18
-and_imm: dest:i src1:i len:16
-div_imm: dest:i src1:i len:24
-div_un_imm: dest:i src1:i len:24
-or_imm: dest:i src1:i len:16
-rem_imm: dest:i src1:i len:24
-rem_un_imm: dest:i src1:i len:24
-sbb_imm: dest:i src1:i len:18
-shl_imm: dest:i src1:i len:8
-shr_imm: dest:i src1:i len:8
-shr_un_imm: dest:i src1:i len:8
-sub_imm: dest:i src1:i len:18
-subcc_imm: dest:i src1:i len:18
-xor_imm: dest:i src1:i len:16
-
-# Linear IR opcodes
-dummy_use: src1:i len:0
-dummy_store: len:0
-not_reached: len:0
-not_null: src1:i len:0
-
-jump_table: dest:i len:16
-
-icompare: src1:i src2:i len:4
-icompare_imm: src1:i len:14
-
-int_ceq: dest:i len:12
-int_cgt_un: dest:i len:12
-int_cgt: dest:i len:12
-int_clt_un: dest:i len:12
-int_clt: dest:i len:12
-
-cond_exc_ic: len:8
-cond_exc_ieq: len:8
-cond_exc_ige: len:8
-cond_exc_ige_un: len:8
-cond_exc_igt: len:8
-cond_exc_igt_un: len:8
-cond_exc_ile: len:8
-cond_exc_ile_un: len:8
-cond_exc_ilt: len:8
-cond_exc_ilt_un: len:8
-cond_exc_inc: len:8
-cond_exc_ine_un: len:8
-cond_exc_ino: len:8
-cond_exc_iov: len:8
-
-int_add_imm: dest:i src1:i len:18
-int_sub_imm: dest:i src1:i len:18
-int_mul_imm: dest:i src1:i len:20
-int_div_imm: dest:i src1:i len:24
-int_div_un_imm: dest:i src1:i len:24
-int_rem_imm: dest:i src1:i len:24
-int_rem_un_imm: dest:i src1:i len:24
-int_and_imm: dest:i src1:i len:16
-int_or_imm: dest:i src1:i len:16
-int_xor_imm: dest:i src1:i len:16
-int_adc_imm: dest:i src1:i len:18
-int_sbb_imm: dest:i src1:i len:18
-int_shl_imm: dest:i src1:i len:8
-int_shr_imm: dest:i src1:i len:8
-int_shr_un_imm: dest:i src1:i len:8
-
-int_adc: dest:i src1:i src2:i len:6
-int_sbb: dest:i src1:i src2:i len:8
-int_addcc: dest:i src1:i src2:i len:6
-int_subcc: dest:i src1:i src2:i len:6
-
-long_conv_to_ovf_i4_2: dest:i src1:i src2:i len:44
-
-vcall2: len:8 clob:c
-vcall2_membase: src1:b len:12 clob:c
-vcall2_reg: src1:i len:8 clob:c
-
-s390_long_add: dest:l src1:i src2:i len:18
-s390_long_add_ovf: dest:l src1:i src2:i len:32
-s390_long_add_ovf_un: dest:l src1:i src2:i len:32
-s390_long_sub: dest:l src1:i src2:i len:18
-s390_long_sub_ovf: dest:l src1:i src2:i len:32
-s390_long_sub_ovf_un: dest:l src1:i src2:i len:32
-s390_long_neg: dest:l src1:i src2:i len:18
-
-s390_int_add_ovf: len:24 dest:i src1:i src2:i
-s390_int_add_ovf_un: len:10 dest:i src1:i src2:i 
-s390_int_sub_ovf: len:24 dest:i src1:i src2:i
-s390_int_sub_ovf_un: len:10 dest:i src1:i src2:i 
index abe0657e632da7712cb184a41b5683172fb91fe7..be6a3509d1d1f13c5e8a88a455ecdc80d2f8717e 100644 (file)
@@ -70,7 +70,7 @@ call_reg: dest:o src1:i len:8 clob:c
 ceq: dest:i len:12
 cgt.un: dest:i len:12
 cgt: dest:i len:12
-checkthis: src1:b len:10
+checkthis: src1:b len:16
 ckfinite: dest:f src1:f len:22
 clt.un: dest:i len:12
 clt: dest:i len:12
index ff241b62ed3e58529aa78f5d9d9626b2ce85b31b..d7d70f7aa5e19fd99d0e8f842fb513ec2b1ff796 100644 (file)
@@ -300,6 +300,7 @@ bigmul_un: len:2 dest:l src1:a src2:i
 sext_i1: dest:i src1:y len:3
 sext_i2: dest:i src1:y len:3
 tls_get: dest:i len:20
+tls_get_reg: dest:i src1:i len:20
 atomic_add_i4: src1:b src2:i dest:i len:16
 atomic_add_new_i4: src1:b src2:i dest:i len:16
 atomic_exchange_i4: src1:b src2:i dest:a len:24
index f82bf6a9d5f8749cf84513c7d8312a7a4ffd8c25..a8078869ae685e280d3a985d5c13bfdc84b8da1c 100644 (file)
@@ -154,10 +154,17 @@ write_variable (MonoInst *inst, MonoDebugVarInfo *var)
                var->index = inst->dreg | MONO_DEBUG_VAR_ADDRESS_MODE_REGISTER;
        else if (inst->flags & MONO_INST_IS_DEAD)
                var->index = MONO_DEBUG_VAR_ADDRESS_MODE_DEAD;
-       else {
+       else if (inst->opcode == OP_REGOFFSET) {
                /* the debug interface needs fixing to allow 0(%base) address */
                var->index = inst->inst_basereg | MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET;
                var->offset = inst->inst_offset;
+       } else if (inst->opcode == OP_GSHAREDVT_ARG_REGOFFSET) {
+               var->index = inst->inst_basereg | MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR;
+               var->offset = inst->inst_offset;
+       } else if (inst->opcode == OP_GSHAREDVT_LOCAL) {
+               var->index = inst->inst_imm | MONO_DEBUG_VAR_ADDRESS_MODE_GSHAREDVT_LOCAL;
+       } else {
+               g_assert_not_reached ();
        }
 }
 
@@ -307,6 +314,13 @@ mono_debug_close_method (MonoCompile *cfg)
        for (i = 0; i < jit->num_params; i++)
                write_variable (cfg->args [i + sig->hasthis], &jit->params [i]);
 
+       if (cfg->gsharedvt_info_var) {
+               jit->gsharedvt_info_var = g_new0 (MonoDebugVarInfo, 1);
+               jit->gsharedvt_locals_var = g_new0 (MonoDebugVarInfo, 1);
+               write_variable (cfg->gsharedvt_info_var, jit->gsharedvt_info_var);
+               write_variable (cfg->gsharedvt_locals_var, jit->gsharedvt_locals_var);
+       }
+
        jit->num_line_numbers = info->line_numbers->len;
        jit->line_numbers = g_new0 (MonoDebugLineNumberEntry, jit->num_line_numbers);
 
@@ -468,8 +482,10 @@ serialize_variable (MonoDebugVarInfo *var, guint8 *p, guint8 **endbuf)
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGISTER:
                break;
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET:
+       case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR:
                encode_value (var->offset, p, &p);
                break;
+       case MONO_DEBUG_VAR_ADDRESS_MODE_GSHAREDVT_LOCAL:
        case MONO_DEBUG_VAR_ADDRESS_MODE_DEAD:
                break;
        default:
@@ -508,6 +524,14 @@ mono_debug_serialize_debug_info (MonoCompile *cfg, guint8 **out_buf, guint32 *bu
        for (i = 0; i < jit->num_locals; i++)
                serialize_variable (&jit->locals [i], p, &p);
 
+       if (jit->gsharedvt_info_var) {
+               encode_value (1, p, &p);
+               serialize_variable (jit->gsharedvt_info_var, p, &p);
+               serialize_variable (jit->gsharedvt_locals_var, p, &p);
+       } else {
+               encode_value (0, p, &p);
+       }
+
        encode_value (jit->num_line_numbers, p, &p);
 
        prev_offset = 0;
@@ -540,8 +564,10 @@ deserialize_variable (MonoDebugVarInfo *var, guint8 *p, guint8 **endbuf)
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGISTER:
                break;
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET:
+       case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR:
                var->offset = decode_value (p, &p);
                break;
+       case MONO_DEBUG_VAR_ADDRESS_MODE_GSHAREDVT_LOCAL:
        case MONO_DEBUG_VAR_ADDRESS_MODE_DEAD:
                break;
        default:
@@ -585,6 +611,13 @@ deserialize_debug_info (MonoMethod *method, guint8 *code_start, guint8 *buf, gui
        for (i = 0; i < jit->num_locals; i++)
                deserialize_variable (&jit->locals [i], p, &p);
 
+       if (decode_value (p, &p)) {
+               jit->gsharedvt_info_var = g_new0 (MonoDebugVarInfo, 1);
+               jit->gsharedvt_locals_var = g_new0 (MonoDebugVarInfo, 1);
+               deserialize_variable (jit->gsharedvt_info_var, p, &p);
+               deserialize_variable (jit->gsharedvt_locals_var, p, &p);
+       }
+
        jit->num_line_numbers = decode_value (p, &p);
        jit->line_numbers = g_new0 (MonoDebugLineNumberEntry, jit->num_line_numbers);
 
@@ -654,6 +687,12 @@ print_var_info (MonoDebugVarInfo *info, int idx, const char *name, const char *t
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET:
                g_print ("%s %s (%d) in memory: base register %s + %d\n", type, name, idx, mono_arch_regname (info->index & (~MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS)), info->offset);
                break;
+       case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR:
+               g_print ("%s %s (%d) in indir memory: base register %s + %d\n", type, name, idx, mono_arch_regname (info->index & (~MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS)), info->offset);
+               break;
+       case MONO_DEBUG_VAR_ADDRESS_MODE_GSHAREDVT_LOCAL:
+               g_print ("%s %s (%d) gsharedvt local.\n", type, name, idx);
+               break;
        case MONO_DEBUG_VAR_ADDRESS_MODE_TWO_REGISTERS:
        default:
                g_assert_not_reached ();
index 27ecadba8b95f92abb0127c7801c668f91bc2b79..42c415e0e1064e2243c5dce4fb2140f30c8c6ae7 100644 (file)
@@ -73,6 +73,8 @@ int WSAAPI getnameinfo(const struct sockaddr*,socklen_t,char*,DWORD,
 #include <mono/metadata/socket-io.h>
 #include <mono/metadata/assembly.h>
 #include <mono/metadata/runtime.h>
+#include <mono/metadata/threadpool.h>
+#include <mono/metadata/verify-internals.h>
 #include <mono/utils/mono-semaphore.h>
 #include <mono/utils/mono-error-internals.h>
 #include <mono/utils/mono-stack-unwinding.h>
@@ -100,7 +102,7 @@ shutdown sequence.
 
 #ifndef DISABLE_DEBUGGER_AGENT
 
-#include <mono/io-layer/mono-mutex.h>
+#include <mono/utils/mono-mutex.h>
 
 /* Definitions to make backporting to 2.6 easier */
 //#define MonoInternalThread MonoThread
@@ -281,7 +283,7 @@ typedef struct {
 #define HEADER_LENGTH 11
 
 #define MAJOR_VERSION 2
-#define MINOR_VERSION 23
+#define MINOR_VERSION 24
 
 typedef enum {
        CMD_SET_VM = 1,
@@ -463,6 +465,7 @@ typedef enum {
        CMD_METHOD_GET_BODY = 7,
        CMD_METHOD_RESOLVE_TOKEN = 8,
        CMD_METHOD_GET_CATTRS = 9,
+       CMD_METHOD_MAKE_GENERIC_METHOD = 10
 } CmdMethod;
 
 typedef enum {
@@ -916,7 +919,7 @@ mono_debugger_agent_init (void)
 
        event_requests = g_ptr_array_new ();
 
-       mono_mutex_init (&debugger_thread_exited_mutex, NULL);
+       mono_mutex_init (&debugger_thread_exited_mutex);
        mono_cond_init (&debugger_thread_exited_cond, NULL);
 
        mono_profiler_install ((MonoProfiler*)&debugger_profiler, runtime_shutdown);
@@ -2329,7 +2332,7 @@ static MonoSemType suspend_sem;
 static void
 suspend_init (void)
 {
-       mono_mutex_init (&suspend_mutex, NULL);
+       mono_mutex_init (&suspend_mutex);
        mono_cond_init (&suspend_cond, NULL);   
        MONO_SEM_INIT (&suspend_sem, 0);
 }
@@ -2681,6 +2684,12 @@ suspend_vm (void)
 
        mono_mutex_unlock (&suspend_mutex);
 
+       if (suspend_count == 1)
+               /*
+                * Suspend creation of new threadpool threads, since they cannot run
+                */
+               mono_thread_pool_suspend ();
+
        mono_loader_unlock ();
 }
 
@@ -2719,6 +2728,9 @@ resume_vm (void)
        mono_mutex_unlock (&suspend_mutex);
        //g_assert (err == 0);
 
+       if (suspend_count == 0)
+               mono_thread_pool_resume ();
+
        mono_loader_unlock ();
 }
 
@@ -2939,16 +2951,13 @@ get_seq_points (MonoDomain *domain, MonoMethod *method)
        return seq_points;
 }
 
-static MonoSeqPointInfo*
-find_seq_points (MonoDomain *domain, MonoMethod *method)
+static void
+no_seq_points_found (MonoMethod *method)
 {
-       MonoSeqPointInfo *seq_points = get_seq_points (domain, method);
-
-       if (!seq_points)
-               printf ("Unable to find seq points for method '%s'.\n", mono_method_full_name (method, TRUE));
-       g_assert (seq_points);
-
-       return seq_points;
+       /*
+        * This can happen in full-aot mode with assemblies AOTed without the 'soft-debug' option to save space.
+        */
+       printf ("Unable to find seq points for method '%s'.\n", mono_method_full_name (method, TRUE));
 }
 
 /*
@@ -2962,7 +2971,12 @@ find_next_seq_point_for_native_offset (MonoDomain *domain, MonoMethod *method, g
        MonoSeqPointInfo *seq_points;
        int i;
 
-       seq_points = find_seq_points (domain, method);
+       seq_points = get_seq_points (domain, method);
+       if (!seq_points) {
+               if (info)
+                       *info = NULL;
+               return NULL;
+       }
        g_assert (seq_points);
        if (info)
                *info = seq_points;
@@ -3461,6 +3475,7 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
        GSList *l;
        MonoDomain *domain = mono_domain_get ();
        MonoThread *thread = NULL;
+       MonoObject *keepalive_obj = NULL;
        gboolean send_success = FALSE;
        static int ecount;
        int nevents;
@@ -3563,6 +3578,11 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
                case EVENT_KIND_EXCEPTION: {
                        EventInfo *ei = arg;
                        buffer_add_objid (&buf, ei->exc);
+                       /*
+                        * We are not yet suspending, so get_objref () will not keep this object alive. So we need to do it
+                        * later after the suspension. (#12494).
+                        */
+                       keepalive_obj = ei->exc;
                        break;
                }
                case EVENT_KIND_USER_BREAK:
@@ -3604,6 +3624,10 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
                 */
                save_thread_context (ctx);
                suspend_vm ();
+
+               if (keepalive_obj)
+                       /* This will keep this object alive */
+                       get_objref (keepalive_obj);
        }
 
        send_success = send_packet (CMD_SET_EVENT, CMD_COMPOSITE, &buf);
@@ -4036,11 +4060,13 @@ insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo
 
                if (error) {
                        mono_error_set_error (error, MONO_ERROR_GENERIC, "%s", s);
+                       g_warning ("%s", s);
                        g_free (s);
                        return;
                } else {
-                       g_error ("%s", s);
+                       g_warning ("%s", s);
                        g_free (s);
+                       return;
                }
        }
 
@@ -4059,7 +4085,9 @@ insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo
        g_hash_table_insert (bp_locs, inst->ip, GINT_TO_POINTER (count + 1));
        mono_loader_unlock ();
 
-       if (count == 0) {
+       if (sp->native_offset == SEQ_POINT_NATIVE_OFFSET_DEAD_CODE) {
+               DEBUG (1, fprintf (log_file, "[dbg] Attempting to insert seq point at dead IL offset %d, ignoring.\n", (int)bp->il_offset));
+       } else if (count == 0) {
 #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
                mono_arch_set_breakpoint (ji, inst->ip);
 #else
@@ -4085,7 +4113,7 @@ remove_breakpoint (BreakpointInstance *inst)
 
        g_assert (count > 0);
 
-       if (count == 1) {
+       if (count == 1 && inst->native_offset != SEQ_POINT_NATIVE_OFFSET_DEAD_CODE) {
                mono_arch_clear_breakpoint (ji, ip);
        }
 #else
@@ -4406,6 +4434,8 @@ process_breakpoint_inner (DebuggerTlsData *tls)
         * the offset recorded in the seq point map, so find the prev seq point before ip.
         */
        sp = find_prev_seq_point_for_native_offset (mono_domain_get (), ji->method, native_offset, &info);
+       if (!sp)
+               no_seq_points_found (ji->method);
        g_assert (sp);
 
        DEBUG(1, fprintf (log_file, "[%p] Breakpoint hit, method=%s, ip=%p, offset=0x%x, sp il offset=0x%x.\n", (gpointer)GetCurrentThreadId (), ji->method->name, ip, native_offset, sp ? sp->il_offset : -1));
@@ -4855,6 +4885,8 @@ stop_single_stepping (void)
 
        if (val == 0)
                mono_arch_stop_single_stepping ();
+       if (ss_req != NULL)
+               ss_invoke_addr = NULL;
 #else
        g_assert_not_reached ();
 #endif
@@ -4936,13 +4968,16 @@ ss_start (SingleStepReq *ss_req, MonoMethod *method, SeqPoint *sp, MonoSeqPointI
                        // There could be method calls before the next seq point in the caller when using nested calls
                        //enable_global = TRUE;
                } else {
-                       while (sp && sp->next_len == 0) {
+                       if (sp && sp->next_len == 0) {
                                sp = NULL;
-                               if (frame_index < tls->frame_count) {
+                               while (frame_index < tls->frame_count) {
                                        StackFrame *frame = tls->frames [frame_index];
 
                                        method = frame->method;
                                        sp = find_prev_seq_point_for_native_offset (frame->domain, frame->method, frame->native_offset, &info);
+                                       if (sp && sp->next_len != 0)
+                                               break;
+                                       sp = NULL;
                                        frame_index ++;
                                }
                        }
@@ -5064,6 +5099,8 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, EventRequ
                 * point after ip.
                 */
                sp = find_next_seq_point_for_native_offset (frame.domain, frame.method, frame.native_offset, &info);
+               if (!sp)
+                       no_seq_points_found (frame.method);
                g_assert (sp);
 
                method = frame.method;
@@ -5108,6 +5145,8 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, EventRequ
                        if (!method && frame->il_offset != -1) {
                                /* FIXME: Sort the table and use a binary search */
                                sp = find_prev_seq_point_for_native_offset (frame->domain, frame->method, frame->native_offset, &info);
+                               if (!sp)
+                                       no_seq_points_found (frame->method);
                                g_assert (sp);
                                method = frame->method;
                        }
@@ -5726,11 +5765,11 @@ decode_value (MonoType *t, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8
 }
 
 static void
-add_var (Buffer *buf, MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, MonoDomain *domain, gboolean as_vtype)
+add_var (Buffer *buf, MonoDebugMethodJitInfo *jit, MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, MonoDomain *domain, gboolean as_vtype)
 {
        guint32 flags;
        int reg;
-       guint8 *addr;
+       guint8 *addr, *gaddr;
        mgreg_t reg_val;
 
        flags = var->index & MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
@@ -5753,6 +5792,59 @@ add_var (Buffer *buf, MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, Mono
        case MONO_DEBUG_VAR_ADDRESS_MODE_DEAD:
                NOT_IMPLEMENTED;
                break;
+       case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR:
+               /* Same as regoffset, but with an indirection */
+               addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               addr += (gint32)var->offset;
+
+               gaddr = *(gpointer*)addr;
+               g_assert (gaddr);
+               buffer_add_value_full (buf, t, gaddr, domain, as_vtype);
+               break;
+       case MONO_DEBUG_VAR_ADDRESS_MODE_GSHAREDVT_LOCAL: {
+               MonoDebugVarInfo *info_var = jit->gsharedvt_info_var;
+               MonoDebugVarInfo *locals_var = jit->gsharedvt_locals_var;
+               MonoGSharedVtMethodRuntimeInfo *info;
+               guint8 *locals;
+               int idx;
+
+               idx = reg;
+
+               g_assert (info_var);
+               g_assert (locals_var);
+
+               flags = info_var->index & MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
+               reg = info_var->index & ~MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
+               if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET) {
+                       addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+                       addr += (gint32)info_var->offset;
+                       info = *(gpointer*)addr;
+               } else if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGISTER) {
+                       info = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               } else {
+                       g_assert_not_reached ();
+               }
+               g_assert (info);
+
+               flags = locals_var->index & MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
+               reg = locals_var->index & ~MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
+               if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET) {
+                       addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+                       addr += (gint32)locals_var->offset;
+                       locals = *(gpointer*)addr;
+               } else if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGISTER) {
+                       locals = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               } else {
+                       g_assert_not_reached ();
+               }
+               g_assert (locals);
+
+               addr = locals + GPOINTER_TO_INT (info->entries [idx]);
+
+               buffer_add_value_full (buf, t, addr, domain, as_vtype);
+               break;
+       }
+
        default:
                g_assert_not_reached ();
        }
@@ -5763,7 +5855,7 @@ set_var (MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, MonoDomain *domai
 {
        guint32 flags;
        int reg, size;
-       guint8 *addr;
+       guint8 *addr, *gaddr;
 
        flags = var->index & MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
        reg = var->index & ~MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
@@ -5837,6 +5929,16 @@ set_var (MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, MonoDomain *domai
                // FIXME: Write barriers
                mono_gc_memmove (addr, val, size);
                break;
+       case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR:
+               /* Same as regoffset, but with an indirection */
+               addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               addr += (gint32)var->offset;
+
+               gaddr = *(gpointer*)addr;
+               g_assert (gaddr);
+               // FIXME: Write barriers
+               mono_gc_memmove (gaddr, val, size);
+               break;
        case MONO_DEBUG_VAR_ADDRESS_MODE_DEAD:
                NOT_IMPLEMENTED;
                break;
@@ -6378,7 +6480,9 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
        case CMD_VM_EXIT: {
                MonoInternalThread *thread;
                DebuggerTlsData *tls;
+#ifdef TRY_MANAGED_SYSTEM_ENVIRONMENT_EXIT
                MonoClass *env_class;
+#endif
                MonoMethod *exit_method = NULL;
                gpointer *args;
                int exit_code;
@@ -6443,7 +6547,8 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                        while (suspend_count > 0)
                                resume_vm ();
 
-                       mono_runtime_shutdown ();
+                       if (!mono_runtime_try_shutdown ())
+                               break;
 
                        /* Suspend all managed threads since the runtime is going away */
                        DEBUG(1, fprintf (log_file, "Suspending all threads...\n"));
@@ -8057,6 +8162,40 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
                buffer_add_cattrs (buf, domain, method->klass->image, attr_klass, cinfo);
                break;
        }
+       case CMD_METHOD_MAKE_GENERIC_METHOD: {
+               MonoType **type_argv;
+               int i, type_argc;
+               MonoDomain *d;
+               MonoClass *klass;
+               MonoGenericInst *ginst;
+               MonoGenericContext tmp_context;
+               MonoMethod *inflated;
+
+               type_argc = decode_int (p, &p, end);
+               type_argv = g_new0 (MonoType*, type_argc);
+               for (i = 0; i < type_argc; ++i) {
+                       klass = decode_typeid (p, &p, end, &d, &err);
+                       if (err) {
+                               g_free (type_argv);
+                               return err;
+                       }
+                       if (domain != d) {
+                               g_free (type_argv);
+                               return ERR_INVALID_ARGUMENT;
+                       }
+                       type_argv [i] = &klass->byval_arg;
+               }
+               ginst = mono_metadata_get_generic_inst (type_argc, type_argv);
+               g_free (type_argv);
+               tmp_context.class_inst = method->klass->generic_class ? method->klass->generic_class->context.class_inst : NULL;
+               tmp_context.method_inst = ginst;
+
+               inflated = mono_class_inflate_generic_method (method, &tmp_context);
+               if (!mono_verifier_is_method_valid_generic_instantiation (inflated))
+                       return ERR_INVALID_ARGUMENT;
+               buffer_add_methodid (buf, domain, inflated);
+               break;
+       }
        default:
                return ERR_NOT_IMPLEMENTED;
        }
@@ -8226,8 +8365,7 @@ frame_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
        frame = tls->frames [frame_idx];
 
        if (!frame->has_ctx)
-               // FIXME:
-               return ERR_INVALID_FRAMEID;
+               return ERR_ABSENT_INFORMATION;
 
        if (!frame->jit) {
                frame->jit = mono_debug_find_method (frame->api_method, frame->domain);
@@ -8268,13 +8406,13 @@ frame_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
                                var = &jit->params [pos];
 
-                               add_var (buf, sig->params [pos], &jit->params [pos], &frame->ctx, frame->domain, FALSE);
+                               add_var (buf, jit, sig->params [pos], &jit->params [pos], &frame->ctx, frame->domain, FALSE);
                        } else {
                                g_assert (pos >= 0 && pos < jit->num_locals);
 
                                var = &jit->locals [pos];
                                
-                               add_var (buf, header->locals [pos], &jit->locals [pos], &frame->ctx, frame->domain, FALSE);
+                               add_var (buf, jit, header->locals [pos], &jit->locals [pos], &frame->ctx, frame->domain, FALSE);
                        }
                }
                mono_metadata_free_mh (header);
@@ -8286,14 +8424,14 @@ frame_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                                MonoObject *p = NULL;
                                buffer_add_value (buf, &mono_defaults.object_class->byval_arg, &p, frame->domain);
                        } else {
-                               add_var (buf, &frame->actual_method->klass->this_arg, jit->this_var, &frame->ctx, frame->domain, TRUE);
+                               add_var (buf, jit, &frame->actual_method->klass->this_arg, jit->this_var, &frame->ctx, frame->domain, TRUE);
                        }
                } else {
                        if (!sig->hasthis) {
                                MonoObject *p = NULL;
                                buffer_add_value (buf, &frame->actual_method->klass->byval_arg, &p, frame->domain);
                        } else {
-                               add_var (buf, &frame->api_method->klass->byval_arg, jit->this_var, &frame->ctx, frame->domain, TRUE);
+                               add_var (buf, jit, &frame->api_method->klass->byval_arg, jit->this_var, &frame->ctx, frame->domain, TRUE);
                        }
                }
                break;
@@ -8812,7 +8950,7 @@ debugger_thread (void *arg)
                g_free (data);
                buffer_free (&buf);
 
-               if (command_set == CMD_SET_VM && command == CMD_VM_DISPOSE)
+               if (command_set == CMD_SET_VM && (command == CMD_VM_DISPOSE || command == CMD_VM_EXIT))
                        break;
        }
 
index 7a7b9473a030166fbc2bfad1dfef82aded818b60..95b765069e70d6842fd9080516ab1a188ee9cf76 100644 (file)
@@ -7,6 +7,9 @@
 #define METHOD_ENTRY_IL_OFFSET -1
 #define METHOD_EXIT_IL_OFFSET 0xffffff
 
+/* Native offset used to mark seq points in dead code */
+#define SEQ_POINT_NATIVE_OFFSET_DEAD_CODE -1
+
 void
 mono_debugger_agent_parse_options (char *options) MONO_INTERNAL;
 
index 86bcd9d1bb12f27bbf705c2d97e95d818badf0a1..fa06e6efdd9fd43f64e5d1041c4afdc3beb71950 100644 (file)
@@ -11,7 +11,8 @@
 #include "declsec.h"
 #include "mini.h"
 
-#ifndef DISABLE_VERIFIER
+#ifndef DISABLE_SECURITY
+
 /*
  * Does the methods (or it's class) as any declarative security attribute ?
  * Is so are they applicable ? (e.g. static class constructor)
@@ -406,7 +407,7 @@ mono_declsec_linkdemand (MonoDomain *domain, MonoMethod *caller, MonoMethod *cal
        return violation;
 }
 
-#else /* DISABLE_JIT */
+#else /* DISABLE_SECURITY */
 
 void
 mono_declsec_cache_stack_modifiers (MonoJitInfo *jinfo)
index 4c45a94171b1fa1c66af3158d08e7d70016c09fe..fa9db61c8b0648b67e88956bc1dc6bcef43f7ae6 100644 (file)
@@ -60,4 +60,10 @@ MonoSecurityFrame* mono_declsec_create_frame (MonoDomain *domain, MonoJitInfo *j
 
 guint32 mono_declsec_linkdemand (MonoDomain *domain, MonoMethod *caller, MonoMethod *callee) MONO_INTERNAL;
 
+#ifndef DISABLE_SECURITY
+#define mono_security_method_has_declsec(method) (mono_method_has_declsec(method))
+#else
+#define mono_security_method_has_declsec(method) (FALSE)
+#endif
+
 #endif /* _MONO_MINI_DECLSEC_H_ */
index 7504a05bea51a90bb0d53cfc121268bfde645819..2beeb9e59d57475fa500935d05262777fd834b91 100644 (file)
@@ -53,14 +53,30 @@ decompose_long_opcode (MonoCompile *cfg, MonoInst *ins, MonoInst **repl_ins)
        case OP_LADD_OVF:
                if (COMPILE_LLVM (cfg))
                        break;
-               EMIT_NEW_BIALU (cfg, repl, OP_ADDCC, ins->dreg, ins->sreg1, ins->sreg2);
+               {
+                       int opcode;
+#if defined(__mono_ilp32__) && SIZEOF_REGISTER == 8
+                       opcode = OP_LADDCC;
+#else
+                       opcode = OP_ADDCC;
+#endif
+                       EMIT_NEW_BIALU (cfg, repl, opcode, ins->dreg, ins->sreg1, ins->sreg2);
+               }
                MONO_EMIT_NEW_COND_EXC (cfg, OV, "OverflowException");
                NULLIFY_INS (ins);
                break;
        case OP_LADD_OVF_UN:
                if (COMPILE_LLVM (cfg))
                        break;
-               EMIT_NEW_BIALU (cfg, repl, OP_ADDCC, ins->dreg, ins->sreg1, ins->sreg2);
+               {
+                       int opcode;
+#if defined(__mono_ilp32__) && SIZEOF_REGISTER == 8
+                       opcode = OP_LADDCC;
+#else
+                       opcode = OP_ADDCC;
+#endif
+                       EMIT_NEW_BIALU (cfg, repl, opcode, ins->dreg, ins->sreg1, ins->sreg2);
+               }
                MONO_EMIT_NEW_COND_EXC (cfg, C, "OverflowException");
                NULLIFY_INS (ins);
                break;
@@ -68,14 +84,30 @@ decompose_long_opcode (MonoCompile *cfg, MonoInst *ins, MonoInst **repl_ins)
        case OP_LSUB_OVF:
                if (COMPILE_LLVM (cfg))
                        break;
-               EMIT_NEW_BIALU (cfg, repl, OP_SUBCC, ins->dreg, ins->sreg1, ins->sreg2);
+               {
+                       int opcode;
+#if defined(__mono_ilp32__) && SIZEOF_REGISTER == 8
+                       opcode = OP_LSUBCC;
+#else
+                       opcode = OP_SUBCC;
+#endif
+                       EMIT_NEW_BIALU (cfg, repl, opcode, ins->dreg, ins->sreg1, ins->sreg2);
+               }
                MONO_EMIT_NEW_COND_EXC (cfg, OV, "OverflowException");
                NULLIFY_INS (ins);
                break;
        case OP_LSUB_OVF_UN:
                if (COMPILE_LLVM (cfg))
                        break;
-               EMIT_NEW_BIALU (cfg, repl, OP_SUBCC, ins->dreg, ins->sreg1, ins->sreg2);
+               {
+                       int opcode;
+#if defined(__mono_ilp32__) && SIZEOF_REGISTER == 8
+                       opcode = OP_LSUBCC;
+#else
+                       opcode = OP_SUBCC;
+#endif
+                       EMIT_NEW_BIALU (cfg, repl, opcode, ins->dreg, ins->sreg1, ins->sreg2);
+               }
                MONO_EMIT_NEW_COND_EXC (cfg, C, "OverflowException");
                NULLIFY_INS (ins);
                break;
@@ -237,6 +269,7 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
        MonoInst *repl = NULL;
        int type = ins->type;
        int dreg = ins->dreg;
+       gboolean emulate = FALSE;
 
        /* FIXME: Instead of = NOP, don't emit the original ins at all */
 
@@ -326,7 +359,7 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
                break;
        case OP_ICONV_TO_OVF_U4:
        case OP_ICONV_TO_OVF_I4_UN:
-#if SIZEOF_REGISTER == 4
+#if SIZEOF_VOID_P == 4
        case OP_ICONV_TO_OVF_U:
        case OP_ICONV_TO_OVF_I_UN:
 #endif
@@ -339,21 +372,21 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
        case OP_ICONV_TO_U4:
        case OP_ICONV_TO_OVF_I4:
        case OP_ICONV_TO_OVF_U4_UN:
-#if SIZEOF_REGISTER == 4
+#if SIZEOF_VOID_P == 4
        case OP_ICONV_TO_OVF_I:
        case OP_ICONV_TO_OVF_U_UN:
 #endif
                ins->opcode = OP_MOVE;
                break;
        case OP_ICONV_TO_I:
-#if SIZEOF_REGISTER == 8
+#if SIZEOF_VOID_P == 8
                ins->opcode = OP_SEXT_I4;
 #else
                ins->opcode = OP_MOVE;
 #endif
                break;
        case OP_ICONV_TO_U:
-#if SIZEOF_REGISTER == 8
+#if SIZEOF_VOID_P == 8
                ins->opcode = OP_ZEXT_I4;
 #else
                ins->opcode = OP_MOVE;
@@ -378,18 +411,55 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
                cfg->exception_message = g_strdup_printf ("float conv.ovf.un opcodes not supported.");
                break;
 
-       default: {
-               MonoJitICallInfo *info;
+#if defined(MONO_ARCH_EMULATE_DIV) && defined(MONO_ARCH_HAVE_OPCODE_NEEDS_EMULATION)
+       case OP_IDIV:
+       case OP_IREM:
+       case OP_IDIV_UN:
+       case OP_IREM_UN:
+               if (!mono_arch_opcode_needs_emulation (cfg, ins->opcode)) {
+#ifdef MONO_ARCH_NEED_DIV_CHECK
+                       int reg1 = alloc_ireg (cfg);
+                       int reg2 = alloc_ireg (cfg);
+                       /* b == 0 */
+                       MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg2, 0);
+                       MONO_EMIT_NEW_COND_EXC (cfg, IEQ, "DivideByZeroException");
+                       if (ins->opcode == OP_IDIV || ins->opcode == OP_IREM) {
+                               /* b == -1 && a == 0x80000000 */
+                               MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg2, -1);
+                               MONO_EMIT_NEW_UNALU (cfg, OP_ICEQ, reg1, -1);
+                               MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 0x80000000);
+                               MONO_EMIT_NEW_UNALU (cfg, OP_ICEQ, reg2, -1);
+                               MONO_EMIT_NEW_BIALU (cfg, OP_IAND, reg1, reg1, reg2);
+                               MONO_EMIT_NEW_ICOMPARE_IMM (cfg, reg1, 1);
+                               MONO_EMIT_NEW_COND_EXC (cfg, IEQ, "DivideByZeroException");
+                       }
+#endif
+                       MONO_EMIT_NEW_BIALU (cfg, ins->opcode, ins->dreg, ins->sreg1, ins->sreg2);
+                       ins->opcode = OP_NOP;
+               } else {
+                       emulate = TRUE;
+               }
+               break;
+#endif
+
+       default:
+               emulate = TRUE;
+               break;
+       }
+
+       if (emulate) {
+               MonoJitICallInfo *info = NULL;
 
 #if SIZEOF_REGISTER == 8
                if (decompose_long_opcode (cfg, ins, &repl))
-                       break;
+                       emulate = FALSE;
 #else
                if (COMPILE_LLVM (cfg) && decompose_long_opcode (cfg, ins, &repl))
-                       break;
+                       emulate = FALSE;
 #endif
 
-               info = mono_find_jit_opcode_emulation (ins->opcode);
+               if (emulate)
+                       info = mono_find_jit_opcode_emulation (ins->opcode);
                if (info) {
                        MonoInst **args;
                        MonoInst *call;
@@ -415,8 +485,6 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
 
                        NULLIFY_INS (ins);
                }
-               break;
-       }
        }
 
        if (ins->opcode == OP_NOP) {
@@ -1218,9 +1286,13 @@ mono_decompose_vtype_opts (MonoCompile *cfg)
                                                case 2:
                                                        MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STOREI2_MEMBASE_REG, dest->dreg, 0, call2->inst.dreg);
                                                        break;
+                                               case 3:
                                                case 4:
                                                        MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STOREI4_MEMBASE_REG, dest->dreg, 0, call2->inst.dreg);
                                                        break;
+                                               case 5:
+                                               case 6:
+                                               case 7:
                                                case 8:
 #if SIZEOF_REGISTER == 4
                                                        /*
@@ -1361,8 +1433,9 @@ mono_decompose_array_access_opts (MonoCompile *cfg)
                                                dest = mono_emit_jit_icall (cfg, mono_array_new, iargs);
                                                dest->dreg = ins->dreg;
                                        } else {
-                                               MonoVTable *vtable = mono_class_vtable (cfg->domain, mono_array_class_get (ins->inst_newa_class, 1));
-                                               MonoMethod *managed_alloc = mono_gc_get_managed_array_allocator (vtable, 1);
+                                               MonoClass *array_class = mono_array_class_get (ins->inst_newa_class, 1);
+                                               MonoVTable *vtable = mono_class_vtable (cfg->domain, array_class);
+                                               MonoMethod *managed_alloc = mono_gc_get_managed_array_allocator (array_class);
 
                                                g_assert (vtable); /*This shall not fail since we check for this condition on OP_NEWARR creation*/
                                                NEW_VTABLECONST (cfg, iargs [0], vtable);
@@ -1410,7 +1483,7 @@ typedef union {
        double vald;
 } DVal;
 
-#ifdef MONO_ARCH_SOFT_FLOAT
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
 
 /**
  * mono_decompose_soft_float:
index 8c67f6db6d567e64a2b4868de53ce72a33813d5b..aa783d593a9a8bb339fa712f75ebb9e7ce15a2b9 100644 (file)
@@ -47,6 +47,7 @@
 #include <mono/metadata/coree.h>
 #include <mono/metadata/attach.h>
 #include "mono/utils/mono-counters.h"
+#include "mono/utils/mono-hwcap.h"
 
 #include "mini.h"
 #include "jit.h"
@@ -149,6 +150,9 @@ parse_optimizations (const char* p)
        const char *n;
        int i, invert, len;
 
+       /* Initialize the hwcap module if necessary. */
+       mono_hwcap_init ();
+
        /* call out to cpu detection code here that sets the defaults ... */
        opt |= mono_arch_cpu_optimizations (&exclude);
        opt &= ~exclude;
@@ -351,6 +355,7 @@ mini_regression (MonoImage *image, int verbose, int *total_run)
        MonoDomain *domain = mono_domain_get ();
        guint32 exclude = 0;
 
+       /* Note: mono_hwcap_init () called in mono_init () before we get here. */
        mono_arch_cpu_optimizations (&exclude);
 
        if (mini_stats_fd) {
@@ -1147,8 +1152,10 @@ mini_usage (void)
                "    --runtime=VERSION      Use the VERSION runtime, instead of autodetecting\n"
                "    --optimize=OPT         Turns on or off a specific optimization\n"
                "                           Use --list-opt to get a list of optimizations\n"
+#ifndef DISABLE_SECURITY
                "    --security[=mode]      Turns on the unsupported security manager (off by default)\n"
                "                           mode is one of cas, core-clr, verifiable or validil\n"
+#endif
                "    --attach=OPTIONS       Pass OPTIONS to the attach agent in the runtime.\n"
                "                           Currently the only supported option is 'disable'.\n"
                "    --llvm, --nollvm       Controls whenever the runtime uses LLVM to compile code.\n"
@@ -1269,9 +1276,6 @@ BOOL APIENTRY DllMain (HMODULE module_handle, DWORD reason, LPVOID reserved)
                if (coree_module_handle)
                        FreeLibrary (coree_module_handle);
                break;
-       case DLL_THREAD_ATTACH:
-               mono_thread_info_attach (&dummy);
-               break;
        case DLL_THREAD_DETACH:
                mono_thread_info_dettach ();
                break;
@@ -1384,7 +1388,33 @@ mono_set_use_smp (int use_smp)
        }
 #endif
 }
-       
+
+static void
+switch_gc (char* argv[], const char* target_gc)
+{
+       GString *path;
+
+       if (!strcmp (mono_gc_get_gc_name (), target_gc)) {
+               return;
+       }
+
+       path = g_string_new (argv [0]);
+
+       /*Running mono without any argument*/
+       if (strstr (argv [0], "-sgen"))
+               g_string_truncate (path, path->len - 5);
+       else if (strstr (argv [0], "-boehm"))
+               g_string_truncate (path, path->len - 6);
+
+       g_string_append_c (path, '-');
+       g_string_append (path, target_gc);
+
+#ifdef HAVE_EXECVP
+       execvp (path->str, argv);
+#else
+       fprintf (stderr, "Error: --gc=<NAME> option not supported on this platform.\n");
+#endif
+}
 
 /**
  * mono_main:
@@ -1423,6 +1453,9 @@ mono_main (int argc, char* argv[])
 #ifdef HOST_WIN32
        int mixed_mode = FALSE;
 #endif
+#ifdef __native_client__
+       gboolean nacl_null_checks_off = FALSE;
+#endif
 
 #ifdef MOONLIGHT
 #ifndef HOST_WIN32
@@ -1503,32 +1536,9 @@ mono_main (int argc, char* argv[])
                } else if (strncmp (argv [i], "-O=", 3) == 0) {
                        opt = parse_optimizations (argv [i] + 3);
                } else if (strcmp (argv [i], "--gc=sgen") == 0) {
-                       if (!strcmp (mono_gc_get_gc_name (), "boehm")) {
-                               GString *path = g_string_new (argv [0]);
-                               g_string_append (path, "-sgen");
-                               argv [0] = path->str;
-#ifdef HAVE_EXECVP
-                               execvp (path->str, argv);
-#else
-                               fprintf (stderr, "Error: --gc=<NAME> option not supported on this platform.\n");
-#endif
-                       }
+                       switch_gc (argv, "sgen");
                } else if (strcmp (argv [i], "--gc=boehm") == 0) {
-                       if (!strcmp (mono_gc_get_gc_name (), "sgen")) {
-                               char *copy = g_strdup (argv [0]);
-                               char *p = strstr (copy, "-sgen");
-                               if (p == NULL){
-                                       fprintf (stderr, "Error, this process is not named mono-sgen and the command line option --boehm was passed");
-                                       exit (1);
-                               }
-                               *p = 0;
-                               argv [0] = p;
-#ifdef HAVE_EXECVP
-                               execvp (p, argv);
-#else
-                               fprintf (stderr, "Error: --gc=<NAME> option not supported on this platform.\n");
-#endif
-                       }
+                       switch_gc (argv, "boehm");
                } else if (strcmp (argv [i], "--config") == 0) {
                        if (i +1 >= argc){
                                fprintf (stderr, "error: --config requires a filename argument\n");
@@ -1663,28 +1673,51 @@ mono_main (int argc, char* argv[])
                        opt->mdb_optimizations = TRUE;
                        enable_debugging = TRUE;
                } else if (strcmp (argv [i], "--security") == 0) {
+#ifndef DISABLE_SECURITY
                        mono_verifier_set_mode (MONO_VERIFIER_MODE_VERIFIABLE);
                        mono_security_set_mode (MONO_SECURITY_MODE_CAS);
                        mono_activate_security_manager ();
+#else
+                       fprintf (stderr, "error: --security: not compiled with security manager support");
+                       return 1;
+#endif
                } else if (strncmp (argv [i], "--security=", 11) == 0) {
+                       /* Note: temporary-smcs-hack, validil, and verifiable need to be
+                          accepted even if DISABLE_SECURITY is defined. */
+
                        if (strcmp (argv [i] + 11, "temporary-smcs-hack") == 0) {
                                mono_security_set_mode (MONO_SECURITY_MODE_SMCS_HACK);
                        } else if (strcmp (argv [i] + 11, "core-clr") == 0) {
+#ifndef DISABLE_SECURITY
                                mono_verifier_set_mode (MONO_VERIFIER_MODE_VERIFIABLE);
                                mono_security_set_mode (MONO_SECURITY_MODE_CORE_CLR);
+#else
+                               fprintf (stderr, "error: --security: not compiled with CoreCLR support");
+                               return 1;
+#endif
                        } else if (strcmp (argv [i] + 11, "core-clr-test") == 0) {
+#ifndef DISABLE_SECURITY
                                /* fixme should we enable verifiable code here?*/
                                mono_security_set_mode (MONO_SECURITY_MODE_CORE_CLR);
                                mono_security_core_clr_test = TRUE;
-                       } else if (strcmp (argv [i] + 11, "cas") == 0){
+#else
+                               fprintf (stderr, "error: --security: not compiled with CoreCLR support");
+                               return 1;
+#endif
+                       } else if (strcmp (argv [i] + 11, "cas") == 0) {
+#ifndef DISABLE_SECURITY
                                mono_verifier_set_mode (MONO_VERIFIER_MODE_VERIFIABLE);
                                mono_security_set_mode (MONO_SECURITY_MODE_CAS);
                                mono_activate_security_manager ();
-                       } else  if (strcmp (argv [i] + 11, "validil") == 0) {
+#else
+                               fprintf (stderr, "error: --security: not compiled with CAS support");
+                               return 1;
+#endif
+                       } else if (strcmp (argv [i] + 11, "validil") == 0) {
                                mono_verifier_set_mode (MONO_VERIFIER_MODE_VALID);
-                       } else  if (strcmp (argv [i] + 11, "verifiable") == 0) {
+                       } else if (strcmp (argv [i] + 11, "verifiable") == 0) {
                                mono_verifier_set_mode (MONO_VERIFIER_MODE_VERIFIABLE);
-                       } else  {
+                       } else {
                                fprintf (stderr, "error: --security= option has invalid argument (cas, core-clr, verifiable or validil)\n");
                                return 1;
                        }
@@ -1727,6 +1760,8 @@ mono_main (int argc, char* argv[])
 #ifdef __native_client__
                } else if (strcmp (argv [i], "--nacl-mono-path") == 0){
                        nacl_mono_path = g_strdup(argv[++i]);
+               } else if (strcmp (argv [i], "--nacl-null-checks-off") == 0){
+                       nacl_null_checks_off = TRUE;
 #endif
                } else {
                        fprintf (stderr, "Unknown command line option: '%s'\n", argv [i]);
@@ -1739,6 +1774,10 @@ mono_main (int argc, char* argv[])
        {
                nacl_align_byte = -1; /* 0xff */
        }
+       if (!nacl_null_checks_off) {
+               MonoDebugOptions *opt = mini_get_debug_options ();
+               opt->explicit_null_checks = TRUE;
+       }
 #endif
 
        if (!argv [i]) {
@@ -1950,7 +1989,7 @@ mono_main (int argc, char* argv[])
         * This used to be an amd64 only crash, but it looks like now most glibc targets do unwinding
         * that requires reading the target code.
         */
-#ifdef __linux__
+#if defined( __linux__ ) || defined( __native_client__ )
                mono_dont_free_global_codeman = TRUE;
 #endif
 
index 2f216dda226e0456f03c6df7c38fda188a367ed3..e912519cdc5179066322d0ed87dd3eed43679165 100644 (file)
@@ -73,7 +73,7 @@ emit_line_number_info (MonoDwarfWriter *w, MonoMethod *method,
  * debug information.
  */
 MonoDwarfWriter*
-mono_dwarf_writer_create (MonoImageWriter *writer, FILE *il_file, int il_file_start_line, gboolean appending)
+mono_dwarf_writer_create (MonoImageWriter *writer, FILE *il_file, int il_file_start_line, gboolean appending, gboolean emit_line_numbers)
 {
        MonoDwarfWriter *w = g_new0 (MonoDwarfWriter, 1);
        
@@ -105,6 +105,11 @@ mono_dwarf_writer_create (MonoImageWriter *writer, FILE *il_file, int il_file_st
                w->collect_line_info = TRUE;
        }
 
+       if (!emit_line_numbers) {
+               w->emit_line = FALSE;
+               w->collect_line_info = FALSE;
+       }
+
        w->fp = img_writer_get_fp (w->w);
        w->temp_prefix = img_writer_get_temp_label_prefix (w->w);
 
@@ -737,14 +742,15 @@ emit_line_number_info_begin (MonoDwarfWriter *w)
        emit_label (w, ".Ldebug_line_end");
 }
 
-static char *
-escape_path (char *name)
+char *
+mono_dwarf_escape_path (const char *name)
 {
        if (strchr (name, '\\')) {
-               char *s = g_malloc (strlen (name) * 2);
+               char *s;
                int len, i, j;
 
                len = strlen (name);
+               s = g_malloc0 ((len + 1) * 2);
                j = 0;
                for (i = 0; i < len; ++i) {
                        if (name [i] == '\\') {
@@ -756,7 +762,7 @@ escape_path (char *name)
                }
                return s;
        }
-       return name;
+       return g_strdup (name);
 }
 
 static void
@@ -847,7 +853,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
        for (i = 0; i < w->line_number_dir_index; ++i) {
                char *dir = g_hash_table_lookup (index_to_dir, GUINT_TO_POINTER (i + 1));
 
-               emit_string (w, escape_path (dir));
+               emit_string (w, mono_dwarf_escape_path (dir));
        }
        /* End of Includes */
        emit_byte (w, 0);
@@ -868,7 +874,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
                if (basename)
                        emit_string (w, basename);
                else
-                       emit_string (w, escape_path (name));
+                       emit_string (w, mono_dwarf_escape_path (name));
                emit_uleb128 (w, dir_index);
                emit_byte (w, 0);
                emit_byte (w, 0);
@@ -1732,6 +1738,7 @@ emit_line_number_info (MonoDwarfWriter *w, MonoMethod *method,
                        //printf ("FIRST: %d %d %d\n", prev_line, loc->row, il_offset);
                        emit_sleb128 (w, (gint32)loc->row - (gint32)prev_line);
                        prev_line = loc->row;
+                       prev_native_offset = i;
                        first = FALSE;
                }
 
index a6b30ec25138f0e987c6dbb9c7105318271b4bbf..490f821fb7962a7fab679ea03dea9aeff395ee57 100644 (file)
@@ -20,7 +20,7 @@
 
 typedef struct _MonoDwarfWriter MonoDwarfWriter;
 
-MonoDwarfWriter* mono_dwarf_writer_create (MonoImageWriter *writer, FILE *il_file, int il_file_start_line, gboolean appending) MONO_INTERNAL;
+MonoDwarfWriter* mono_dwarf_writer_create (MonoImageWriter *writer, FILE *il_file, int il_file_start_line, gboolean appending, gboolean emit_line_numbers) MONO_INTERNAL;
 
 void mono_dwarf_writer_destroy (MonoDwarfWriter *w) MONO_INTERNAL;
 
@@ -35,4 +35,7 @@ void mono_dwarf_writer_emit_trampoline (MonoDwarfWriter *w, const char *tramp_na
 void
 mono_dwarf_writer_emit_method (MonoDwarfWriter *w, MonoCompile *cfg, MonoMethod *method, char *start_symbol, char *end_symbol, guint8 *code, guint32 code_size, MonoInst **args, MonoInst **locals, GSList *unwind_info, MonoDebugMethodJitInfo *debug_info) MONO_INTERNAL;
 
+char *
+mono_dwarf_escape_path (const char *name);
+
 #endif
index 20d7ad41e4d3e9c54c46f27dbe92059fe0bcb51c..575654b67e3ca63724d4f5f70b7201fd356a9277 100644 (file)
@@ -493,6 +493,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
        return FALSE;
 }
 
+#if MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX
 void
 mono_arch_sigctx_to_monoctx (void *sigctx, MonoContext *mctx)
 {
@@ -504,6 +505,7 @@ mono_arch_monoctx_to_sigctx (MonoContext *mctx, void *ctx)
 {
        mono_monoctx_to_sigctx (mctx, ctx);
 }
+#endif /* MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX */
 
 /*
  * handle_exception:
@@ -546,7 +548,7 @@ get_handle_signal_exception_addr (void)
 gboolean
 mono_arch_handle_exception (void *ctx, gpointer obj)
 {
-#if defined(MONO_CROSS_COMPILE)
+#if defined(MONO_CROSS_COMPILE) || !defined(MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX)
        g_assert_not_reached ();
 #elif defined(MONO_ARCH_USE_SIGACTION)
        arm_ucontext *sigctx = ctx;
@@ -598,6 +600,8 @@ mono_arch_ip_from_context (void *sigctx)
 {
 #ifdef MONO_CROSS_COMPILE
        g_assert_not_reached ();
+#elif defined(__native_client__)
+       g_assert_not_reached ();
 #else
        arm_ucontext *my_uc = sigctx;
        return (void*) UCONTEXT_REG_PC (my_uc);
diff --git a/mono/mini/exceptions-s390.c b/mono/mini/exceptions-s390.c
deleted file mode 100644 (file)
index a6db38e..0000000
+++ /dev/null
@@ -1,605 +0,0 @@
-/*------------------------------------------------------------------*/
-/*                                                                 */
-/* Name        - exceptions-s390.c                                 */
-/*                                                                 */
-/* Function    - Exception support for S/390.                       */
-/*                                                                 */
-/* Name               - Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com) */
-/*                                                                 */
-/* Date        - January, 2004                                     */
-/*                                                                 */
-/* Derivation  - From exceptions-x86 & exceptions-ppc              */
-/*              Paolo Molaro (lupus@ximian.com)                    */
-/*              Dietmar Maurer (dietmar@ximian.com)                */
-/*                                                                 */
-/* Copyright   - 2001 Ximian, Inc.                                 */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-/*------------------------------------------------------------------*/
-/*                 D e f i n e s                                    */
-/*------------------------------------------------------------------*/
-
-#define S390_CALLFILTER_INTREGS        S390_MINIMAL_STACK_SIZE
-#define S390_CALLFILTER_FLTREGS                S390_CALLFILTER_INTREGS+(16*sizeof(gulong))
-#define S390_CALLFILTER_ACCREGS                S390_CALLFILTER_FLTREGS+(16*sizeof(gdouble))
-#define S390_CALLFILTER_SIZE           (S390_CALLFILTER_ACCREGS+(16*sizeof(gulong)))
-
-#define S390_THROWSTACK_ACCPRM         S390_MINIMAL_STACK_SIZE
-#define S390_THROWSTACK_FPCPRM         S390_THROWSTACK_ACCPRM+sizeof(gpointer)
-#define S390_THROWSTACK_RETHROW                S390_THROWSTACK_FPCPRM+sizeof(gulong)
-#define S390_THROWSTACK_INTREGS                S390_THROWSTACK_RETHROW+sizeof(gboolean)
-#define S390_THROWSTACK_FLTREGS                S390_THROWSTACK_INTREGS+(16*sizeof(gulong))
-#define S390_THROWSTACK_ACCREGS                S390_THROWSTACK_FLTREGS+(16*sizeof(gdouble))
-#define S390_THROWSTACK_SIZE           (S390_THROWSTACK_ACCREGS+(16*sizeof(gulong)))
-
-#define SZ_THROW       384
-
-/*========================= End of Defines =========================*/
-
-/*------------------------------------------------------------------*/
-/*                 I n c l u d e s                                  */
-/*------------------------------------------------------------------*/
-
-#include <config.h>
-#include <glib.h>
-#include <signal.h>
-#include <string.h>
-#include <ucontext.h>
-
-#include <mono/arch/s390/s390-codegen.h>
-#include <mono/metadata/appdomain.h>
-#include <mono/metadata/tabledefs.h>
-#include <mono/metadata/threads.h>
-#include <mono/metadata/debug-helpers.h>
-#include <mono/metadata/exception.h>
-#include <mono/metadata/mono-debug.h>
-
-#include "mini.h"
-#include "mini-s390.h"
-
-/*========================= End of Includes ========================*/
-
-/*------------------------------------------------------------------*/
-/*                   P r o t o t y p e s                            */
-/*------------------------------------------------------------------*/
-
-gboolean mono_arch_handle_exception (void     *ctx,
-                                                                        gpointer obj);
-
-/*========================= End of Prototypes ======================*/
-
-/*------------------------------------------------------------------*/
-/*                 G l o b a l   V a r i a b l e s                  */
-/*------------------------------------------------------------------*/
-
-/*====================== End of Global Variables ===================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_get_call_filter                         */
-/*                                                                  */
-/* Function    - Return a pointer to a method which calls an       */
-/*                exception filter. We also use this function to    */
-/*                call finally handlers (we pass NULL as @exc       */
-/*                object in this case).                             */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-gpointer
-mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
-{
-       static guint8 *start;
-       static int inited = 0;
-       guint8 *code;
-       int alloc_size, pos, i;
-
-       g_assert (!aot);
-       if (info)
-               *info = NULL;
-
-       if (inited)
-               return start;
-
-       inited = 1;
-       /* call_filter (MonoContext *ctx, unsigned long eip, gpointer exc) */
-       code = start = mono_global_codeman_reserve (512);
-
-       s390_stm (code, s390_r6, s390_r14, STK_BASE, S390_REG_SAVE_OFFSET);
-       s390_lr  (code, s390_r14, STK_BASE);
-       alloc_size = S390_ALIGN(S390_CALLFILTER_SIZE, S390_STACK_ALIGNMENT);
-       s390_ahi (code, STK_BASE, -alloc_size);
-       s390_st  (code, s390_r14, 0, STK_BASE, 0);
-
-       /*------------------------------------------------------*/
-       /* save general registers on stack                      */
-       /*------------------------------------------------------*/
-       s390_stm (code, s390_r0, s390_r13, STK_BASE, S390_CALLFILTER_INTREGS);
-
-       /*------------------------------------------------------*/
-       /* save floating point registers on stack               */
-       /*------------------------------------------------------*/
-//     pos = S390_CALLFILTER_FLTREGS;
-//     for (i = 0; i < 16; ++i) {
-//             s390_std (code, i, 0, STK_BASE, pos);
-//             pos += sizeof (gdouble);
-//     }
-
-       /*------------------------------------------------------*/
-       /* save access registers on stack                       */
-       /*------------------------------------------------------*/
-//     s390_stam (code, s390_a0, s390_a15, STK_BASE, S390_CALLFILTER_ACCREGS);
-
-       /*------------------------------------------------------*/
-       /* Get A(Context)                                       */
-       /*------------------------------------------------------*/
-       s390_lr   (code, s390_r13, s390_r2);
-
-       /*------------------------------------------------------*/
-       /* Get A(Handler Entry Point)                           */
-       /*------------------------------------------------------*/
-       s390_lr   (code, s390_r0, s390_r3);
-
-       /*------------------------------------------------------*/
-       /* Set parameter register with Exception                */
-       /*------------------------------------------------------*/
-       s390_lr   (code, s390_r2, s390_r4);
-
-       /*------------------------------------------------------*/
-       /* Load all registers with values from the context      */
-       /*------------------------------------------------------*/
-       s390_lm   (code, s390_r3, s390_r12, s390_r13, 
-                  G_STRUCT_OFFSET(MonoContext, uc_mcontext.gregs[3]));
-       pos = G_STRUCT_OFFSET(MonoContext, uc_mcontext.fpregs.fprs[0]);
-       for (i = 0; i < 16; ++i) {
-               s390_ld  (code, i, 0, s390_r13, pos);
-               pos += sizeof(gdouble);
-       }
-       
-       /*------------------------------------------------------*/
-       /* Point at the copied stack frame and call the filter  */
-       /*------------------------------------------------------*/
-       s390_lr   (code, s390_r1, s390_r0);
-       s390_basr (code, s390_r14, s390_r1);
-
-       /*------------------------------------------------------*/
-       /* Save return value                                    */
-       /*------------------------------------------------------*/
-       s390_lr   (code, s390_r14, s390_r2);
-
-       /*------------------------------------------------------*/
-       /* Restore all the regs from the stack                  */
-       /*------------------------------------------------------*/
-       s390_lm (code, s390_r0, s390_r13, STK_BASE, S390_CALLFILTER_INTREGS);
-//     pos = S390_CALLFILTER_FLTREGS;
-//     for (i = 0; i < 16; ++i) {
-//             s390_ld (code, i, 0, STK_BASE, pos);
-//             pos += sizeof (gdouble);
-//     }
-
-       s390_lr   (code, s390_r2, s390_r14);
-//     s390_lam  (code, s390_a0, s390_a15, STK_BASE, S390_CALLFILTER_ACCREGS);
-       s390_ahi  (code, s390_r15, alloc_size);
-       s390_lm   (code, s390_r6, s390_r14, STK_BASE, S390_REG_SAVE_OFFSET);
-       s390_br   (code, s390_r14);
-
-       g_assert ((code - start) < SZ_THROW); 
-       return start;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - throw_exception.                                  */
-/*                                                                  */
-/* Function    - Raise an exception based on the parameters passed.*/
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static void
-throw_exception (MonoObject *exc, unsigned long ip, unsigned long sp, 
-                gulong *int_regs, gdouble *fp_regs, gulong *acc_regs, 
-                guint fpc, gboolean rethrow)
-{
-       MonoContext ctx;
-       int iReg;
-       
-       memset(&ctx, 0, sizeof(ctx));
-
-       getcontext(&ctx);
-
-       /* adjust eip so that it point into the call instruction */
-       ip -= 6;
-
-       for (iReg = 0; iReg < 16; iReg++) {
-               ctx.uc_mcontext.gregs[iReg]         = int_regs[iReg];
-               ctx.uc_mcontext.fpregs.fprs[iReg].d = fp_regs[iReg];
-               ctx.uc_mcontext.aregs[iReg]         = acc_regs[iReg];
-       }
-
-       ctx.uc_mcontext.fpregs.fpc = fpc;
-
-       MONO_CONTEXT_SET_BP (&ctx, sp);
-       MONO_CONTEXT_SET_IP (&ctx, ip);
-       
-       if (mono_object_isinst (exc, mono_defaults.exception_class)) {
-               MonoException *mono_ex = (MonoException*)exc;
-               if (!rethrow)
-                       mono_ex->stack_trace = NULL;
-       }
-       mono_arch_handle_exception (&ctx, exc);
-       setcontext(&ctx);
-
-       g_assert_not_reached ();
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - get_throw_exception_generic                       */
-/*                                                                  */
-/* Function    - Return a function pointer which can be used to    */
-/*                raise exceptions. The returned function has the   */
-/*                following signature:                              */
-/*                void (*func) (MonoException *exc); or,            */
-/*                void (*func) (char *exc_name);                    */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static gpointer 
-get_throw_exception_generic (guint8 *start, int size, 
-                            int by_name, gboolean rethrow)
-{
-       guint8 *code;
-       int alloc_size, pos, i, offset;
-
-       code = start;
-
-       s390_stm (code, s390_r6, s390_r14, STK_BASE, S390_REG_SAVE_OFFSET);
-       alloc_size = S390_ALIGN(S390_THROWSTACK_SIZE, S390_STACK_ALIGNMENT);
-       s390_lr   (code, s390_r14, STK_BASE);
-       s390_ahi  (code, STK_BASE, -alloc_size);
-       s390_st   (code, s390_r14, 0, STK_BASE, 0);
-       if (by_name) {
-               s390_lr   (code, s390_r4, s390_r2);
-               s390_bras (code, s390_r13, 6);
-               s390_word (code, mono_defaults.corlib);
-               s390_word (code, "System");
-               s390_l    (code, s390_r2, 0, s390_r13, 0);
-               s390_l    (code, s390_r3, 0, s390_r13, 4);
-               offset = (guint32) S390_RELATIVE(mono_exception_from_name, code);
-               s390_brasl(code, s390_r14, offset);
-       }
-       /*------------------------------------------------------*/
-       /* save the general registers on the stack              */
-       /*------------------------------------------------------*/
-       s390_stm (code, s390_r0, s390_r13, STK_BASE, S390_THROWSTACK_INTREGS);
-
-       s390_lr  (code, s390_r1, STK_BASE);
-       s390_ahi (code, s390_r1, alloc_size);
-       /*------------------------------------------------------*/
-       /* save the return address in the parameter register    */
-       /*------------------------------------------------------*/
-       s390_l   (code, s390_r3, 0, s390_r1, S390_RET_ADDR_OFFSET);
-
-       /*------------------------------------------------------*/
-       /* save the floating point registers                    */
-       /*------------------------------------------------------*/
-       pos = S390_THROWSTACK_FLTREGS;
-       for (i = 0; i < 16; ++i) {
-               s390_std (code, i, 0,STK_BASE, pos);
-               pos += sizeof (gdouble);
-       }
-       /*------------------------------------------------------*/
-       /* save the access registers                            */
-       /*------------------------------------------------------*/
-       s390_stam (code, s390_r0, s390_r15, STK_BASE, S390_THROWSTACK_ACCREGS);
-
-       /*------------------------------------------------------*/
-       /* call throw_exception (exc, ip, sp, gr, fr, ar)       */
-       /* exc is already in place in r2                        */
-       /*------------------------------------------------------*/
-       s390_lr   (code, s390_r4, s390_r1);        /* caller sp */
-       /*------------------------------------------------------*/
-       /* pointer to the saved int regs                        */
-       /*------------------------------------------------------*/
-       s390_la   (code, s390_r5, 0, STK_BASE, S390_THROWSTACK_INTREGS);
-       s390_la   (code, s390_r6, 0, STK_BASE, S390_THROWSTACK_FLTREGS);
-       s390_la   (code, s390_r7, 0, STK_BASE, S390_THROWSTACK_ACCREGS);
-       s390_st   (code, s390_r7, 0, STK_BASE, S390_THROWSTACK_ACCPRM);
-       s390_stfpc(code, STK_BASE, S390_THROWSTACK_FPCPRM);
-       s390_lhi  (code, s390_r7, rethrow);
-       s390_st   (code, s390_r7, 0, STK_BASE, S390_THROWSTACK_RETHROW);
-       offset = (guint32) S390_RELATIVE(throw_exception, code);
-       s390_brasl(code, s390_r14, offset);
-       /* we should never reach this breakpoint */
-       s390_break (code);
-       g_assert ((code - start) < size);
-       return start;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - arch_get_throw_exception                          */
-/*                                                                  */
-/* Function    - Return a function pointer which can be used to    */
-/*                raise exceptions. The returned function has the   */
-/*                following signature:                              */
-/*                void (*func) (MonoException *exc);                */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-gpointer
-mono_arch_get_throw_exception (MonoTrampInfo **info, gboolean aot)
-{
-       static guint8 *start;
-       static int inited = 0;
-
-       g_assert (!aot);
-       if (info)
-               *info = NULL;
-
-       if (inited)
-               return start;
-       start = mono_global_codeman_reserve (SZ_THROW);
-       get_throw_exception_generic (start, SZ_THROW, FALSE, FALSE);
-       inited = 1;
-       return start;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - arch_get_rethrow_exception                        */
-/*                                                                  */
-/* Function    - Return a function pointer which can be used to    */
-/*                raise exceptions. The returned function has the   */
-/*                following signature:                              */
-/*                void (*func) (MonoException *exc);                */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-gpointer 
-mono_arch_get_rethrow_exception (MonoTrampInfo **info, gboolean aot)
-{
-       static guint8 *start;
-       static int inited = 0;
-
-       g_assert (!aot);
-       if (info)
-               *info = NULL;
-
-       if (inited)
-               return start;
-       start = mono_global_codeman_reserve (SZ_THROW);
-       get_throw_exception_generic (start, SZ_THROW, FALSE, TRUE);
-       inited = 1;
-       return start;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - arch_get_throw_exception_by_name                  */
-/*                                                                  */
-/* Function    - Return a function pointer which can be used to    */
-/*                raise corlib exceptions. The return function has  */
-/*                the following signature:                          */
-/*                void (*func) (char *exc_name);                    */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-gpointer 
-mono_arch_get_throw_exception_by_name (void)
-{
-       static guint8 *start;
-       static int inited = 0;
-
-       if (inited)
-               return start;
-       start = mono_global_codeman_reserve (SZ_THROW);
-       get_throw_exception_generic (start, SZ_THROW, TRUE, FALSE);
-       inited = 1;
-       return start;
-}      
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_find_jit_info                           */
-/*                                                                  */
-/* Function    - See exceptions-amd64.c for docs.                      */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-gboolean
-mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, 
-                                                        MonoJitInfo *ji, MonoContext *ctx, 
-                                                        MonoContext *new_ctx, MonoLMF **lmf,
-                                                        mgreg_t **save_locations,
-                                                        StackFrameInfo *frame)
-{
-       gpointer ip = MONO_CONTEXT_GET_IP (ctx);
-       MonoS390StackFrame *sframe;
-
-       memset (frame, 0, sizeof (StackFrameInfo));
-       frame->ji = ji;
-
-       *new_ctx = *ctx;
-
-       if (ji != NULL) {
-               gint32 address;
-
-               frame->type = FRAME_TYPE_MANAGED;
-
-               if (*lmf && (MONO_CONTEXT_GET_SP (ctx) >= (gpointer)(*lmf)->ebp)) {
-                       /* remove any unused lmf */
-                       *lmf = (*lmf)->previous_lmf;
-               }
-
-               address = (char *)ip - (char *)ji->code_start;
-
-               sframe = (MonoS390StackFrame *) MONO_CONTEXT_GET_SP (ctx);
-               MONO_CONTEXT_SET_BP (new_ctx, sframe->prev);
-               sframe = (MonoS390StackFrame *) sframe->prev;
-               MONO_CONTEXT_SET_IP (new_ctx, (guint8*)sframe->return_address - 2);
-               memcpy (&new_ctx->uc_mcontext.gregs[6], sframe->regs, (8*sizeof(gint32)));
-               return TRUE;
-       } else if (*lmf) {
-               if (!(*lmf)->method)
-                       return FALSE;
-
-               ji = mini_jit_info_table_find (domain, (gpointer)(*lmf)->eip, NULL);
-               if (!ji) {
-                       // FIXME: This can happen with multiple appdomains (bug #444383)
-                       return FALSE;
-               }
-
-               frame->ji = ji;
-               frame->type = FRAME_TYPE_MANAGED_TO_NATIVE;
-
-               memcpy(new_ctx->uc_mcontext.gregs, (*lmf)->gregs, sizeof((*lmf)->gregs));
-               memcpy(new_ctx->uc_mcontext.fpregs.fprs, (*lmf)->fregs, sizeof((*lmf)->fregs));
-
-               MONO_CONTEXT_SET_BP (new_ctx, (*lmf)->ebp);
-               MONO_CONTEXT_SET_IP (new_ctx, (*lmf)->eip - 2);
-               *lmf = (*lmf)->previous_lmf;
-
-               return TRUE;
-       }
-
-       return FALSE;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_handle_exception                        */
-/*                                                                  */
-/* Function    - Handle an exception raised by the JIT code.       */
-/*                                                                  */
-/* Parameters   - ctx       - Saved processor state                 */
-/*                obj       - The exception object                  */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-gboolean
-mono_arch_handle_exception (void *uc, gpointer obj)
-{
-       return mono_handle_exception (uc, obj);
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_ip_from_context                         */
-/*                                                                  */
-/* Function    - Return the instruction pointer from the context.  */
-/*                                                                  */
-/* Parameters   - sigctx    - Saved processor state                 */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-gpointer
-mono_arch_ip_from_context (void *sigctx)
-{
-       return context_get_ip (sigctx);
-}
-
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_get_restore_context                    */
-/*                                                                  */
-/* Function    - Return the address of the routine that will rest- */
-/*                ore the context.                                  */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-gpointer
-mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
-{
-       g_assert (!aot);
-       if (info)
-               *info = NULL;
-
-       return setcontext;
-}
-
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_is_int_overflow                         */
-/*                                                                  */
-/* Function    - Inspect the code that raised the SIGFPE signal    */
-/*               to see if the DivideByZero or Arithmetic exception*/
-/*               should be raised.                                 */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-gboolean
-mono_arch_is_int_overflow (void *uc, void *info)
-{
-       MonoContext *ctx;
-       guint8      *code;
-       guint32     *operand;
-       gboolean    arithExc = TRUE;
-       gint        regNo,
-                   offset;
-
-       ctx  = (MonoContext *) uc;
-       code =  (guint8 *) ((siginfo_t *)info)->si_addr;
-       /*----------------------------------------------------------*/
-       /* Divide operations are the only ones that will give the   */
-       /* divide by zero exception so just check for these ops.    */
-       /*----------------------------------------------------------*/
-       switch (code[0]) {
-               case 0x1d :             /* Divide Register          */
-                       regNo = code[1] & 0x0f; 
-                       if (ctx->uc_mcontext.gregs[regNo] == 0)
-                               arithExc = FALSE;
-               break;
-               case 0x5d :             /* Divide                   */
-                       regNo   = (code[2] & 0xf0 >> 8);        
-                       offset  = *((guint16 *) code+2) & 0x0fff;
-                       operand = (guint32*)(ctx->uc_mcontext.gregs[regNo] + offset);
-                       if (*operand == 0)
-                               arithExc = FALSE; 
-               break;
-               case 0xb9 :             /* Divide logical Register? */
-                       if (code[1] == 0x97) {
-                               regNo = (code[2] & 0xf0 >> 8);  
-                               if (ctx->uc_mcontext.gregs[regNo] == 0)
-                                       arithExc = FALSE;
-                       }
-               break;
-               case 0xe3 :             /* Divide logical?          */
-                       if (code[1] == 0x97) {  
-                               regNo   = (code[2] & 0xf0 >> 8);        
-                               offset  = *((guint32 *) code+1) & 0x000fffff;
-                               operand = (guint32*)(ctx->uc_mcontext.gregs[regNo] + offset);
-                               if (*operand == 0)
-                                       arithExc = FALSE; 
-                       }
-               break;
-               default:
-                       arithExc = TRUE;
-       }
-       ctx->uc_mcontext.psw.addr = (guint32)code;
-       return (arithExc);
-}
-
-/*========================= End of Function ========================*/
index b3319e56089882eafa789d98b12ac04c7faaa731..49dca8d1ba12e720ceb0b07cf3fd67595e88c161 100644 (file)
@@ -26,8 +26,8 @@ using System.Runtime.CompilerServices;
 
 class Tests {
 
-       public static int Main () {
-               return TestDriver.RunTests (typeof (Tests));
+       public static int Main (string[] args) {
+               return TestDriver.RunTests (typeof (Tests), args);
        }
 
        public static int test_0_catch () {
@@ -1455,6 +1455,7 @@ class Tests {
                return 0;
        }
        
+       [Category ("NaClDisable")]
        public static int test_0_div_zero () {
                int d = 1;
                int q = 0;
@@ -1560,6 +1561,7 @@ class Tests {
                return 0;
        }
 
+       [Category ("NaClDisable")]
        public static int test_0_long_div_zero () {
                long d = 1;
                long q = 0;
diff --git a/mono/mini/fsacheck.c b/mono/mini/fsacheck.c
deleted file mode 100644 (file)
index 6ee66bb..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-
-#include <mono/metadata/appdomain.h>
-#include <mono/metadata/assembly.h>
-#include <mono/metadata/debug-helpers.h>
-#include <mono/metadata/object.h>
-#include <mono/jit/jit.h>
-#include <mono/utils/mono-logger.h>
-
-extern void* mono_aot_module_mscorlib_info;
-extern void* mono_aot_module_System_Core_info;
-extern void* mono_aot_module_System_info;
-extern void* mono_aot_module_Mono_Posix_info;
-extern void* mono_aot_module_System_Configuration_info;
-extern void* mono_aot_module_System_Security_info;
-extern void* mono_aot_module_System_Xml_info;
-/* extern void* mono_aot_module_System_Threading_info; */
-extern void* mono_aot_module_Mono_Security_info;
-extern void* mono_aot_module_Mono_Simd_info;
-extern void* mono_aot_module_TestDriver_info;
-
-extern void* mono_aot_module_basic_info;
-extern void* mono_aot_module_basic_float_info;
-extern void* mono_aot_module_basic_long_info;
-extern void* mono_aot_module_basic_calls_info;
-extern void* mono_aot_module_basic_simd_info;
-extern void* mono_aot_module_objects_info;
-extern void* mono_aot_module_arrays_info;
-extern void* mono_aot_module_basic_math_info;
-extern void* mono_aot_module_exceptions_info;
-extern void* mono_aot_module_devirtualization_info;
-extern void* mono_aot_module_generics_info;
-extern void* mono_aot_module_generics_variant_types_info;
-extern void* mono_aot_module_basic_simd_info;
-extern void* mono_aot_module_gc_stress_info;
-extern void* mono_aot_module_imt_big_iface_test_info;
-extern void* mono_aot_module_make_imt_test_info;
-/* extern void* mono_aot_module_thread_stress_info; */
-extern void* mono_aot_module_iltests_info;
-
-extern void mono_aot_register_module(void *aot_info);
-extern void mono_aot_init(void);
-extern void mono_jit_set_aot_only(mono_bool aot_only);
-extern MonoDomain * mini_init (const char *filename, const char *runtime_version);
-
-int run_all_test_methods(MonoClass *klass) {
-  void * iter = NULL;
-  MonoMethod *mm = NULL;
-  int count = 0;
-  int passed = 0;
-  printf("Running test methods without reflection\n");
-  while (NULL != (mm = mono_class_get_methods(klass, &iter))) {
-    long expected_result;
-    const char *name = mono_method_get_name(mm);
-    char *end = NULL;
-    if (strncmp(name, "test_", 5)) continue;
-    printf("=== Test %d, method %s\n", count, mono_method_get_name(mm));
-    expected_result = strtol(name + 5, &end, 10);
-    if (name == end) {
-      printf(" warning: could not determine expected return value\n");
-      expected_result = 0;
-    }
-    MonoObject *mo = mono_runtime_invoke(mm, NULL, NULL, NULL);
-    int *ret = mono_object_unbox(mo);
-    if (ret && *ret == expected_result) {
-      printf(" passed!\n");
-      passed++;
-    } else {
-      printf(" FAILED, expected %d, returned %p, %d\n", expected_result, ret,
-             ret != NULL ? *ret : 0);
-    }
-    count++;
-  }
-  if (count > 0) {
-    printf("============================================\n");
-    printf("Final count: %d tests, %d pass, %.2f%%\n", count, passed,
-           (double)passed / count * 100.0);
-  } else {
-    printf("no test methods found.\n");
-  }
-  return count;
-}
-
-#if defined(__native_client__)
-extern void* mono_aot_module_nacl_info;
-extern char* nacl_mono_path;
-char *load_corlib_data() {
-  FILE *mscorlib;
-  static char *corlib_data = NULL;
-  if (corlib_data) return corlib_data;
-
-  mscorlib = fopen("mscorlib.dll", "r");
-  if (NULL != mscorlib) {
-    size_t size;
-    struct stat st;
-    if (0 == stat("mscorlib.dll", &st)) {
-      size = st.st_size;
-      printf("reading mscorlib.dll, size %ld\n", size);
-      corlib_data = malloc(size);
-      if (corlib_data != NULL) {
-        while (fread(corlib_data, 1, size, mscorlib) != 0) ;
-        if (!ferror(mscorlib)) {
-          mono_set_corlib_data(corlib_data, size);
-        } else {
-          perror("error reading mscorlib.dll");
-          free(corlib_data);
-          corlib_data = NULL;
-        }
-      } else {
-        perror("Could not allocate memory");
-      }
-    } else {
-      perror("stat error");
-    }
-    fclose(mscorlib);
-  }
-  return corlib_data;
-}
-#endif
-
-/* Initialize Mono. Must run only once per process */
-MonoDomain *init_mono(char *mname) {
-  MonoDomain *domain = NULL;
-#ifdef AOT_VERSION
-  mono_jit_set_aot_only(1);
-  mono_aot_register_module(mono_aot_module_mscorlib_info);
-  mono_aot_register_module(mono_aot_module_TestDriver_info);
-  mono_aot_register_module(mono_aot_module_System_Core_info);
-  mono_aot_register_module(mono_aot_module_System_info);
-  mono_aot_register_module(mono_aot_module_Mono_Posix_info);
-  mono_aot_register_module(mono_aot_module_System_Configuration_info);
-  mono_aot_register_module(mono_aot_module_System_Security_info);
-  mono_aot_register_module(mono_aot_module_System_Xml_info);
-  mono_aot_register_module(mono_aot_module_Mono_Security_info);
-  /*  mono_aot_register_module(mono_aot_module_System_Threading_info); */
-  mono_aot_register_module(mono_aot_module_Mono_Simd_info);
-
-  mono_aot_register_module(mono_aot_module_basic_info);
-  mono_aot_register_module(mono_aot_module_basic_float_info);
-  mono_aot_register_module(mono_aot_module_basic_long_info);
-  mono_aot_register_module(mono_aot_module_basic_calls_info);
-  mono_aot_register_module(mono_aot_module_basic_simd_info);
-  mono_aot_register_module(mono_aot_module_objects_info);
-  mono_aot_register_module(mono_aot_module_arrays_info);
-  mono_aot_register_module(mono_aot_module_basic_math_info);
-  mono_aot_register_module(mono_aot_module_exceptions_info);
-  mono_aot_register_module(mono_aot_module_devirtualization_info);
-  mono_aot_register_module(mono_aot_module_generics_info);
-  mono_aot_register_module(mono_aot_module_generics_variant_types_info);
-  mono_aot_register_module(mono_aot_module_gc_stress_info);
-  mono_aot_register_module(mono_aot_module_imt_big_iface_test_info);
-  mono_aot_register_module(mono_aot_module_iltests_info);
-#endif
-  /* mono_aot_register_module(mono_aot_module_make_imt_test_info); */
-  /* mono_aot_register_module(mono_aot_module_thread_stress_info); */
-#if defined(__native_client__)
-#ifdef AOT_VERSION
-  mono_aot_register_module(mono_aot_module_nacl_info);
-#endif
-
-  /* Test file-less shortcut for loading mscorlib metadata */
-  load_corlib_data();
-  nacl_mono_path = strdup(".");
-#endif
-  /* Uncomment the following if something is going wrong */
-  /* mono_trace_set_level_string("info"); */
-  domain = mono_jit_init(mname);
-  if (NULL == domain) {
-    printf("ERROR: mono_jit_init failure\n");
-    exit(-1);
-  }
-  return domain;
-}
-
-/* Run all tests from one assembly file */
-int try_one(char *mname, MonoDomain *domain) {
-  MonoAssembly *ma;
-  MonoImage *mi;
-  MonoClass *mc;
-  MonoMethodDesc *mmd;
-  MonoMethod *mm;
-  MonoObject *mo;
-  MonoString *monostring_arg;
-  MonoArray *arg_array;
-  int *failures = NULL;
-  const int kUseTestDriver = 1;
-  int test_count = 0;
-  void *args [1];
-  char *cstr_arg = "--timing";
-
-  ma = mono_domain_assembly_open(domain, mname);
-  if (NULL == ma) {
-    printf("ERROR: could not open mono assembly\n");
-    exit(-1);
-  }
-
-  mi = mono_assembly_get_image(ma);
-  if (NULL == mi) {
-    printf("ERROR: could not get assembly image\n");
-    exit(-1);
-  }
-
-  monostring_arg = mono_string_new(domain, cstr_arg);
-  mc = mono_class_from_name(mono_get_corlib(), "System", "String");
-  if (0 == mc) {
-    printf("ERROR: could not mono string class\n");
-    exit(-1);
-  }
-
-  // to pass a string argument, change the 0 to a 1 and uncomment
-  // mono_array_setref below
-  arg_array = mono_array_new(domain, mc, 0);
-  //mono_array_setref(arg_array, 0, monostring_arg);
-  args[0] = arg_array;
-
-  if (!kUseTestDriver) {
-    mc = mono_class_from_name(mi, "", "Tests");
-    if (NULL == mc) {
-      printf("could not open Tests class\n");
-      exit(-1);
-    }
-    test_count = run_all_test_methods(mc);
-  }
-  /* If run_all_test_methods didn't find any tests, try Main */
-  if (kUseTestDriver || test_count == 0) {
-    mmd = mono_method_desc_new("Tests:Main()", 1);
-    mm = mono_method_desc_search_in_image(mmd, mi);
-    if (0 == mm) {
-      mmd = mono_method_desc_new("Tests:Main(string[])", 1);
-      mm = mono_method_desc_search_in_image(mmd, mi);
-      if (0 == mm) {
-        printf("Couldn't find Tests:Main() or Tests:Main(string[])\n");
-        exit(-1);
-      }
-    }
-
-    mo = mono_runtime_invoke(mm, NULL, args, NULL);
-    failures = mo != NULL ? mono_object_unbox(mo) : NULL;
-    if (NULL == failures || *failures != 0) {
-      printf("--------------------> Failed");
-    }
-  }
-  return failures != NULL ? failures : 1;
-}
-
-int main(int argc, char *argv[]) {
-   MonoDomain *domain;
-   int failures = 0;
-
-  if (argc < 2) {
-    printf("no test specified; running basic.exe\n");
-    printf("================================\n");
-    domain = init_mono("basic.exe");
-    try_one("basic.exe", domain);
-  } else {
-    domain = init_mono(argv[1]);
-    int i;
-    for (i = 1; i < argc; i++) {
-      printf("\nRunning tests from %s:\n", argv[i]);
-      printf("===============================\n\n");
-      failures += try_one(argv[i], domain);
-    }
-  }
-  mono_jit_cleanup(domain);
-  return failures;
-}
index b36764385103ed01522b607827f5def0bacf4fdc..fcf05c0653eae370bd8b6de8e1774c6eea9aad7e 100644 (file)
@@ -3,9 +3,14 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Runtime.CompilerServices;
 using System.Threading;
-
-class Tests {
-
+using System.Threading.Tasks;
+
+#if MOBILE
+class GenericsTests
+#else
+class Tests
+#endif
+{
        struct TestStruct {
                public int i;
                public int j;
@@ -16,6 +21,7 @@ class Tests {
                }
        }
 
+#if !MOBILE
        class Enumerator <T> : MyIEnumerator <T> {
                T MyIEnumerator<T>.Current {
                        get {
@@ -33,11 +39,14 @@ class Tests {
                        return true;
                }
        }
+#endif
 
+#if !MOBILE
        static int Main (string[] args)
        {
                return TestDriver.RunTests (typeof (Tests), args);
        }
+#endif
 
        public static int test_1_nullable_unbox ()
        {
@@ -182,7 +191,11 @@ class Tests {
        public static int test_0_constrained_vtype_box () {
                GenericClass<TestStruct> t = new GenericClass<TestStruct> ();
 
+#if MOBILE
+               return t.toString (new TestStruct ()) == "GenericsTests+TestStruct" ? 0 : 1;
+#else
                return t.toString (new TestStruct ()) == "Tests+TestStruct" ? 0 : 1;
+#endif
        }
 
        public static int test_0_constrained_vtype () {
@@ -309,6 +322,16 @@ class Tests {
                public GenericClass<int> class_field;
        }
 
+       public class MRO<T> : MarshalByRefObject {
+               public T gen_field;
+
+               public T stfld_ldfld (T t) {
+                       var m = this;
+                       m.gen_field = t;
+                       return m.gen_field;
+               }
+       }
+
        public static int test_0_ldfld_stfld_mro () {
                MRO m = new MRO ();
                GenericStruct<int> s = new GenericStruct<int> (5);
@@ -331,6 +354,11 @@ class Tests {
                if (m.class_field.t != 5)
                        return 4;
 
+               // gshared
+               var m2 = new MRO<string> ();
+               if (m2.stfld_ldfld ("A") != "A")
+                       return 5;
+
                return 0;
        }
 
@@ -373,6 +401,7 @@ class Tests {
                return 0;
        }
 
+#if !MOBILE
        public static int test_0_variance_reflection () {
                // covariance on IEnumerator
                if (!typeof (MyIEnumerator<object>).IsAssignableFrom (typeof (MyIEnumerator<string>)))
@@ -395,9 +424,10 @@ class Tests {
                        return 6;
                return 0;
        }
+#endif
 
        public static int test_0_ldvirtftn_generic_method () {
-               new Tests ().ldvirtftn<string> ();              
+               new GenericsTests ().ldvirtftn<string> ();
 
                return the_type == typeof (string) ? 0 : 1;
        }
@@ -528,8 +558,8 @@ class Tests {
 
        /* Test that treating arrays as generic collections works with full-aot */
        public static int test_0_fullaot_array_wrappers () {
-               Tests[] arr = new Tests [10];
-               enumerate<Tests> (arr);
+               GenericsTests[] arr = new GenericsTests [10];
+               enumerate<GenericsTests> (arr);
                return 0;
        }
 
@@ -662,9 +692,9 @@ class Tests {
        }
 
        public static int test_0_full_aot_nullable_unbox_from_gshared_code () {
-               if (!new Tests ().IsNull2<FooStruct> (null))
+               if (!new GenericsTests ().IsNull2<FooStruct> (null))
                        return 1;
-               if (new Tests ().IsNull2<FooStruct> (new FooStruct ()))
+               if (new GenericsTests ().IsNull2<FooStruct> (new FooStruct ()))
                        return 2;
                return 0;
        }
@@ -672,11 +702,11 @@ class Tests {
        public static int test_0_partial_sharing () {
                if (PartialShared1 (new List<string> (), 1) != typeof (string))
                        return 1;
-               if (PartialShared1 (new List<Tests> (), 1) != typeof (Tests))
+               if (PartialShared1 (new List<GenericsTests> (), 1) != typeof (GenericsTests))
                        return 2;
                if (PartialShared2 (new List<string> (), 1) != typeof (int))
                        return 3;
-               if (PartialShared2 (new List<Tests> (), 1) != typeof (int))
+               if (PartialShared2 (new List<GenericsTests> (), 1) != typeof (int))
                        return 4;
                return 0;
        }
@@ -876,6 +906,20 @@ class Tests {
                return result;
        }
 
+       class SyncClass<T> {
+               [MethodImpl(MethodImplOptions.Synchronized)]
+               public Type getInstance() {
+                       return typeof (T);
+               }
+       }
+
+       static int test_0_synchronized_gshared () {
+               var c = new SyncClass<string> ();
+               if (c.getInstance () != typeof (string))
+                       return 1;
+               return 0;
+       }
+
        class Response {
        }
 
@@ -1020,4 +1064,25 @@ class Tests {
                Volatile.Write (ref foo, "DEF");
                return Volatile.Read (ref foo) == "DEF" ? 0 : 1;
        }
+
+       // FIXME: Doesn't work with --regression as Interlocked.Add(ref long) is only implemented as an intrinsic
+#if FALSE
+       public static async Task<T> FooAsync<T> (int i, int j) {
+               Task<int> t = new Task<int> (delegate () { Console.WriteLine ("HIT!"); return 0; });
+               var response = await t;
+               return default(T);
+       }
+
+       public static int test_0_fullaot_generic_async () {
+               Task<string> t = FooAsync<string> (1, 2);
+               t.RunSynchronously ();
+               return 0;
+       }
+#endif
+}
+
+#if !MOBILE
+class GenericsTests : Tests
+{
 }
+#endif
index 0c942afabafd3a8f47fb18c3352781254e16c441..d00a24b54558c9f617a646f4b9768014bd53a6bd 100644 (file)
 #include <string.h>
 #include <mono/metadata/opcodes.h>
 
+#if defined(__native_client__) || defined(__native_client_codegen__)
+volatile int __nacl_thread_suspension_needed = 0;
+void __nacl_suspend_thread_if_needed() {}
+#endif
+
 #define MINI_OP(a,b,dest,src1,src2) b,
 #define MINI_OP3(a,b,dest,src1,src2,src3) b,
 /* keep in sync with the enum in mini.h */
index 6260b09b0b7cd3d2fae8239fa1743595e3fba7b8..09917f93e4b9b8e39a157fc5c540da1bf0ae0d88 100644 (file)
@@ -314,6 +314,7 @@ mono_draw_graph (MonoCompile *cfg, MonoGraphOptions draw_options)
        char *com;
        const char *fn;
        FILE *fp;
+       int _i G_GNUC_UNUSED;
 
        fn = "/tmp/minidtree.graph";
        fp = fopen (fn, "w+");
@@ -337,7 +338,7 @@ mono_draw_graph (MonoCompile *cfg, MonoGraphOptions draw_options)
 
        //com = g_strdup_printf ("dot %s -Tpng -o %s.png; eog %s.png", fn, fn, fn);
        com = g_strdup_printf ("dot %s -Tps -o %s.ps;gv %s.ps", fn, fn, fn);
-       system (com);
+       _i = system (com);
        g_free (com);
 }
 
index 561b233394720b1a442075c028ea8e595ef6d413..f545160ec42d6aee9d6eee5ec2314b5ff9e2f3bb 100644 (file)
@@ -1,9 +1,10 @@
 using System;
 using System.Collections.Generic;
 using System.Runtime.CompilerServices;
+using System.Threading.Tasks;
 
 struct Foo {
-       public int i, j;
+       public int i, j, k, l, m, n;
 }
 
 struct GFoo<T> {
@@ -40,11 +41,17 @@ class GFoo3<T> {
 
 // FIXME: Add mixed ref/noref tests, i.e. Dictionary<string, int>
 
+#if MOBILE
+public class GSharedTests
+#else
 public class Tests
+#endif
 {
+#if !MOBILE
        public static int Main (String[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
+#endif
 
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        static void gshared<T> (T [] array, int i, int j) {
@@ -173,6 +180,9 @@ public class Tests
        }
 
        public static int test_0_vt_unbox_any () {
+               int[] iarr = new int [16];
+               unbox_any<int> (iarr, new object [] { 12 });
+
                Foo[] arr = new Foo [2];
 
                object[] arr2 = new object [16];
@@ -183,6 +193,25 @@ public class Tests
                return 0;
        }
 
+       interface IFaceUnbox {
+               T Unbox<T, T2> (T t, T2 t2, object o);
+       }
+
+       class ClassUnbox : IFaceUnbox {
+               public T Unbox<T, T2> (T t, T2 t2, object o) {
+                       return (T)o;
+               }
+       }
+
+       // unbox.any on a ref type in a gsharedvt method
+       public static int test_0_ref_gsharedvt_aot_unbox_any () {
+               IFaceUnbox iface = new ClassUnbox ();
+               string s = iface.Unbox<string, int> ("A", 2, "A");
+               if (s != "A")
+                       return 1;
+               return 0;
+       }
+
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        static void ldfld_nongeneric<T> (GFoo<T>[] foo, int[] arr) {
                arr [0] = foo [0].i;
@@ -386,7 +415,7 @@ public class Tests
                var v2 = return_t<GFoo2<int>> (v);
                if (v2.t != 55 || v2.t2 != 32)
                        return 6;
-               i = new Tests ().return_this_t<int> (42);
+               i = new GSharedTests ().return_this_t<int> (42);
                if (i != 42)
                        return 7;
                return 0;
@@ -631,6 +660,10 @@ public class Tests
                return 0;
        }
 
+       interface IFaceKVP {
+               T do_kvp<T> (T a);
+       }
+
        static KeyValuePair<T1, T2> make_kvp<T1, T2> (T1 t1, T2 t2) {
                return new KeyValuePair<T1, T2> (t1, t2);
        }
@@ -638,16 +671,18 @@ public class Tests
        static T2 use_kvp<T1, T2> (KeyValuePair<T1, T2> kvp) {
                return kvp.Value;
        }
-               
-       [MethodImplAttribute (MethodImplOptions.NoInlining)]
-       static T do_kvp<T> (T a) {
-               var t = make_kvp (a, a);
-               // argument is an instance of a vtype instantiated with gsharedvt type arguments
-               return use_kvp (t);
+
+       class ClassKVP : IFaceKVP {
+               public T do_kvp<T> (T a) {
+                       var t = make_kvp (a, a);
+                       // argument is an instance of a vtype instantiated with gsharedvt type arguments
+                       return use_kvp (t);
+               }
        }
 
        public static int test_0_gsharedvt_ginstvt_constructed_arg () {
-               if (do_kvp<long> (1) != 1)
+               IFaceKVP c = new ClassKVP ();
+               if (c.do_kvp<long> (1) != 1)
                        return 1;
                return 0;
        }
@@ -878,11 +913,17 @@ public class Tests
                return t.ToString ();
        }
 
+       enum AnEnum {
+               One
+       };
+
        public static int test_0_constrained_tostring () {
                if (to_string<int, int> (1, 1) != "1")
                        return 1;
-               if (to_string<string, int> ("A", 1) != "A")
+               if (to_string<AnEnum, int> (AnEnum.One, 1) != "One")
                        return 2;
+               if (to_string<string, int> ("A", 1) != "A")
+                       return 3;
                return 0;
        }
 
@@ -896,8 +937,27 @@ public class Tests
                        return 1;
                if (get_hash<double, int> (1.0, 1) != 1.0.GetHashCode ())
                        return 2;
+               if (get_hash<AnEnum, int> (AnEnum.One, 1) != AnEnum.One.GetHashCode ())
+                       return 3;
                if (get_hash<string, int> ("A", 1) != "A".GetHashCode ())
+                       return 4;
+               return 0;
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       static bool equals<T, T2>(T t, T2 t2) {
+               return t.Equals (t);
+       }
+
+       public static int test_0_constrained_equals () {
+               if (equals<int, int> (1, 1) != true)
+                       return 1;
+               if (equals<double, int> (1.0, 1) != true)
+                       return 2;
+               if (equals<AnEnum, int> (AnEnum.One, 1) != true)
                        return 3;
+               if (equals<string, int> ("A", 1) != true)
+                       return 4;
                return 0;
        }
 
@@ -1086,4 +1146,164 @@ public class Tests
                return 0;
        }
 
+       public class TAbstractTableItem<TC> {
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public static void SetProperty<TV> () {    }
+
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public static void Test () {
+                       SetProperty<bool> ();
+               }
+       }
+
+       public static int test_0_gsharedvt_method_on_shared_class () {
+       TAbstractTableItem<object>.Test ();
+          return 0;
+       }
+
+       interface IFaceBox {
+               object box<T> (T t);
+       }
+
+       class ClassBox : IFaceBox {
+               public object box<T> (T t) {
+                       object o = t;
+                       return o;
+               }
+       }
+
+       public static int test_0_nullable_box () {
+               IFaceBox c = new ClassBox ();
+               int i = 5;
+               object o = c.box<int?> (i);
+               if ((int)o != i)
+                       return 1;
+               if (c.box<int?> (null) != null)
+                       return 2;
+               long l = Int64.MaxValue - 1;
+               o = c.box<long?> (l);
+               if ((long)o != l)
+                       return 3;
+               if (c.box<long?> (null) != null)
+                       return 4;
+               string s = "A";
+               if (c.box<string> (s) != (object)s)
+                       return 5;
+               return 0;
+       }
+
+       interface IFaceUnbox2 {
+               T unbox<T> (object o);
+       }
+
+       class ClassUnbox2 : IFaceUnbox2 {
+               public T unbox<T> (object o) {
+                       return (T)o;
+               }
+       }
+
+       public static int test_0_nullable_unbox () {    
+               IFaceUnbox2 c = new ClassUnbox2 ();
+               int? i = c.unbox<int?> (5);
+               if (i != 5)
+                       return 1;
+               int? j = c.unbox<int?> (null);
+               if (j != null)
+                       return 2;
+               return 0;
+       }
+
+       interface IConstrained {
+               void foo ();
+               void foo_ref_arg (string s);
+       }
+
+       static object constrained_res;
+
+       struct ConsStruct : IConstrained {
+               public int i;
+
+               public void foo () {
+                       constrained_res = i;
+               }
+
+               public void foo_ref_arg (string s) {
+                       constrained_res = s == "A" ? 42 : 0;
+               }
+       }
+
+       class ConsClass : IConstrained {
+               public int i;
+
+               public void foo () {
+                       constrained_res = i;
+               }
+
+               public void foo_ref_arg (string s) {
+                       constrained_res = s == "A" ? 43 : 0;
+               }
+       }
+
+       interface IFaceConstrained {
+               void constrained_void_iface_call<T, T2>(T t, T2 t2) where T2 : IConstrained;
+               void constrained_void_iface_call_ref_arg<T, T2>(T t, T2 t2) where T2 : IConstrained;
+       }
+
+       class ClassConstrained : IFaceConstrained {
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public void constrained_void_iface_call<T, T2>(T t, T2 t2) where T2 : IConstrained {
+                       t2.foo ();
+               }
+
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public void constrained_void_iface_call_ref_arg<T, T2>(T t, T2 t2) where T2 : IConstrained {
+                       t2.foo_ref_arg ("A");
+               }
+       }
+
+       public static int test_0_constrained_void_iface_call () {
+               IFaceConstrained c = new ClassConstrained ();
+               var s = new ConsStruct () { i = 42 };
+               constrained_res = null;
+               c.constrained_void_iface_call<int, ConsStruct> (1, s);
+               if (!(constrained_res is int) || ((int)constrained_res) != 42)
+                       return 1;
+               constrained_res = null;
+               c.constrained_void_iface_call_ref_arg<int, ConsStruct> (1, s);
+               if (!(constrained_res is int) || ((int)constrained_res) != 42)
+                       return 2;
+               var s2 = new ConsClass () { i = 43 };
+               constrained_res = null;
+               c.constrained_void_iface_call<int, ConsClass> (1, s2);
+               if (!(constrained_res is int) || ((int)constrained_res) != 43)
+                       return 3;
+               constrained_res = null;
+               c.constrained_void_iface_call_ref_arg<int, ConsClass> (1, s2);
+               if (!(constrained_res is int) || ((int)constrained_res) != 43)
+                       return 4;
+               return 0;
+       }
+
+       public static async Task<T> FooAsync<T> (int i, int j) {
+               Task<int> t = new Task<int> (delegate () { return 42; });
+               var response = await t;
+               return default(T);
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void call_async<T> (int i, int j) {
+               Task<T> t = FooAsync<T> (1, 2);
+               t.RunSynchronously ();
+       }
+
+       // In AOT mode, the async infrastructure depends on gsharedvt methods
+       public static int test_0_async_call_from_generic () {
+               call_async<string> (1, 2);
+               return 0;
+       }
+}
+
+#if !MOBILE
+public class GSharedTests : Tests {
 }
+#endif
index 0e884e0c8e79052ee3fab2c076757fc5a77aa603..d945a39b8f2e4e900c08968e3465ee390e17c6bb 100644 (file)
@@ -130,6 +130,9 @@ mono_blockset_print (MonoCompile *cfg, MonoBitSet *set, const char *name, guint
 void
 mono_disassemble_code (MonoCompile *cfg, guint8 *code, int size, char *id)
 {
+#if defined(__native_client__)
+       return;
+#endif
 #ifndef DISABLE_LOGGING
        GHashTable *offset_to_bb_hash = NULL;
        int i, cindex, bb_num;
index 84a6f7c1292ea4eaaf2176993d40b34dee15bfd0..75f582a3bf59846850130072c988124006423111 100644 (file)
@@ -44,13 +44,13 @@ alloc_lreg (MonoCompile *cfg)
 static inline guint32
 alloc_freg (MonoCompile *cfg)
 {
-#ifdef MONO_ARCH_SOFT_FLOAT
-       /* Allocate an lvreg so float ops can be decomposed into long ops */
-       return alloc_lreg (cfg);
-#else
-       /* Allocate these from the same pool as the int regs */
-       return cfg->next_vreg ++;
-#endif
+       if (mono_arch_is_soft_float ()) {
+               /* Allocate an lvreg so float ops can be decomposed into long ops */
+               return alloc_lreg (cfg);
+       } else {
+               /* Allocate these from the same pool as the int regs */
+               return cfg->next_vreg ++;
+       }
 }
 
 static inline guint32
@@ -261,7 +261,16 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
 
 #define NEW_TYPE_FROM_HANDLE_CONST(cfg,dest,image,token,generic_context) NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_TYPE_FROM_HANDLE, (image), (token), (generic_context), STACK_OBJ, mono_defaults.monotype_class)
 
-#define NEW_LDTOKENCONST(cfg,dest,image,token) NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), NULL, STACK_PTR, NULL)
+#define NEW_LDTOKENCONST(cfg,dest,image,token,generic_context) NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), (generic_context), STACK_PTR, NULL)
+
+#define NEW_TLS_OFFSETCONST(cfg,dest,key) do { \
+       if (cfg->compile_aot) { \
+               NEW_AOTCONST ((cfg), (dest), MONO_PATCH_INFO_TLS_OFFSET, GINT_TO_POINTER (key)); \
+       } else {                                                                                                                        \
+               int _offset = mini_get_tls_offset ((key));                                                      \
+               NEW_PCONST ((cfg), (dest), GINT_TO_POINTER (_offset)); \
+               } \
+       } while (0)
 
 #define NEW_DECLSECCONST(cfg,dest,image,entry) do { \
                if (cfg->compile_aot) { \
@@ -305,11 +314,21 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
         if ((dest)->opcode == OP_VMOVE) (dest)->klass = mono_class_from_mono_type ((vartype)); \
        } while (0)
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-#define DECOMPOSE_INTO_REGPAIR(stack_type) ((stack_type) == STACK_I8 || (stack_type) == STACK_R8)
-#else
-#define DECOMPOSE_INTO_REGPAIR(stack_type) ((stack_type) == STACK_I8)
-#endif
+#define DECOMPOSE_INTO_REGPAIR(stack_type) (mono_arch_is_soft_float () ? ((stack_type) == STACK_I8 || (stack_type) == STACK_R8) : ((stack_type) == STACK_I8))
+
+static inline void
+handle_gsharedvt_ldaddr (MonoCompile *cfg)
+{
+       /* The decomposition of ldaddr makes use of these two variables, so add uses for them */
+       MonoInst *use;
+
+       MONO_INST_NEW (cfg, use, OP_DUMMY_USE);
+       use->sreg1 = cfg->gsharedvt_info_var->dreg;
+       MONO_ADD_INS (cfg->cbb, use);
+       MONO_INST_NEW (cfg, use, OP_DUMMY_USE);
+       use->sreg1 = cfg->gsharedvt_locals_var->dreg;
+       MONO_ADD_INS (cfg->cbb, use);
+}
 
 #define NEW_VARLOADA(cfg,dest,var,vartype) do {        \
         MONO_INST_NEW ((cfg), (dest), OP_LDADDR); \
@@ -318,6 +337,7 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
                (dest)->type = STACK_MP;        \
                (dest)->klass = (var)->klass;   \
         (dest)->dreg = alloc_dreg ((cfg), STACK_MP); \
+                         if (G_UNLIKELY (cfg->gsharedvt) && mini_is_gsharedvt_variable_type ((cfg), (var)->inst_vtype)) { handle_gsharedvt_ldaddr ((cfg)); } \
                if (SIZEOF_REGISTER == 4 && DECOMPOSE_INTO_REGPAIR ((var)->type)) { MonoInst *var1 = get_vreg_to_inst (cfg, (var)->dreg + 1); MonoInst *var2 = get_vreg_to_inst (cfg, (var)->dreg + 2); g_assert (var1); g_assert (var2); var1->flags |= MONO_INST_INDIRECT; var2->flags |= MONO_INST_INDIRECT; } \
        } while (0)
 
@@ -426,7 +446,9 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
 
 #define EMIT_NEW_TYPE_FROM_HANDLE_CONST(cfg,dest,image,token,generic_context) do { NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_TYPE_FROM_HANDLE, (image), (token), (generic_context), STACK_OBJ, mono_defaults.monotype_class); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
 
-#define EMIT_NEW_LDTOKENCONST(cfg,dest,image,token) do { NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), NULL, STACK_PTR, NULL); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
+#define EMIT_NEW_LDTOKENCONST(cfg,dest,image,token,generic_context) do { NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), (generic_context), STACK_PTR, NULL); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
+
+#define EMIT_NEW_TLS_OFFSETCONST(cfg,dest,key) do { NEW_TLS_OFFSETCONST ((cfg), (dest), (key)); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
 
 #define EMIT_NEW_DOMAINCONST(cfg,dest) do { NEW_DOMAINCONST ((cfg), (dest)); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
 
@@ -442,7 +464,7 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
 
 #define EMIT_NEW_VARLOADA(cfg,dest,var,vartype) do { NEW_VARLOADA ((cfg), (dest), (var), (vartype)); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
 
-#ifdef MONO_ARCH_SOFT_FLOAT
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
 
 /*
  * Since the IL stack (and our vregs) contain double values, we have to do a conversion
@@ -450,33 +472,61 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
  */
 
 #define EMIT_NEW_VARLOAD_SFLOAT(cfg,dest,var,vartype) do { \
-               if (COMPILE_SOFT_FLOAT ((cfg)) && !(vartype)->byref && (vartype)->type == MONO_TYPE_R4) { \
-             MonoInst *iargs [1]; \
-             EMIT_NEW_VARLOADA (cfg, iargs [0], (var), (vartype)); \
-             (dest) = mono_emit_jit_icall (cfg, mono_fload_r4, iargs); \
-        } else { \
-             EMIT_NEW_VARLOAD ((cfg), (dest), (var), (vartype)); \
-        } \
-    } while (0)
+               if (!COMPILE_LLVM ((cfg)) && !(vartype)->byref && (vartype)->type == MONO_TYPE_R4) { \
+                       MonoInst *iargs [1]; \
+                       EMIT_NEW_VARLOADA (cfg, iargs [0], (var), (vartype)); \
+                       (dest) = mono_emit_jit_icall (cfg, mono_fload_r4, iargs); \
+               } else { \
+                       EMIT_NEW_VARLOAD ((cfg), (dest), (var), (vartype)); \
+               } \
+       } while (0)
 
 #define EMIT_NEW_VARSTORE_SFLOAT(cfg,dest,var,vartype,inst) do {       \
                if (COMPILE_SOFT_FLOAT ((cfg)) && !(vartype)->byref && (vartype)->type == MONO_TYPE_R4) { \
-             MonoInst *iargs [2]; \
-             iargs [0] = (inst); \
-             EMIT_NEW_VARLOADA (cfg, iargs [1], (var), (vartype)); \
-             mono_emit_jit_icall (cfg, mono_fstore_r4, iargs); \
-        } else { \
-             EMIT_NEW_VARSTORE ((cfg), (dest), (var), (vartype), (inst)); \
-        } \
-    } while (0)
+                       MonoInst *iargs [2]; \
+                       iargs [0] = (inst); \
+                       EMIT_NEW_VARLOADA (cfg, iargs [1], (var), (vartype)); \
+                       mono_emit_jit_icall (cfg, mono_fstore_r4, iargs); \
+               } else { \
+                       EMIT_NEW_VARSTORE ((cfg), (dest), (var), (vartype), (inst)); \
+               } \
+       } while (0)
 
-#define EMIT_NEW_ARGLOAD(cfg,dest,num) EMIT_NEW_VARLOAD_SFLOAT ((cfg), (dest), cfg->args [(num)], cfg->arg_types [(num)])
+#define EMIT_NEW_ARGLOAD(cfg,dest,num) do {    \
+               if (mono_arch_is_soft_float ()) {       \
+                       EMIT_NEW_VARLOAD_SFLOAT ((cfg), (dest), cfg->args [(num)], cfg->arg_types [(num)]);     \
+               } else {        \
+                       NEW_ARGLOAD ((cfg), (dest), (num));     \
+                       MONO_ADD_INS ((cfg)->cbb, (dest));      \
+               }       \
+       } while (0)
 
-#define EMIT_NEW_LOCLOAD(cfg,dest,num) EMIT_NEW_VARLOAD_SFLOAT ((cfg), (dest), cfg->locals [(num)], header->locals [(num)])
+#define EMIT_NEW_LOCLOAD(cfg,dest,num) do {    \
+               if (mono_arch_is_soft_float ()) {       \
+                       EMIT_NEW_VARLOAD_SFLOAT ((cfg), (dest), cfg->locals [(num)], header->locals [(num)]);   \
+               } else {        \
+                       NEW_LOCLOAD ((cfg), (dest), (num));     \
+                       MONO_ADD_INS ((cfg)->cbb, (dest));      \
+               }       \
+       } while (0)
 
-#define EMIT_NEW_LOCSTORE(cfg,dest,num,inst) EMIT_NEW_VARSTORE_SFLOAT ((cfg), (dest), (cfg)->locals [(num)], (cfg)->locals [(num)]->inst_vtype, (inst))
+#define EMIT_NEW_LOCSTORE(cfg,dest,num,inst) do {      \
+               if (mono_arch_is_soft_float ()) {       \
+                       EMIT_NEW_VARSTORE_SFLOAT ((cfg), (dest), (cfg)->locals [(num)], (cfg)->locals [(num)]->inst_vtype, (inst));     \
+               } else {        \
+                       NEW_LOCSTORE ((cfg), (dest), (num), (inst));    \
+                       MONO_ADD_INS ((cfg)->cbb, (dest));      \
+               }       \
+       } while (0)
 
-#define EMIT_NEW_ARGSTORE(cfg,dest,num,inst) EMIT_NEW_VARSTORE_SFLOAT ((cfg), (dest), cfg->args [(num)], cfg->arg_types [(num)], (inst))
+#define EMIT_NEW_ARGSTORE(cfg,dest,num,inst) do {      \
+               if (mono_arch_is_soft_float ()) {       \
+                       EMIT_NEW_VARSTORE_SFLOAT ((cfg), (dest), cfg->args [(num)], cfg->arg_types [(num)], (inst));    \
+               } else {        \
+                       NEW_ARGSTORE ((cfg), (dest), (num), (inst));    \
+                       MONO_ADD_INS ((cfg)->cbb, (dest));      \
+               }       \
+       } while (0)
 
 #else
 
index 0b1f2e2662949ab62a45cb485ffedbbdadff0e1b..ef75b39730e9aba2ac20736d042e9ace82325f3d 100644 (file)
@@ -429,7 +429,7 @@ mono_imul_ovf_un (guint32 a, guint32 b)
 }
 #endif
 
-#if defined(MONO_ARCH_EMULATE_MUL_DIV) || defined(MONO_ARCH_SOFT_FLOAT)
+#if defined(MONO_ARCH_EMULATE_MUL_DIV) || defined(MONO_ARCH_SOFT_FLOAT_FALLBACK)
 double
 mono_fdiv (double a, double b)
 {
@@ -439,7 +439,7 @@ mono_fdiv (double a, double b)
 }
 #endif
 
-#ifdef MONO_ARCH_SOFT_FLOAT
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
 
 double
 mono_fsub (double a, double b)
@@ -915,7 +915,7 @@ mono_fconv_ovf_u8 (double v)
  * 
  * To work around this issue we test for value boundaries instead. 
  */
-#if defined(__arm__) && MONO_ARCH_SOFT_FLOAT 
+#if defined(__arm__) && defined(MONO_ARCH_SOFT_FLOAT_FALLBACK)
        if (isnan (v) || !(v >= -0.5 && v <= ULLONG_MAX+0.5)) {
                mono_raise_exception (mono_get_exception_overflow ());
        }
@@ -1154,22 +1154,49 @@ mono_get_native_calli_wrapper (MonoImage *image, MonoMethodSignature *sig, gpoin
        return mono_compile_method (m);
 }
 
-MonoObject*
-mono_object_tostring_gsharedvt (gpointer mp, MonoMethod *cmethod, MonoClass *klass)
+static MonoMethod*
+constrained_gsharedvt_call_setup (gpointer mp, MonoMethod *cmethod, MonoClass *klass, gpointer *this_arg)
 {
        MonoMethod *m;
        int vt_slot;
-       gpointer this_arg;
 
        /* Lookup the virtual method */
        mono_class_setup_vtable (klass);
        g_assert (klass->vtable);
        vt_slot = mono_method_get_vtable_slot (cmethod);
+       if (cmethod->klass->flags & TYPE_ATTRIBUTE_INTERFACE) {
+               int iface_offset;
+
+               iface_offset = mono_class_interface_offset (klass, cmethod->klass);
+               g_assert (iface_offset);
+               vt_slot += iface_offset;
+       }
        m = klass->vtable [vt_slot];
-       if (klass->valuetype)
-               this_arg = mp;
+       if (klass->valuetype && (m->klass == mono_defaults.object_class || m->klass == mono_defaults.enum_class->parent || m->klass == mono_defaults.enum_class))
+               /*
+                * Calling a non-vtype method with a vtype receiver, has to box.
+                */
+               *this_arg = mono_value_box (mono_domain_get (), klass, mp);
+       else if (klass->valuetype)
+               /*
+                * Calling a vtype method with a vtype receiver
+                */
+               *this_arg = mp;
        else
-               this_arg = *(gpointer*)mp;
+               /*
+                * Calling a non-vtype method
+                */
+               *this_arg = *(gpointer*)mp;
+       return m;
+}
+
+MonoObject*
+mono_object_tostring_gsharedvt (gpointer mp, MonoMethod *cmethod, MonoClass *klass)
+{
+       MonoMethod *m;
+       gpointer this_arg;
+
+       m = constrained_gsharedvt_call_setup (mp, cmethod, klass, &this_arg);
        return mono_runtime_invoke (m, this_arg, NULL, NULL);
 }
 
@@ -1177,23 +1204,55 @@ int
 mono_object_gethashcode_gsharedvt (gpointer mp, MonoMethod *cmethod, MonoClass *klass)
 {
        MonoMethod *m;
-       int vt_slot;
        gpointer this_arg;
        MonoObject *res;
        gpointer p;
 
-       /* Lookup the virtual method */
-       mono_class_setup_vtable (klass);
-       g_assert (klass->vtable);
-       vt_slot = mono_method_get_vtable_slot (cmethod);
-       m = klass->vtable [vt_slot];
-       if (klass->valuetype)
-               this_arg = mp;
-       else
-               this_arg = *(gpointer*)mp;
+       m = constrained_gsharedvt_call_setup (mp, cmethod, klass, &this_arg);
        // FIXME: This boxes the result
        res = mono_runtime_invoke (m, this_arg, NULL, NULL);
        p = mono_object_unbox (res);
        return *(int*)p;
 }
 
+MonoBoolean
+mono_object_equals_gsharedvt (gpointer mp, MonoMethod *cmethod, MonoClass *klass, MonoObject *arg)
+{
+       MonoMethod *m;
+       gpointer this_arg;
+       MonoObject *res;
+       gpointer p;
+       void **args;
+
+       m = constrained_gsharedvt_call_setup (mp, cmethod, klass, &this_arg);
+       // FIXME: This boxes the result
+       args = (void**)&arg;
+       res = mono_runtime_invoke (m, this_arg, args, NULL);
+       p = mono_object_unbox (res);
+       return *(MonoBoolean*)p;
+}
+
+/*
+ * mono_gsharedvt_constrained_call:
+ *
+ *   Make a call to CMETHOD using the receiver MP, which is assumed to be of type KLASS. ARGS contains
+ * the arguments to the method in the format used by mono_runtime_invoke ().
+ */
+void
+mono_gsharedvt_constrained_call (gpointer mp, MonoMethod *cmethod, MonoClass *klass, gpointer *args)
+{
+       MonoMethod *m;
+       gpointer this_arg;
+
+       m = constrained_gsharedvt_call_setup (mp, cmethod, klass, &this_arg);
+       mono_runtime_invoke (m, this_arg, args, NULL);
+}
+
+void
+mono_gsharedvt_value_copy (gpointer dest, gpointer src, MonoClass *klass)
+{
+       if (klass->valuetype)
+               mono_value_copy (dest, src, klass);
+       else
+        mono_gc_wbarrier_generic_store (dest, *(MonoObject**)src);
+}
index 04e6d44f9c24839ff755b9f2c6ee2db46419b640..50509fcef2708fe8710b9ff52833218117ffa452 100644 (file)
@@ -179,5 +179,11 @@ MonoObject* mono_object_tostring_gsharedvt (gpointer mp, MonoMethod *cmethod, Mo
 
 int mono_object_gethashcode_gsharedvt (gpointer mp, MonoMethod *cmethod, MonoClass *klass) MONO_INTERNAL;
 
+MonoBoolean mono_object_equals_gsharedvt (gpointer mp, MonoMethod *cmethod, MonoClass *klass, MonoObject *arg) MONO_INTERNAL;
+
+void mono_gsharedvt_constrained_call (gpointer mp, MonoMethod *cmethod, MonoClass *klass, gpointer *args) MONO_INTERNAL;
+
+void mono_gsharedvt_value_copy (gpointer dest, gpointer src, MonoClass *klass) MONO_INTERNAL;
+
 #endif /* __MONO_JIT_ICALLS_H__ */
 
index c1d5cc45e8c886c93f4fea9735ef074cb92ffef5..dd2e8ea9083c889a5449f0d22ee26812f4d814cc 100644 (file)
@@ -5,6 +5,9 @@ VER_1 {
               GC_start_blocking;
               GC_end_blocking;
               gc_thread_vtable;
+              __nacl_suspend_thread_if_needed;
+              __nacl_thread_suspension_needed;
+              nacl_mono_path;
       local:
               *;
 };
diff --git a/mono/mini/main-sgen.c b/mono/mini/main-sgen.c
new file mode 100644 (file)
index 0000000..8c7190e
--- /dev/null
@@ -0,0 +1,5 @@
+
+#include "buildver-sgen.h"
+#define BUILDVER_INCLUDED
+
+#include "main.c"
index 808dda0c2fa3cc7811cb561cce25921abc1d1ed6..dc7c826443295b371c89f275608d4d0d46a88a89 100644 (file)
@@ -1,10 +1,8 @@
 #include <config.h>
 #include "mini.h"
 #ifndef HOST_WIN32
-#ifdef HAVE_SGEN_GC
-#include "buildver-sgen.h"
-#else
-#include "buildver.h"
+#ifndef BUILDVER_INCLUDED
+#include "buildver-boehm.h"
 #endif
 #endif
 
index 442017d4b56b35ad1dc6aa5b19718b43d1a4bd02..585a995b4910a99da260a10857efb77d48a235d4 100644 (file)
@@ -157,7 +157,7 @@ static MonoMethodSignature *helper_sig_monitor_enter_exit_trampoline_llvm = NULL
 #define FREG 'f'
 #define VREG 'v'
 #define XREG 'x'
-#if SIZEOF_REGISTER == 8
+#if SIZEOF_REGISTER == 8 && SIZEOF_REGISTER == SIZEOF_VOID_P
 #define LREG IREG
 #else
 #define LREG 'l'
@@ -1868,6 +1868,82 @@ mini_emit_memcpy (MonoCompile *cfg, int destreg, int doffset, int srcreg, int so
        }
 }
 
+/*
+ * emit_push_lmf:
+ *
+ *   Emit IR to push the current LMF onto the LMF stack.
+ */
+static void
+emit_push_lmf (MonoCompile *cfg)
+{
+#if defined(MONO_ARCH_ENABLE_LMF_IR)
+       /*
+        * Emit IR to push the LMF:
+        * lmf_addr = <lmf_addr from tls>
+        * lmf->lmf_addr = lmf_addr
+        * lmf->prev_lmf = *lmf_addr
+        * *lmf_addr = lmf
+        */
+       int lmf_reg, lmf_addr_reg, prev_lmf_reg;
+       MonoInst *ins, *lmf_ins;
+
+       if (!mono_arch_enable_lmf_ir (cfg))
+               return;
+
+       lmf_ins = mono_get_lmf_addr_intrinsic (cfg);
+       if (lmf_ins)
+               MONO_ADD_INS (cfg->cbb, lmf_ins);
+       else
+               lmf_ins = mono_emit_jit_icall (cfg, mono_get_lmf_addr, NULL);
+       lmf_addr_reg = lmf_ins->dreg;
+
+       EMIT_NEW_VARLOADA (cfg, ins, cfg->lmf_var, NULL);
+       lmf_reg = ins->dreg;
+       /* Save lmf_addr */
+       if (!cfg->lmf_addr_var)
+               cfg->lmf_addr_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
+       EMIT_NEW_UNALU (cfg, ins, OP_MOVE, cfg->lmf_addr_var->dreg, lmf_ins->dreg);
+       prev_lmf_reg = alloc_preg (cfg);
+       /* Save previous_lmf */
+       EMIT_NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, prev_lmf_reg, lmf_addr_reg, 0);
+       EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, lmf_reg, G_STRUCT_OFFSET (MonoLMF, previous_lmf), prev_lmf_reg);
+       /* Set new lmf */
+       EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, lmf_addr_reg, 0, lmf_reg);
+#endif
+}
+
+/*
+ * emit_push_lmf:
+ *
+ *   Emit IR to pop the current LMF from the LMF stack.
+ */
+static void
+emit_pop_lmf (MonoCompile *cfg)
+{
+#if defined(MONO_ARCH_ENABLE_LMF_IR)
+       int lmf_reg, lmf_addr_reg, prev_lmf_reg;
+       MonoInst *ins;
+
+       if (!mono_arch_enable_lmf_ir (cfg))
+               return;
+
+       /*
+        * Emit IR to pop the LMF:
+        * *(lmf->lmf_addr) = lmf->prev_lmf
+        */
+       cfg->cbb = cfg->bb_exit;
+       EMIT_NEW_VARLOADA (cfg, ins, cfg->lmf_var, NULL);
+       lmf_reg = ins->dreg;
+       /* This could be called before emit_push_lmf () */
+       if (!cfg->lmf_addr_var)
+               cfg->lmf_addr_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
+       lmf_addr_reg = cfg->lmf_addr_var->dreg;
+       prev_lmf_reg = alloc_preg (cfg);
+       EMIT_NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, prev_lmf_reg, lmf_reg, G_STRUCT_OFFSET (MonoLMF, previous_lmf));
+       EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, lmf_addr_reg, 0, prev_lmf_reg);
+#endif
+}
+
 static int
 ret_type_to_call_opcode (MonoType *type, int calli, int virt, MonoGenericSharingContext *gsctx)
 {
@@ -1916,6 +1992,10 @@ handle_enum:
        case MONO_TYPE_GENERICINST:
                type = &type->data.generic_class->container_class->byval_arg;
                goto handle_enum;
+       case MONO_TYPE_VAR:
+       case MONO_TYPE_MVAR:
+               /* gsharedvt */
+               return calli? OP_VCALL_REG: virt? OP_VCALLVIRT: OP_VCALL;
        default:
                g_error ("unknown type 0x%02x in ret_type_to_call_opcode", type->type);
        }
@@ -2126,7 +2206,12 @@ handle_enum:
                case MONO_TYPE_GENERICINST:
                        simple_type = &simple_type->data.generic_class->container_class->byval_arg;
                        goto handle_enum;
-
+               case MONO_TYPE_VAR:
+               case MONO_TYPE_MVAR:
+                       /* gsharedvt */
+                       if (args [i]->type != STACK_VTYPE)
+                               return 1;
+                       continue;
                default:
                        g_error ("unknown type 0x%02x in check_call_signature",
                                 simple_type->type);
@@ -2263,12 +2348,72 @@ mini_method_check_context_used (MonoCompile *cfg, MonoMethod *method)
                return 0;
 }
 
+/*
+ * check_method_sharing:
+ *
+ *   Check whenever the vtable or an mrgctx needs to be passed when calling CMETHOD.
+ */
+static void
+check_method_sharing (MonoCompile *cfg, MonoMethod *cmethod, gboolean *out_pass_vtable, gboolean *out_pass_mrgctx)
+{
+       gboolean pass_vtable = FALSE;
+       gboolean pass_mrgctx = FALSE;
+
+       if (((cmethod->flags & METHOD_ATTRIBUTE_STATIC) || cmethod->klass->valuetype) &&
+               (cmethod->klass->generic_class || cmethod->klass->generic_container)) {
+               gboolean sharable = FALSE;
+
+               if (mono_method_is_generic_sharable (cmethod, TRUE)) {
+                       sharable = TRUE;
+               } else {
+                       gboolean sharing_enabled = mono_class_generic_sharing_enabled (cmethod->klass);
+                       MonoGenericContext *context = mini_class_get_context (cmethod->klass);
+                       gboolean context_sharable = mono_generic_context_is_sharable (context, TRUE);
+
+                       sharable = sharing_enabled && context_sharable;
+               }
+
+               /*
+                * Pass vtable iff target method might
+                * be shared, which means that sharing
+                * is enabled for its class and its
+                * context is sharable (and it's not a
+                * generic method).
+                */
+               if (sharable && !(mini_method_get_context (cmethod) && mini_method_get_context (cmethod)->method_inst))
+                       pass_vtable = TRUE;
+       }
+
+       if (mini_method_get_context (cmethod) &&
+               mini_method_get_context (cmethod)->method_inst) {
+               g_assert (!pass_vtable);
+
+               if (mono_method_is_generic_sharable (cmethod, TRUE)) {
+                       pass_mrgctx = TRUE;
+               } else {
+                       gboolean sharing_enabled = mono_class_generic_sharing_enabled (cmethod->klass);
+                       MonoGenericContext *context = mini_method_get_context (cmethod);
+                       gboolean context_sharable = mono_generic_context_is_sharable (context, TRUE);
+
+                       if (sharing_enabled && context_sharable)
+                               pass_mrgctx = TRUE;
+                       if (cfg->gsharedvt && mini_is_gsharedvt_signature (cfg, mono_method_signature (cmethod)))
+                               pass_mrgctx = TRUE;
+               }
+       }
+
+       if (out_pass_vtable)
+               *out_pass_vtable = pass_vtable;
+       if (out_pass_mrgctx)
+               *out_pass_mrgctx = pass_mrgctx;
+}
+
 inline static MonoCallInst *
 mono_emit_call_args (MonoCompile *cfg, MonoMethodSignature *sig, 
                                         MonoInst **args, int calli, int virtual, int tail, int rgctx, int unbox_trampoline)
 {
        MonoCallInst *call;
-#ifdef MONO_ARCH_SOFT_FLOAT
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
        int i;
 #endif
 
@@ -2315,7 +2460,7 @@ mono_emit_call_args (MonoCompile *cfg, MonoMethodSignature *sig,
        } else if (!MONO_TYPE_IS_VOID (sig->ret))
                call->inst.dreg = alloc_dreg (cfg, call->inst.type);
 
-#ifdef MONO_ARCH_SOFT_FLOAT
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
        if (COMPILE_SOFT_FLOAT (cfg)) {
                /* 
                 * If the call has a float argument, we would need to do an r8->r4 conversion using 
@@ -2404,16 +2549,21 @@ mono_emit_calli (MonoCompile *cfg, MonoMethodSignature *sig, MonoInst **args, Mo
        return (MonoInst*)call;
 }
 
+static MonoInst*
+emit_get_gsharedvt_info_klass (MonoCompile *cfg, MonoClass *klass, MonoRgctxInfoType rgctx_type);
+
 static MonoInst*
 emit_get_rgctx_method (MonoCompile *cfg, int context_used, MonoMethod *cmethod, MonoRgctxInfoType rgctx_type);
 static MonoInst*
 emit_get_rgctx_klass (MonoCompile *cfg, int context_used, MonoClass *klass, MonoRgctxInfoType rgctx_type);
 
 static MonoInst*
-mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSignature *sig,
+mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSignature *sig, gboolean tail,
                                                        MonoInst **args, MonoInst *this, MonoInst *imt_arg, MonoInst *rgctx_arg)
 {
+#ifndef DISABLE_REMOTING
        gboolean might_be_remote = FALSE;
+#endif
        gboolean virtual = this != NULL;
        gboolean enable_for_aot = TRUE;
        int context_used;
@@ -2421,6 +2571,9 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
        int rgctx_reg = 0;
        gboolean need_unbox_trampoline;
 
+       if (!sig)
+               sig = mono_method_signature (method);
+
        if (rgctx_arg) {
                rgctx_reg = mono_alloc_preg (cfg);
                MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, rgctx_reg, rgctx_arg->dreg);
@@ -2455,7 +2608,7 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
 
        need_unbox_trampoline = method->klass == mono_defaults.object_class || (method->klass->flags & TYPE_ATTRIBUTE_INTERFACE);
 
-       call = mono_emit_call_args (cfg, sig, args, FALSE, virtual, FALSE, rgctx_arg ? TRUE : FALSE, need_unbox_trampoline);
+       call = mono_emit_call_args (cfg, sig, args, FALSE, virtual, tail, rgctx_arg ? TRUE : FALSE, need_unbox_trampoline);
 
 #ifndef DISABLE_REMOTING
        if (might_be_remote)
@@ -2465,14 +2618,15 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
                call->method = method;
        call->inst.flags |= MONO_INST_HAS_METHOD;
        call->inst.inst_left = this;
+       call->tail_call = tail;
 
        if (virtual) {
                int vtable_reg, slot_reg, this_reg;
+               int offset;
 
                this_reg = this->dreg;
 
-#ifdef MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE
-               if ((method->klass->parent == mono_defaults.multicastdelegate_class) && (!strcmp (method->name, "Invoke"))) {
+               if (ARCH_HAVE_DELEGATE_TRAMPOLINES && (method->klass->parent == mono_defaults.multicastdelegate_class) && !strcmp (method->name, "Invoke")) {
                        MonoInst *dummy_use;
 
                        MONO_EMIT_NULL_CHECK (cfg, this_reg);
@@ -2499,7 +2653,6 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
 
                        return (MonoInst*)call;
                }
-#endif
 
                if ((!cfg->compile_aot || enable_for_aot) && 
                        (!(method->flags & METHOD_ATTRIBUTE_VIRTUAL) || 
@@ -2545,17 +2698,17 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
                                        guint32 imt_slot = mono_method_get_imt_slot (method);
                                        emit_imt_argument (cfg, call, call->method, imt_arg);
                                        slot_reg = vtable_reg;
-                                       call->inst.inst_offset = ((gint32)imt_slot - MONO_IMT_SIZE) * SIZEOF_VOID_P;
+                                       offset = ((gint32)imt_slot - MONO_IMT_SIZE) * SIZEOF_VOID_P;
                                }
 #endif
                                if (slot_reg == -1) {
                                        slot_reg = alloc_preg (cfg);
                                        mini_emit_load_intf_reg_vtable (cfg, slot_reg, vtable_reg, method->klass);
-                                       call->inst.inst_offset = mono_method_get_vtable_index (method) * SIZEOF_VOID_P;
+                                       offset = mono_method_get_vtable_index (method) * SIZEOF_VOID_P;
                                }
                        } else {
                                slot_reg = vtable_reg;
-                               call->inst.inst_offset = G_STRUCT_OFFSET (MonoVTable, vtable) +
+                               offset = G_STRUCT_OFFSET (MonoVTable, vtable) +
                                        ((mono_method_get_vtable_index (method)) * (SIZEOF_VOID_P));
 #ifdef MONO_ARCH_HAVE_IMT
                                if (imt_arg) {
@@ -2566,6 +2719,7 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
                        }
 
                        call->inst.sreg1 = slot_reg;
+                       call->inst.inst_offset = offset;
                        call->virtual = TRUE;
                }
        }
@@ -2581,7 +2735,7 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
 MonoInst*
 mono_emit_method_call (MonoCompile *cfg, MonoMethod *method, MonoInst **args, MonoInst *this)
 {
-       return mono_emit_method_call_full (cfg, method, mono_method_signature (method), args, this, NULL, NULL);
+       return mono_emit_method_call_full (cfg, method, mono_method_signature (method), FALSE, args, this, NULL, NULL);
 }
 
 MonoInst*
@@ -2712,7 +2866,7 @@ create_write_barrier_bitmap (MonoCompile *cfg, MonoClass *klass, unsigned *wb_bi
 }
 
 static void
-emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, MonoInst *value, int value_reg)
+emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, MonoInst *value)
 {
        int card_table_shift_bits;
        gpointer card_table_mask;
@@ -2738,10 +2892,7 @@ emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, MonoInst *value, int value_
 
                MONO_INST_NEW (cfg, wbarrier, OP_CARD_TABLE_WBARRIER);
                wbarrier->sreg1 = ptr->dreg;
-               if (value)
-                       wbarrier->sreg2 = value->dreg;
-               else
-                       wbarrier->sreg2 = value_reg;
+               wbarrier->sreg2 = value->dreg;
                MONO_ADD_INS (cfg->cbb, wbarrier);
        } else if (card_table) {
                int offset_reg = alloc_preg (cfg);
@@ -2771,13 +2922,7 @@ emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, MonoInst *value, int value_
                mono_emit_method_call (cfg, write_barrier, &ptr, NULL);
        }
 
-       if (value) {
-               EMIT_NEW_DUMMY_USE (cfg, dummy_use, value);
-       } else {
-               MONO_INST_NEW (cfg, dummy_use, OP_DUMMY_USE);
-               dummy_use->sreg1 = value_reg;
-               MONO_ADD_INS (cfg->cbb, dummy_use);
-       }
+       EMIT_NEW_DUMMY_USE (cfg, dummy_use, value);
 }
 
 static gboolean
@@ -2822,11 +2967,17 @@ mono_emit_wb_aware_memcpy (MonoCompile *cfg, MonoClass *klass, MonoInst *iargs[4
        EMIT_NEW_UNALU (cfg, iargs [0], OP_MOVE, dest_ptr_reg, destreg);
 
        while (size >= SIZEOF_VOID_P) {
-               MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOAD_MEMBASE, tmp_reg, srcreg, offset);
+               MonoInst *load_inst;
+               MONO_INST_NEW (cfg, load_inst, OP_LOAD_MEMBASE);
+               load_inst->dreg = tmp_reg;
+               load_inst->inst_basereg = srcreg;
+               load_inst->inst_offset = offset;
+               MONO_ADD_INS (cfg->cbb, load_inst);
+
                MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STOREP_MEMBASE_REG, dest_ptr_reg, 0, tmp_reg);
 
                if (need_wb & 0x1)
-                       emit_write_barrier (cfg, iargs [0], NULL, tmp_reg);
+                       emit_write_barrier (cfg, iargs [0], load_inst);
 
                offset += SIZEOF_VOID_P;
                size -= SIZEOF_VOID_P;
@@ -2876,6 +3027,7 @@ mini_emit_stobj (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoClass *kla
        guint32 align = 0;
        MonoMethod *memcpy_method;
        MonoInst *size_ins = NULL;
+       MonoInst *memcpy_ins = NULL;
 
        g_assert (klass);
        /*
@@ -2886,7 +3038,8 @@ mini_emit_stobj (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoClass *kla
        if (mini_is_gsharedvt_klass (cfg, klass)) {
                g_assert (!native);
                context_used = mini_class_check_context_used (cfg, klass);
-               size_ins = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_VALUE_SIZE);
+               size_ins = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_VALUE_SIZE);
+               memcpy_ins = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_MEMCPY);
        }
 
        if (native)
@@ -2895,7 +3048,7 @@ mini_emit_stobj (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoClass *kla
                n = mono_class_value_size (klass, &align);
 
        /* if native is true there should be no references in the struct */
-       if (cfg->gen_write_barriers && klass->has_references && !native) {
+       if (cfg->gen_write_barriers && (klass->has_references || size_ins) && !native) {
                /* Avoid barriers when storing to the stack */
                if (!((dest->opcode == OP_ADD_IMM && dest->sreg1 == cfg->frame_reg) ||
                          (dest->opcode == OP_LDADDR))) {
@@ -2920,7 +3073,10 @@ mini_emit_stobj (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoClass *kla
                                }
                        }
 
-                       mono_emit_jit_icall (cfg, mono_value_copy, iargs);
+                       if (size_ins)
+                               mono_emit_jit_icall (cfg, mono_gsharedvt_value_copy, iargs);
+                       else
+                               mono_emit_jit_icall (cfg, mono_value_copy, iargs);
                        return;
                }
        }
@@ -2937,7 +3093,10 @@ mini_emit_stobj (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoClass *kla
                        EMIT_NEW_ICONST (cfg, iargs [2], n);
                
                memcpy_method = get_memcpy_method ();
-               mono_emit_method_call (cfg, memcpy_method, iargs, NULL);
+               if (memcpy_ins)
+                       mono_emit_calli (cfg, mono_method_signature (memcpy_method), iargs, memcpy_ins, NULL, NULL);
+               else
+                       mono_emit_method_call (cfg, memcpy_method, iargs, NULL);
        }
 }
 
@@ -2961,29 +3120,35 @@ mini_emit_initobj (MonoCompile *cfg, MonoInst *dest, const guchar *ip, MonoClass
        guint32 align;
        MonoMethod *memset_method;
        MonoInst *size_ins = NULL;
+       MonoInst *bzero_ins = NULL;
+       static MonoMethod *bzero_method;
 
        /* FIXME: Optimize this for the case when dest is an LDADDR */
 
        mono_class_init (klass);
        if (mini_is_gsharedvt_klass (cfg, klass)) {
                context_used = mini_class_check_context_used (cfg, klass);
-               size_ins = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_VALUE_SIZE);
-               n = -1;
-       } else {
-               n = mono_class_value_size (klass, &align);
+               size_ins = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_VALUE_SIZE);
+               bzero_ins = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_BZERO);
+               if (!bzero_method)
+                       bzero_method = mono_class_get_method_from_name (mono_defaults.string_class, "bzero_aligned_1", 2);
+               g_assert (bzero_method);
+               iargs [0] = dest;
+               iargs [1] = size_ins;
+               mono_emit_calli (cfg, mono_method_signature (bzero_method), iargs, bzero_ins, NULL, NULL);
+               return;
        }
 
-       if (!size_ins && n <= sizeof (gpointer) * 5) {
+       n = mono_class_value_size (klass, &align);
+
+       if (n <= sizeof (gpointer) * 5) {
                mini_emit_memset (cfg, dest->dreg, 0, n, 0, align);
        }
        else {
                memset_method = get_memset_method ();
                iargs [0] = dest;
                EMIT_NEW_ICONST (cfg, iargs [1], 0);
-               if (size_ins)
-                       iargs [2] = size_ins;
-               else
-                       EMIT_NEW_ICONST (cfg, iargs [2], n);
+               EMIT_NEW_ICONST (cfg, iargs [2], n);
                mono_emit_method_call (cfg, memset_method, iargs, NULL);
        }
 }
@@ -3096,6 +3261,20 @@ emit_get_rgctx_gsharedvt_call (MonoCompile *cfg, int context_used,
        return emit_rgctx_fetch (cfg, rgctx, entry);
 }
 
+
+static MonoInst*
+emit_get_rgctx_gsharedvt_method (MonoCompile *cfg, int context_used,
+                                                                MonoMethod *cmethod, MonoGSharedVtMethodInfo *info)
+{
+       MonoJumpInfoRgctxEntry *entry;
+       MonoInst *rgctx;
+
+       entry = mono_patch_info_rgctx_entry_new (cfg->mempool, cfg->current_method, context_used & MONO_GENERIC_CONTEXT_USED_METHOD, MONO_PATCH_INFO_GSHAREDVT_METHOD, info, MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO);
+       rgctx = emit_get_rgctx (cfg, cfg->current_method, context_used);
+
+       return emit_rgctx_fetch (cfg, rgctx, entry);
+}
+
 /*
  * emit_get_rgctx_method:
  *
@@ -3137,6 +3316,58 @@ emit_get_rgctx_field (MonoCompile *cfg, int context_used,
        return emit_rgctx_fetch (cfg, rgctx, entry);
 }
 
+static int
+get_gsharedvt_info_slot (MonoCompile *cfg, gpointer data, MonoRgctxInfoType rgctx_type)
+{
+       MonoGSharedVtMethodInfo *info = cfg->gsharedvt_info;
+       MonoRuntimeGenericContextInfoTemplate *template;
+       int i, idx;
+
+       g_assert (info);
+
+       for (i = 0; i < info->entries->len; ++i) {
+               MonoRuntimeGenericContextInfoTemplate *otemplate = g_ptr_array_index (info->entries, i);
+
+               if (otemplate->info_type == rgctx_type && otemplate->data == data && rgctx_type != MONO_RGCTX_INFO_LOCAL_OFFSET)
+                       return i;
+       }
+
+       template = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoRuntimeGenericContextInfoTemplate));
+       template->info_type = rgctx_type;
+       template->data = data;
+
+       idx = info->entries->len;
+
+       g_ptr_array_add (info->entries, template);
+
+       return idx;
+}
+
+/*
+ * emit_get_gsharedvt_info:
+ *
+ *   This is similar to emit_get_rgctx_.., but loads the data from the gsharedvt info var instead of calling an rgctx fetch trampoline.
+ */
+static MonoInst*
+emit_get_gsharedvt_info (MonoCompile *cfg, gpointer data, MonoRgctxInfoType rgctx_type)
+{
+       MonoInst *ins;
+       int idx, dreg;
+
+       idx = get_gsharedvt_info_slot (cfg, data, rgctx_type);
+       /* Load info->entries [idx] */
+       dreg = alloc_preg (cfg);
+       EMIT_NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, dreg, cfg->gsharedvt_info_var->dreg, G_STRUCT_OFFSET (MonoGSharedVtMethodRuntimeInfo, entries) + (idx * sizeof (gpointer)));
+
+       return ins;
+}
+
+static MonoInst*
+emit_get_gsharedvt_info_klass (MonoCompile *cfg, MonoClass *klass, MonoRgctxInfoType rgctx_type)
+{
+       return emit_get_gsharedvt_info (cfg, &klass->byval_arg, rgctx_type);
+}
+
 /*
  * On return the caller must check @klass for load errors.
  */
@@ -3295,7 +3526,20 @@ handle_unbox_nullable (MonoCompile* cfg, MonoInst* val, MonoClass* klass, int co
 
                return mono_emit_calli (cfg, mono_method_signature (method), &val, addr, NULL, rgctx);
        } else {
-               return mono_emit_method_call (cfg, method, &val, NULL);
+               gboolean pass_vtable, pass_mrgctx;
+               MonoInst *rgctx_arg = NULL;
+
+               check_method_sharing (cfg, method, &pass_vtable, &pass_mrgctx);
+               g_assert (!pass_mrgctx);
+
+               if (pass_vtable) {
+                       MonoVTable *vtable = mono_class_vtable (cfg->domain, method->klass);
+
+                       g_assert (vtable);
+                       EMIT_NEW_VTABLECONST (cfg, rgctx_arg, vtable);
+               }
+
+               return mono_emit_method_call_full (cfg, method, NULL, FALSE, &val, NULL, NULL, rgctx_arg);
        }
 }
 
@@ -3348,6 +3592,89 @@ handle_unbox (MonoCompile *cfg, MonoClass *klass, MonoInst **sp, int context_use
        return add;
 }
 
+static MonoInst*
+handle_unbox_gsharedvt (MonoCompile *cfg, int context_used, MonoClass *klass, MonoInst *obj, MonoBasicBlock **out_cbb)
+{
+       MonoInst *addr, *klass_inst, *is_ref, *args[16];
+       MonoBasicBlock *is_ref_bb, *is_nullable_bb, *end_bb;
+       MonoInst *ins;
+       int dreg, addr_reg;
+
+       klass_inst = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_KLASS);
+
+       /* obj */
+       args [0] = obj;
+
+       /* klass */
+       args [1] = klass_inst;
+
+       /* CASTCLASS */
+       obj = mono_emit_jit_icall (cfg, mono_object_castclass, args);
+
+       NEW_BBLOCK (cfg, is_ref_bb);
+       NEW_BBLOCK (cfg, is_nullable_bb);
+       NEW_BBLOCK (cfg, end_bb);
+       is_ref = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_CLASS_BOX_TYPE);
+       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, 1);
+       MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_ref_bb);
+
+       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, 2);
+       MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_nullable_bb);
+
+       /* This will contain either the address of the unboxed vtype, or an address of the temporary where the ref is stored */
+       addr_reg = alloc_dreg (cfg, STACK_MP);
+
+       /* Non-ref case */
+       /* UNBOX */
+       NEW_BIALU_IMM (cfg, addr, OP_ADD_IMM, addr_reg, obj->dreg, sizeof (MonoObject));
+       MONO_ADD_INS (cfg->cbb, addr);
+
+       MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
+       /* Ref case */
+       MONO_START_BB (cfg, is_ref_bb);
+
+       /* Save the ref to a temporary */
+       dreg = alloc_ireg (cfg);
+       EMIT_NEW_VARLOADA_VREG (cfg, addr, dreg, &klass->byval_arg);
+       addr->dreg = addr_reg;
+       MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, addr->dreg, 0, obj->dreg);
+       MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
+       /* Nullable case */
+       MONO_START_BB (cfg, is_nullable_bb);
+
+       {
+               MonoInst *addr = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX);
+               MonoInst *unbox_call;
+               MonoMethodSignature *unbox_sig;
+               MonoInst *var;
+
+               var = mono_compile_create_var (cfg, &klass->byval_arg, OP_LOCAL);
+
+               unbox_sig = mono_mempool_alloc0 (cfg->mempool, MONO_SIZEOF_METHOD_SIGNATURE + (1 * sizeof (MonoType *)));
+               unbox_sig->ret = &klass->byval_arg;
+               unbox_sig->param_count = 1;
+               unbox_sig->params [0] = &mono_defaults.object_class->byval_arg;
+               unbox_call = mono_emit_calli (cfg, unbox_sig, &obj, addr, NULL, NULL);
+
+               EMIT_NEW_VARLOADA_VREG (cfg, addr, unbox_call->dreg, &klass->byval_arg);
+               addr->dreg = addr_reg;
+       }
+
+       MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
+       /* End */
+       MONO_START_BB (cfg, end_bb);
+
+       /* LDOBJ */
+       EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, ins, &klass->byval_arg, addr_reg, 0);
+
+       *out_cbb = cfg->cbb;
+
+       return ins;
+}
+
 /*
  * Returns NULL and set the cfg exception on error.
  */
@@ -3362,13 +3689,7 @@ handle_alloc (MonoCompile *cfg, MonoClass *klass, gboolean for_box, int context_
                int rgctx_info;
                MonoInst *iargs [2];
 
-               /*
-                 FIXME: we cannot get managed_alloc here because we can't get
-                 the class's vtable (because it's not a closed class)
-
-                 MonoVTable *vtable = mono_class_vtable (cfg->domain, klass);
-                 MonoMethod *managed_alloc = mono_gc_get_managed_allocator (vtable, for_box);
-               */
+               MonoMethod *managed_alloc = mono_gc_get_managed_allocator (klass, for_box);
 
                if (cfg->opt & MONO_OPT_SHARED)
                        rgctx_info = MONO_RGCTX_INFO_KLASS;
@@ -3385,6 +3706,9 @@ handle_alloc (MonoCompile *cfg, MonoClass *klass, gboolean for_box, int context_
                        alloc_ftn = mono_object_new_specific;
                }
 
+               if (managed_alloc && !(cfg->opt & MONO_OPT_SHARED))
+                       return mono_emit_method_call (cfg, managed_alloc, iargs, NULL);
+
                return mono_emit_jit_icall (cfg, alloc_ftn, iargs);
        }
 
@@ -3410,7 +3734,7 @@ handle_alloc (MonoCompile *cfg, MonoClass *klass, gboolean for_box, int context_
                }
 
 #ifndef MONO_CROSS_COMPILE
-               managed_alloc = mono_gc_get_managed_allocator (vtable, for_box);
+               managed_alloc = mono_gc_get_managed_allocator (klass, for_box);
 #endif
 
                if (managed_alloc) {
@@ -3436,10 +3760,12 @@ handle_alloc (MonoCompile *cfg, MonoClass *klass, gboolean for_box, int context_
  * Returns NULL and set the cfg exception on error.
  */    
 static MonoInst*
-handle_box (MonoCompile *cfg, MonoInst *val, MonoClass *klass, int context_used)
+handle_box (MonoCompile *cfg, MonoInst *val, MonoClass *klass, int context_used, MonoBasicBlock **out_cbb)
 {
        MonoInst *alloc, *ins;
 
+       *out_cbb = cfg->cbb;
+
        if (mono_class_is_nullable (klass)) {
                MonoMethod* method = mono_class_get_method_from_name (klass, "Box", 1);
 
@@ -3452,24 +3778,40 @@ handle_box (MonoCompile *cfg, MonoInst *val, MonoClass *klass, int context_used)
 
                        return mono_emit_calli (cfg, mono_method_signature (method), &val, addr, NULL, rgctx);
                } else {
-                       return mono_emit_method_call (cfg, method, &val, NULL);
+                       gboolean pass_vtable, pass_mrgctx;
+                       MonoInst *rgctx_arg = NULL;
+
+                       check_method_sharing (cfg, method, &pass_vtable, &pass_mrgctx);
+                       g_assert (!pass_mrgctx);
+
+                       if (pass_vtable) {
+                               MonoVTable *vtable = mono_class_vtable (cfg->domain, method->klass);
+
+                               g_assert (vtable);
+                               EMIT_NEW_VTABLECONST (cfg, rgctx_arg, vtable);
+                       }
+
+                       return mono_emit_method_call_full (cfg, method, NULL, FALSE, &val, NULL, NULL, rgctx_arg);
                }
        }
 
        if (mini_is_gsharedvt_klass (cfg, klass)) {
-               MonoBasicBlock *is_ref_bb, *end_bb;
+               MonoBasicBlock *is_ref_bb, *is_nullable_bb, *end_bb;
                MonoInst *res, *is_ref, *src_var, *addr;
                int addr_reg, dreg;
 
                dreg = alloc_ireg (cfg);
 
                NEW_BBLOCK (cfg, is_ref_bb);
+               NEW_BBLOCK (cfg, is_nullable_bb);
                NEW_BBLOCK (cfg, end_bb);
-               is_ref = emit_get_rgctx_klass (cfg, context_used, klass,
-                                                                          MONO_RGCTX_INFO_CLASS_IS_REF);
+               is_ref = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_CLASS_BOX_TYPE);
                MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, 1);
                MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_ref_bb);
 
+               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, 2);
+               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_nullable_bb);
+
                /* Non-ref case */
                alloc = handle_alloc (cfg, klass, TRUE, context_used);
                if (!alloc)
@@ -3494,8 +3836,35 @@ handle_box (MonoCompile *cfg, MonoInst *val, MonoClass *klass, int context_used)
                MONO_EMIT_NEW_LOAD_MEMBASE (cfg, dreg, addr->dreg, 0);
                MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
 
+               /* Nullable case */
+               MONO_START_BB (cfg, is_nullable_bb);
+
+               {
+                       MonoInst *addr = emit_get_gsharedvt_info_klass (cfg, klass,
+                                                                                                       MONO_RGCTX_INFO_NULLABLE_CLASS_BOX);
+                       MonoInst *box_call;
+                       MonoMethodSignature *box_sig;
+
+                       /*
+                        * klass is Nullable<T>, need to call Nullable<T>.Box () using a gsharedvt signature, but we cannot
+                        * construct that method at JIT time, so have to do things by hand.
+                        */
+                       box_sig = mono_mempool_alloc0 (cfg->mempool, MONO_SIZEOF_METHOD_SIGNATURE + (1 * sizeof (MonoType *)));
+                       box_sig->ret = &mono_defaults.object_class->byval_arg;
+                       box_sig->param_count = 1;
+                       box_sig->params [0] = &klass->byval_arg;
+                       box_call = mono_emit_calli (cfg, box_sig, &val, addr, NULL, NULL);
+                       EMIT_NEW_UNALU (cfg, res, OP_MOVE, dreg, box_call->dreg);
+                       res->type = STACK_OBJ;
+                       res->klass = klass;
+               }
+
+               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
                MONO_START_BB (cfg, end_bb);
 
+               *out_cbb = cfg->cbb;
+
                return res;
        } else {
                alloc = handle_alloc (cfg, klass, TRUE, context_used);
@@ -3553,7 +3922,7 @@ handle_castclass (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context
        if (context_used) {
                MonoInst *args [3];
 
-               if(mini_class_has_reference_variant_generic_argument (cfg, klass, context_used)) {
+               if(mini_class_has_reference_variant_generic_argument (cfg, klass, context_used) || is_complex_isinst (klass)) {
                        MonoMethod *mono_castclass = mono_marshal_get_castclass_with_cache ();
                        MonoInst *cache_ins;
 
@@ -3572,20 +3941,6 @@ handle_castclass (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context
                }
 
                klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_KLASS);
-
-               if (is_complex_isinst (klass)) {
-                       /* Complex case, handle by an icall */
-
-                       /* obj */
-                       args [0] = src;
-
-                       /* klass */
-                       args [1] = klass_inst;
-
-                       return mono_emit_jit_icall (cfg, mono_object_castclass, args);
-               } else {
-                       /* Simple case, handled by the code below */
-               }
        }
 
        NEW_BBLOCK (cfg, is_null_bb);
@@ -3647,7 +4002,7 @@ handle_isinst (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context_us
        if (context_used) {
                MonoInst *args [3];
 
-               if(mini_class_has_reference_variant_generic_argument (cfg, klass, context_used)) {
+               if(mini_class_has_reference_variant_generic_argument (cfg, klass, context_used) || is_complex_isinst (klass)) {
                        MonoMethod *mono_isinst = mono_marshal_get_isinst_with_cache ();
                        MonoInst *cache_ins;
 
@@ -3666,20 +4021,6 @@ handle_isinst (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context_us
                }
 
                klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_KLASS);
-
-               if (is_complex_isinst (klass)) {
-                       /* Complex case, handle by an icall */
-
-                       /* obj */
-                       args [0] = src;
-
-                       /* klass */
-                       args [1] = klass_inst;
-
-                       return mono_emit_jit_icall (cfg, mono_object_isinst, args);
-               } else {
-                       /* Simple case, the code below can handle it */
-               }
        }
 
        NEW_BBLOCK (cfg, is_null_bb);
@@ -4018,7 +4359,7 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
                if (cfg->gen_write_barriers) {
                        dreg = alloc_preg (cfg);
                        EMIT_NEW_BIALU_IMM (cfg, ptr, OP_PADD_IMM, dreg, obj->dreg, G_STRUCT_OFFSET (MonoDelegate, target));
-                       emit_write_barrier (cfg, ptr, target, 0);
+                       emit_write_barrier (cfg, ptr, target);
                }
        }
 
@@ -4028,7 +4369,7 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
        if (cfg->gen_write_barriers) {
                dreg = alloc_preg (cfg);
                EMIT_NEW_BIALU_IMM (cfg, ptr, OP_PADD_IMM, dreg, obj->dreg, G_STRUCT_OFFSET (MonoDelegate, method));
-               emit_write_barrier (cfg, ptr, method_ins, 0);
+               emit_write_barrier (cfg, ptr, method_ins);
        }
        /* 
         * To avoid looking up the compiled code belonging to the target method
@@ -4131,7 +4472,7 @@ mono_method_check_inlining (MonoCompile *cfg, MonoMethod *method)
 {
        MonoMethodHeaderSummary header;
        MonoVTable *vtable;
-#ifdef MONO_ARCH_SOFT_FLOAT
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
        MonoMethodSignature *sig = mono_method_signature (method);
        int i;
 #endif
@@ -4219,16 +4560,18 @@ mono_method_check_inlining (MonoCompile *cfg, MonoMethod *method)
         * CAS - do not inline methods with declarative security
         * Note: this has to be before any possible return TRUE;
         */
-       if (mono_method_has_declsec (method))
+       if (mono_security_method_has_declsec (method))
                return FALSE;
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-       /* FIXME: */
-       if (sig->ret && sig->ret->type == MONO_TYPE_R4)
-               return FALSE;
-       for (i = 0; i < sig->param_count; ++i)
-               if (!sig->params [i]->byref && sig->params [i]->type == MONO_TYPE_R4)
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
+       if (mono_arch_is_soft_float ()) {
+               /* FIXME: */
+               if (sig->ret && sig->ret->type == MONO_TYPE_R4)
                        return FALSE;
+               for (i = 0; i < sig->param_count; ++i)
+                       if (!sig->params [i]->byref && sig->params [i]->type == MONO_TYPE_R4)
+                               return FALSE;
+       }
 #endif
 
        return TRUE;
@@ -4314,7 +4657,7 @@ mini_emit_ldelema_1_ins (MonoCompile *cfg, MonoClass *klass, MonoInst *arr, Mono
                g_assert (cfg->generic_sharing_context);
                context_used = mini_class_check_context_used (cfg, klass);
                g_assert (context_used);
-               rgctx_ins = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE);
+               rgctx_ins = emit_get_gsharedvt_info (cfg, &klass->byval_arg, MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE);
                MONO_EMIT_NEW_BIALU (cfg, OP_IMUL, mult_reg, index2_reg, rgctx_ins->dreg);
        } else {
                MONO_EMIT_NEW_BIALU_IMM (cfg, OP_MUL_IMM, mult_reg, index2_reg, size);
@@ -4491,7 +4834,7 @@ emit_array_generic_access (MonoCompile *cfg, MonoMethodSignature *fsig, MonoInst
                EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, load, &eklass->byval_arg, args [2]->dreg, 0);
                EMIT_NEW_STORE_MEMBASE_TYPE (cfg, store, &eklass->byval_arg, addr->dreg, 0, load->dreg);
                if (mini_type_is_reference (cfg, fsig->params [2]))
-                       emit_write_barrier (cfg, addr, load, -1);
+                       emit_write_barrier (cfg, addr, load);
        } else {
                EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, load, &eklass->byval_arg, addr->dreg, 0);
                EMIT_NEW_STORE_MEMBASE_TYPE (cfg, store, &eklass->byval_arg, args [2]->dreg, 0, load->dreg);
@@ -4551,7 +4894,7 @@ emit_array_store (MonoCompile *cfg, MonoClass *klass, MonoInst **sp, gboolean sa
                        MonoInst *addr = mini_emit_ldelema_1_ins (cfg, klass, sp [0], sp [1], safety_checks);
                        EMIT_NEW_STORE_MEMBASE_TYPE (cfg, ins, &klass->byval_arg, addr->dreg, 0, sp [2]->dreg);
                        if (generic_class_is_reference_type (cfg, klass))
-                               emit_write_barrier (cfg, addr, sp [2], -1);
+                               emit_write_barrier (cfg, addr, sp [2]);
                }
                return ins;
        }
@@ -4767,7 +5110,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                } else
                        return NULL;
        } else if (cmethod->klass == mono_defaults.array_class) {
-               if (strcmp (cmethod->name + 1, "etGenericValueImpl") == 0)
+               if (!cfg->gsharedvt && strcmp (cmethod->name + 1, "etGenericValueImpl") == 0)
                        return emit_array_generic_access (cfg, fsig, args, *cmethod->name == 'S');
 
 #ifndef MONO_BIG_ARRAYS
@@ -5048,7 +5391,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                        }
 
                        if (cfg->gen_write_barriers && is_ref)
-                               emit_write_barrier (cfg, args [0], args [1], -1);
+                               emit_write_barrier (cfg, args [0], args [1]);
                }
 #endif /* MONO_ARCH_HAVE_ATOMIC_EXCHANGE */
  
@@ -5082,7 +5425,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                                /* g_assert_not_reached (); */
                        }
                        if (cfg->gen_write_barriers && is_ref)
-                               emit_write_barrier (cfg, args [0], args [1], -1);
+                               emit_write_barrier (cfg, args [0], args [1]);
                }
 #endif /* MONO_ARCH_HAVE_ATOMIC_CAS */
 
@@ -5153,7 +5496,7 @@ mini_redirect_call (MonoCompile *cfg, MonoMethod *method,
 
                        g_assert (vtable); /*Should not fail since it System.String*/
 #ifndef MONO_CROSS_COMPILE
-                       managed_alloc = mono_gc_get_managed_allocator (vtable, FALSE);
+                       managed_alloc = mono_gc_get_managed_allocator (method->klass, FALSE);
 #endif
                        if (!managed_alloc)
                                return NULL;
@@ -5692,7 +6035,7 @@ gboolean check_linkdemand (MonoCompile *cfg, MonoMethod *caller, MonoMethod *cal
 {
        guint32 result;
        
-       if ((cfg->method != caller) && mono_method_has_declsec (callee)) {
+       if ((cfg->method != caller) && mono_security_method_has_declsec (callee)) {
                return TRUE;
        }
        
@@ -6180,6 +6523,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
        MonoInst *cached_tls_addr = NULL;
        MonoDebugMethodInfo *minfo;
        MonoBitSet *seq_point_locs = NULL;
+       MonoBitSet *seq_point_set_locs = NULL;
 
        disable_inline = is_jit_optimizer_disabled (method);
 
@@ -6191,7 +6535,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
        dont_verify |= method->wrapper_type == MONO_WRAPPER_COMINTEROP;
        dont_verify |= method->wrapper_type == MONO_WRAPPER_COMINTEROP_INVOKE;
 
-       dont_verify |= mono_security_get_mode () == MONO_SECURITY_MODE_SMCS_HACK;
+       dont_verify |= mono_security_smcs_hack_enabled ();
 
        /* still some type unsafety issues in marshal wrappers... (unknown is PtrToStructure) */
        dont_verify_stloc = method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE;
@@ -6240,6 +6584,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                        mono_debug_symfile_get_line_numbers_full (minfo, NULL, NULL, &n_il_offsets, &il_offsets, &line_numbers, NULL, NULL);
                        seq_point_locs = mono_bitset_mem_new (mono_mempool_alloc0 (cfg->mempool, mono_bitset_alloc_size (header->code_size, 0)), header->code_size, 0);
+                       seq_point_set_locs = mono_bitset_mem_new (mono_mempool_alloc0 (cfg->mempool, mono_bitset_alloc_size (header->code_size, 0)), header->code_size, 0);
                        sym_seq_points = TRUE;
                        for (i = 0; i < n_il_offsets; ++i) {
                                if (il_offsets [i] < header->code_size)
@@ -6456,10 +6801,10 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                }
        }
 
-       if (mono_security_get_mode () == MONO_SECURITY_MODE_CAS)
+       if (mono_security_cas_enabled ())
                secman = mono_security_manager_get_methods ();
 
-       security = (secman && mono_method_has_declsec (method));
+       security = (secman && mono_security_method_has_declsec (method));
        /* at this point having security doesn't mean we have any code to generate */
        if (security && (cfg->method == method)) {
                /* Only Demand, NonCasDemand and DemandChoice requires code generation.
@@ -6512,6 +6857,47 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                link_bblock (cfg, start_bblock, bblock);
        }
 
+       if (cfg->gsharedvt && cfg->method == method) {
+               MonoGSharedVtMethodInfo *info;
+               MonoInst *var, *locals_var;
+               int dreg;
+
+               info = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoGSharedVtMethodInfo));
+               info->method = cfg->method;
+               // FIXME: Free this
+               info->entries = g_ptr_array_new ();
+               cfg->gsharedvt_info = info;
+
+               var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
+               /* prevent it from being register allocated */
+               //var->flags |= MONO_INST_INDIRECT;
+               cfg->gsharedvt_info_var = var;
+
+               ins = emit_get_rgctx_gsharedvt_method (cfg, mini_method_check_context_used (cfg, method), method, info);
+               MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, var->dreg, ins->dreg);
+
+               /* Allocate locals */
+               locals_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
+               /* prevent it from being register allocated */
+               //locals_var->flags |= MONO_INST_INDIRECT;
+               cfg->gsharedvt_locals_var = locals_var;
+
+               dreg = alloc_ireg (cfg);
+               MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADI4_MEMBASE, dreg, var->dreg, G_STRUCT_OFFSET (MonoGSharedVtMethodRuntimeInfo, locals_size));
+
+               MONO_INST_NEW (cfg, ins, OP_LOCALLOC);
+               ins->dreg = locals_var->dreg;
+               ins->sreg1 = dreg;
+               MONO_ADD_INS (cfg->cbb, ins);
+               cfg->gsharedvt_locals_var_ins = ins;
+               
+               cfg->flags |= MONO_CFG_HAS_ALLOCA;
+               /*
+               if (init_locals)
+                       ins->flags |= MONO_INST_INIT;
+               */
+       }
+
        /* at this point we know, if security is TRUE, that some code needs to be generated */
        if (security && (cfg->method == method)) {
                MonoInst *args [2];
@@ -6547,7 +6933,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                mono_emit_method_call (cfg, secman->demandunmanaged, NULL, NULL);
        }
 
-       if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR) {
+       if (mono_security_core_clr_enabled ()) {
                /* check if this is native code, e.g. an icall or a p/invoke */
                if (method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE) {
                        MonoMethod *wrapped = mono_marshal_method_from_wrapper (method);
@@ -6719,6 +7105,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        //if (!(cfg->cbb->last_ins && cfg->cbb->last_ins->opcode == OP_SEQ_POINT)) {
                        NEW_SEQ_POINT (cfg, ins, ip - header->code, intr_loc);
                        MONO_ADD_INS (cfg->cbb, ins);
+
+                       if (sym_seq_points)
+                               mono_bitset_set_fast (seq_point_set_locs, ip - header->code);
                }
 
                bblock->real_offset = cfg->real_offset;
@@ -7050,7 +7439,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        if (cfg->generic_sharing_context && mono_method_check_context_used (cmethod))
                                GENERIC_SHARING_FAILURE (CEE_JMP);
 
-                       if (mono_security_get_mode () == MONO_SECURITY_MODE_CAS)
+                       if (mono_security_cas_enabled ())
                                CHECK_CFG_EXCEPTION;
 
 #ifdef MONO_ARCH_USE_OP_TAIL_CALL
@@ -7104,11 +7493,13 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        MonoInst *vtable_arg = NULL;
                        gboolean check_this = FALSE;
                        gboolean supported_tail_call = FALSE;
+                       gboolean tail_call = FALSE;
                        gboolean need_seq_point = FALSE;
                        guint32 call_opcode = *ip;
                        gboolean emit_widen = TRUE;
                        gboolean push_res = TRUE;
                        gboolean skip_ret = FALSE;
+                       gboolean delegate_invoke = FALSE;
 
                        CHECK_OPSIZE (5);
                        token = read32 (ip + 1);
@@ -7184,7 +7575,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                METHOD_ACCESS_FAILURE;
                                }
 
-                               if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
+                               if (mono_security_core_clr_enabled ())
                                        ensure_method_is_allowed_to_call_method (cfg, method, cil_method, bblock, ip);
 
                                if (!virtual && (cmethod->flags & METHOD_ATTRIBUTE_ABSTRACT))
@@ -7256,7 +7647,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                }
                                */
 
-                               if (mono_security_get_mode () == MONO_SECURITY_MODE_CAS) {
+                               if (mono_security_cas_enabled ()) {
                                        if (check_linkdemand (cfg, method, cmethod))
                                                INLINE_FAILURE ("linkdemand");
                                        CHECK_CFG_EXCEPTION;
@@ -7283,25 +7674,49 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        /*
                                         * Constrained calls need to behave differently at runtime dependending on whenever the receiver is instantiated as ref type or as a vtype.
                                         */
-                                       /* Special case Object:ToString () as its easy to implement */
-                                       if (cmethod->klass == mono_defaults.object_class && !strcmp (cmethod->name, "ToString")) {
-                                               MonoInst *args [3];
+                                       /* Special case Object methods as they are easy to implement */
+                                       if (cmethod->klass == mono_defaults.object_class) {
+                                               MonoInst *args [16];
 
                                                args [0] = sp [0];
                                                EMIT_NEW_METHODCONST (cfg, args [1], cmethod);
                                                args [2] = emit_get_rgctx_klass (cfg, mono_class_check_context_used (constrained_call), constrained_call, MONO_RGCTX_INFO_KLASS);
-                                               ins = mono_emit_jit_icall (cfg, mono_object_tostring_gsharedvt, args);
+
+                                               if (!strcmp (cmethod->name, "ToString")) {
+                                                       ins = mono_emit_jit_icall (cfg, mono_object_tostring_gsharedvt, args);
+                                               } else if (!strcmp (cmethod->name, "Equals")) {
+                                                       args [3] = sp [1];
+                                                       ins = mono_emit_jit_icall (cfg, mono_object_equals_gsharedvt, args);
+                                               } else if (!strcmp (cmethod->name, "GetHashCode")) {
+                                                       ins = mono_emit_jit_icall (cfg, mono_object_gethashcode_gsharedvt, args);
+                                               } else {
+                                                       GSHAREDVT_FAILURE (*ip);
+                                               }
                                                goto call_end;
-                                       } else if (cmethod->klass == mono_defaults.object_class && !strcmp (cmethod->name, "GetHashCode")) {
-                                               MonoInst *args [3];
+                                       } else if (constrained_call->valuetype && cmethod->klass->valuetype) {
+                                               /* The 'Own method' case below */
+                                       } else if ((cmethod->klass->flags & TYPE_ATTRIBUTE_INTERFACE) && MONO_TYPE_IS_VOID (fsig->ret) && (fsig->param_count == 0 || (fsig->param_count == 1 && MONO_TYPE_IS_REFERENCE (fsig->params [0])))) {
+                                               MonoInst *args [16];
 
                                                args [0] = sp [0];
                                                EMIT_NEW_METHODCONST (cfg, args [1], cmethod);
                                                args [2] = emit_get_rgctx_klass (cfg, mono_class_check_context_used (constrained_call), constrained_call, MONO_RGCTX_INFO_KLASS);
-                                               ins = mono_emit_jit_icall (cfg, mono_object_gethashcode_gsharedvt, args);
+
+                                               if (fsig->param_count) {
+                                                       /* Pass the arguments using a localloc-ed array using the format expected by runtime_invoke () */
+                                                       MONO_INST_NEW (cfg, ins, OP_LOCALLOC_IMM);
+                                                       ins->dreg = alloc_preg (cfg);
+                                                       ins->inst_imm = fsig->param_count * sizeof (mgreg_t);
+                                                       MONO_ADD_INS (cfg->cbb, ins);
+                                                       args [3] = ins;
+
+                                                       EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, args [3]->dreg, 0, sp [1]->dreg);
+                                               } else {
+                                                       EMIT_NEW_ICONST (cfg, args [3], 0);
+                                               }
+
+                                               ins = mono_emit_jit_icall (cfg, mono_gsharedvt_constrained_call, args);
                                                goto call_end;
-                                       } else if (constrained_call->valuetype && cmethod->klass->valuetype) {
-                                               /* The 'Own method' case below */
                                        } else {
                                                GSHAREDVT_FAILURE (*ip);
                                        }
@@ -7317,8 +7732,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                         */
                                        EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, ins, &constrained_call->byval_arg, sp [0]->dreg, 0);
                                        ins->klass = constrained_call;
-                                       sp [0] = handle_box (cfg, ins, constrained_call, mono_class_check_context_used (constrained_call));
-                                       bblock = cfg->cbb;
+                                       sp [0] = handle_box (cfg, ins, constrained_call, mono_class_check_context_used (constrained_call), &bblock);
                                        CHECK_CFG_EXCEPTION;
                                } else if (!constrained_call->valuetype) {
                                        int dreg = alloc_ireg_ref (cfg);
@@ -7352,8 +7766,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                        /* Enum implements some interfaces, so treat this as the first case */
                                                        EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, ins, &constrained_call->byval_arg, sp [0]->dreg, 0);
                                                        ins->klass = constrained_call;
-                                                       sp [0] = handle_box (cfg, ins, constrained_call, mono_class_check_context_used (constrained_call));
-                                                       bblock = cfg->cbb;
+                                                       sp [0] = handle_box (cfg, ins, constrained_call, mono_class_check_context_used (constrained_call), &bblock);
                                                        CHECK_CFG_EXCEPTION;
                                                }
                                        }
@@ -7365,6 +7778,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        if (!calli && check_call_signature (cfg, fsig, sp))
                                UNVERIFIED;
 
+#ifdef MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE
+                       if (cmethod && (cmethod->klass->parent == mono_defaults.multicastdelegate_class) && !strcmp (cmethod->name, "Invoke"))
+                               delegate_invoke = TRUE;
+#endif
+
                        if (cmethod && (cfg->opt & MONO_OPT_INTRINS) && (ins = mini_emit_inst_for_sharable_method (cfg, cmethod, fsig, sp))) {
                                bblock = cfg->cbb;
                                if (!MONO_TYPE_IS_VOID (fsig->ret)) {
@@ -7379,53 +7797,13 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                         * If the callee is a shared method, then its static cctor
                         * might not get called after the call was patched.
                         */
-                       if (cfg->generic_sharing_context && cmethod && cmethod->klass != method->klass && cmethod->klass->generic_class && mono_method_is_generic_sharable_impl (cmethod, TRUE) && mono_class_needs_cctor_run (cmethod->klass, method)) {
+                       if (cfg->generic_sharing_context && cmethod && cmethod->klass != method->klass && cmethod->klass->generic_class && mono_method_is_generic_sharable (cmethod, TRUE) && mono_class_needs_cctor_run (cmethod->klass, method)) {
                                emit_generic_class_init (cfg, cmethod->klass);
                                CHECK_TYPELOAD (cmethod->klass);
                        }
 
-                       if (cmethod && ((cmethod->flags & METHOD_ATTRIBUTE_STATIC) || cmethod->klass->valuetype) &&
-                                       (cmethod->klass->generic_class || cmethod->klass->generic_container)) {
-                               gboolean sharable = FALSE;
-
-                               if (mono_method_is_generic_sharable_impl (cmethod, TRUE)) {
-                                       sharable = TRUE;
-                               } else {
-                                       gboolean sharing_enabled = mono_class_generic_sharing_enabled (cmethod->klass);
-                                       MonoGenericContext *context = mini_class_get_context (cmethod->klass);
-                                       gboolean context_sharable = mono_generic_context_is_sharable (context, TRUE);
-
-                                       sharable = sharing_enabled && context_sharable;
-                               }
-
-                               /*
-                                * Pass vtable iff target method might
-                                * be shared, which means that sharing
-                                * is enabled for its class and its
-                                * context is sharable (and it's not a
-                                * generic method).
-                                */
-                               if (sharable && !(mini_method_get_context (cmethod) && mini_method_get_context (cmethod)->method_inst))
-                                       pass_vtable = TRUE;
-                       }
-
-                       if (cmethod && mini_method_get_context (cmethod) &&
-                                       mini_method_get_context (cmethod)->method_inst) {
-                               g_assert (!pass_vtable);
-
-                               if (mono_method_is_generic_sharable_impl (cmethod, TRUE)) {
-                                       pass_mrgctx = TRUE;
-                               } else {
-                                       gboolean sharing_enabled = mono_class_generic_sharing_enabled (cmethod->klass);
-                                       MonoGenericContext *context = mini_method_get_context (cmethod);
-                                       gboolean context_sharable = mono_generic_context_is_sharable (context, TRUE);
-
-                                       if (sharing_enabled && context_sharable)
-                                               pass_mrgctx = TRUE;
-                                       if (cfg->gsharedvt && mini_is_gsharedvt_signature (cfg, fsig))
-                                               pass_mrgctx = TRUE;
-                               }
-                       }
+                       if (cmethod)
+                               check_method_sharing (cfg, cmethod, &pass_vtable, &pass_mrgctx);
 
                        if (cfg->generic_sharing_context && cmethod) {
                                MonoGenericContext *cmethod_context = mono_method_get_context (cmethod);
@@ -7533,7 +7911,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                g_assert (cmethod->is_inflated);
                                        imt_arg = emit_get_rgctx_method (cfg, context_used,
                                                                                                         cmethod, MONO_RGCTX_INFO_METHOD);
-                                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, sp, sp [0], imt_arg, NULL);
+                                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, FALSE, sp, sp [0], imt_arg, NULL);
                                } else {
                                        this_temp = mono_compile_create_var (cfg, type_from_stack_type (sp [0]), OP_LOCAL);
                                        NEW_TEMPSTORE (cfg, store, this_temp->inst_c0, sp [0]);
@@ -7719,8 +8097,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        /* Generic sharing */
                        /* FIXME: only do this for generic methods if
                           they are not shared! */
-                       if (context_used && !imt_arg && !array_rank &&
-                               (!mono_method_is_generic_sharable_impl (cmethod, TRUE) ||
+                       if (context_used && !imt_arg && !array_rank && !delegate_invoke &&
+                               (!mono_method_is_generic_sharable (cmethod, TRUE) ||
                                 !mono_class_generic_sharing_enabled (cmethod->klass)) &&
                                (!virtual || MONO_METHOD_IS_FINAL (cmethod) ||
                                 !(cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL))) {
@@ -7803,7 +8181,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, TRUE);
                                        EMIT_NEW_STORE_MEMBASE_TYPE (cfg, ins, fsig->params [fsig->param_count - 1], addr->dreg, 0, val->dreg);
                                        if (cfg->gen_write_barriers && val->type == STACK_OBJ && !(val->opcode == OP_PCONST && val->inst_c0 == 0))
-                                               emit_write_barrier (cfg, addr, val, 0);
+                                               emit_write_barrier (cfg, addr, val);
                                } else if (strcmp (cmethod->name, "Get") == 0) { /* array Get */
                                        addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, FALSE);
 
@@ -7833,11 +8211,14 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        /* FIXME: Enabling TAILC breaks some inlining/stack trace/etc tests */
                        /* FIXME: runtime generic context pointer for jumps? */
                        /* FIXME: handle this for generic sharing eventually */
-                       if (cmethod && 
-                               ((((ins_flag & MONO_INST_TAILCALL) && (call_opcode == CEE_CALL))
-                                 ))//|| ((cfg->opt & MONO_OPT_TAILC) && *ip == CEE_CALL && ip [5] == CEE_RET))
-                               && !vtable_arg && !cfg->generic_sharing_context && is_supported_tail_call (cfg, method, cmethod, fsig))
+                       if (cmethod && (ins_flag & MONO_INST_TAILCALL) &&
+                               !vtable_arg && !cfg->generic_sharing_context && is_supported_tail_call (cfg, method, cmethod, fsig))
                                supported_tail_call = TRUE;
+                       if (supported_tail_call) {
+                               if (call_opcode != CEE_CALL)
+                                       supported_tail_call = FALSE;
+                       }
+
                        if (supported_tail_call) {
                                MonoCallInst *call;
 
@@ -7846,45 +8227,44 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                                //printf ("HIT: %s -> %s\n", mono_method_full_name (cfg->method, TRUE), mono_method_full_name (cmethod, TRUE));
 
-#ifdef MONO_ARCH_USE_OP_TAIL_CALL
-                               /* Handle tail calls similarly to calls */
-                               call = mono_emit_call_args (cfg, mono_method_signature (cmethod), sp, FALSE, FALSE, TRUE, FALSE, FALSE);
-#else
-                               MONO_INST_NEW_CALL (cfg, call, OP_JMP);
-                               call->tail_call = TRUE;
-                               call->method = cmethod;
-                               call->signature = mono_method_signature (cmethod);
-
-                               /*
-                                * We implement tail calls by storing the actual arguments into the 
-                                * argument variables, then emitting a CEE_JMP.
-                                */
-                               for (i = 0; i < n; ++i) {
-                                       /* Prevent argument from being register allocated */
-                                       arg_array [i]->flags |= MONO_INST_VOLATILE;
-                                       EMIT_NEW_ARGSTORE (cfg, ins, i, sp [i]);
-                               }
-#endif
+                               if (ARCH_USE_OP_TAIL_CALL) {
+                                       /* Handle tail calls similarly to normal calls */
+                                       tail_call = TRUE;
+                               } else {
+                                       MONO_INST_NEW_CALL (cfg, call, OP_JMP);
+                                       call->tail_call = TRUE;
+                                       call->method = cmethod;
+                                       call->signature = mono_method_signature (cmethod);
 
-                               ins = (MonoInst*)call;
-                               ins->inst_p0 = cmethod;
-                               ins->inst_p1 = arg_array [0];
-                               MONO_ADD_INS (bblock, ins);
-                               link_bblock (cfg, bblock, end_bblock);                  
-                               start_new_bblock = 1;
+                                       /*
+                                        * We implement tail calls by storing the actual arguments into the 
+                                        * argument variables, then emitting a CEE_JMP.
+                                        */
+                                       for (i = 0; i < n; ++i) {
+                                               /* Prevent argument from being register allocated */
+                                               arg_array [i]->flags |= MONO_INST_VOLATILE;
+                                               EMIT_NEW_ARGSTORE (cfg, ins, i, sp [i]);
+                                       }
+                                       ins = (MonoInst*)call;
+                                       ins->inst_p0 = cmethod;
+                                       ins->inst_p1 = arg_array [0];
+                                       MONO_ADD_INS (bblock, ins);
+                                       link_bblock (cfg, bblock, end_bblock);                  
+                                       start_new_bblock = 1;
 
-                               // FIXME: Eliminate unreachable epilogs
+                                       // FIXME: Eliminate unreachable epilogs
 
-                               /*
-                                * OP_TAILCALL has no return value, so skip the CEE_RET if it is
-                                * only reachable from this call.
-                                */
-                               GET_BBLOCK (cfg, tblock, ip + 5);
-                               if (tblock == bblock || tblock->in_count == 0)
-                                       skip_ret = TRUE;
-                               push_res = FALSE;
+                                       /*
+                                        * OP_TAILCALL has no return value, so skip the CEE_RET if it is
+                                        * only reachable from this call.
+                                        */
+                                       GET_BBLOCK (cfg, tblock, ip + 5);
+                                       if (tblock == bblock || tblock->in_count == 0)
+                                               skip_ret = TRUE;
+                                       push_res = FALSE;
 
-                               goto call_end;
+                                       goto call_end;
+                               }
                        }
 
                        /* 
@@ -7895,14 +8275,33 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                         * change the called method to a dummy wrapper, and resolve that wrapper
                         * to the real method in mono_jit_compile_method ().
                         */
-                       if (cfg->method->wrapper_type == MONO_WRAPPER_SYNCHRONIZED && mono_marshal_method_from_wrapper (cfg->method) == cmethod)
-                               cmethod = mono_marshal_get_synchronized_inner_wrapper (cmethod);
+                       if (cfg->method->wrapper_type == MONO_WRAPPER_SYNCHRONIZED) {
+                               MonoMethod *orig = mono_marshal_method_from_wrapper (cfg->method);
+                               if (cmethod == orig || (cmethod->is_inflated && mono_method_get_declaring_generic_method (cmethod) == orig))
+                                       cmethod = mono_marshal_get_synchronized_inner_wrapper (cmethod);
+                       }
 
                        /* Common call */
                        INLINE_FAILURE ("call");
-                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, sp, virtual ? sp [0] : NULL,
+                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, tail_call, sp, virtual ? sp [0] : NULL,
                                                                                          imt_arg, vtable_arg);
 
+                       if (tail_call) {
+                               link_bblock (cfg, bblock, end_bblock);                  
+                               start_new_bblock = 1;
+
+                               // FIXME: Eliminate unreachable epilogs
+
+                               /*
+                                * OP_TAILCALL has no return value, so skip the CEE_RET if it is
+                                * only reachable from this call.
+                                */
+                               GET_BBLOCK (cfg, tblock, ip + 5);
+                               if (tblock == bblock || tblock->in_count == 0)
+                                       skip_ret = TRUE;
+                               push_res = FALSE;
+                       }
+
                        call_end:
 
                        /* End of call, INS should contain the result of the call, if any */
@@ -7959,6 +8358,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        cfg->ret_var_set = TRUE;
                                } 
                        } else {
+                               if (cfg->lmf_var && cfg->cbb->in_count)
+                                       emit_pop_lmf (cfg);
+
                                if (cfg->ret) {
                                        MonoType *ret_type = mono_method_signature (method)->ret;
 
@@ -7995,7 +8397,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                        ins->klass = mono_class_from_mono_type (ret_type);
                                                }
                                        } else {
-#ifdef MONO_ARCH_SOFT_FLOAT
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
                                                if (COMPILE_SOFT_FLOAT (cfg) && !ret_type->byref && ret_type->type == MONO_TYPE_R4) {
                                                        MonoInst *iargs [1];
                                                        MonoInst *conv;
@@ -8341,7 +8743,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        MONO_ADD_INS (bblock, ins);
 
                        if (cfg->gen_write_barriers && *ip == CEE_STIND_REF && method->wrapper_type != MONO_WRAPPER_WRITE_BARRIER && !((sp [1]->opcode == OP_PCONST) && (sp [1]->inst_p0 == 0)))
-                               emit_write_barrier (cfg, sp [0], sp [1], -1);
+                               emit_write_barrier (cfg, sp [0], sp [1]);
 
                        inline_costs += 1;
                        ++ip;
@@ -8405,6 +8807,12 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                int imm_opcode;
 
                                imm_opcode = mono_op_to_op_imm_noemul (ins->opcode);
+#if defined(MONO_ARCH_EMULATE_MUL_DIV) || defined(MONO_ARCH_EMULATE_DIV)
+                               /* Keep emulated opcodes which are optimized away later */
+                               if ((ins->opcode == OP_IREM_UN || ins->opcode == OP_IDIV_UN_IMM) && (cfg->opt & (MONO_OPT_CONSPROP | MONO_OPT_COPYPROP)) && sp [1]->opcode == OP_ICONST && mono_is_power_of_two (sp [1]->inst_c0) >= 0) {
+                                       imm_opcode = mono_op_to_op_imm (ins->opcode);
+                               }
+#endif
                                if (imm_opcode != -1) {
                                        ins->opcode = imm_opcode;
                                        if (sp [1]->opcode == OP_I8CONST) {
@@ -8546,7 +8954,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                MONO_ADD_INS (cfg->cbb, store);
 
                                if (cfg->gen_write_barriers && cfg->method->wrapper_type != MONO_WRAPPER_WRITE_BARRIER)
-                                       emit_write_barrier (cfg, sp [0], sp [1], -1);
+                                       emit_write_barrier (cfg, sp [0], sp [1]);
                        } else {
                                mini_emit_stobj (cfg, sp [0], sp [1], klass, FALSE);
                        }
@@ -8703,15 +9111,15 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                        context_used = mini_method_check_context_used (cfg, cmethod);
 
-                       if (mono_security_get_mode () == MONO_SECURITY_MODE_CAS) {
+                       if (mono_security_cas_enabled ()) {
                                if (check_linkdemand (cfg, method, cmethod))
                                        INLINE_FAILURE ("linkdemand");
                                CHECK_CFG_EXCEPTION;
-                       } else if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR) {
+                       } else if (mono_security_core_clr_enabled ()) {
                                ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock, ip);
                        }
 
-                       if (cfg->generic_sharing_context && cmethod && cmethod->klass != method->klass && cmethod->klass->generic_class && mono_method_is_generic_sharable_impl (cmethod, TRUE) && mono_class_needs_cctor_run (cmethod->klass, method)) {
+                       if (cfg->generic_sharing_context && cmethod && cmethod->klass != method->klass && cmethod->klass->generic_class && mono_method_is_generic_sharable (cmethod, TRUE) && mono_class_needs_cctor_run (cmethod->klass, method)) {
                                emit_generic_class_init (cfg, cmethod->klass);
                                CHECK_TYPELOAD (cmethod->klass);
                        }
@@ -8724,7 +9132,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        */
 
                        if (cmethod->klass->valuetype && mono_class_generic_sharing_enabled (cmethod->klass) &&
-                                       mono_method_is_generic_sharable_impl (cmethod, TRUE)) {
+                                       mono_method_is_generic_sharable (cmethod, TRUE)) {
                                if (cmethod->is_inflated && mono_method_get_context (cmethod)->method_inst) {
                                        mono_class_vtable (cfg->domain, cmethod->klass);
                                        CHECK_TYPELOAD (cmethod->klass);
@@ -8821,7 +9229,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                /* we simply pass a null pointer */
                                EMIT_NEW_PCONST (cfg, *sp, NULL); 
                                /* now call the string ctor */
-                               alloc = mono_emit_method_call_full (cfg, cmethod, fsig, sp, NULL, NULL, NULL);
+                               alloc = mono_emit_method_call_full (cfg, cmethod, fsig, FALSE, sp, NULL, NULL, NULL);
                        } else {
                                MonoInst* callvirt_this_arg = NULL;
                                
@@ -8895,7 +9303,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                // FIXME-VT: Clean this up
                                                if (cfg->gsharedvt && mini_is_gsharedvt_signature (cfg, fsig))
                                                        GSHAREDVT_FAILURE(*ip);
-                                               mono_emit_method_call_full (cfg, cmethod, fsig, sp, callvirt_this_arg, NULL, NULL);
+                                               mono_emit_method_call_full (cfg, cmethod, fsig, FALSE, sp, callvirt_this_arg, NULL, NULL);
                                        }
                                } else if (cfg->gsharedvt && mini_is_gsharedvt_signature (cfg, fsig)) {
                                        MonoInst *addr;
@@ -8903,7 +9311,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        addr = emit_get_rgctx_gsharedvt_call (cfg, context_used, fsig, cmethod, MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE);
                                        mono_emit_calli (cfg, fsig, sp, addr, NULL, vtable_arg);
                                } else if (context_used &&
-                                               (!mono_method_is_generic_sharable_impl (cmethod, TRUE) ||
+                                               (!mono_method_is_generic_sharable (cmethod, TRUE) ||
                                                        !mono_class_generic_sharing_enabled (cmethod->klass))) {
                                        MonoInst *cmethod_addr;
 
@@ -8913,7 +9321,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        mono_emit_calli (cfg, fsig, sp, cmethod_addr, NULL, vtable_arg);
                                } else {
                                        INLINE_FAILURE ("ctor call");
-                                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, sp,
+                                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, FALSE, sp,
                                                                                                          callvirt_this_arg, NULL, vtable_arg);
                                }
                        }
@@ -9066,34 +9474,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        context_used = mini_class_check_context_used (cfg, klass);
 
                        if (mini_is_gsharedvt_klass (cfg, klass)) {
-                               MonoInst *obj, *addr, *klass_inst, *args[16];
-                               int dreg;
-
-                               /* Need to check for nullable types at runtime, but those are disabled in mini_is_gsharedvt_sharable_method*/
-                               if (mono_class_is_nullable (klass))
-                                       GSHAREDVT_FAILURE (*ip);
-
-                               obj = *sp;
-
-                               klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_KLASS);
-
-                               /* obj */
-                               args [0] = obj;
-
-                               /* klass */
-                               args [1] = klass_inst;
-
-                               /* CASTCLASS */
-                               obj = mono_emit_jit_icall (cfg, mono_object_castclass, args);
-
-                               /* UNBOX */
-                               dreg = alloc_dreg (cfg, STACK_MP);
-                               NEW_BIALU_IMM (cfg, addr, OP_ADD_IMM, dreg, obj->dreg, sizeof (MonoObject));
-                               MONO_ADD_INS (cfg->cbb, addr);
-
-                               /* LDOBJ */
-                               EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, ins, &klass->byval_arg, addr->dreg, 0);
-                               *sp++ = ins;
+                               *sp = handle_unbox_gsharedvt (cfg, context_used, klass, *sp, &bblock);
+                               sp ++;
 
                                ip += 5;
                                inline_costs += 2;
@@ -9271,8 +9653,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                break;
                        }
 
-                       *sp++ = handle_box (cfg, val, klass, context_used);
-                       bblock = cfg->cbb;
+                       *sp++ = handle_box (cfg, val, klass, context_used, &bblock);
 
                        CHECK_CFG_EXCEPTION;
                        ip += 5;
@@ -9313,7 +9694,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                case CEE_LDSFLDA:
                case CEE_STSFLD: {
                        MonoClassField *field;
+#ifndef DISABLE_REMOTING
                        int costs;
+#endif
                        guint foffset;
                        gboolean is_instance;
                        int op;
@@ -9364,12 +9747,12 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                UNVERIFIED;
 
                        /* if the class is Critical then transparent code cannot access it's fields */
-                       if (!is_instance && mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
+                       if (!is_instance && mono_security_core_clr_enabled ())
                                ensure_method_is_allowed_to_access_field (cfg, method, field, bblock, ip);
 
                        /* XXX this is technically required but, so far (SL2), no [SecurityCritical] types (not many exists) have
                           any visible *instance* field  (in fact there's a single case for a static field in Marshal) XXX
-                       if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
+                       if (mono_security_core_clr_enabled ())
                                ensure_method_is_allowed_to_access_field (cfg, method, field, bblock, ip);
                        */
 
@@ -9441,11 +9824,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                                                context_used = mini_class_check_context_used (cfg, klass);
 
-                                               offset_ins = emit_get_rgctx_field (cfg, context_used, field, MONO_RGCTX_INFO_FIELD_OFFSET);
+                                               offset_ins = emit_get_gsharedvt_info (cfg, field, MONO_RGCTX_INFO_FIELD_OFFSET);
                                                dreg = alloc_ireg_mp (cfg);
                                                EMIT_NEW_BIALU (cfg, ins, OP_PADD, dreg, sp [0]->dreg, offset_ins->dreg);
+                                               /* The decomposition will call mini_emit_stobj () which will emit a wbarrier if needed */
                                                EMIT_NEW_STORE_MEMBASE_TYPE (cfg, store, field->type, dreg, 0, sp [1]->dreg);
-                                               // FIXME-VT: wbarriers ?
                                        } else {
                                                EMIT_NEW_STORE_MEMBASE_TYPE (cfg, store, field->type, sp [0]->dreg, foffset, sp [1]->dreg);
                                        }
@@ -9459,7 +9842,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                                        dreg = alloc_ireg_mp (cfg);
                                        EMIT_NEW_BIALU_IMM (cfg, ptr, OP_PADD_IMM, dreg, sp [0]->dreg, foffset);
-                                       emit_write_barrier (cfg, ptr, sp [1], -1);
+                                       emit_write_barrier (cfg, ptr, sp [1]);
                                }
 
                                        store->flags |= ins_flag;
@@ -9530,7 +9913,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                if (mini_is_gsharedvt_klass (cfg, klass)) {
                                                        MonoInst *offset_ins;
 
-                                                       offset_ins = emit_get_rgctx_field (cfg, context_used, field, MONO_RGCTX_INFO_FIELD_OFFSET);
+                                                       offset_ins = emit_get_gsharedvt_info (cfg, field, MONO_RGCTX_INFO_FIELD_OFFSET);
                                                        EMIT_NEW_BIALU (cfg, ins, OP_PADD, dreg, sp [0]->dreg, offset_ins->dreg);
                                                } else {
                                                        EMIT_NEW_BIALU_IMM (cfg, ins, OP_PADD_IMM, dreg, sp [0]->dreg, foffset);
@@ -9547,7 +9930,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        if (mini_is_gsharedvt_klass (cfg, klass)) {
                                                MonoInst *offset_ins;
 
-                                               offset_ins = emit_get_rgctx_field (cfg, context_used, field, MONO_RGCTX_INFO_FIELD_OFFSET);
+                                               offset_ins = emit_get_gsharedvt_info (cfg, field, MONO_RGCTX_INFO_FIELD_OFFSET);
                                                dreg = alloc_ireg_mp (cfg);
                                                EMIT_NEW_BIALU (cfg, ins, OP_PADD, dreg, sp [0]->dreg, offset_ins->dreg);
                                                EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, load, field->type, dreg, 0);
@@ -9865,7 +10248,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        if (cfg->gen_write_barriers && cfg->method->wrapper_type != MONO_WRAPPER_WRITE_BARRIER &&
                                        generic_class_is_reference_type (cfg, klass)) {
                                /* insert call to write barrier */
-                               emit_write_barrier (cfg, sp [0], sp [1], -1);
+                               emit_write_barrier (cfg, sp [0], sp [1]);
                        }
                        ins_flag = 0;
                        ip += 5;
@@ -9904,21 +10287,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        if (context_used) {
                                MonoInst *args [3];
                                MonoClass *array_class = mono_array_class_get (klass, 1);
-                               /* FIXME: we cannot get a managed
-                                  allocator because we can't get the
-                                  open generic class's vtable.  We
-                                  have the same problem in
-                                  handle_alloc().  This
-                                  needs to be solved so that we can
-                                  have managed allocs of shared
-                                  generic classes. */
-                               /*
-                               MonoVTable *array_class_vtable = mono_class_vtable (cfg->domain, array_class);
-                               MonoMethod *managed_alloc = mono_gc_get_managed_array_allocator (array_class_vtable, 1);
-                               */
-                               MonoMethod *managed_alloc = NULL;
+                               MonoMethod *managed_alloc = mono_gc_get_managed_array_allocator (array_class);
 
-                               /* FIXME: Decompose later to help abcrem */
+                               /* FIXME: Use OP_NEWARR and decompose later to help abcrem */
 
                                /* vtable */
                                args [0] = emit_get_rgctx_klass (cfg, context_used,
@@ -10352,7 +10723,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                        g_assert_not_reached ();
                                                }
                                        } else if (cfg->compile_aot) {
-                                               EMIT_NEW_LDTOKENCONST (cfg, ins, image, n);
+                                               EMIT_NEW_LDTOKENCONST (cfg, ins, image, n, generic_context);
                                        } else {
                                                EMIT_NEW_PCONST (cfg, ins, handle);
                                        }
@@ -10806,7 +11177,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                lmf_ins = mono_get_lmf_intrinsic (cfg);
 #endif
 
-#ifdef MONO_ARCH_HAVE_TLS_GET
                                if (MONO_ARCH_HAVE_TLS_GET && ad_ins && lmf_ins) {
                                        NEW_BBLOCK (cfg, next_bb);
 
@@ -10818,7 +11188,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, lmf_ins->dreg, 0);
                                        MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_PBNE_UN, next_bb);
                                }
-#endif
 
                                if (cfg->compile_aot) {
                                        /* AOT code is only used in the root domain */
@@ -10940,13 +11309,13 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                if (!dont_verify && !cfg->skip_visibility && !mono_method_can_access_method (method, cmethod))
                                        METHOD_ACCESS_FAILURE;
 
-                               if (mono_security_get_mode () == MONO_SECURITY_MODE_CAS) {
+                               if (mono_security_cas_enabled ()) {
                                        if (check_linkdemand (cfg, method, cmethod))
                                                INLINE_FAILURE ("linkdemand");
                                        CHECK_CFG_EXCEPTION;
-                               } else if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR) {
+                               } else if (mono_security_core_clr_enabled ()) {
                                        ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock, ip);
-                               }
+                               }
 
                                /* 
                                 * Optimize the common case of ldftn+delegate creation
@@ -10966,7 +11335,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                                                target_ins = sp [-1];
 
-                                               if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
+                                               if (mono_security_core_clr_enabled ())
                                                        ensure_method_is_allowed_to_call_method (cfg, method, ctor_method, bblock, ip);
 
                                                if (!(cmethod->flags & METHOD_ATTRIBUTE_STATIC)) {
@@ -11015,11 +11384,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
  
                                context_used = mini_method_check_context_used (cfg, cmethod);
 
-                               if (mono_security_get_mode () == MONO_SECURITY_MODE_CAS) {
+                               if (mono_security_cas_enabled ()) {
                                        if (check_linkdemand (cfg, method, cmethod))
                                                INLINE_FAILURE ("linkdemand");
                                        CHECK_CFG_EXCEPTION;
-                               } else if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR) {
+                               } else if (mono_security_core_clr_enabled ()) {
                                        ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock, ip);
                                }
 
@@ -11353,6 +11722,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                bblock->next_bb = end_bblock;
        }
 
+       if (cfg->lmf_var) {
+               cfg->cbb = init_localsbb;
+               emit_push_lmf (cfg);
+       }
+
        if (cfg->method == method && cfg->domainvar) {
                MonoInst *store;
                MonoInst *get_domain;
@@ -11445,6 +11819,21 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                MONO_ADD_INS (cfg->bb_exit, ins);
        }
 
+       /*
+        * Add seq points for IL offsets which have line number info, but wasn't generated a seq point during JITting because
+        * the code they refer to was dead (#11880).
+        */
+       if (sym_seq_points) {
+               for (i = 0; i < header->code_size; ++i) {
+                       if (mono_bitset_test_fast (seq_point_locs, i) && !mono_bitset_test_fast (seq_point_set_locs, i)) {
+                               MonoInst *ins;
+
+                               NEW_SEQ_POINT (cfg, ins, i, FALSE);
+                               mono_add_seq_point (cfg, NULL, ins, SEQ_POINT_NATIVE_OFFSET_DEAD_CODE);
+                       }
+               }
+       }
+
        cfg->ip = NULL;
 
        if (cfg->method == method) {
@@ -12124,13 +12513,17 @@ mono_handle_global_vregs (MonoCompile *cfg)
 #if SIZEOF_REGISTER == 8
                case STACK_I8:
 #endif
-#if !defined(TARGET_X86) && !defined(MONO_ARCH_SOFT_FLOAT)
+#if !defined(TARGET_X86)
                /* Enabling this screws up the fp stack on x86 */
                case STACK_R8:
 #endif
+                       if (mono_arch_is_soft_float ())
+                               break;
+
                        /* Arguments are implicitly global */
                        /* Putting R4 vars into registers doesn't work currently */
-                       if ((var->opcode != OP_ARG) && (var != cfg->ret) && !(var->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT)) && (vreg_to_bb [var->dreg] != -1) && (var->klass->byval_arg.type != MONO_TYPE_R4) && !cfg->disable_vreg_to_lvreg) {
+                       /* The gsharedvt vars are implicitly referenced by ldaddr opcodes, but those opcodes are only generated later */
+                       if ((var->opcode != OP_ARG) && (var != cfg->ret) && !(var->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT)) && (vreg_to_bb [var->dreg] != -1) && (var->klass->byval_arg.type != MONO_TYPE_R4) && !cfg->disable_vreg_to_lvreg && var != cfg->gsharedvt_info_var && var != cfg->gsharedvt_locals_var) {
                                /* 
                                 * Make that the variable's liveness interval doesn't contain a call, since
                                 * that would cause the lvreg to be spilled, making the whole optimization
@@ -12235,6 +12628,7 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
        guint32 stacktypes [128];
        MonoInst **live_range_start, **live_range_end;
        MonoBasicBlock **live_range_start_bb, **live_range_end_bb;
+       int *gsharedvt_vreg_to_idx = NULL;
 
        *need_local_opts = FALSE;
 
@@ -12293,6 +12687,29 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
                                ins->flags |= MONO_INST_GC_TRACK;
                }
        }
+
+       if (cfg->gsharedvt) {
+               gsharedvt_vreg_to_idx = g_new0 (int, cfg->next_vreg);
+
+               for (i = 0; i < cfg->num_varinfo; ++i) {
+                       MonoInst *ins = cfg->varinfo [i];
+                       int idx;
+
+                       if (mini_is_gsharedvt_variable_type (cfg, ins->inst_vtype)) {
+                               if (i >= cfg->locals_start) {
+                                       /* Local */
+                                       idx = get_gsharedvt_info_slot (cfg, ins->inst_vtype, MONO_RGCTX_INFO_LOCAL_OFFSET);
+                                       gsharedvt_vreg_to_idx [ins->dreg] = idx + 1;
+                                       ins->opcode = OP_GSHAREDVT_LOCAL;
+                                       ins->inst_imm = idx;
+                               } else {
+                                       /* Arg */
+                                       gsharedvt_vreg_to_idx [ins->dreg] = -1;
+                                       ins->opcode = OP_GSHAREDVT_ARG_REGOFFSET;
+                               }
+                       }
+               }
+       }
                
        /* FIXME: widening and truncation */
 
@@ -12369,6 +12786,63 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
                                                ins->inst_offset = vtaddr->inst_offset;
                                        } else
                                                NOT_IMPLEMENTED;
+                               } else if (cfg->gsharedvt && gsharedvt_vreg_to_idx [var->dreg] < 0) {
+                                       /* gsharedvt arg passed by ref */
+                                       g_assert (var->opcode == OP_GSHAREDVT_ARG_REGOFFSET);
+
+                                       ins->opcode = OP_LOAD_MEMBASE;
+                                       ins->inst_basereg = var->inst_basereg;
+                                       ins->inst_offset = var->inst_offset;
+                               } else if (cfg->gsharedvt && gsharedvt_vreg_to_idx [var->dreg]) {
+                                       MonoInst *load, *load2, *load3;
+                                       int idx = gsharedvt_vreg_to_idx [var->dreg] - 1;
+                                       int reg1, reg2, reg3;
+                                       MonoInst *info_var = cfg->gsharedvt_info_var;
+                                       MonoInst *locals_var = cfg->gsharedvt_locals_var;
+
+                                       /*
+                                        * gsharedvt local.
+                                        * Compute the address of the local as gsharedvt_locals_var + gsharedvt_info_var->locals_offsets [idx].
+                                        */
+
+                                       g_assert (var->opcode == OP_GSHAREDVT_LOCAL);
+
+                                       g_assert (info_var);
+                                       g_assert (locals_var);
+
+                                       /* Mark the instruction used to compute the locals var as used */
+                                       cfg->gsharedvt_locals_var_ins = NULL;
+
+                                       /* Load the offset */
+                                       if (info_var->opcode == OP_REGOFFSET) {
+                                               reg1 = alloc_ireg (cfg);
+                                               NEW_LOAD_MEMBASE (cfg, load, OP_LOAD_MEMBASE, reg1, info_var->inst_basereg, info_var->inst_offset);
+                                       } else if (info_var->opcode == OP_REGVAR) {
+                                               load = NULL;
+                                               reg1 = info_var->dreg;
+                                       } else {
+                                               g_assert_not_reached ();
+                                       }
+                                       reg2 = alloc_ireg (cfg);
+                                       NEW_LOAD_MEMBASE (cfg, load2, OP_LOADI4_MEMBASE, reg2, reg1, G_STRUCT_OFFSET (MonoGSharedVtMethodRuntimeInfo, entries) + (idx * sizeof (gpointer)));
+                                       /* Load the locals area address */
+                                       reg3 = alloc_ireg (cfg);
+                                       if (locals_var->opcode == OP_REGOFFSET) {
+                                               NEW_LOAD_MEMBASE (cfg, load3, OP_LOAD_MEMBASE, reg3, locals_var->inst_basereg, locals_var->inst_offset);
+                                       } else if (locals_var->opcode == OP_REGVAR) {
+                                               NEW_UNALU (cfg, load3, OP_MOVE, reg3, locals_var->dreg);
+                                       } else {
+                                               g_assert_not_reached ();
+                                       }
+                                       /* Compute the address */
+                                       ins->opcode = OP_PADD;
+                                       ins->sreg1 = reg3;
+                                       ins->sreg2 = reg2;
+
+                                       mono_bblock_insert_before_ins (bb, ins, load3);
+                                       mono_bblock_insert_before_ins (bb, load3, load2);
+                                       if (load)
+                                               mono_bblock_insert_before_ins (bb, load2, load);
                                } else {
                                        g_assert (var->opcode == OP_REGOFFSET);
 
@@ -12468,6 +12942,7 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
 
                                        ins->dreg = alloc_dreg (cfg, stacktypes [regtype]);
 
+#if SIZEOF_REGISTER != 8
                                        if (regtype == 'l') {
                                                NEW_STORE_MEMBASE (cfg, store_ins, OP_STOREI4_MEMBASE_REG, var->inst_basereg, var->inst_offset + MINI_LS_WORD_OFFSET, ins->dreg + 1);
                                                mono_bblock_insert_after_ins (bb, ins, store_ins);
@@ -12475,7 +12950,9 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
                                                mono_bblock_insert_after_ins (bb, ins, store_ins);
                                                def_ins = store_ins;
                                        }
-                                       else {
+                                       else
+#endif
+                                       {
                                                g_assert (store_opcode != OP_STOREV_MEMBASE);
 
                                                /* Try to fuse the store into the instruction itself */
@@ -12634,6 +13111,7 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
                                                sregs [srcindex] = sreg;
                                                //mono_inst_set_src_registers (ins, sregs);
 
+#if SIZEOF_REGISTER != 8
                                                if (regtype == 'l') {
                                                        NEW_LOAD_MEMBASE (cfg, load_ins, OP_LOADI4_MEMBASE, sreg + 2, var->inst_basereg, var->inst_offset + MINI_MS_WORD_OFFSET);
                                                        mono_bblock_insert_before_ins (bb, ins, load_ins);
@@ -12641,7 +13119,9 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
                                                        mono_bblock_insert_before_ins (bb, ins, load_ins);
                                                        use_ins = load_ins;
                                                }
-                                               else {
+                                               else
+#endif
+                                               {
 #if SIZEOF_REGISTER == 4
                                                        g_assert (load_opcode != OP_LOADI8_MEMBASE);
 #endif
@@ -12748,6 +13228,12 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
        }
 #endif
 
+       if (cfg->gsharedvt_locals_var_ins) {
+               /* Nullify if unused */
+               cfg->gsharedvt_locals_var_ins->opcode = OP_PCONST;
+               cfg->gsharedvt_locals_var_ins->inst_imm = 0;
+       }
+
        g_free (live_range_start);
        g_free (live_range_end);
        g_free (live_range_start_bb);
index 0ffbde808daaede7a129fee84dda5355f1695c26..89506c79f82407b676ad86c89f849cbfb77194a1 100644 (file)
@@ -30,6 +30,7 @@
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/mono-memory-model.h>
 #include <mono/utils/mono-tls.h>
+#include <mono/utils/mono-hwcap-x86.h>
 
 #include "trace.h"
 #include "ir-emit.h"
@@ -677,8 +678,6 @@ merge_argument_class_from_type (MonoType *type, ArgumentClass class1)
        return class1;
 }
 #ifdef __native_client_codegen__
-const guint kNaClAlignment = kNaClAlignmentAMD64;
-const guint kNaClAlignmentMask = kNaClAlignmentMaskAMD64;
 
 /* Default alignment for Native Client is 32-byte. */
 gint8 nacl_align_byte = -32; /* signed version of 0xe0 */
@@ -999,6 +998,9 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                                break;
                        }
                        /* fall through */
+#if defined( __native_client_codegen__ )
+               case MONO_TYPE_TYPEDBYREF:
+#endif
                case MONO_TYPE_VALUETYPE: {
                        guint32 tmp_gr = 0, tmp_fr = 0, tmp_stacksize = 0;
 
@@ -1009,10 +1011,12 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                        }
                        break;
                }
+#if !defined( __native_client_codegen__ )
                case MONO_TYPE_TYPEDBYREF:
                        /* Same as a valuetype with size 24 */
                        cinfo->vtype_retaddr = TRUE;
                        break;
+#endif
                case MONO_TYPE_VOID:
                        break;
                default:
@@ -1116,7 +1120,7 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                        add_valuetype (gsctx, sig, ainfo, sig->params [i], FALSE, &gr, &fr, &stack_size);
                        break;
                case MONO_TYPE_TYPEDBYREF:
-#ifdef HOST_WIN32
+#if defined( HOST_WIN32 ) || defined( __native_client_codegen__ )
                        add_valuetype (gsctx, sig, ainfo, sig->params [i], FALSE, &gr, &fr, &stack_size);
 #else
                        stack_size += sizeof (MonoTypedRef);
@@ -1218,28 +1222,6 @@ mono_amd64_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSigna
        return res;
 }
 
-static int 
-cpuid (int id, int* p_eax, int* p_ebx, int* p_ecx, int* p_edx)
-{
-#if defined(MONO_CROSS_COMPILE)
-       return 0;
-#else
-#ifndef _MSC_VER
-       __asm__ __volatile__ ("cpuid"
-               : "=a" (*p_eax), "=b" (*p_ebx), "=c" (*p_ecx), "=d" (*p_edx)
-               : "a" (id));
-#else
-       int info[4];
-       __cpuid(info, id);
-       *p_eax = info[0];
-       *p_ebx = info[1];
-       *p_ecx = info[2];
-       *p_edx = info[3];
-#endif
-       return 1;
-#endif
-}
-
 /*
  * Initialize the cpu to execute managed code.
  */
@@ -1322,20 +1304,19 @@ mono_arch_cleanup (void)
 guint32
 mono_arch_cpu_optimizations (guint32 *exclude_mask)
 {
-       int eax, ebx, ecx, edx;
        guint32 opts = 0;
 
        *exclude_mask = 0;
-       /* Feature Flags function, flags returned in EDX. */
-       if (cpuid (1, &eax, &ebx, &ecx, &edx)) {
-               if (edx & (1 << 15)) {
-                       opts |= MONO_OPT_CMOV;
-                       if (edx & 1)
-                               opts |= MONO_OPT_FCMOV;
-                       else
-                               *exclude_mask |= MONO_OPT_FCMOV;
-               } else
-                       *exclude_mask |= MONO_OPT_CMOV;
+
+       if (mono_hwcap_x86_has_cmov) {
+               opts |= MONO_OPT_CMOV;
+
+               if (mono_hwcap_x86_has_fcmov)
+                       opts |= MONO_OPT_FCMOV;
+               else
+                       *exclude_mask |= MONO_OPT_FCMOV;
+       } else {
+               *exclude_mask |= MONO_OPT_CMOV;
        }
 
        return opts;
@@ -1350,37 +1331,30 @@ mono_arch_cpu_optimizations (guint32 *exclude_mask)
 guint32
 mono_arch_cpu_enumerate_simd_versions (void)
 {
-       int eax, ebx, ecx, edx;
        guint32 sse_opts = 0;
 
-       if (cpuid (1, &eax, &ebx, &ecx, &edx)) {
-               if (edx & (1 << 25))
-                       sse_opts |= SIMD_VERSION_SSE1;
-               if (edx & (1 << 26))
-                       sse_opts |= SIMD_VERSION_SSE2;
-               if (ecx & (1 << 0))
-                       sse_opts |= SIMD_VERSION_SSE3;
-               if (ecx & (1 << 9))
-                       sse_opts |= SIMD_VERSION_SSSE3;
-               if (ecx & (1 << 19))
-                       sse_opts |= SIMD_VERSION_SSE41;
-               if (ecx & (1 << 20))
-                       sse_opts |= SIMD_VERSION_SSE42;
-       }
-
-       /* Yes, all this needs to be done to check for sse4a.
-          See: "Amd: CPUID Specification"
-        */
-       if (cpuid (0x80000000, &eax, &ebx, &ecx, &edx)) {
-               /* eax greater or equal than 0x80000001, ebx = 'htuA', ecx = DMAc', edx = 'itne'*/
-               if ((((unsigned int) eax) >= 0x80000001) && (ebx == 0x68747541) && (ecx == 0x444D4163) && (edx == 0x69746E65)) {
-                       cpuid (0x80000001, &eax, &ebx, &ecx, &edx);
-                       if (ecx & (1 << 6))
-                               sse_opts |= SIMD_VERSION_SSE4a;
-               }
-       }
+       if (mono_hwcap_x86_has_sse1)
+               sse_opts |= SIMD_VERSION_SSE1;
+
+       if (mono_hwcap_x86_has_sse2)
+               sse_opts |= SIMD_VERSION_SSE2;
+
+       if (mono_hwcap_x86_has_sse3)
+               sse_opts |= SIMD_VERSION_SSE3;
+
+       if (mono_hwcap_x86_has_ssse3)
+               sse_opts |= SIMD_VERSION_SSSE3;
 
-       return sse_opts;        
+       if (mono_hwcap_x86_has_sse41)
+               sse_opts |= SIMD_VERSION_SSE41;
+
+       if (mono_hwcap_x86_has_sse42)
+               sse_opts |= SIMD_VERSION_SSE42;
+
+       if (mono_hwcap_x86_has_sse4a)
+               sse_opts |= SIMD_VERSION_SSE4a;
+
+       return sse_opts;
 }
 
 #ifndef DISABLE_JIT
@@ -1657,7 +1631,7 @@ mono_arch_fill_argument_info (MonoCompile *cfg)
                case ArgInIReg:
                case ArgInFloatSSEReg:
                case ArgInDoubleSSEReg:
-                       if ((MONO_TYPE_ISSTRUCT (sig->ret) && !mono_class_from_mono_type (sig->ret)->enumtype) || (sig->ret->type == MONO_TYPE_TYPEDBYREF)) {
+                       if ((MONO_TYPE_ISSTRUCT (sig->ret) && !mono_class_from_mono_type (sig->ret)->enumtype) || ((sig->ret->type == MONO_TYPE_TYPEDBYREF) && cinfo->vtype_retaddr)) {
                                cfg->vret_addr->opcode = OP_REGVAR;
                                cfg->vret_addr->inst_c0 = cinfo->ret.reg;
                        }
@@ -1771,7 +1745,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
                case ArgInIReg:
                case ArgInFloatSSEReg:
                case ArgInDoubleSSEReg:
-                       if ((MONO_TYPE_ISSTRUCT (sig->ret) && !mono_class_from_mono_type (sig->ret)->enumtype) || (sig->ret->type == MONO_TYPE_TYPEDBYREF)) {
+                       if ((MONO_TYPE_ISSTRUCT (sig->ret) && !mono_class_from_mono_type (sig->ret)->enumtype) || ((sig->ret->type == MONO_TYPE_TYPEDBYREF) && cinfo->vtype_retaddr)) {
                                if (cfg->globalra) {
                                        cfg->vret_addr->opcode = OP_REGVAR;
                                        cfg->vret_addr->inst_c0 = cinfo->ret.reg;
@@ -2036,13 +2010,6 @@ mono_arch_create_vars (MonoCompile *cfg)
        cfg->arch.no_pushes = TRUE;
 #endif
 
-       if (cfg->method->save_lmf) {
-               MonoInst *lmf_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
-               lmf_var->flags |= MONO_INST_VOLATILE;
-               lmf_var->flags |= MONO_INST_LMF;
-               cfg->arch.lmf_var = lmf_var;
-       }
-
 #ifndef MONO_AMD64_NO_PUSHES
        cfg->arch_eh_jit_info = 1;
 #endif
@@ -3004,7 +2971,8 @@ emit_call_body (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointe
                                jinfo = g_hash_table_lookup (cfg->abs_patches, data);
                        if (jinfo) {
                                if (jinfo->type == MONO_PATCH_INFO_JIT_ICALL_ADDR) {
-                                       if ((((guint64)data) >> 32) == 0)
+                                       MonoJitICallInfo *mi = mono_find_jit_icall_by_name (jinfo->data.name);
+                                       if (mi && (((guint64)mi->func) >> 32) == 0)
                                                near_call = TRUE;
                                        no_patch = TRUE;
                                } else {
@@ -3042,7 +3010,10 @@ emit_call_body (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointe
 #ifdef MONO_ARCH_NOMAP32BIT
                near_call = FALSE;
 #endif
-
+#if defined(__native_client__)
+               /* Always use near_call == TRUE for Native Client */
+               near_call = TRUE;
+#endif
                /* The 64bit XEN kernel does not honour the MAP_32BIT flag. (#522894) */
                if (optimize_for_xen)
                        near_call = FALSE;
@@ -3758,14 +3729,13 @@ emit_save_lmf (MonoCompile *cfg, guint8 *code, gint32 lmf_offset, gboolean *args
                        amd64_mov_mem_reg (code, lmf_tls_offset, AMD64_R11, 8);
                }
        } else {
+#ifdef HOST_WIN32
                if (lmf_addr_tls_offset != -1) {
                        /* Load lmf quicky using the FS register */
                        code = mono_amd64_emit_tls_get (code, AMD64_RAX, lmf_addr_tls_offset);
-#ifdef HOST_WIN32
                        /* The TLS key actually contains a pointer to the MonoJitTlsData structure */
                        /* FIXME: Add a separate key for LMF to avoid this */
                        amd64_alu_reg_imm (code, X86_ADD, AMD64_RAX, G_STRUCT_OFFSET (MonoJitTlsData, lmf));
-#endif
                }
                else {
                        /* 
@@ -3786,13 +3756,18 @@ emit_save_lmf (MonoCompile *cfg, guint8 *code, gint32 lmf_offset, gboolean *args
                /* Set new lmf */
                amd64_lea_membase (code, AMD64_R11, cfg->frame_reg, lmf_offset);
                amd64_mov_membase_reg (code, AMD64_RAX, 0, AMD64_R11, sizeof(gpointer));
+#else
+               /* Already handled by the MONO_ARCH_ENABLE_LMF_IR code in method-to-ir.c */
+               /* FIXME: Use this on win32 as well */
+               return code;
+#endif
        }
 
        return code;
 }
 
 /*
- * emit_save_lmf:
+ * emit_restore_lmf:
  *
  *   Emit code to pop an LMF structure from the LMF stack.
  */
@@ -3809,15 +3784,30 @@ emit_restore_lmf (MonoCompile *cfg, guint8 *code, gint32 lmf_offset)
                x86_prefix (code, X86_FS_PREFIX);
                amd64_mov_mem_reg (code, lmf_tls_offset, AMD64_R11, 8);
        } else {
+#ifdef HOST_WIN32
                /* Restore previous lmf */
                amd64_mov_reg_membase (code, AMD64_RCX, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), sizeof(gpointer));
                amd64_mov_reg_membase (code, AMD64_R11, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), sizeof(gpointer));
                amd64_mov_membase_reg (code, AMD64_R11, 0, AMD64_RCX, sizeof(gpointer));
+#else
+               /* Already done in IR */
+               return code;
+#endif
        }
 
        return code;
 }
 
+gboolean
+mono_arch_enable_lmf_ir (MonoCompile *cfg)
+{
+#if !defined(TARGET_WIN32) && !defined(MONO_ARCH_ENABLE_MONO_LMF_VAR)
+       return TRUE;
+#else
+       return FALSE;
+#endif
+}
+
 #define REAL_PRINT_REG(text,reg) \
 mono_assert (reg >= 0); \
 amd64_push_reg (code, AMD64_RAX); \
@@ -3838,16 +3828,6 @@ amd64_pop_reg (code, AMD64_RAX);
 #define bb_is_loop_start(bb) ((bb)->loop_body_start && (bb)->nesting)
 
 #ifndef DISABLE_JIT
-
-#if defined(__native_client__) || defined(__native_client_codegen__)
-void mono_nacl_gc()
-{
-#ifdef __native_client_gc__
-       __nacl_suspend_thread_if_needed();
-#endif
-}
-#endif
-
 void
 mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 {
@@ -4087,6 +4067,12 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        amd64_alu_reg_reg (code, X86_CMP, ins->sreg1, ins->sreg2);
                        break;
                case OP_COMPARE_IMM:
+#if defined(__mono_ilp32__)
+                        /* Comparison of pointer immediates should be 4 bytes to avoid sign-extend problems */
+                       g_assert (amd64_is_imm32 (ins->inst_imm));
+                       amd64_alu_reg_imm_size (code, X86_CMP, ins->sreg1, ins->inst_imm, 4);
+                       break;
+#endif
                case OP_LCOMPARE_IMM:
                        g_assert (amd64_is_imm32 (ins->inst_imm));
                        amd64_alu_reg_imm (code, X86_CMP, ins->sreg1, ins->inst_imm);
@@ -4308,6 +4294,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                }
                case OP_ADDCC:
+               case OP_LADDCC:
                case OP_LADD:
                        amd64_alu_reg_reg (code, X86_ADD, ins->sreg1, ins->sreg2);
                        break;
@@ -4324,6 +4311,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        amd64_alu_reg_imm (code, X86_ADC, ins->dreg, ins->inst_imm);
                        break;
                case OP_SUBCC:
+               case OP_LSUBCC:
                case OP_LSUB:
                        amd64_alu_reg_reg (code, X86_SUB, ins->sreg1, ins->sreg2);
                        break;
@@ -4415,6 +4403,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                }
                case OP_LDIV:
                case OP_LREM:
+#if defined( __native_client_codegen__ )
+                       amd64_alu_reg_imm (code, X86_CMP, ins->sreg2, 0);
+                       EMIT_COND_SYSTEM_EXCEPTION (X86_CC_EQ, TRUE, "DivideByZeroException");
+#endif
                        /* Regalloc magic makes the div/rem cases the same */
                        if (ins->sreg2 == AMD64_RDX) {
                                amd64_mov_membase_reg (code, AMD64_RSP, -8, AMD64_RDX, 8);
@@ -4427,6 +4419,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                case OP_LDIV_UN:
                case OP_LREM_UN:
+#if defined( __native_client_codegen__ )
+                       amd64_alu_reg_imm (code, X86_CMP, ins->sreg2, 0);
+                       EMIT_COND_SYSTEM_EXCEPTION (X86_CC_EQ, TRUE, "DivideByZeroException");
+#endif
                        if (ins->sreg2 == AMD64_RDX) {
                                amd64_mov_membase_reg (code, AMD64_RSP, -8, AMD64_RDX, 8);
                                amd64_alu_reg_reg (code, X86_XOR, AMD64_RDX, AMD64_RDX);
@@ -4438,6 +4434,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                case OP_IDIV:
                case OP_IREM:
+#if defined( __native_client_codegen__ )
+                       amd64_alu_reg_imm (code, X86_CMP, ins->sreg2, 0);
+                       EMIT_COND_SYSTEM_EXCEPTION (X86_CC_EQ, TRUE, "DivideByZeroException");
+#endif
                        if (ins->sreg2 == AMD64_RDX) {
                                amd64_mov_membase_reg (code, AMD64_RSP, -8, AMD64_RDX, 8);
                                amd64_cdq_size (code, 4);
@@ -4449,6 +4449,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                case OP_IDIV_UN:
                case OP_IREM_UN:
+#if defined( __native_client_codegen__ )
+                       amd64_alu_reg_imm_size (code, X86_CMP, ins->sreg2, 0, 4);
+                       EMIT_COND_SYSTEM_EXCEPTION (X86_CC_EQ, TRUE, "DivideByZeroException");
+#endif
                        if (ins->sreg2 == AMD64_RDX) {
                                amd64_mov_membase_reg (code, AMD64_RSP, -8, AMD64_RDX, 8);
                                amd64_alu_reg_reg (code, X86_XOR, AMD64_RDX, AMD64_RDX);
@@ -4797,7 +4801,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        }
 
                        offset = code - cfg->native_code;
-                       mono_add_patch_info (cfg, code - cfg->native_code, MONO_PATCH_INFO_METHOD_JUMP, ins->inst_p0);
+                       mono_add_patch_info (cfg, code - cfg->native_code, MONO_PATCH_INFO_METHOD_JUMP, call->method);
                        if (cfg->compile_aot)
                                amd64_mov_reg_membase (code, AMD64_R11, AMD64_RIP, 0, 8);
                        else
@@ -4950,7 +4954,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                }
                case OP_AMD64_SAVE_SP_TO_LMF: {
-                       MonoInst *lmf_var = cfg->arch.lmf_var;
+                       MonoInst *lmf_var = cfg->lmf_var;
                        amd64_mov_membase_reg (code, cfg->frame_reg, lmf_var->inst_offset + G_STRUCT_OFFSET (MonoLMF, rsp), AMD64_RSP, 8);
                        break;
                }
@@ -5571,6 +5575,20 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        code = mono_amd64_emit_tls_get (code, ins->dreg, ins->inst_offset);
                        break;
                }
+               case OP_TLS_GET_REG:
+#ifdef TARGET_OSX
+                       // FIXME: tls_gs_offset can change too, do these when calculating the tls offset
+                       if (ins->dreg != ins->sreg1)
+                               amd64_mov_reg_reg (code, ins->dreg, ins->sreg1, sizeof (gpointer));
+                       amd64_shift_reg_imm (code, X86_SHL, ins->dreg, 3);
+                       if (tls_gs_offset)
+                               amd64_alu_reg_imm (code, X86_ADD, ins->dreg, tls_gs_offset);
+                       x86_prefix (code, X86_GS_PREFIX);
+                       amd64_mov_reg_membase (code, ins->dreg, ins->dreg, 0, sizeof (gpointer));
+#else
+                       g_assert_not_reached ();
+#endif
+                       break;
                case OP_MEMORY_BARRIER: {
                        switch (ins->backend.memory_barrier_kind) {
                        case StoreLoadBarrier:
@@ -6394,8 +6412,18 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                }
                case OP_NACL_GC_SAFE_POINT: {
-#if defined(__native_client_codegen__)
-                       code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, (gpointer)mono_nacl_gc, TRUE);
+#if defined(__native_client_codegen__) && defined(__native_client_gc__)
+                       if (cfg->compile_aot)
+                               code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, (gpointer)mono_nacl_gc, TRUE);
+                       else {
+                               guint8 *br [1];
+
+                               amd64_mov_reg_imm_size (code, AMD64_R11, (gpointer)&__nacl_thread_suspension_needed, 4);
+                               amd64_test_membase_imm_size (code, AMD64_R11, 0, 0xFFFFFFFF, 4);
+                               br[0] = code; x86_branch8 (code, X86_CC_EQ, 0, FALSE);
+                               code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, (gpointer)mono_nacl_gc, TRUE);
+                               amd64_patch (br[0], code);
+                       }
 #endif
                        break;
                }
@@ -6545,7 +6573,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        int alloc_size, pos, i, cfa_offset, quad, max_epilog_size;
        guint8 *code;
        CallInfo *cinfo;
-       MonoInst *lmf_var = cfg->arch.lmf_var;
+       MonoInst *lmf_var = cfg->lmf_var;
        gboolean args_clobbered = FALSE;
        gboolean trace = FALSE;
 #ifdef __native_client_codegen__
@@ -7109,7 +7137,7 @@ mono_arch_emit_epilog (MonoCompile *cfg)
        guint8 *code;
        int max_epilog_size;
        CallInfo *cinfo;
-       gint32 lmf_offset = cfg->arch.lmf_var ? ((MonoInst*)cfg->arch.lmf_var)->inst_offset : -1;
+       gint32 lmf_offset = cfg->lmf_var ? ((MonoInst*)cfg->lmf_var)->inst_offset : -1;
        
        max_epilog_size = get_max_epilog_size (cfg);
 
@@ -8127,7 +8155,7 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
                        if (item->check_target_idx || fail_case) {
                                if (!item->compare_done || fail_case) {
                                        if (amd64_is_imm32 (item->key))
-                                               amd64_alu_reg_imm (code, X86_CMP, MONO_ARCH_IMT_REG, (guint32)(gssize)item->key);
+                                               amd64_alu_reg_imm_size (code, X86_CMP, MONO_ARCH_IMT_REG, (guint32)(gssize)item->key, sizeof(gpointer));
                                        else {
                                                amd64_mov_reg_imm (code, MONO_ARCH_IMT_SCRATCH_REG, item->key);
                                                amd64_alu_reg_reg (code, X86_CMP, MONO_ARCH_IMT_REG, MONO_ARCH_IMT_SCRATCH_REG);
@@ -8153,7 +8181,7 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
                                /* enable the commented code to assert on wrong method */
 #if 0
                                if (amd64_is_imm32 (item->key))
-                                       amd64_alu_reg_imm (code, X86_CMP, MONO_ARCH_IMT_REG, (guint32)(gssize)item->key);
+                                       amd64_alu_reg_imm_size (code, X86_CMP, MONO_ARCH_IMT_REG, (guint32)(gssize)item->key, sizeof(gpointer));
                                else {
                                        amd64_mov_reg_imm (code, MONO_ARCH_IMT_SCRATCH_REG, item->key);
                                        amd64_alu_reg_reg (code, X86_CMP, MONO_ARCH_IMT_REG, MONO_ARCH_IMT_SCRATCH_REG);
@@ -8178,7 +8206,7 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
                        }
                } else {
                        if (amd64_is_imm32 (item->key))
-                               amd64_alu_reg_imm (code, X86_CMP, MONO_ARCH_IMT_REG, (guint32)(gssize)item->key);
+                               amd64_alu_reg_imm_size (code, X86_CMP, MONO_ARCH_IMT_REG, (guint32)(gssize)item->key, sizeof (gpointer));
                        else {
                                amd64_mov_reg_imm (code, MONO_ARCH_IMT_SCRATCH_REG, item->key);
                                amd64_alu_reg_reg (code, X86_CMP, MONO_ARCH_IMT_REG, MONO_ARCH_IMT_SCRATCH_REG);
index 84e6bfd0c992773d57e708c9b4a37078d4db6b66..f9a19c6779121a18abaf42481673e8149b19e62a 100644 (file)
 /* image-writer.c doesn't happen                       */
 #define kNaClLengthOfCallImm kNaClAlignmentAMD64
 
-int is_nacl_call_reg_sequence(guint8* code);
+int is_nacl_call_reg_sequence (guint8* code);
+void amd64_nacl_clear_legacy_prefix_tag ();
+void amd64_nacl_tag_legacy_prefix (guint8* code);
+void amd64_nacl_tag_rex (guint8* code);
+guint8* amd64_nacl_get_legacy_prefix_tag ();
+guint8* amd64_nacl_get_rex_tag ();
+void amd64_nacl_instruction_pre ();
+void amd64_nacl_instruction_post (guint8 **start, guint8 **end);
+void amd64_nacl_membase_handler (guint8** code, gint8 basereg, gint32 offset, gint8 dreg);
 #endif
 
 #ifdef HOST_WIN32
@@ -195,7 +203,6 @@ typedef struct MonoCompileArch {
 #endif
        gpointer seq_point_info_var;
        gpointer ss_trigger_page_var;
-       gpointer lmf_var;
 } MonoCompileArch;
 
 #define MONO_CONTEXT_SET_LLVM_EXC_REG(ctx, exc) do { (ctx)->rax = (gsize)exc; } while (0)
@@ -388,6 +395,11 @@ typedef struct MonoCompileArch {
 #define MONO_ARCH_HAVE_CONTEXT_SET_INT_REG 1
 #define MONO_ARCH_HAVE_SETUP_ASYNC_CALLBACK 1
 #define MONO_ARCH_HAVE_CREATE_LLVM_NATIVE_THUNK 1
+#define MONO_ARCH_ENABLE_LMF_IR 1
+
+#ifdef TARGET_OSX
+#define MONO_ARCH_HAVE_TLS_GET_REG 1
+#endif
 
 gboolean
 mono_amd64_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig) MONO_INTERNAL;
index d47bcb18a73951c7dcd947c4efb6b33c2dd6b96b..a005fc98ad4eadfbee8b53847b24939e41ef6718 100644 (file)
@@ -13,7 +13,7 @@
 # if defined(__s390x__)
 #  include "mini-s390x.h"
 # else
-#  include "mini-s390.h"
+#error "s390 is no longer supported."
 # endif
 #elif defined(__ia64__)
 #include "mini-ia64.h"
index eabff5c1c5c98ef4aa4d5404ed65e2ea73374ee2..4445fa0dd44c5bbc4abdc527e00490a523adf87b 100644 (file)
@@ -15,6 +15,7 @@
 #include <mono/metadata/appdomain.h>
 #include <mono/metadata/debug-helpers.h>
 #include <mono/utils/mono-mmap.h>
+#include <mono/utils/mono-hwcap-arm.h>
 
 #include "mini-arm.h"
 #include "cpu-arm.h"
 #include "ir-emit.h"
 #include "debugger-agent.h"
 #include "mini-gc.h"
-#include "mono/arch/arm/arm-fpa-codegen.h"
 #include "mono/arch/arm/arm-vfp-codegen.h"
 
-#if defined(__ARM_EABI__) && defined(__linux__) && !defined(PLATFORM_ANDROID)
-#define HAVE_AEABI_READ_TP 1
-#endif
-
-#ifdef ARM_FPU_VFP_HARD
-#define ARM_FPU_VFP 1
+/* Sanity check: This makes no sense */
+#if defined(ARM_FPU_NONE) && (defined(ARM_FPU_VFP) || defined(ARM_FPU_VFP_HARD))
+#error "ARM_FPU_NONE is defined while one of ARM_FPU_VFP/ARM_FPU_VFP_HARD is defined"
 #endif
 
-#ifdef ARM_FPU_FPA
-#define IS_FPA 1
+#if defined(MONO_ARCH_SOFT_FLOAT_FALLBACK)
+#define IS_SOFT_FLOAT (mono_arch_is_soft_float ())
+#define IS_VFP (!mono_arch_is_soft_float ())
 #else
-#define IS_FPA 0
+#define IS_SOFT_FLOAT (FALSE)
+#define IS_VFP (TRUE)
 #endif
 
-#ifdef ARM_FPU_VFP
-#define IS_VFP 1
-#else
-#define IS_VFP 0
+#if defined(__ARM_EABI__) && defined(__linux__) && !defined(PLATFORM_ANDROID) && !defined(__native_client__)
+#define HAVE_AEABI_READ_TP 1
 #endif
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-#define IS_SOFT_FLOAT 1
-#else
-#define IS_SOFT_FLOAT 0
-#endif
+#ifdef __native_client_codegen__
+const guint kNaClAlignment = kNaClAlignmentARM;
+const guint kNaClAlignmentMask = kNaClAlignmentMaskARM;
+gint8 nacl_align_byte = -1; /* 0xff */
+
+guint8 *
+mono_arch_nacl_pad (guint8 *code, int pad)
+{
+  /* Not yet properly implemented. */
+  g_assert_not_reached ();
+  return code;
+}
+
+guint8 *
+mono_arch_nacl_skip_nops (guint8 *code)
+{
+  /* Not yet properly implemented. */
+  g_assert_not_reached ();
+  return code;
+}
+
+#endif /* __native_client_codegen__ */
 
 #define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
 
@@ -65,19 +79,17 @@ static gint lmf_addr_tls_offset = -1;
 #define mono_mini_arch_unlock() LeaveCriticalSection (&mini_arch_mutex)
 static CRITICAL_SECTION mini_arch_mutex;
 
-static int v5_supported = 0;
-static int v6_supported = 0;
-static int v7_supported = 0;
-static int thumb_supported = 0;
+static gboolean v5_supported = FALSE;
+static gboolean v6_supported = FALSE;
+static gboolean v7_supported = FALSE;
+static gboolean v7s_supported = FALSE;
+static gboolean thumb_supported = FALSE;
+static gboolean thumb2_supported = FALSE;
 /*
  * Whenever to use the ARM EABI
  */
-static int eabi_supported = 0;
+static gboolean eabi_supported = FALSE;
 
-/*
- * Whenever we are on arm/darwin aka the iphone.
- */
-static int darwin = 0;
 /* 
  * Whenever to use the iphone ABI extensions:
  * http://developer.apple.com/library/ios/documentation/Xcode/Conceptual/iPhoneOSABIReference/index.html
@@ -85,7 +97,7 @@ static int darwin = 0;
  * This is required for debugging/profiling tools to work, but it has some overhead so it should
  * only be turned on in debug builds.
  */
-static int iphone_abi = 0;
+static gboolean iphone_abi = FALSE;
 
 /*
  * The FPU we are generating code for. This is NOT runtime configurable right now,
@@ -128,7 +140,7 @@ typedef struct {
  * 3) VFP: the new and actually sensible and useful FP support. Implemented
  *    in HW or kernel-emulated, requires new tools. I think this is what symbian uses.
  *
- * The plan is to write the FPA support first. softfloat can be tested in a chroot.
+ * We do not care about FPA. We will support soft float and VFP.
  */
 int mono_exc_esp_offset = 0;
 
@@ -198,8 +210,8 @@ mono_arch_fregname (int reg)
        return "unknown";
 }
 
-#ifndef DISABLE_JIT
 
+#ifndef DISABLE_JIT
 static guint8*
 emit_big_add (guint8 *code, int dreg, int sreg, int imm)
 {
@@ -350,10 +362,7 @@ emit_move_return_value (MonoCompile *cfg, MonoInst *ins, guint8 *code)
        case OP_FCALL:
        case OP_FCALL_REG:
        case OP_FCALL_MEMBASE:
-               if (IS_FPA) {
-                       if (ins->dreg != ARM_FPA_F0)
-                               ARM_FPA_MVFD (code, ins->dreg, ARM_FPA_F0);
-               } else if (IS_VFP) {
+               if (IS_VFP) {
                        if (((MonoCallInst*)ins)->signature->ret->type == MONO_TYPE_R4) {
                                ARM_FMSR (code, ins->dreg, ARMREG_R0);
                                ARM_CVTS (code, ins->dreg, ins->dreg);
@@ -679,13 +688,10 @@ mono_arch_get_this_arg_from_call (mgreg_t *regs, guint8 *code)
 void
 mono_arch_cpu_init (void)
 {
-#if defined(__ARM_EABI__)
-       eabi_supported = TRUE;
-#endif
-#if defined(__APPLE__) && defined(MONO_CROSS_COMPILE)
-               i8_align = 4;
+#if defined(__APPLE__)
+       i8_align = 4;
 #else
-               i8_align = __alignof__ (gint64);
+       i8_align = __alignof__ (gint64);
 #endif
 }
 
@@ -761,12 +767,17 @@ create_function_wrapper (gpointer function)
 void
 mono_arch_init (void)
 {
-       InitializeCriticalSection (&mini_arch_mutex);
+       const char *cpu_arch;
 
+       InitializeCriticalSection (&mini_arch_mutex);
+#ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
        if (mini_get_debug_options ()->soft_breakpoints) {
                single_step_func_wrapper = create_function_wrapper (debugger_agent_single_step_from_context);
                breakpoint_func_wrapper = create_function_wrapper (debugger_agent_breakpoint_from_context);
        } else {
+#else
+       {
+#endif
                ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
                bp_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
                mono_mprotect (bp_trigger_page, mono_pagesize (), 0);
@@ -779,15 +790,55 @@ mono_arch_init (void)
        mono_aot_register_jit_icall ("mono_arm_start_gsharedvt_call", mono_arm_start_gsharedvt_call);
 #endif
 
-#ifdef ARM_FPU_FPA
-       arm_fpu = MONO_ARM_FPU_FPA;
-#elif defined(ARM_FPU_VFP_HARD)
+#if defined(__ARM_EABI__)
+       eabi_supported = TRUE;
+#endif
+
+#if defined(ARM_FPU_VFP_HARD)
        arm_fpu = MONO_ARM_FPU_VFP_HARD;
-#elif defined(ARM_FPU_VFP)
+#else
        arm_fpu = MONO_ARM_FPU_VFP;
+
+#if defined(ARM_FPU_NONE) && !defined(__APPLE__)
+       /* If we're compiling with a soft float fallback and it
+          turns out that no VFP unit is available, we need to
+          switch to soft float. We don't do this for iOS, since
+          iOS devices always have a VFP unit. */
+       if (!mono_hwcap_arm_has_vfp)
+               arm_fpu = MONO_ARM_FPU_NONE;
+#endif
+#endif
+
+       v5_supported = mono_hwcap_arm_is_v5;
+       v6_supported = mono_hwcap_arm_is_v6;
+       v7_supported = mono_hwcap_arm_is_v7;
+       v7s_supported = mono_hwcap_arm_is_v7s;
+
+#if defined(__APPLE__)
+       /* iOS is special-cased here because we don't yet
+          have a way to properly detect CPU features on it. */
+       thumb_supported = TRUE;
+       iphone_abi = TRUE;
 #else
-       arm_fpu = MONO_ARM_FPU_NONE;
+       thumb_supported = mono_hwcap_arm_has_thumb;
+       thumb2_supported = mono_hwcap_arm_has_thumb2;
 #endif
+
+       /* Format: armv(5|6|7[s])[-thumb[2]] */
+       cpu_arch = getenv ("MONO_CPU_ARCH");
+
+       /* Do this here so it overrides any detection. */
+       if (cpu_arch) {
+               if (strncmp (cpu_arch, "armv", 4) == 0) {
+                       v5_supported = cpu_arch [4] >= '5';
+                       v6_supported = cpu_arch [4] >= '6';
+                       v7_supported = cpu_arch [4] >= '7';
+                       v7s_supported = strncmp (cpu_arch, "armv7s", 6) == 0;
+               }
+
+               thumb_supported = strstr (cpu_arch, "thumb") != NULL;
+               thumb2_supported = strstr (cpu_arch, "thumb2") != NULL;
+       }
 }
 
 /*
@@ -804,56 +855,9 @@ mono_arch_cleanup (void)
 guint32
 mono_arch_cpu_optimizations (guint32 *exclude_mask)
 {
-       guint32 opts = 0;
-       const char *cpu_arch = getenv ("MONO_CPU_ARCH");
-       if (cpu_arch != NULL) {
-               thumb_supported = strstr (cpu_arch, "thumb") != NULL;
-               if (strncmp (cpu_arch, "armv", 4) == 0) {
-                       v5_supported = cpu_arch [4] >= '5';
-                       v6_supported = cpu_arch [4] >= '6';
-                       v7_supported = cpu_arch [4] >= '7';
-               }
-       } else {
-#if __APPLE__
-       thumb_supported = TRUE;
-       v5_supported = TRUE;
-       darwin = TRUE;
-       iphone_abi = TRUE;
-#else
-       char buf [512];
-       char *line;
-       FILE *file = fopen ("/proc/cpuinfo", "r");
-       if (file) {
-               while ((line = fgets (buf, 512, file))) {
-                       if (strncmp (line, "Processor", 9) == 0) {
-                               char *ver = strstr (line, "(v");
-                               if (ver && (ver [2] == '5' || ver [2] == '6' || ver [2] == '7'))
-                                       v5_supported = TRUE;
-                               if (ver && (ver [2] == '6' || ver [2] == '7'))
-                                       v6_supported = TRUE;
-                               if (ver && (ver [2] == '7'))
-                                       v7_supported = TRUE;
-                               continue;
-                       }
-                       if (strncmp (line, "Features", 8) == 0) {
-                               char *th = strstr (line, "thumb");
-                               if (th) {
-                                       thumb_supported = TRUE;
-                                       if (v5_supported)
-                                               break;
-                               }
-                               continue;
-                       }
-               }
-               fclose (file);
-               /*printf ("features: v5: %d, thumb: %d\n", v5_supported, thumb_supported);*/
-       }
-#endif
-       }
-
        /* no arm-specific optimizations yet */
        *exclude_mask = 0;
-       return opts;
+       return 0;
 }
 
 /*
@@ -872,6 +876,31 @@ mono_arch_cpu_enumerate_simd_versions (void)
 
 #ifndef DISABLE_JIT
 
+gboolean
+mono_arch_opcode_needs_emulation (MonoCompile *cfg, int opcode)
+{
+       if (v7s_supported) {
+               switch (opcode) {
+               case OP_IDIV:
+               case OP_IREM:
+               case OP_IDIV_UN:
+               case OP_IREM_UN:
+                       return FALSE;
+               default:
+                       break;
+               }
+       }
+       return TRUE;
+}
+
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
+gboolean
+mono_arch_is_soft_float (void)
+{
+       return arm_fpu == MONO_ARM_FPU_NONE;
+}
+#endif
+
 static gboolean
 is_regsize_var (MonoGenericSharingContext *gsctx, MonoType *t) {
        if (t->byref)
@@ -951,7 +980,7 @@ mono_arch_get_global_int_regs (MonoCompile *cfg)
        regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_V1));
        regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_V2));
        regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_V3));
-       if (darwin)
+       if (iphone_abi)
                /* V4=R7 is used as a frame pointer, but V7=R10 is preserved */
                regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_V7));
        else
@@ -988,6 +1017,11 @@ mono_arch_regalloc_cost (MonoCompile *cfg, MonoMethodVar *vmv)
 void
 mono_arch_flush_icache (guint8 *code, gint size)
 {
+#if defined(__native_client__)
+  // For Native Client we don't have to flush i-cache here,
+  // as it's being done by dyncode interface.
+#else
+
 #ifdef MONO_CROSS_COMPILE
 #elif __APPLE__
        sys_icache_invalidate (code, size);
@@ -1014,6 +1048,7 @@ mono_arch_flush_icache (guint8 *code, gint size)
                        : "r" (code), "r" (code + size), "r" (0)
                        : "r0", "r1", "r3" );
 #endif
+#endif /* !__native_client__ */
 }
 
 typedef enum {
@@ -1024,7 +1059,11 @@ typedef enum {
        RegTypeBaseGen,
        RegTypeFP,
        RegTypeStructByVal,
-       RegTypeStructByAddr
+       RegTypeStructByAddr,
+       /* gsharedvt argument passed by addr in greg */
+       RegTypeGSharedVtInReg,
+       /* gsharedvt argument passed by addr on stack */
+       RegTypeGSharedVtOnStack,
 } ArgStorage;
 
 typedef struct {
@@ -1129,7 +1168,6 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
        cinfo->nargs = n;
        gr = ARMREG_R0;
 
-       /* FIXME: handle returning a struct */
        t = mini_type_get_underlying_type (gsctx, sig->ret);
        if (MONO_TYPE_ISSTRUCT (t)) {
                guint32 align;
@@ -1139,6 +1177,8 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                } else {
                        cinfo->vtype_retaddr = TRUE;
                }
+       } else if (!(t->type == MONO_TYPE_GENERICINST && !mono_type_generic_inst_is_valuetype (t)) && mini_is_gsharedvt_type_gsctx (gsctx, t)) {
+               cinfo->vtype_retaddr = TRUE;
        }
 
        pstart = 0;
@@ -1173,6 +1213,8 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
 
        DEBUG(printf("params: %d\n", sig->param_count));
        for (i = pstart; i < sig->param_count; ++i) {
+               ArgInfo *ainfo = &cinfo->args [n];
+
                if ((sig->call_convention == MONO_CALL_VARARG) && (i == sig->sentinelpos)) {
                        /* Prevent implicit arguments and sig_cookie from
                           being passed in registers */
@@ -1183,7 +1225,7 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                DEBUG(printf("param %d: ", i));
                if (sig->params [i]->byref) {
                         DEBUG(printf("byref\n"));
-                       add_general (&gr, &stack_size, cinfo->args + n, TRUE);
+                       add_general (&gr, &stack_size, ainfo, TRUE);
                        n++;
                        continue;
                }
@@ -1193,20 +1235,20 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                case MONO_TYPE_I1:
                case MONO_TYPE_U1:
                        cinfo->args [n].size = 1;
-                       add_general (&gr, &stack_size, cinfo->args + n, TRUE);
+                       add_general (&gr, &stack_size, ainfo, TRUE);
                        n++;
                        break;
                case MONO_TYPE_CHAR:
                case MONO_TYPE_I2:
                case MONO_TYPE_U2:
                        cinfo->args [n].size = 2;
-                       add_general (&gr, &stack_size, cinfo->args + n, TRUE);
+                       add_general (&gr, &stack_size, ainfo, TRUE);
                        n++;
                        break;
                case MONO_TYPE_I4:
                case MONO_TYPE_U4:
                        cinfo->args [n].size = 4;
-                       add_general (&gr, &stack_size, cinfo->args + n, TRUE);
+                       add_general (&gr, &stack_size, ainfo, TRUE);
                        n++;
                        break;
                case MONO_TYPE_I:
@@ -1220,13 +1262,30 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                case MONO_TYPE_ARRAY:
                case MONO_TYPE_R4:
                        cinfo->args [n].size = sizeof (gpointer);
-                       add_general (&gr, &stack_size, cinfo->args + n, TRUE);
+                       add_general (&gr, &stack_size, ainfo, TRUE);
                        n++;
                        break;
                case MONO_TYPE_GENERICINST:
                        if (!mono_type_generic_inst_is_valuetype (simpletype)) {
                                cinfo->args [n].size = sizeof (gpointer);
-                               add_general (&gr, &stack_size, cinfo->args + n, TRUE);
+                               add_general (&gr, &stack_size, ainfo, TRUE);
+                               n++;
+                               break;
+                       }
+                       if (mini_is_gsharedvt_type_gsctx (gsctx, simpletype)) {
+                               /* gsharedvt arguments are passed by ref */
+                               g_assert (mini_is_gsharedvt_type_gsctx (gsctx, simpletype));
+                               add_general (&gr, &stack_size, ainfo, TRUE);
+                               switch (ainfo->storage) {
+                               case RegTypeGeneral:
+                                       ainfo->storage = RegTypeGSharedVtInReg;
+                                       break;
+                               case RegTypeBase:
+                                       ainfo->storage = RegTypeGSharedVtOnStack;
+                                       break;
+                               default:
+                                       g_assert_not_reached ();
+                               }
                                n++;
                                break;
                        }
@@ -1254,27 +1313,27 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                        align_size += (sizeof (gpointer) - 1);
                        align_size &= ~(sizeof (gpointer) - 1);
                        nwords = (align_size + sizeof (gpointer) -1 ) / sizeof (gpointer);
-                       cinfo->args [n].storage = RegTypeStructByVal;
-                       cinfo->args [n].struct_size = size;
+                       ainfo->storage = RegTypeStructByVal;
+                       ainfo->struct_size = size;
                        /* FIXME: align stack_size if needed */
                        if (eabi_supported) {
                                if (align >= 8 && (gr & 1))
                                        gr ++;
                        }
                        if (gr > ARMREG_R3) {
-                               cinfo->args [n].size = 0;
-                               cinfo->args [n].vtsize = nwords;
+                               ainfo->size = 0;
+                               ainfo->vtsize = nwords;
                        } else {
                                int rest = ARMREG_R3 - gr + 1;
                                int n_in_regs = rest >= nwords? nwords: rest;
 
-                               cinfo->args [n].size = n_in_regs;
-                               cinfo->args [n].vtsize = nwords - n_in_regs;
-                               cinfo->args [n].reg = gr;
+                               ainfo->size = n_in_regs;
+                               ainfo->vtsize = nwords - n_in_regs;
+                               ainfo->reg = gr;
                                gr += n_in_regs;
                                nwords -= n_in_regs;
                        }
-                       cinfo->args [n].offset = stack_size;
+                       ainfo->offset = stack_size;
                        /*g_print ("offset for arg %d at %d\n", n, stack_size);*/
                        stack_size += nwords * sizeof (gpointer);
                        n++;
@@ -1283,8 +1342,25 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                case MONO_TYPE_U8:
                case MONO_TYPE_I8:
                case MONO_TYPE_R8:
-                       cinfo->args [n].size = 8;
-                       add_general (&gr, &stack_size, cinfo->args + n, FALSE);
+                       ainfo->size = 8;
+                       add_general (&gr, &stack_size, ainfo, FALSE);
+                       n++;
+                       break;
+               case MONO_TYPE_VAR:
+               case MONO_TYPE_MVAR:
+                       /* gsharedvt arguments are passed by ref */
+                       g_assert (mini_is_gsharedvt_type_gsctx (gsctx, simpletype));
+                       add_general (&gr, &stack_size, ainfo, TRUE);
+                       switch (ainfo->storage) {
+                       case RegTypeGeneral:
+                               ainfo->storage = RegTypeGSharedVtInReg;
+                               break;
+                       case RegTypeBase:
+                               ainfo->storage = RegTypeGSharedVtOnStack;
+                               break;
+                       default:
+                               g_assert_not_reached ();
+                       }
                        n++;
                        break;
                default:
@@ -1342,12 +1418,24 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                                cinfo->ret.reg = ARMREG_R0;
                                break;
                        }
+                       // FIXME: Only for variable types
+                       if (mini_is_gsharedvt_type_gsctx (gsctx, simpletype)) {
+                               cinfo->ret.storage = RegTypeStructByAddr;
+                               g_assert (cinfo->vtype_retaddr);
+                               break;
+                       }
                        /* Fall through */
                case MONO_TYPE_VALUETYPE:
                case MONO_TYPE_TYPEDBYREF:
                        if (cinfo->ret.storage != RegTypeStructByVal)
                                cinfo->ret.storage = RegTypeStructByAddr;
                        break;
+               case MONO_TYPE_VAR:
+               case MONO_TYPE_MVAR:
+                       g_assert (mini_is_gsharedvt_type_gsctx (gsctx, simpletype));
+                       cinfo->ret.storage = RegTypeStructByAddr;
+                       g_assert (cinfo->vtype_retaddr);
+                       break;
                case MONO_TYPE_VOID:
                        break;
                default:
@@ -1615,7 +1703,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 
                t = ins->inst_vtype;
                if (cfg->gsharedvt && mini_is_gsharedvt_variable_type (cfg, t))
-                       t = mini_get_gsharedvt_alloc_type_for_type (cfg, t);
+                       continue;
 
                /* inst->backend.is_pinvoke indicates native sized value types, this is used by the
                * pinvoke wrappers when they call functions returning structure */
@@ -1959,6 +2047,8 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
 #endif
                        break;
                case RegTypeStructByVal:
+               case RegTypeGSharedVtInReg:
+               case RegTypeGSharedVtOnStack:
                        MONO_INST_NEW (cfg, ins, OP_OUTARG_VT);
                        ins->opcode = OP_OUTARG_VT;
                        ins->sreg1 = in->dreg;
@@ -2064,6 +2154,17 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
        int struct_size = ainfo->struct_size;
        int i, soffset, dreg, tmpreg;
 
+       if (ainfo->storage == RegTypeGSharedVtInReg) {
+               /* Pass by addr */
+               mono_call_inst_add_outarg_reg (cfg, call, src->dreg, ainfo->reg, FALSE);
+               return;
+       }
+       if (ainfo->storage == RegTypeGSharedVtOnStack) {
+               /* Pass by addr on stack */
+               MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, ARMREG_SP, ainfo->offset, src->dreg);
+               return;
+       }
+
        soffset = 0;
        for (i = 0; i < ainfo->size; ++i) {
                dreg = mono_alloc_ireg (cfg);
@@ -2144,12 +2245,6 @@ mono_arch_emit_setret (MonoCompile *cfg, MonoMethod *method, MonoInst *val)
                                return;
                        }
                        break;
-               case MONO_ARM_FPU_FPA:
-                       if (ret->type == MONO_TYPE_R4 || ret->type == MONO_TYPE_R8) {
-                               MONO_EMIT_NEW_UNALU (cfg, OP_FMOVE, cfg->ret->dreg, val->dreg);
-                               return;
-                       }
-                       break;
                default:
                        g_assert_not_reached ();
                }
@@ -2194,9 +2289,7 @@ dyn_call_supported (CallInfo *cinfo, MonoMethodSignature *sig)
        case RegTypeStructByAddr:
                break;
        case RegTypeFP:
-               if (IS_FPA)
-                       return FALSE;
-               else if (IS_VFP)
+               if (IS_VFP)
                        break;
                else
                        return FALSE;
@@ -2916,6 +3009,16 @@ loop_start:
                                /* ARM sets the C flag to 1 if there was _no_ overflow */
                                ins->next->opcode = OP_COND_EXC_NC;
                        break;
+               case OP_IDIV_IMM:
+               case OP_IDIV_UN_IMM:
+               case OP_IREM_IMM:
+               case OP_IREM_UN_IMM:
+                       ADD_NEW_INS (cfg, temp, OP_ICONST);
+                       temp->inst_c0 = ins->inst_imm;
+                       temp->dreg = mono_alloc_ireg (cfg);
+                       ins->sreg2 = temp->dreg;
+                       ins->opcode = mono_op_imm_to_op (ins->opcode);
+                       break;
                case OP_LOCALLOC_IMM:
                        ADD_NEW_INS (cfg, temp, OP_ICONST);
                        temp->inst_c0 = ins->inst_imm;
@@ -3101,9 +3204,7 @@ static guchar*
 emit_float_to_int (MonoCompile *cfg, guchar *code, int dreg, int sreg, int size, gboolean is_signed)
 {
        /* sreg is a float, dreg is an integer reg  */
-       if (IS_FPA)
-               ARM_FPA_FIXZ (code, dreg, sreg);
-       else if (IS_VFP) {
+       if (IS_VFP) {
                if (is_signed)
                        ARM_TOSIZD (code, ARM_VFP_F0, sreg);
                else
@@ -3939,15 +4040,19 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                ARM_LDR_IMM (code, dreg, info_var->inst_basereg, info_var->inst_offset);
                                /* Add the offset */
                                val = ((offset / 4) * sizeof (guint8*)) + G_STRUCT_OFFSET (SeqPointInfo, bp_addrs);
-                               ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF), 0);
-                               if (val & 0xFF00)
-                                       ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF00) >> 8, 24);
-                               if (val & 0xFF0000)
-                                       ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF0000) >> 16, 16);
-                               g_assert (!(val & 0xFF000000));
                                /* Load the info->bp_addrs [offset], which is either 0 or the address of a trigger page */
-                               ARM_LDR_IMM (code, dreg, dreg, 0);
+                               if (arm_is_imm12 ((int)val)) {
+                                       ARM_LDR_IMM (code, dreg, dreg, val);
+                               } else {
+                                       ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF), 0);
+                                       if (val & 0xFF00)
+                                               ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF00) >> 8, 24);
+                                       if (val & 0xFF0000)
+                                               ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF0000) >> 16, 16);
+                                       g_assert (!(val & 0xFF000000));
 
+                                       ARM_LDR_IMM (code, dreg, dreg, 0);
+                               }
                                /* What is faster, a branch or a load ? */
                                ARM_CMP_REG_IMM (code, dreg, 0, 0);
                                /* The breakpoint instruction */
@@ -4070,12 +4175,25 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ARM_AND_REG_IMM (code, ins->dreg, ins->sreg1, imm8, rot_amount);
                        break;
                case OP_IDIV:
+                       g_assert (v7s_supported);
+                       ARM_SDIV (code, ins->dreg, ins->sreg1, ins->sreg2);
+                       break;
                case OP_IDIV_UN:
-               case OP_DIV_IMM:
+                       g_assert (v7s_supported);
+                       ARM_UDIV (code, ins->dreg, ins->sreg1, ins->sreg2);
+                       break;
                case OP_IREM:
+                       g_assert (v7s_supported);
+                       ARM_SDIV (code, ARMREG_LR, ins->sreg1, ins->sreg2);
+                       ARM_MLS (code, ins->dreg, ARMREG_LR, ins->sreg2, ins->sreg1);
+                       break;
                case OP_IREM_UN:
+                       g_assert (v7s_supported);
+                       ARM_UDIV (code, ARMREG_LR, ins->sreg1, ins->sreg2);
+                       ARM_MLS (code, ins->dreg, ARMREG_LR, ins->sreg2, ins->sreg1);
+                       break;
+               case OP_DIV_IMM:
                case OP_REM_IMM:
-                       /* crappy ARM arch doesn't have a DIV instruction */
                        g_assert_not_reached ();
                case OP_IOR:
                        ARM_ORR_REG_REG (code, ins->dreg, ins->sreg1, ins->sreg2);
@@ -4182,15 +4300,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                }
                case OP_FMOVE:
-                       if (IS_FPA)
-                               ARM_FPA_MVFD (code, ins->dreg, ins->sreg1);
-                       else if (IS_VFP)
+                       if (IS_VFP)
                                ARM_CPYD (code, ins->dreg, ins->sreg1);
                        break;
                case OP_FCONV_TO_R4:
-                       if (IS_FPA)
-                               ARM_FPA_MVFS (code, ins->dreg, ins->sreg1);
-                       else if (IS_VFP) {
+                       if (IS_VFP) {
                                ARM_CVTD (code, ins->dreg, ins->sreg1);
                                ARM_CVTS (code, ins->dreg, ins->dreg);
                        }
@@ -4594,114 +4708,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
 
                /* floating point opcodes */
-#ifdef ARM_FPU_FPA
-               case OP_R8CONST:
-                       if (cfg->compile_aot) {
-                               ARM_FPA_LDFD (code, ins->dreg, ARMREG_PC, 0);
-                               ARM_B (code, 1);
-                               *(guint32*)code = ((guint32*)(ins->inst_p0))[0];
-                               code += 4;
-                               *(guint32*)code = ((guint32*)(ins->inst_p0))[1];
-                               code += 4;
-                       } else {
-                               /* FIXME: we can optimize the imm load by dealing with part of 
-                                * the displacement in LDFD (aligning to 512).
-                                */
-                               code = mono_arm_emit_load_imm (code, ARMREG_LR, (guint32)ins->inst_p0);
-                               ARM_FPA_LDFD (code, ins->dreg, ARMREG_LR, 0);
-                       }
-                       break;
-               case OP_R4CONST:
-                       if (cfg->compile_aot) {
-                               ARM_FPA_LDFS (code, ins->dreg, ARMREG_PC, 0);
-                               ARM_B (code, 0);
-                               *(guint32*)code = ((guint32*)(ins->inst_p0))[0];
-                               code += 4;
-                       } else {
-                               code = mono_arm_emit_load_imm (code, ARMREG_LR, (guint32)ins->inst_p0);
-                               ARM_FPA_LDFS (code, ins->dreg, ARMREG_LR, 0);
-                       }
-                       break;
-               case OP_STORER8_MEMBASE_REG:
-                       /* This is generated by the local regalloc pass which runs after the lowering pass */
-                       if (!arm_is_fpimm8 (ins->inst_offset)) {
-                               code = mono_arm_emit_load_imm (code, ARMREG_LR, ins->inst_offset);
-                               ARM_ADD_REG_REG (code, ARMREG_LR, ARMREG_LR, ins->inst_destbasereg);
-                               ARM_FPA_STFD (code, ins->sreg1, ARMREG_LR, 0);
-                       } else {
-                               ARM_FPA_STFD (code, ins->sreg1, ins->inst_destbasereg, ins->inst_offset);
-                       }
-                       break;
-               case OP_LOADR8_MEMBASE:
-                       /* This is generated by the local regalloc pass which runs after the lowering pass */
-                       if (!arm_is_fpimm8 (ins->inst_offset)) {
-                               code = mono_arm_emit_load_imm (code, ARMREG_LR, ins->inst_offset);
-                               ARM_ADD_REG_REG (code, ARMREG_LR, ARMREG_LR, ins->inst_basereg);
-                               ARM_FPA_LDFD (code, ins->dreg, ARMREG_LR, 0);
-                       } else {
-                               ARM_FPA_LDFD (code, ins->dreg, ins->inst_basereg, ins->inst_offset);
-                       }
-                       break;
-               case OP_STORER4_MEMBASE_REG:
-                       g_assert (arm_is_fpimm8 (ins->inst_offset));
-                       ARM_FPA_STFS (code, ins->sreg1, ins->inst_destbasereg, ins->inst_offset);
-                       break;
-               case OP_LOADR4_MEMBASE:
-                       g_assert (arm_is_fpimm8 (ins->inst_offset));
-                       ARM_FPA_LDFS (code, ins->dreg, ins->inst_basereg, ins->inst_offset);
-                       break;
-               case OP_ICONV_TO_R_UN: {
-                       int tmpreg;
-#ifdef USE_JUMP_TABLES
-                       gpointer *jte = mono_jumptable_add_entries (2);
-#define SKIP_INSTRUCTIONS 5
-#else
-#define SKIP_INSTRUCTIONS 8
-#endif
-                       tmpreg = ins->dreg == 0? 1: 0;
-                       ARM_CMP_REG_IMM8 (code, ins->sreg1, 0);
-                       ARM_FPA_FLTD (code, ins->dreg, ins->sreg1);
-                       ARM_B_COND (code, ARMCOND_GE, SKIP_INSTRUCTIONS);
-                       /* save the temp register */
-                       ARM_SUB_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, 8);
-                       ARM_FPA_STFD (code, tmpreg, ARMREG_SP, 0);
-#ifdef USE_JUMP_TABLES
-                       code = mono_arm_load_jumptable_entry_addr (code, jte, ARMREG_IP);
-                       ARM_FPA_LDFD (code, tmpreg, ARMREG_IP, 0);
-#else
-                       ARM_FPA_LDFD (code, tmpreg, ARMREG_PC, 12);
-#endif
-                       ARM_FPA_ADFD (code, ins->dreg, ins->dreg, tmpreg);
-                       ARM_FPA_LDFD (code, tmpreg, ARMREG_SP, 0);
-                       ARM_ADD_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, 8);
-#ifdef USE_JUMP_TABLES
-                       jte [0] = GUINT_TO_POINTER (0x41f00000);
-                       jte [1] = GUINT_TO_POINTER (0);
-#else
-                       /* skip the constant pool */
-                       ARM_B (code, 8);
-                       code += 4;
-                       *(int*)code = 0x41f00000;
-                       code += 4;
-                       *(int*)code = 0;
-                       code += 4;
-                       /* FIXME: adjust:
-                        * ldfltd  ftemp, [pc, #8] 0x41f00000 0x00000000
-                        * adfltd  fdest, fdest, ftemp
-                        */
-#endif
-#undef SKIP_INSTRUCTIONS
-                       break;
-               }
-               case OP_ICONV_TO_R4:
-                       ARM_FPA_FLTS (code, ins->dreg, ins->sreg1);
-                       break;
-               case OP_ICONV_TO_R8:
-                       ARM_FPA_FLTD (code, ins->dreg, ins->sreg1);
-                       break;
-
-#elif defined(ARM_FPU_VFP)
-
                case OP_R8CONST:
                        if (cfg->compile_aot) {
                                ARM_FLDD (code, ins->dreg, ARMREG_PC, 0);
@@ -4783,9 +4789,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                ARM_FMRRD (code, ARMREG_R0, ARMREG_R1, ins->sreg1);
                        }
                        break;
-
-#endif
-
                case OP_FCONV_TO_I1:
                        code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 1, TRUE);
                        break;
@@ -4847,23 +4850,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                ARM_MOV_REG_REG (code, ins->dreg, ins->sreg1);
                        break;
                }
-#ifdef ARM_FPU_FPA
-               case OP_FADD:
-                       ARM_FPA_ADFD (code, ins->dreg, ins->sreg1, ins->sreg2);
-                       break;
-               case OP_FSUB:
-                       ARM_FPA_SUFD (code, ins->dreg, ins->sreg1, ins->sreg2);
-                       break;          
-               case OP_FMUL:
-                       ARM_FPA_MUFD (code, ins->dreg, ins->sreg1, ins->sreg2);
-                       break;          
-               case OP_FDIV:
-                       ARM_FPA_DVFD (code, ins->dreg, ins->sreg1, ins->sreg2);
-                       break;          
-               case OP_FNEG:
-                       ARM_FPA_MNFD (code, ins->dreg, ins->sreg1);
-                       break;
-#elif defined(ARM_FPU_VFP)
                case OP_FADD:
                        ARM_VFP_ADDD (code, ins->dreg, ins->sreg1, ins->sreg2);
                        break;
@@ -4879,23 +4865,18 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_FNEG:
                        ARM_NEGD (code, ins->dreg, ins->sreg1);
                        break;
-#endif
                case OP_FREM:
                        /* emulated */
                        g_assert_not_reached ();
                        break;
                case OP_FCOMPARE:
-                       if (IS_FPA) {
-                               ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg1, ins->sreg2);
-                       } else if (IS_VFP) {
+                       if (IS_VFP) {
                                ARM_CMPD (code, ins->sreg1, ins->sreg2);
                                ARM_FMSTAT (code);
                        }
                        break;
                case OP_FCEQ:
-                       if (IS_FPA) {
-                               ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg1, ins->sreg2);
-                       } else if (IS_VFP) {
+                       if (IS_VFP) {
                                ARM_CMPD (code, ins->sreg1, ins->sreg2);
                                ARM_FMSTAT (code);
                        }
@@ -4903,9 +4884,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ARM_MOV_REG_IMM8_COND (code, ins->dreg, 1, ARMCOND_EQ);
                        break;
                case OP_FCLT:
-                       if (IS_FPA) {
-                               ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg1, ins->sreg2);
-                       } else {
+                       if (IS_VFP) {
                                ARM_CMPD (code, ins->sreg1, ins->sreg2);
                                ARM_FMSTAT (code);
                        }
@@ -4913,9 +4892,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ARM_MOV_REG_IMM8_COND (code, ins->dreg, 1, ARMCOND_MI);
                        break;
                case OP_FCLT_UN:
-                       if (IS_FPA) {
-                               ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg1, ins->sreg2);
-                       } else if (IS_VFP) {
+                       if (IS_VFP) {
                                ARM_CMPD (code, ins->sreg1, ins->sreg2);
                                ARM_FMSTAT (code);
                        }
@@ -4924,10 +4901,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ARM_MOV_REG_IMM8_COND (code, ins->dreg, 1, ARMCOND_VS);
                        break;
                case OP_FCGT:
-                       /* swapped */
-                       if (IS_FPA) {
-                               ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg2, ins->sreg1);
-                       } else if (IS_VFP) {
+                       if (IS_VFP) {
                                ARM_CMPD (code, ins->sreg2, ins->sreg1);
                                ARM_FMSTAT (code);
                        }
@@ -4935,10 +4909,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ARM_MOV_REG_IMM8_COND (code, ins->dreg, 1, ARMCOND_MI);
                        break;
                case OP_FCGT_UN:
-                       /* swapped */
-                       if (IS_FPA) {
-                               ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg2, ins->sreg1);
-                       } else if (IS_VFP) {
+                       if (IS_VFP) {
                                ARM_CMPD (code, ins->sreg2, ins->sreg1);
                                ARM_FMSTAT (code);
                        }
@@ -4986,10 +4957,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
 
                case OP_CKFINITE: {
-                       if (IS_FPA) {
-                               if (ins->dreg != ins->sreg1)
-                                       ARM_FPA_MVFD (code, ins->dreg, ins->sreg1);
-                       } else if (IS_VFP) {
+                       if (IS_VFP) {
 #ifdef USE_JUMP_TABLES
                                {
                                        gpointer *jte = mono_jumptable_add_entries (2);
@@ -5200,25 +5168,26 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        pos = 0;
        prev_sp_offset = 0;
 
+       if (iphone_abi) {
+               /* 
+                * The iphone uses R7 as the frame pointer, and it points at the saved
+                * r7+lr:
+                *         <lr>
+                * r7 ->   <r7>
+                *         <rest of frame>
+                * We can't use r7 as a frame pointer since it points into the middle of
+                * the frame, so we keep using our own frame pointer.
+                * FIXME: Optimize this.
+                */
+               ARM_PUSH (code, (1 << ARMREG_R7) | (1 << ARMREG_LR));
+               ARM_MOV_REG_REG (code, ARMREG_R7, ARMREG_SP);
+               prev_sp_offset += 8; /* r7 and lr */
+               mono_emit_unwind_op_def_cfa_offset (cfg, code, prev_sp_offset);
+               mono_emit_unwind_op_offset (cfg, code, ARMREG_R7, (- prev_sp_offset) + 0);
+       }
+
        if (!method->save_lmf) {
                if (iphone_abi) {
-                       /* 
-                        * The iphone uses R7 as the frame pointer, and it points at the saved
-                        * r7+lr:
-                        *         <lr>
-                        * r7 ->   <r7>
-                        *         <rest of frame>
-                        * We can't use r7 as a frame pointer since it points into the middle of
-                        * the frame, so we keep using our own frame pointer.
-                        * FIXME: Optimize this.
-                        */
-                       g_assert (darwin);
-                       ARM_PUSH (code, (1 << ARMREG_R7) | (1 << ARMREG_LR));
-                       ARM_MOV_REG_REG (code, ARMREG_R7, ARMREG_SP);
-                       prev_sp_offset += 8; /* r7 and lr */
-                       mono_emit_unwind_op_def_cfa_offset (cfg, code, prev_sp_offset);
-                       mono_emit_unwind_op_offset (cfg, code, ARMREG_R7, (- prev_sp_offset) + 0);
-
                        /* No need to push LR again */
                        if (cfg->used_int_regs)
                                ARM_PUSH (code, cfg->used_int_regs);
@@ -5254,11 +5223,14 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                reg_offset = 0;
                for (i = 0; i < 16; ++i) {
                        if ((i > ARMREG_R3) && (i != ARMREG_SP) && (i != ARMREG_PC)) {
-                               mono_emit_unwind_op_offset (cfg, code, i, (- prev_sp_offset) + reg_offset);
+                               /* The original r7 is saved at the start */
+                               if (!(iphone_abi && i == ARMREG_R7))
+                                       mono_emit_unwind_op_offset (cfg, code, i, (- prev_sp_offset) + reg_offset);
                                reg_offset += 4;
                        }
                }
-               pos += sizeof (MonoLMF) - prev_sp_offset;
+               g_assert (reg_offset == 4 * 10);
+               pos += sizeof (MonoLMF) - (4 * 10);
                lmf_offset = pos;
        }
        alloc_size += pos;
@@ -5371,7 +5343,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                                g_print ("Argument %d assigned to register %s\n", pos, mono_arch_regname (inst->dreg));
                } else {
                        /* the argument should be put on the stack: FIXME handle size != word  */
-                       if (ainfo->storage == RegTypeGeneral || ainfo->storage == RegTypeIRegPair) {
+                       if (ainfo->storage == RegTypeGeneral || ainfo->storage == RegTypeIRegPair || ainfo->storage == RegTypeGSharedVtInReg) {
                                switch (ainfo->size) {
                                case 1:
                                        if (arm_is_imm12 (inst->inst_offset))
@@ -5418,7 +5390,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                                ARM_LDR_IMM (code, ARMREG_LR, ARMREG_SP, (prev_sp_offset + ainfo->offset));
                                ARM_STR_IMM (code, ARMREG_LR, inst->inst_basereg, inst->inst_offset + 4);
                                ARM_STR_IMM (code, ARMREG_R3, inst->inst_basereg, inst->inst_offset);
-                       } else if (ainfo->storage == RegTypeBase) {
+                       } else if (ainfo->storage == RegTypeBase || ainfo->storage == RegTypeGSharedVtOnStack) {
                                if (arm_is_imm12 (prev_sp_offset + ainfo->offset)) {
                                        ARM_LDR_IMM (code, ARMREG_LR, ARMREG_SP, (prev_sp_offset + ainfo->offset));
                                } else {
@@ -5669,10 +5641,19 @@ mono_arch_emit_epilog (MonoCompile *cfg)
                        sp_adj += 4;
                        reg ++;
                }
+               if (iphone_abi)
+                       /* Restored later */
+                       regmask &= ~(1 << ARMREG_PC);
                /* point sp at the registers to restore: 10 is 14 -4, because we skip r0-r3 */
                code = emit_big_add (code, ARMREG_SP, cfg->frame_reg, cfg->stack_usage - lmf_offset + sp_adj);
                /* restore iregs */
                ARM_POP (code, regmask); 
+               if (iphone_abi) {
+                       /* Restore saved r7, restore LR to PC */
+                       /* Skip lr from the lmf */
+                       ARM_ADD_REG_IMM (code, ARMREG_SP, ARMREG_SP, sizeof (gpointer), 0);
+                       ARM_POP (code, (1 << ARMREG_R7) | (1 << ARMREG_PC));
+               }
        } else {
                if ((i = mono_arm_is_rotated_imm8 (cfg->stack_usage, &rot_amount)) >= 0) {
                        ARM_ADD_REG_IMM (code, ARMREG_SP, cfg->frame_reg, i, rot_amount);
@@ -6353,6 +6334,8 @@ mono_arch_get_trampolines (gboolean aot)
        return mono_arm_get_exception_trampolines (aot);
 }
 
+
+#ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
 /*
  * mono_arch_set_breakpoint:
  *
@@ -6539,6 +6522,8 @@ mono_arch_skip_single_step (MonoContext *ctx)
        MONO_CONTEXT_SET_IP (ctx, (guint8*)MONO_CONTEXT_GET_IP (ctx) + 4);
 }
 
+#endif /* MONO_ARCH_SOFT_DEBUG_SUPPORTED */
+
 /*
  * mono_arch_get_seq_point_info:
  *
@@ -6586,16 +6571,29 @@ mono_arch_set_target (char *mtriple)
 {
        /* The GNU target triple format is not very well documented */
        if (strstr (mtriple, "armv7")) {
+               v5_supported = TRUE;
                v6_supported = TRUE;
                v7_supported = TRUE;
        }
        if (strstr (mtriple, "armv6")) {
+               v5_supported = TRUE;
                v6_supported = TRUE;
        }
+       if (strstr (mtriple, "armv7s")) {
+               v7s_supported = TRUE;
+       }
+       if (strstr (mtriple, "thumbv7s")) {
+               v5_supported = TRUE;
+               v6_supported = TRUE;
+               v7_supported = TRUE;
+               v7s_supported = TRUE;
+               thumb_supported = TRUE;
+               thumb2_supported = TRUE;
+       }
        if (strstr (mtriple, "darwin") || strstr (mtriple, "ios")) {
                v5_supported = TRUE;
+               v6_supported = TRUE;
                thumb_supported = TRUE;
-               darwin = TRUE;
                iphone_abi = TRUE;
        }
        if (strstr (mtriple, "gnueabi"))
index fa636f658fa0fd88d1ebb544ec44001b71cca418..913dafc5e0d7480dcd205ad9dd931b965cd5058d 100644 (file)
@@ -9,8 +9,14 @@
 #include <mono/utils/mono-context.h>
 #include <glib.h>
 
-#if defined(ARM_FPU_NONE) || (defined(__ARM_EABI__) && !defined(ARM_FPU_VFP) && !defined(ARM_FPU_VFP_HARD))
-#define MONO_ARCH_SOFT_FLOAT 1
+#ifdef __native_client_codegen__
+#define kNaClAlignmentARM 16
+#define kNaClAlignmentMaskARM (kNaClAlignmentARM - 1)
+#define kNaClLengthOfCallImm 4
+#endif
+
+#if defined(ARM_FPU_NONE)
+#define MONO_ARCH_SOFT_FLOAT_FALLBACK 1
 #endif
 
 #ifdef ARM_FPU_VFP_HARD
 #define ARM_ARCHITECTURE "arm"
 #endif
 
-#if defined(ARM_FPU_FPA)
-#define ARM_FP_MODEL "fpa"
-#elif defined(ARM_FPU_VFP)
+#if defined(ARM_FPU_VFP)
 #define ARM_FP_MODEL "vfp"
 #elif defined(ARM_FPU_NONE)
-#define ARM_FP_MODEL "soft-float"
+#define ARM_FP_MODEL "vfp+fallback"
 #elif defined(ARM_FPU_VFP_HARD)
-#define ARM_FP_MODEL "vfp(hardfp-abi)"
+#define ARM_FP_MODEL "vfp+hard"
 #else
-#error "At least one of ARM_FPU_NONE, ARM_FPU_FPA, ARM_FPU_VFP or ARM_FPU_VFP_HARD must be defined."
+#error "At least one of ARM_FPU_NONE, ARM_FPU_VFP or ARM_FPU_VFP_HARD must be defined."
 #endif
 
 #define MONO_ARCH_ARCHITECTURE ARM_ARCHITECTURE "," ARM_FP_MODEL
 #define MONO_ARCH_CALLEE_REGS ((1<<ARMREG_R0) | (1<<ARMREG_R1) | (1<<ARMREG_R2) | (1<<ARMREG_R3) | (1<<ARMREG_IP))
 #define MONO_ARCH_CALLEE_SAVED_REGS ((1<<ARMREG_V1) | (1<<ARMREG_V2) | (1<<ARMREG_V3) | (1<<ARMREG_V4) | (1<<ARMREG_V5) | (1<<ARMREG_V6) | (1<<ARMREG_V7))
 
-#if defined(ARM_FPU_VFP) || defined(ARM_FPU_VFP_HARD)
 /* Every double precision vfp register, d0/d1 is reserved for a scratch reg */
 #define MONO_ARCH_CALLEE_FREGS 0x55555550
-#else
-#define MONO_ARCH_CALLEE_FREGS 0xf
-#endif
 #define MONO_ARCH_CALLEE_SAVED_FREGS 0
 
 #define MONO_ARCH_USE_FPSTACK FALSE
 
 #define MONO_ARCH_INST_SREG2_MASK(ins) (0)
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-#define MONO_ARCH_INST_FIXED_REG(desc) (((desc) == 'l' || (desc == 'f') || (desc == 'g')) ? ARM_LSW_REG: (((desc) == 'a') ? ARMREG_R0 : -1))
-#define MONO_ARCH_INST_IS_REGPAIR(desc) ((desc) == 'l' || (desc) == 'L' || (desc) == 'f' || (desc) == 'g')
-#define MONO_ARCH_INST_IS_FLOAT(desc) (FALSE)
-#else
-#define MONO_ARCH_INST_FIXED_REG(desc) (((desc) == 'l')? ARM_LSW_REG: (((desc) == 'a') ? ARMREG_R0 : -1))
-#define MONO_ARCH_INST_IS_REGPAIR(desc) (desc == 'l' || desc == 'L')
-#define MONO_ARCH_INST_IS_FLOAT(desc) ((desc == 'f') || (desc == 'g'))
-#endif
-#define MONO_ARCH_INST_REGPAIR_REG2(desc,hreg1) (desc == 'l'  || (desc == 'f') || (desc == 'g')? ARM_MSW_REG : -1)
+#define MONO_ARCH_INST_FIXED_REG(desc) \
+       (mono_arch_is_soft_float () ? \
+       ((desc) == 'l' || (desc) == 'f' || (desc) == 'g' ? ARM_LSW_REG : (desc) == 'a' ? ARMREG_R0 : -1) : \
+       ((desc) == 'l' ? ARM_LSW_REG : (desc) == 'a' ? ARMREG_R0 : -1))
+
+#define MONO_ARCH_INST_IS_REGPAIR(desc) \
+       (mono_arch_is_soft_float () ? \
+       ((desc) == 'l' || (desc) == 'L' || (desc) == 'f' || (desc) == 'g') : \
+       ((desc) == 'l' || (desc) == 'L'))
+
+#define MONO_ARCH_INST_IS_FLOAT(desc) \
+       (mono_arch_is_soft_float () ? \
+       (FALSE) : \
+       ((desc) == 'f' || (desc) == 'g'))
+
+#define MONO_ARCH_INST_REGPAIR_REG2(desc,hreg1) ((desc) == 'l' || (desc) == 'f' || (desc) == 'g' ? ARM_MSW_REG : -1)
 
 #define MONO_ARCH_FRAME_ALIGNMENT 8
 
  * reproduceable results for benchmarks */
 #define MONO_ARCH_CODE_ALIGNMENT 32
 
-
 /* Return value marshalling for calls between gsharedvt and normal code */
 typedef enum {
        GSHAREDVT_RET_NONE = 0,
-       GSHAREDVT_RET_IREGS = 1,
-       GSHAREDVT_RET_I1 = 5,
-       GSHAREDVT_RET_U1 = 6,
-       GSHAREDVT_RET_I2 = 7,
-       GSHAREDVT_RET_U2 = 8
+       GSHAREDVT_RET_IREG = 1,
+       GSHAREDVT_RET_IREGS = 2,
+       GSHAREDVT_RET_I1 = 3,
+       GSHAREDVT_RET_U1 = 4,
+       GSHAREDVT_RET_I2 = 5,
+       GSHAREDVT_RET_U2 = 6
 } GSharedVtRetMarshal;
 
 typedef struct {
@@ -137,13 +143,12 @@ void
 mono_arm_throw_exception_by_token (guint32 type_token, mgreg_t pc, mgreg_t sp, mgreg_t *int_regs, gdouble *fp_regs);
 
 gpointer
-mono_arm_start_gsharedvt_call (GSharedVtCallInfo *info, gpointer *caller, gpointer *callee, gpointer *caller_regs, gpointer *callee_regs, gpointer mrgctx_reg) MONO_INTERNAL;
+mono_arm_start_gsharedvt_call (GSharedVtCallInfo *info, gpointer *caller, gpointer *callee, gpointer mrgctx_reg) MONO_INTERNAL;
 
 typedef enum {
        MONO_ARM_FPU_NONE = 0,
-       MONO_ARM_FPU_FPA = 1,
-       MONO_ARM_FPU_VFP = 2,
-       MONO_ARM_FPU_VFP_HARD = 3
+       MONO_ARM_FPU_VFP = 1,
+       MONO_ARM_FPU_VFP_HARD = 2
 } MonoArmFPU;
 
 /* keep the size of the structure a multiple of 8 */
@@ -188,6 +193,11 @@ typedef struct MonoCompileArch {
 #define ARM_LAST_ARG_REG 3
 
 #define MONO_ARCH_USE_SIGACTION 1
+
+#if defined(__native_client__)
+#undef MONO_ARCH_USE_SIGACTION
+#endif
+
 #define MONO_ARCH_NEED_DIV_CHECK 1
 
 #define MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE
@@ -220,9 +230,16 @@ typedef struct MonoCompileArch {
 #define MONO_ARCH_HAVE_SETUP_RESUME_FROM_SIGNAL_HANDLER_CTX 1
 #define MONO_ARCH_GSHAREDVT_SUPPORTED 1
 #define MONO_ARCH_HAVE_GENERAL_RGCTX_LAZY_FETCH_TRAMPOLINE 1
+#define MONO_ARCH_HAVE_OPCODE_NEEDS_EMULATION 1
+
+#if defined(__native_client__)
+#undef MONO_ARCH_SOFT_DEBUG_SUPPORTED
+#undef MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX
+#undef MONO_ARCH_HAVE_CONTEXT_SET_INT_REG
+#endif
 
 /* Matches the HAVE_AEABI_READ_TP define in mini-arm.c */
-#if defined(__ARM_EABI__) && defined(__linux__) && !defined(TARGET_ANDROID)
+#if defined(__ARM_EABI__) && defined(__linux__) && !defined(TARGET_ANDROID) && !defined(__native_client__)
 #define MONO_ARCH_HAVE_TLS_GET 1
 #endif
 
@@ -274,4 +291,3 @@ mono_arm_load_jumptable_entry (guint8 *code, gpointer *jte, ARMReg reg) MONO_INT
 #endif
 
 #endif /* __MONO_MINI_ARM_H__ */
-
index facd18c2494f911a5b96710d0d7f5ed94a62546a..83057869f3adda11ee34298ea1d3793c30f066ce 100644 (file)
@@ -411,15 +411,21 @@ typedef struct {
 
 #ifndef DISABLE_LOGGING
 
-static void
-print_ji (MonoJumpInfo *ji)
+static const char* const patch_info_str[] = {
+#define PATCH_INFO(a,b) "" #a,
+#include "patch-info.h"
+#undef PATCH_INFO
+};
+
+void
+mono_print_ji (const MonoJumpInfo *ji)
 {
        switch (ji->type) {
        case MONO_PATCH_INFO_RGCTX_FETCH: {
                MonoJumpInfoRgctxEntry *entry = ji->data.rgctx_entry;
 
                printf ("[RGCTX_FETCH ");
-               print_ji (entry->data);
+               mono_print_ji (entry->data);
                printf (" - %s]", mono_rgctx_info_type_to_str (entry->info_type));
                break;
        }
@@ -430,7 +436,7 @@ print_ji (MonoJumpInfo *ji)
                break;
        }
        default:
-               printf ("[%d]", ji->type);
+               printf ("[%s]", patch_info_str [ji->type]);
                break;
        }
 }
@@ -492,6 +498,7 @@ mono_print_ins_index (int i, MonoInst *ins)
                        printf (" R%d", ((MonoInst*)ins->inst_p0)->dreg);
                        break;
                case OP_REGOFFSET:
+               case OP_GSHAREDVT_ARG_REGOFFSET:
                        printf (" + 0x%lx", (long)ins->inst_offset);
                        break;
                default:
@@ -611,7 +618,7 @@ mono_print_ins_index (int i, MonoInst *ins)
                        MonoJumpInfo *ji = (MonoJumpInfo*)call->fptr;
 
                        printf (" ");
-                       print_ji (ji);
+                       mono_print_ji (ji);
                } else if (call->fptr) {
                        MonoJitICallInfo *info = mono_find_jit_icall_by_addr (call->fptr);
                        if (info)
@@ -699,6 +706,12 @@ print_regtrack (RegTrack *t, int num)
        }
 }
 #else
+
+void
+mono_print_ji (const MonoJumpInfo *ji)
+{
+}
+
 void
 mono_print_ins_index (int i, MonoInst *ins)
 {
@@ -808,7 +821,7 @@ get_register_spilling (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst **last, Mo
 
        g_assert (bank < MONO_NUM_REGBANKS);
 
-       DEBUG (printf ("\tstart regmask to assign R%d: 0x%08" G_GUINT64_FORMAT " (R%d <- R%d R%d R%d)\n", reg, (guint64)regmask, ins->dreg, ins->sreg1, ins->sreg2, ins->sreg3));
+       DEBUG (printf ("\tstart regmask to assign R%d: 0x%08llu (R%d <- R%d R%d R%d)\n", reg, (unsigned long long)regmask, ins->dreg, ins->sreg1, ins->sreg2, ins->sreg3));
        /* exclude the registers in the current instruction */
        num_sregs = mono_inst_get_src_registers (ins, sregs);
        for (i = 0; i < num_sregs; ++i) {
@@ -825,7 +838,7 @@ get_register_spilling (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst **last, Mo
                DEBUG (printf ("\t\texcluding dreg %s\n", mono_regname_full (ins->dreg, bank)));
        }
 
-       DEBUG (printf ("\t\tavailable regmask: 0x%08" G_GUINT64_FORMAT "\n", (guint64)regmask));
+       DEBUG (printf ("\t\tavailable regmask: 0x%08llu\n", (unsigned long long)regmask));
        g_assert (regmask); /* need at least a register we can free */
        sel = 0;
        /* we should track prev_use and spill the register that's farther */
index 5ec06d20a748c8036e64b9900bbc623f3a47b723..9f566dd299a065c21152a65f8a192e4d7e01aec6 100644 (file)
@@ -246,32 +246,47 @@ void
 mono_gdb_render_native_backtraces (pid_t crashed_pid)
 {
        const char *argv [5];
-       char gdb_template [] = "/tmp/mono-gdb-commands.XXXXXX";
+       char template [] = "/tmp/mono-gdb-commands.XXXXXX";
+       FILE *commands;
+       gboolean using_lldb = FALSE;
 
        argv [0] = g_find_program_in_path ("gdb");
-       if (argv [0] == NULL) {
-               return;
+       if (!argv [0]) {
+               argv [0] = g_find_program_in_path ("lldb");
+               using_lldb = TRUE;
        }
 
-       if (mkstemp (gdb_template) != -1) {
-               FILE *gdb_commands = fopen (gdb_template, "w");
-
-               fprintf (gdb_commands, "attach %ld\n", (long) crashed_pid);
-               fprintf (gdb_commands, "info threads\n");
-               fprintf (gdb_commands, "thread apply all bt\n");
+       if (argv [0] == NULL)
+               return;
 
-               fflush (gdb_commands);
-               fclose (gdb_commands);
+       if (mkstemp (template) == -1)
+               return;
 
+       commands = fopen (template, "w");
+       if (using_lldb) {
+               fprintf (commands, "process attach --pid %ld\n", (long) crashed_pid);
+               fprintf (commands, "script lldb.debugger.HandleCommand (\"thread list\")\n");
+               fprintf (commands, "script lldb.debugger.HandleCommand (\"thread backtrace all\")\n");
+               fprintf (commands, "detach\n");
+               fprintf (commands, "quit\n");
+               argv [1] = "--source";
+               argv [2] = template;
+               argv [3] = 0;
+               
+       } else {
+               fprintf (commands, "attach %ld\n", (long) crashed_pid);
+               fprintf (commands, "info threads\n");
+               fprintf (commands, "thread apply all bt\n");
                argv [1] = "-batch";
                argv [2] = "-x";
-               argv [3] = gdb_template;
+               argv [3] = template;
                argv [4] = 0;
-
-               execv (argv [0], (char**)argv);
-
-               unlink (gdb_template);
        }
+       fflush (commands);
+       fclose (commands);
+
+       execv (argv [0], (char**)argv);
+       unlink (template);
 }
 
 gboolean
index de51eddc78e264a8c370ff15a602001ed54853db..21b48d0420522c47ef2348102fb573ea2d86ca96 100644 (file)
@@ -119,6 +119,7 @@ mono_exceptions_init (void)
        cbs.mono_walk_stack_with_state = mono_walk_stack_with_state;
        cbs.mono_raise_exception = mono_get_throw_exception ();
        cbs.mono_raise_exception_with_ctx = mono_raise_exception_with_ctx;
+       cbs.mono_exception_walk_trace = mono_exception_walk_trace;
        cbs.mono_install_handler_block_guard = mono_install_handler_block_guard;
        mono_install_eh_callbacks (&cbs);
 }
@@ -355,7 +356,7 @@ mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
        gboolean err;
        gpointer ip = MONO_CONTEXT_GET_IP (ctx);
        MonoJitInfo *ji;
-       MonoDomain *target_domain;
+       MonoDomain *target_domain = domain;
 
        if (trace)
                *trace = NULL;
@@ -1279,10 +1280,10 @@ build_native_trace (void)
  * OUT_FILTER_IDX. Return TRUE if the exception is caught, FALSE otherwise.
  */
 static gboolean
-mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint32 *out_filter_idx, MonoJitInfo **out_ji, MonoObject *non_exception)
+mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint32 *out_filter_idx, MonoJitInfo **out_ji, MonoJitInfo **out_prev_ji, MonoObject *non_exception)
 {
        MonoDomain *domain = mono_domain_get ();
-       MonoJitInfo *ji;
+       MonoJitInfo *ji = NULL;
        static int (*call_filter) (MonoContext *, gpointer) = NULL;
        MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
        MonoLMF *lmf = mono_get_lmf ();
@@ -1322,6 +1323,8 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
                *out_filter_idx = -1;
        if (out_ji)
                *out_ji = NULL;
+       if (out_prev_ji)
+               *out_prev_ji = NULL;
        filter_idx = 0;
        initial_ctx = *ctx;
 
@@ -1333,6 +1336,9 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
                
                StackFrameInfo frame;
 
+               if (out_prev_ji)
+                       *out_prev_ji = ji;
+
                unwind_res = mono_find_jit_info_ext (domain, jit_tls, NULL, ctx, &new_ctx, NULL, &lmf, NULL, &frame);
                if (unwind_res) {
                        if (frame.type == FRAME_TYPE_DEBUGGER_INVOKE || frame.type == FRAME_TYPE_MANAGED_TO_NATIVE) {
@@ -1480,7 +1486,7 @@ static gboolean
 mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume, MonoJitInfo **out_ji)
 {
        MonoDomain *domain = mono_domain_get ();
-       MonoJitInfo *ji;
+       MonoJitInfo *ji, *prev_ji;
        static int (*call_filter) (MonoContext *, gpointer) = NULL;
        static void (*restore_context) (void *);
        MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
@@ -1596,7 +1602,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                mono_profiler_exception_thrown (obj);
                jit_tls->orig_ex_ctx_set = FALSE;
 
-               res = mono_handle_exception_internal_first_pass (&ctx_cp, obj, &first_filter_idx, &ji, non_exception);
+               res = mono_handle_exception_internal_first_pass (&ctx_cp, obj, &first_filter_idx, &ji, &prev_ji, non_exception);
 
                if (!res) {
                        if (mini_get_debug_options ()->break_on_exc)
@@ -1613,11 +1619,22 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                        // we are handling a stack overflow
                        mono_unhandled_exception (obj);
                } else {
-                       //
-                       // Treat exceptions that are "handled" by mono_runtime_invoke() as unhandled.
-                       // See bug #669836.
-                       //
-                       if (ji && ji->method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE)
+                       gboolean unhandled = FALSE;
+
+                       /*
+                        * The exceptions caught by the mono_runtime_invoke () calls in mono_async_invoke () needs to be treated as
+                        * unhandled (#669836).
+                        * FIXME: The check below is hackish, but its hard to distinguish these runtime invoke calls from others
+                        * in the runtime.
+                        */
+                       if (ji && ji->method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE) {
+                               if (prev_ji) {
+                                       MonoInternalThread *thread = mono_thread_internal_current ();
+                                       if (prev_ji->method == thread->async_invoke_method)
+                                               unhandled = TRUE;
+                               }
+                       }
+                       if (unhandled)
                                mono_debugger_agent_handle_exception (obj, ctx, NULL);
                        else
                                mono_debugger_agent_handle_exception (obj, ctx, &ctx_cp);
@@ -1874,7 +1891,7 @@ mono_debugger_handle_exception (MonoContext *ctx, MonoObject *obj)
                 * The debugger wants us to stop only if this exception is user-unhandled.
                 */
 
-               ret = mono_handle_exception_internal_first_pass (&ctx_cp, obj, NULL, &ji, NULL);
+               ret = mono_handle_exception_internal_first_pass (&ctx_cp, obj, NULL, &ji, NULL, NULL);
                if (ret && (ji != NULL) && (ji->method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE)) {
                        /*
                         * The exception is handled in a runtime-invoke wrapper, that means that it's unhandled
@@ -2002,11 +2019,7 @@ mono_setup_altstack (MonoJitTlsData *tls)
 
        sa.ss_sp = tls->signal_stack;
        sa.ss_size = MONO_ARCH_SIGNAL_STACK_SIZE;
-#if __APPLE__
        sa.ss_flags = 0;
-#else
-       sa.ss_flags = SS_ONSTACK;
-#endif
        g_assert (sigaltstack (&sa, NULL) == 0);
 
        mono_gc_register_altstack ((char*)tls->stack_ovf_guard_base + tls->stack_ovf_guard_size, (char*)staddr + stsize - ((char*)tls->stack_ovf_guard_base + tls->stack_ovf_guard_size), tls->signal_stack, tls->signal_stack_size);
@@ -2708,8 +2721,18 @@ mono_invoke_unhandled_exception_hook (MonoObject *exc)
                
                if (str)
                        msg = mono_string_to_utf8 (str);
-               else
+               else if (other) {
+                       char *original_backtrace = mono_exception_get_managed_backtrace ((MonoException*)exc);
+                       char *nested_backtrace = mono_exception_get_managed_backtrace ((MonoException*)other);
+
+                       msg = g_strdup_printf ("Nested exception detected.\nOriginal Exception: %s\nNested exception:%s\n",
+                               original_backtrace, nested_backtrace);
+
+                       g_free (original_backtrace);
+                       g_free (nested_backtrace);
+               } else {
                        msg = g_strdup ("Nested exception trying to figure out what went wrong");
+               }
                mono_runtime_printf_err ("[ERROR] FATAL UNHANDLED EXCEPTION: %s", msg);
                g_free (msg);
 #if defined(__APPLE__) && defined(__arm__)
index 3d9bfee3bccd205aefb30f155b4d3b900ba3c22e..9088322bbfdbe773066b2ec870123f396141d90a 100644 (file)
@@ -590,7 +590,6 @@ thread_suspend_func (gpointer user_data, void *sigctx, MonoContext *ctx)
 
        if (!tls) {
                /* Happens during startup */
-               tls->unwind_state.valid = FALSE;
                return;
        }
 
@@ -603,8 +602,12 @@ thread_suspend_func (gpointer user_data, void *sigctx, MonoContext *ctx)
        } else {
                tls->unwind_state.unwind_data [MONO_UNWIND_DATA_LMF] = mono_get_lmf ();
                if (sigctx) {
+#ifdef MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX
                        mono_arch_sigctx_to_monoctx (sigctx, &tls->unwind_state.ctx);
                        tls->unwind_state.valid = TRUE;
+#else
+                       tls->unwind_state.valid = FALSE;
+#endif
                } else if (ctx) {
                        memcpy (&tls->unwind_state.ctx, ctx, sizeof (MonoContext));
                        tls->unwind_state.valid = TRUE;
@@ -2547,11 +2550,6 @@ mini_gc_set_slot_type_from_cfa (MonoCompile *cfg, int slot_offset, GCSlotType ty
 
 #endif /* DISABLE_JIT */
 
-void
-mini_gc_enable_gc_maps_for_aot (void)
-{
-}
-
 #endif
 
 #ifndef DISABLE_JIT
index 52c288d87cd1587f8e061d12ef2c46690ad10d32..6965524c90976a68efaeaea3e192bc5063592b1f 100644 (file)
@@ -15,8 +15,8 @@
 
 #include "mini.h"
 
-//#define ALLOW_PARTIAL_SHARING TRUE
-#define ALLOW_PARTIAL_SHARING FALSE
+#define ALLOW_PARTIAL_SHARING TRUE
+//#define ALLOW_PARTIAL_SHARING FALSE
  
 #if 0
 #define DEBUG(...) __VA_ARGS__
 static void
 mono_class_unregister_image_generic_subclasses (MonoImage *image, gpointer user_data);
 
-static MonoType*
-mini_get_gsharedvt_alloc_type_gsctx (MonoGenericSharingContext *gsctx, MonoType *t);
+static gboolean partial_supported;
+
+static inline gboolean
+partial_sharing_supported (void)
+{
+       if (!ALLOW_PARTIAL_SHARING)
+               return FALSE;
+       /* Enable this only when AOT compiling or running in full-aot mode */
+       if (partial_supported || mono_aot_only)
+               return TRUE;
+       return FALSE;
+}
 
 static int
 type_check_context_used (MonoType *type, gboolean recursive)
@@ -521,7 +531,12 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
        case MONO_RGCTX_INFO_CAST_CACHE:
        case MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE:
        case MONO_RGCTX_INFO_VALUE_SIZE:
-       case MONO_RGCTX_INFO_CLASS_IS_REF: {
+       case MONO_RGCTX_INFO_CLASS_BOX_TYPE:
+       case MONO_RGCTX_INFO_MEMCPY:
+       case MONO_RGCTX_INFO_BZERO:
+       case MONO_RGCTX_INFO_LOCAL_OFFSET:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX: {
                gpointer result = mono_class_inflate_generic_type_with_mempool (temporary ? NULL : class->image,
                        data, context, &error);
                g_assert (mono_error_ok (&error)); /*FIXME proper error handling*/
@@ -556,6 +571,30 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
                g_assert (inflated_method->klass == inflated_class);
                return inflated_method;
        }
+       case MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO: {
+               MonoGSharedVtMethodInfo *info = data;
+               MonoGSharedVtMethodInfo *res;
+               int i;
+
+               // FIXME:
+               res = g_new0 (MonoGSharedVtMethodInfo, 1);
+               /*
+               res->nlocals = info->nlocals;
+               res->locals_types = g_new0 (MonoType*, info->nlocals);
+               for (i = 0; i < info->nlocals; ++i)
+                       res->locals_types [i] = mono_class_inflate_generic_type (info->locals_types [i], context);
+               */
+               res->entries = g_ptr_array_new ();
+               for (i = 0; i < info->entries->len; ++i) {
+                       MonoRuntimeGenericContextInfoTemplate *otemplate = g_ptr_array_index (info->entries, i);
+                       MonoRuntimeGenericContextInfoTemplate *template = g_new0 (MonoRuntimeGenericContextInfoTemplate, 1);
+
+                       memcpy (template, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
+                       template->data = inflate_info (template, context, class, FALSE);
+                       g_ptr_array_add (res->entries, template);
+               }
+               return res;
+       }
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE:
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT: {
                MonoJumpInfoGSharedVtCall *info = data;
@@ -658,12 +697,15 @@ generic_inst_is_sharable (MonoGenericInst *inst, gboolean allow_type_vars,
                                                  gboolean allow_partial)
 {
        int i;
+       gboolean has_ref = FALSE;
 
        for (i = 0; i < inst->type_argc; ++i) {
                MonoType *type = inst->type_argv [i];
 
-               if (MONO_TYPE_IS_REFERENCE (type) || (allow_type_vars && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR)))
+               if (MONO_TYPE_IS_REFERENCE (type) || (allow_type_vars && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR))) {
+                       has_ref = TRUE;
                        continue;
+               }
  
                /*
                 * Allow non ref arguments, if there is at least one ref argument
@@ -676,7 +718,10 @@ generic_inst_is_sharable (MonoGenericInst *inst, gboolean allow_type_vars,
                return FALSE;
        }
 
-       return TRUE;
+       if (allow_partial)
+               return has_ref;
+       else
+               return TRUE;
 }
 
 /*
@@ -704,9 +749,6 @@ mono_is_partially_sharable_inst (MonoGenericInst *inst)
  * get_shared_class:
  *
  *   Return the class used to store information when using generic sharing.
- * For fully shared classes, it is the generic definition, for partially shared
- * classes, it is an instance with all ref type arguments replaced by the type parameters
- * of its generic definition.
  */
 static MonoClass*
 get_shared_class (MonoClass *class)
@@ -718,9 +760,11 @@ get_shared_class (MonoClass *class)
         */
        //g_assert_not_reached ();
 
+#if 0
        /* The gsharedvt changes break this */
        if (ALLOW_PARTIAL_SHARING)
                g_assert_not_reached ();
+#endif
 
 #if 0
        if (class->is_inflated) {
@@ -754,6 +798,7 @@ get_shared_class (MonoClass *class)
        }
 #endif
 
+       // FIXME: Use this in all cases can be problematic wrt domain/assembly unloading
        return class_uninstantiated (class);
 }
 
@@ -904,11 +949,118 @@ class_type_info (MonoDomain *domain, MonoClass *class, MonoRgctxInfoType info_ty
                        return GUINT_TO_POINTER (sizeof (gpointer));
                else
                        return GUINT_TO_POINTER (mono_class_value_size (class, NULL));
-       case MONO_RGCTX_INFO_CLASS_IS_REF:
+       case MONO_RGCTX_INFO_CLASS_BOX_TYPE:
                if (MONO_TYPE_IS_REFERENCE (&class->byval_arg))
                        return GUINT_TO_POINTER (1);
+               else if (mono_class_is_nullable (class))
+                       return GUINT_TO_POINTER (2);
                else
                        return GUINT_TO_POINTER (0);
+       case MONO_RGCTX_INFO_MEMCPY:
+       case MONO_RGCTX_INFO_BZERO: {
+               static MonoMethod *memcpy_method [17];
+               static MonoMethod *bzero_method [17];
+               MonoJitDomainInfo *domain_info;
+               int size;
+               guint32 align;
+
+               domain_info = domain_jit_info (domain);
+
+               if (MONO_TYPE_IS_REFERENCE (&class->byval_arg)) {
+                       size = sizeof (gpointer);
+                       align = sizeof (gpointer);
+               } else {
+                       size = mono_class_value_size (class, &align);
+               }
+
+               if (size != 1 && size != 2 && size != 4 && size != 8)
+                       size = 0;
+               if (align < size)
+                       size = 0;
+
+               if (info_type == MONO_RGCTX_INFO_MEMCPY) {
+                       if (!memcpy_method [size]) {
+                               MonoMethod *m;
+                               char name [32];
+
+                               if (size == 0)
+                                       sprintf (name, "memcpy");
+                               else
+                                       sprintf (name, "memcpy_aligned_%d", size);
+                               m = mono_class_get_method_from_name (mono_defaults.string_class, name, 3);
+                               g_assert (m);
+                               mono_memory_barrier ();
+                               memcpy_method [size] = m;
+                       }
+                       if (!domain_info->memcpy_addr [size]) {
+                               gpointer addr = mono_compile_method (memcpy_method [size]);
+                               mono_memory_barrier ();
+                               domain_info->memcpy_addr [size] = addr;
+                       }
+                       return domain_info->memcpy_addr [size];
+               } else {
+                       if (!bzero_method [size]) {
+                               MonoMethod *m;
+                               char name [32];
+
+                               if (size == 0)
+                                       sprintf (name, "bzero");
+                               else
+                                       sprintf (name, "bzero_aligned_%d", size);
+                               m = mono_class_get_method_from_name (mono_defaults.string_class, name, 2);
+                               g_assert (m);
+                               mono_memory_barrier ();
+                               bzero_method [size] = m;
+                       }
+                       if (!domain_info->bzero_addr [size]) {
+                               gpointer addr = mono_compile_method (bzero_method [size]);
+                               mono_memory_barrier ();
+                               domain_info->bzero_addr [size] = addr;
+                       }
+                       return domain_info->bzero_addr [size];
+               }
+       }
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX: {
+               MonoMethod *method;
+               gpointer addr;
+               MonoJitInfo *ji;
+               MonoGenericContext *ctx;
+
+               if (!mono_class_is_nullable (class))
+                       /* This can happen since all the entries in MonoGSharedVtMethodInfo are inflated, even those which are not used */
+                       return NULL;
+
+               if (info_type == MONO_RGCTX_INFO_NULLABLE_CLASS_BOX)
+                       method = mono_class_get_method_from_name (class, "Box", 1);
+               else
+                       method = mono_class_get_method_from_name (class, "Unbox", 1);
+
+               addr = mono_compile_method (method);
+               // The caller uses the gsharedvt call signature
+               ji = mini_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (addr), NULL);
+               g_assert (ji);
+               if (mini_jit_info_is_gsharedvt (ji))
+                       return mono_create_static_rgctx_trampoline (method, addr);
+               else {
+                       MonoGenericSharingContext gsctx;
+                       MonoMethodSignature *sig, *gsig;
+                       MonoMethod *gmethod;
+
+                       /* Need to add an out wrapper */
+
+                       /* FIXME: We have no access to the gsharedvt signature/gsctx used by the caller, so have to construct it ourselves */
+                       gmethod = mini_get_shared_method (method);
+                       sig = mono_method_signature (method);
+                       gsig = mono_method_signature (gmethod);
+                       ctx = mono_method_get_context (gmethod);
+                       mini_init_gsctx (ctx, &gsctx);
+
+                       addr = mini_get_gsharedvt_wrapper (FALSE, addr, sig, gsig, &gsctx, -1, FALSE);
+                       addr = mono_create_static_rgctx_trampoline (method, addr);
+                       return addr;
+               }
+       }
        default:
                g_assert_not_reached ();
        }
@@ -1076,7 +1228,11 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
        case MONO_RGCTX_INFO_CAST_CACHE:
        case MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE:
        case MONO_RGCTX_INFO_VALUE_SIZE:
-       case MONO_RGCTX_INFO_CLASS_IS_REF: {
+       case MONO_RGCTX_INFO_CLASS_BOX_TYPE:
+       case MONO_RGCTX_INFO_MEMCPY:
+       case MONO_RGCTX_INFO_BZERO:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX: {
                MonoClass *arg_class = mono_class_from_mono_type (data);
 
                free_inflated_info (oti->info_type, data);
@@ -1100,7 +1256,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                gpointer addr;
 
                addr = mono_compile_method (data);
-               return mini_add_method_trampoline (NULL, data, addr, mono_method_needs_static_rgctx_invoke (data, FALSE));
+               return mini_add_method_trampoline (NULL, data, addr, mono_method_needs_static_rgctx_invoke (data, FALSE), FALSE);
        }
 #ifndef DISABLE_REMOTING
        case MONO_RGCTX_INFO_REMOTING_INVOKE_WITH_CHECK:
@@ -1157,7 +1313,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                gji = mono_jit_info_get_generic_jit_info (caller_ji);
                g_assert (gji);
 
-               addr = mini_get_gsharedvt_wrapper (FALSE, addr, sig, gsig, gji->generic_sharing_context, -1, TRUE);
+               addr = mini_get_gsharedvt_wrapper (FALSE, NULL, sig, gsig, gji->generic_sharing_context, -1, TRUE);
 
                return addr;
        }
@@ -1283,6 +1439,45 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
 
                return addr;
        }
+       case MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO: {
+               MonoGSharedVtMethodInfo *info = data;
+               MonoGSharedVtMethodRuntimeInfo *res;
+               MonoType *t;
+               int i, offset, align, size;
+
+               // FIXME:
+               res = g_malloc0 (sizeof (MonoGSharedVtMethodRuntimeInfo) + (info->entries->len * sizeof (gpointer)));
+
+               offset = 0;
+               for (i = 0; i < info->entries->len; ++i) {
+                       MonoRuntimeGenericContextInfoTemplate *template = g_ptr_array_index (info->entries, i);
+
+                       switch (template->info_type) {
+                       case MONO_RGCTX_INFO_LOCAL_OFFSET:
+                               t = template->data;
+
+                               size = mono_type_size (t, &align);
+
+                               if (align < sizeof (gpointer))
+                                       align = sizeof (gpointer);
+                               if (MONO_TYPE_ISSTRUCT (t) && align < 2 * sizeof (gpointer))
+                                       align = 2 * sizeof (gpointer);
+                       
+                               // FIXME: Do the same things as alloc_stack_slots
+                               offset += align - 1;
+                               offset &= ~(align - 1);
+                               res->entries [i] = GINT_TO_POINTER (offset);
+                               offset += size;
+                               break;
+                       default:
+                               res->entries [i] = instantiate_info (domain, template, context, class, NULL);
+                               break;
+                       }
+               }
+               res->locals_size = offset;
+
+               return res;
+       }
        default:
                g_assert_not_reached ();
        }
@@ -1332,6 +1527,7 @@ mono_rgctx_info_type_to_str (MonoRgctxInfoType type)
        case MONO_RGCTX_INFO_TYPE: return "TYPE";
        case MONO_RGCTX_INFO_REFLECTION_TYPE: return "REFLECTION_TYPE";
        case MONO_RGCTX_INFO_METHOD: return "METHOD";
+       case MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO: return "GSHAREDVT_INFO";
        case MONO_RGCTX_INFO_GENERIC_METHOD_CODE: return "GENERIC_METHOD_CODE";
        case MONO_RGCTX_INFO_CLASS_FIELD: return "CLASS_FIELD";
        case MONO_RGCTX_INFO_METHOD_RGCTX: return "METHOD_RGCTX";
@@ -1341,11 +1537,15 @@ mono_rgctx_info_type_to_str (MonoRgctxInfoType type)
        case MONO_RGCTX_INFO_CAST_CACHE: return "CAST_CACHE";
        case MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE: return "ARRAY_ELEMENT_SIZE";
        case MONO_RGCTX_INFO_VALUE_SIZE: return "VALUE_SIZE";
-       case MONO_RGCTX_INFO_CLASS_IS_REF: return "CLASS_IS_REF";
+       case MONO_RGCTX_INFO_CLASS_BOX_TYPE: return "CLASS_BOX_TYPE";
        case MONO_RGCTX_INFO_FIELD_OFFSET: return "FIELD_OFFSET";
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE: return "METHOD_GSHAREDVT_OUT_TRAMPOLINE";
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT: return "METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT";
        case MONO_RGCTX_INFO_SIG_GSHAREDVT_OUT_TRAMPOLINE_CALLI: return "SIG_GSHAREDVT_OUT_TRAMPOLINE_CALLI";
+       case MONO_RGCTX_INFO_MEMCPY: return "MEMCPY";
+       case MONO_RGCTX_INFO_BZERO: return "BZERO";
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX: return "NULLABLE_CLASS_BOX";
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX: return "NULLABLE_CLASS_UNBOX";
        default:
                return "<UNKNOWN RGCTX INFO TYPE>";
        }
@@ -1421,9 +1621,14 @@ info_equal (gpointer data1, gpointer data2, MonoRgctxInfoType info_type)
        case MONO_RGCTX_INFO_CAST_CACHE:
        case MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE:
        case MONO_RGCTX_INFO_VALUE_SIZE:
-       case MONO_RGCTX_INFO_CLASS_IS_REF:
+       case MONO_RGCTX_INFO_CLASS_BOX_TYPE:
+       case MONO_RGCTX_INFO_MEMCPY:
+       case MONO_RGCTX_INFO_BZERO:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX:
                return mono_class_from_mono_type (data1) == mono_class_from_mono_type (data2);
        case MONO_RGCTX_INFO_METHOD:
+       case MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO:
        case MONO_RGCTX_INFO_GENERIC_METHOD_CODE:
        case MONO_RGCTX_INFO_CLASS_FIELD:
        case MONO_RGCTX_INFO_FIELD_OFFSET:
@@ -1442,6 +1647,38 @@ info_equal (gpointer data1, gpointer data2, MonoRgctxInfoType info_type)
        return FALSE;
 }
 
+/*
+ * mini_rgctx_info_type_to_patch_info_type:
+ *
+ *   Return the type of the runtime object referred to by INFO_TYPE.
+ */
+MonoJumpInfoType
+mini_rgctx_info_type_to_patch_info_type (MonoRgctxInfoType info_type)
+{
+       switch (info_type) {
+       case MONO_RGCTX_INFO_STATIC_DATA:
+       case MONO_RGCTX_INFO_KLASS:
+       case MONO_RGCTX_INFO_VTABLE:
+       case MONO_RGCTX_INFO_TYPE:
+       case MONO_RGCTX_INFO_REFLECTION_TYPE:
+       case MONO_RGCTX_INFO_CAST_CACHE:
+       case MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE:
+       case MONO_RGCTX_INFO_VALUE_SIZE:
+       case MONO_RGCTX_INFO_CLASS_BOX_TYPE:
+       case MONO_RGCTX_INFO_MEMCPY:
+       case MONO_RGCTX_INFO_BZERO:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX:
+       case MONO_RGCTX_INFO_LOCAL_OFFSET:
+               return MONO_PATCH_INFO_CLASS;
+       case MONO_RGCTX_INFO_FIELD_OFFSET:
+               return MONO_PATCH_INFO_FIELD;
+       default:
+               g_assert_not_reached ();
+               return -1;
+       }
+}
+
 static int
 lookup_or_register_info (MonoClass *class, int type_argc, gpointer data, MonoRgctxInfoType info_type,
        MonoGenericContext *generic_context)
@@ -1825,7 +2062,7 @@ mono_generic_context_is_sharable_full (MonoGenericContext *context,
 gboolean
 mono_generic_context_is_sharable (MonoGenericContext *context, gboolean allow_type_vars)
 {
-       return mono_generic_context_is_sharable_full (context, allow_type_vars, ALLOW_PARTIAL_SHARING);
+       return mono_generic_context_is_sharable_full (context, allow_type_vars, partial_sharing_supported ());
 }
 
 /*
@@ -1868,8 +2105,74 @@ has_constraints (MonoGenericContainer *container)
        */
 }
 
+static gboolean
+mini_method_is_open (MonoMethod *method)
+{
+       if (method->is_inflated) {
+               MonoGenericContext *ctx = mono_method_get_context (method);
+
+               if (ctx->class_inst && ctx->class_inst->is_open)
+                       return TRUE;
+               if (ctx->method_inst && ctx->method_inst->is_open)
+                       return TRUE;
+       }
+       return FALSE;
+}
+
+static G_GNUC_UNUSED gboolean
+is_async_state_machine_class (MonoClass *klass)
+{
+       static MonoClass *iclass;
+       static gboolean iclass_set;
+
+       return FALSE;
+
+       if (!iclass_set) {
+               iclass = mono_class_from_name (mono_defaults.corlib, "System.Runtime.CompilerServices", "IAsyncStateMachine");
+               mono_memory_barrier ();
+               iclass_set = TRUE;
+       }
+
+       if (iclass && klass->valuetype && mono_class_is_assignable_from (iclass, klass))
+               return TRUE;
+       return FALSE;
+}
+
+static G_GNUC_UNUSED gboolean
+is_async_method (MonoMethod *method)
+{
+       MonoCustomAttrInfo *cattr;
+       MonoMethodSignature *sig;
+       gboolean res = FALSE;
+       static MonoClass *attr_class;
+       static gboolean attr_class_set;
+
+       return FALSE;
+
+       if (!attr_class_set) {
+               attr_class = mono_class_from_name (mono_defaults.corlib, "System.Runtime.CompilerServices", "AsyncStateMachineAttribute");
+               mono_memory_barrier ();
+               attr_class_set = TRUE;
+       }
+
+       /* Do less expensive checks first */
+       sig = mono_method_signature (method);
+       if (attr_class && sig && ((sig->ret->type == MONO_TYPE_VOID) ||
+                               (sig->ret->type == MONO_TYPE_CLASS && (sig->ret->data.generic_class->container_class->name, "Task")) ||
+                               (sig->ret->type == MONO_TYPE_GENERICINST && !strcmp (sig->ret->data.generic_class->container_class->name, "Task`1")))) {
+               //printf ("X: %s\n", mono_method_full_name (method, TRUE));
+               cattr = mono_custom_attrs_from_method (method);
+               if (cattr) {
+                       if (mono_custom_attrs_has_attr (cattr, attr_class))
+                               res = TRUE;
+                       mono_custom_attrs_free (cattr);
+               }
+       }
+       return res;
+}
+
 /*
- * mono_method_is_generic_sharable_impl_full:
+ * mono_method_is_generic_sharable_full:
  * @method: a method
  * @allow_type_vars: whether to regard type variables as reference types
  * @allow_partial: whether to allow partial sharing
@@ -1880,14 +2183,28 @@ has_constraints (MonoGenericContainer *container)
  * type parameters.  Otherwise returns FALSE.
  */
 gboolean
-mono_method_is_generic_sharable_impl_full (MonoMethod *method, gboolean allow_type_vars,
+mono_method_is_generic_sharable_full (MonoMethod *method, gboolean allow_type_vars,
                                                                                   gboolean allow_partial, gboolean allow_gsharedvt)
 {
        if (!mono_method_is_generic_impl (method))
                return FALSE;
 
-       if (allow_gsharedvt && mini_is_gsharedvt_sharable_method (method))
+       if (!partial_sharing_supported ())
+               allow_partial = FALSE;
+
+       /*
+        * Generic async methods have an associated state machine class which is a generic struct. This struct
+        * is too large to be handled by gsharedvt so we make it visible to the AOT compiler by disabling sharing
+        * of the async method and the state machine class.
+        */
+       if (is_async_state_machine_class (method->klass))
+               return FALSE;
+
+       if (allow_gsharedvt && mini_is_gsharedvt_sharable_method (method)) {
+               if (is_async_method (method))
+                       return FALSE;
                return TRUE;
+       }
 
        if (method->is_inflated) {
                MonoMethodInflated *inflated = (MonoMethodInflated*)method;
@@ -1918,13 +2235,21 @@ mono_method_is_generic_sharable_impl_full (MonoMethod *method, gboolean allow_ty
        if (method->klass->generic_container && !allow_type_vars)
                return FALSE;
 
+       /* This does potentially expensive cattr checks, so do it at the end */
+       if (is_async_method (method)) {
+               if (mini_method_is_open (method))
+                       /* The JIT can't compile these without sharing */
+                       return TRUE;
+               return FALSE;
+       }
+
        return TRUE;
 }
 
 gboolean
-mono_method_is_generic_sharable_impl (MonoMethod *method, gboolean allow_type_vars)
+mono_method_is_generic_sharable (MonoMethod *method, gboolean allow_type_vars)
 {
-       return mono_method_is_generic_sharable_impl_full (method, allow_type_vars, ALLOW_PARTIAL_SHARING, TRUE);
+       return mono_method_is_generic_sharable_full (method, allow_type_vars, partial_sharing_supported (), TRUE);
 }
 
 gboolean
@@ -1933,7 +2258,7 @@ mono_method_needs_static_rgctx_invoke (MonoMethod *method, gboolean allow_type_v
        if (!mono_class_generic_sharing_enabled (method->klass))
                return FALSE;
 
-       if (!mono_method_is_generic_sharable_impl (method, allow_type_vars))
+       if (!mono_method_is_generic_sharable (method, allow_type_vars))
                return FALSE;
 
        if (method->is_inflated && mono_method_get_context (method)->method_inst)
@@ -2007,6 +2332,12 @@ mono_set_generic_sharing_vt_supported (gboolean supported)
        gsharedvt_supported = supported;
 }
 
+void
+mono_set_partial_sharing_supported (gboolean supported)
+{
+       partial_supported = supported;
+}
+
 /*
  * mono_class_generic_sharing_enabled:
  * @class: a class
@@ -2205,7 +2536,7 @@ mini_get_basic_type_from_generic (MonoGenericSharingContext *gsctx, MonoType *ty
                g_assert (gsctx);
        */
        if (!type->byref && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR) && mini_is_gsharedvt_type_gsctx (gsctx, type))
-               return mini_get_gsharedvt_alloc_type_gsctx (gsctx, type);
+               return type;
        else
                return mono_type_get_basic_type_from_generic (type);
 }
@@ -2221,6 +2552,8 @@ mini_type_get_underlying_type (MonoGenericSharingContext *gsctx, MonoType *type)
 {
        if (type->byref)
                return &mono_defaults.int_class->byval_arg;
+       if (!type->byref && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR) && mini_is_gsharedvt_type_gsctx (gsctx, type))
+               return type;
        return mini_get_basic_type_from_generic (gsctx, mono_type_get_underlying_type (type));
 }
 
@@ -2258,8 +2591,7 @@ mini_type_stack_size_full (MonoGenericSharingContext *gsctx, MonoType *t, guint3
                g_assert (gsctx);
        */
 
-       if (mini_is_gsharedvt_type_gsctx (gsctx, t))
-               t = mini_get_gsharedvt_alloc_type_gsctx (gsctx, t);
+       //g_assert (!mini_is_gsharedvt_type_gsctx (gsctx, t));
 
        if (pinvoke) {
                size = mono_type_native_stack_size (t, align);
@@ -2358,6 +2690,15 @@ mini_type_is_vtype (MonoCompile *cfg, MonoType *t)
     return MONO_TYPE_ISSTRUCT (t) || mini_is_gsharedvt_variable_type (cfg, t);
 }
 
+gboolean
+mini_class_is_generic_sharable (MonoClass *klass)
+{
+       if (klass->generic_class && is_async_state_machine_class (klass))
+               return FALSE;
+
+       return (klass->generic_class && mono_generic_context_is_sharable (&klass->generic_class->context, FALSE));
+}
+
 #if defined(MONOTOUCH) || defined(MONO_EXTENSIONS)
 
 #include "../../../mono-extensions/mono/mini/mini-generic-sharing-gsharedvt.c"
@@ -2394,18 +2735,6 @@ mini_is_gsharedvt_variable_type (MonoCompile *cfg, MonoType *t)
        return FALSE;
 }
 
-static MonoType*
-mini_get_gsharedvt_alloc_type_gsctx (MonoGenericSharingContext *gsctx, MonoType *t)
-{
-       return NULL;
-}
-
-MonoType*
-mini_get_gsharedvt_alloc_type_for_type (MonoCompile *cfg, MonoType *t)
-{
-       return NULL;
-}
-
 gboolean
 mini_is_gsharedvt_sharable_method (MonoMethod *method)
 {
index c45305e2668a99e960a45797daec97f6011df4a3..113d4a1fcdea9cd25f29667375cddf72e1ea3922 100644 (file)
@@ -21,6 +21,7 @@
 #include <mono/metadata/threads.h>
 #include <mono/metadata/profiler-private.h>
 #include <mono/utils/mono-math.h>
+#include <mono/utils/mono-hwcap-ia64.h>
 
 #include "trace.h"
 #include "mini-ia64.h"
index 2b90cd692daac6ad903e56bbb23cbbb5ff4cc6e2..a03e94fbebf4abac5e6241ad7909b03e93ce3649 100644 (file)
@@ -36,7 +36,6 @@
 #include <llvm/ExecutionEngine/JITMemoryManager.h>
 #include <llvm/ExecutionEngine/JITEventListener.h>
 #include <llvm/Target/TargetOptions.h>
-#include <llvm/Target/TargetData.h>
 #include <llvm/Target/TargetRegisterInfo.h>
 #include <llvm/Analysis/Verifier.h>
 #include <llvm/Analysis/Passes.h>
@@ -48,6 +47,9 @@
 #include <llvm/CodeGen/MachineFunctionPass.h>
 #include <llvm/CodeGen/MachineFunction.h>
 #include <llvm/CodeGen/MachineFrameInfo.h>
+#include <llvm/IR/Function.h>
+#include <llvm/IR/IRBuilder.h>
+#include <llvm/IR/Module.h>
 //#include <llvm/LinkAllPasses.h>
 
 #include "llvm-c/Core.h"
@@ -126,13 +128,18 @@ public:
                return NULL;
        }
 
-       virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
-                                                                                unsigned SectionID) {
+       virtual uint8_t* allocateDataSection(uintptr_t, unsigned int, unsigned int, bool) {
                // FIXME:
                assert(0);
                return NULL;
        }
 
+       virtual bool applyPermissions(std::string*) {
+               // FIXME:
+               assert(0);
+               return false;
+       }
+
        virtual void* getPointerToNamedFunction(const std::string &Name, bool AbortOnFailure) {
                void *res;
                char *err;
@@ -441,7 +448,7 @@ force_pass_linking (void)
       (void) llvm::createLCSSAPass();
       (void) llvm::createLICMPass();
       (void) llvm::createLazyValueInfoPass();
-      (void) llvm::createLoopDependenceAnalysisPass();
+      //(void) llvm::createLoopDependenceAnalysisPass();
          /*
       (void) llvm::createLoopExtractorPass();
          */
@@ -567,7 +574,7 @@ mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, Func
 
   fpm = new FunctionPassManager (unwrap (MP));
 
-  fpm->add(new TargetData(*EE->getTargetData()));
+  fpm->add(new DataLayout(*EE->getDataLayout()));
 
   PassRegistry &Registry = *PassRegistry::getPassRegistry();
   initializeCore(Registry);
@@ -580,7 +587,7 @@ mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, Func
   //initializeInstrumentation(Registry);
   initializeTarget(Registry);
 
-  llvm::cl::ParseEnvironmentOptions("mono", "MONO_LLVM", "", false);
+  llvm::cl::ParseEnvironmentOptions("mono", "MONO_LLVM", "");
 
   if (PassList.size() > 0) {
          /* Use the passes specified by the env variable */
@@ -595,14 +602,14 @@ mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, Func
          }
   } else {
          /* Use the same passes used by 'opt' by default, without the ipo passes */
-         const char *opts = "-simplifycfg -domtree -domfrontier -scalarrepl -instcombine -simplifycfg -basiccg -domtree -domfrontier -scalarrepl -simplify-libcalls -instcombine -simplifycfg -instcombine -simplifycfg -reassociate -domtree -loops -loop-simplify -domfrontier -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -iv-users -indvars -loop-deletion -loop-simplify -lcssa -loop-unroll -instcombine -memdep -gvn -memdep -memcpyopt -sccp -instcombine -domtree -memdep -dse -adce -gvn -simplifycfg -preverify -domtree -verify";
+         const char *opts = "-simplifycfg -domtree -domfrontier -scalarrepl -instcombine -simplifycfg -domtree -domfrontier -scalarrepl -simplify-libcalls -instcombine -simplifycfg -instcombine -simplifycfg -reassociate -domtree -loops -loop-simplify -domfrontier -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -iv-users -indvars -loop-deletion -loop-simplify -lcssa -loop-unroll -instcombine -memdep -gvn -memdep -memcpyopt -sccp -instcombine -domtree -memdep -dse -adce -gvn -simplifycfg -preverify -domtree -verify";
          char **args;
          int i;
 
          args = g_strsplit (opts, " ", 1000);
          for (i = 0; args [i]; i++)
                  ;
-         llvm::cl::ParseCommandLineOptions (i, args, "", false);
+         llvm::cl::ParseCommandLineOptions (i, args, "");
          g_strfreev (args);
 
          for (unsigned i = 0; i < PassList.size(); ++i) {
@@ -611,6 +618,7 @@ mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, Func
 
                  if (PassInf->getNormalCtor())
                          P = PassInf->getNormalCtor()();
+                 g_assert (P->getPassKind () == llvm::PT_Function || P->getPassKind () == llvm::PT_Loop);
                  fpm->add (P);
          }
 
index e2379fd2f7af0982215452e8ddb60956a2cd20c1..3474e0d7bbc0c7a4950b1d438da9b59021d215bd 100644 (file)
@@ -330,10 +330,7 @@ type_to_llvm_type (EmitContext *ctx, MonoType *t)
        case MONO_TYPE_VAR:
        case MONO_TYPE_MVAR:
                /* Because of generic sharing */
-               if (mini_type_var_is_vt (ctx->cfg, t))
-                       return type_to_llvm_type (ctx, mini_get_gsharedvt_alloc_type_for_type (ctx->cfg, t));
-               else
-                       return IntPtrType ();
+               return IntPtrType ();
        case MONO_TYPE_GENERICINST:
                if (!mono_type_generic_inst_is_valuetype (t))
                        return IntPtrType ();
@@ -937,12 +934,12 @@ convert_full (EmitContext *ctx, LLVMValueRef v, LLVMTypeRef dtype, gboolean is_u
                if (LLVMGetTypeKind (stype) == LLVMPointerTypeKind)
                        return LLVMBuildPtrToInt (ctx->builder, v, dtype, "");
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-               if (stype == LLVMInt32Type () && dtype == LLVMFloatType ())
-                       return LLVMBuildBitCast (ctx->builder, v, dtype, "");
-               if (stype == LLVMInt32Type () && dtype == LLVMDoubleType ())
-                       return LLVMBuildBitCast (ctx->builder, LLVMBuildZExt (ctx->builder, v, LLVMInt64Type (), ""), dtype, "");
-#endif
+               if (mono_arch_is_soft_float ()) {
+                       if (stype == LLVMInt32Type () && dtype == LLVMFloatType ())
+                               return LLVMBuildBitCast (ctx->builder, v, dtype, "");
+                       if (stype == LLVMInt32Type () && dtype == LLVMDoubleType ())
+                               return LLVMBuildBitCast (ctx->builder, LLVMBuildZExt (ctx->builder, v, LLVMInt64Type (), ""), dtype, "");
+               }
 
                if (LLVMGetTypeKind (stype) == LLVMVectorTypeKind && LLVMGetTypeKind (dtype) == LLVMVectorTypeKind)
                        return LLVMBuildBitCast (ctx->builder, v, dtype, "");
@@ -2871,10 +2868,10 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        values [ins->dreg] = LLVMBuildFPExt (builder, v, LLVMDoubleType (), dname);
                        break;
                case OP_SEXT_I4:
-                       values [ins->dreg] = LLVMBuildSExt (builder, lhs, LLVMInt64Type (), dname);
+                       values [ins->dreg] = LLVMBuildSExt (builder, convert (ctx, lhs, LLVMInt32Type ()), LLVMInt64Type (), dname);
                        break;
                case OP_ZEXT_I4:
-                       values [ins->dreg] = LLVMBuildZExt (builder, lhs, LLVMInt64Type (), dname);
+                       values [ins->dreg] = LLVMBuildZExt (builder, convert (ctx, lhs, LLVMInt32Type ()), LLVMInt64Type (), dname);
                        break;
                case OP_TRUNC_I4:
                        values [ins->dreg] = LLVMBuildTrunc (builder, lhs, LLVMInt32Type (), dname);
@@ -3998,7 +3995,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                                else
                                        ctx->lmodule->throw = callee;
                        }
-                       arg = convert (ctx, values [ins->sreg1], type_to_llvm_type (ctx, &mono_get_object_class ()->byval_arg));
+                       arg = convert (ctx, lhs, type_to_llvm_type (ctx, &mono_get_object_class ()->byval_arg));
                        emit_call (ctx, bb, &builder, callee, &arg, 1);
                        break;
                }
@@ -4232,6 +4229,9 @@ mono_llvm_emit_method (MonoCompile *cfg)
        
        module = ctx->module = ctx->lmodule->module;
 
+       if (cfg->gsharedvt)
+               LLVM_FAILURE (ctx, "gsharedvt");
+
 #if 1
        {
                static int count = 0;
@@ -4334,6 +4334,19 @@ mono_llvm_emit_method (MonoCompile *cfg)
        }
        g_free (names);
 
+       if (cfg->compile_aot) {
+               LLVMValueRef md_args [16];
+               LLVMValueRef md_node;
+               int method_index;
+
+               method_index = mono_aot_get_method_index (cfg->orig_method);
+               md_args [0] = LLVMMDString (method_name, strlen (method_name));
+               md_args [1] = LLVMConstInt (LLVMInt32Type (), method_index, FALSE);
+               md_node = LLVMMDNode (md_args, 2);
+               LLVMAddNamedMetadataOperand (module, "mono.function_indexes", md_node);
+               //LLVMSetMetadata (method, md_kind, LLVMMDNode (&md_arg, 1));
+       }
+
        max_block_num = 0;
        for (bb = cfg->bb_entry; bb; bb = bb->next_bb)
                max_block_num = MAX (max_block_num, bb->block_num);
@@ -5135,7 +5148,7 @@ mono_llvm_create_aot_module (const char *got_symbol)
                LLVMValueRef personality;
 
                personality = LLVMAddFunction (aot_module.module, "mono_aot_personality", LLVMFunctionType (LLVMVoidType (), NULL, 0, FALSE));
-               LLVMSetLinkage (personality, LLVMPrivateLinkage);
+               LLVMSetLinkage (personality, LLVMInternalLinkage);
                lbb = LLVMAppendBasicBlock (personality, "BB0");
                lbuilder = LLVMCreateBuilder ();
                LLVMPositionBuilderAtEnd (lbuilder, lbb);
index aa99f26c8d3968c9c109a766a2656089de0c0b63..53c524e7549c634c30529e5f5418933bc3700c59 100644 (file)
@@ -106,9 +106,10 @@ mono_llvm_load (const char* bpath)
 #endif
        if (binl != -1) {
                char *base;
-               char *name;
+               char *resolvedname, *name;
                buf [binl] = 0;
-               base = g_path_get_dirname (buf);
+               resolvedname = mono_path_resolve_symlinks (buf);
+               base = g_path_get_dirname (resolvedname);
                name = g_strdup_printf ("%s/.libs", base);
                err = NULL;
                llvm_lib = try_llvm_load (name, &err);
@@ -121,6 +122,7 @@ mono_llvm_load (const char* bpath)
                        g_free (name);
                }
                g_free (base);
+               g_free (resolvedname);
        }
        if (!llvm_lib) {
                llvm_lib = try_llvm_load (NULL, &err);
index 12d17c399a1fd074d5aa99079e52cc79c50c349f..efb1ab537ab4fbb98ce2b5b6096d4487e60572ee 100644 (file)
@@ -18,6 +18,7 @@
 #include <mono/metadata/appdomain.h>
 #include <mono/metadata/debug-helpers.h>
 #include <mono/utils/mono-mmap.h>
+#include <mono/utils/mono-hwcap-mips.h>
 
 #include <mono/arch/mips/mips-codegen.h>
 
@@ -31,7 +32,8 @@
 #define ALWAYS_SAVE_RA         1       /* call-handler & switch currently clobber ra */
 
 #define PROMOTE_R4_TO_R8       1       /* promote single values in registers to doubles */
-#define USE_MUL                        1       /* use mul instead of mult/mflo for multiply */
+#define USE_MUL                        0       /* use mul instead of mult/mflo for multiply
+                                                          remember to update cpu-mips.md if you change this */
 
 /* Emit a call sequence to 'v', using 'D' as a scratch register if necessary */
 #define mips_call(c,D,v) do {  \
index 5cd41e6ff56d6cd25f6febd9e2b531e20952b2d5..a56f24bd6ecb2cabd8a5c8ecf5d1c3aff1a5c29a 100644 (file)
@@ -21,6 +21,9 @@ MINI_OP(OP_ICOMPARE_IMM,      "icompare_imm", NONE, IREG, NONE)
 MINI_OP(OP_LCOMPARE_IMM,       "lcompare_imm", NONE, LREG, NONE)
 MINI_OP(OP_LOCAL,      "local", NONE, NONE, NONE)
 MINI_OP(OP_ARG,                "arg", NONE, NONE, NONE)
+/* inst_imm contains the local index */
+MINI_OP(OP_GSHAREDVT_LOCAL, "gsharedvt_local", NONE, NONE, NONE)
+MINI_OP(OP_GSHAREDVT_ARG_REGOFFSET, "gsharedvt_arg_regoffset", NONE, NONE, NONE)
 /*
  * Represents passing a valuetype argument which has not been decomposed yet.
  * inst_p0 points to the call.
@@ -573,6 +576,11 @@ MINI_OP(OP_SUB_OVF_CARRY,   "sub_ovf_carry", IREG, IREG, IREG)
 MINI_OP(OP_ADD_OVF_UN_CARRY,   "add_ovf_un_carry", IREG, IREG, IREG)
 MINI_OP(OP_SUB_OVF_UN_CARRY,   "sub_ovf_un_carry", IREG, IREG, IREG)
 
+/* instructions with explicit long arguments to deal with 64-bit ilp32 machines */
+MINI_OP(OP_LADDCC,   "laddcc", LREG, LREG, LREG)
+MINI_OP(OP_LSUBCC,   "lsubcc", LREG, LREG, LREG)
+
+
 /* FP functions usually done by the CPU */
 MINI_OP(OP_SIN,     "sin", FREG, FREG, NONE)
 MINI_OP(OP_COS,     "cos", FREG, FREG, NONE)
@@ -600,6 +608,7 @@ MINI_OP(OP_CARD_TABLE_WBARRIER, "card_table_wbarrier", NONE, IREG, IREG)
 
 /* arch-dep tls access */
 MINI_OP(OP_TLS_GET,            "tls_get", IREG, NONE, NONE)
+MINI_OP(OP_TLS_GET_REG,            "tls_get_reg", IREG, IREG, NONE)
 
 MINI_OP(OP_LOAD_GOTADDR, "load_gotaddr", IREG, NONE, NONE)
 MINI_OP(OP_DUMMY_USE, "dummy_use", NONE, IREG, NONE)
@@ -920,7 +929,7 @@ MINI_OP(OP_GC_PARAM_SLOT_LIVENESS_DEF, "gc_param_slot_liveness_def", NONE, NONE,
 /* #if defined(__native_client_codegen__) || defined(__native_client__) */
 /* We have to define these in terms of the TARGET defines, not NaCl defines */
 /* because genmdesc.pl doesn't have multiple defines per platform.          */
-#if defined(TARGET_AMD64) || defined(TARGET_X86)
+#if defined(TARGET_AMD64) || defined(TARGET_X86) || defined(TARGET_ARM)
 MINI_OP(OP_NACL_GC_SAFE_POINT,     "nacl_gc_safe_point", IREG, NONE, NONE)
 #endif
 
@@ -1221,3 +1230,4 @@ MINI_OP(OP_MIPS_COND_EXC_INC, "mips_cond_exc_inc", NONE, IREG, IREG)
 #ifdef ENABLE_LLVM
 MINI_OP(OP_LLVM_OUTARG_VT,     "llvm_outarg_vt", IREG, VREG, NONE)
 #endif
+
index d03e1147d4fbe22ac33732640d42cca4637fc6cb..d3e5c907294130f94e33c9b276cea7d790ddaac8 100644 (file)
@@ -100,7 +100,17 @@ mono_runtime_cleanup_handlers (void)
 {
 }
 
+pid_t
+mono_runtime_syscall_fork (void)
+{
+       g_assert_not_reached();
+       return 0;
+}
 
+void
+mono_gdb_render_native_backtraces (pid_t crashed_pid)
+{
+}
 
 #else
 
index e779862c46e361dd4b5788d7fd80191b4ff64ef0..1ae5647b25d652781245b00f7abe5986e55c8cee 100644 (file)
@@ -16,6 +16,7 @@
 #include <mono/metadata/debug-helpers.h>
 #include <mono/utils/mono-proclib.h>
 #include <mono/utils/mono-mmap.h>
+#include <mono/utils/mono-hwcap-ppc.h>
 
 #include "mini-ppc.h"
 #ifdef TARGET_POWERPC64
@@ -520,32 +521,6 @@ typedef struct {
        long int value;
 } AuxVec;
 
-#ifdef USE_ENVIRON_HACK
-static AuxVec*
-linux_find_auxv (int *count)
-{
-       AuxVec *vec;
-       int c = 0;
-       char **result = __environ;
-       /* Scan over the env vector looking for the ending NULL */
-       for (; *result != NULL; ++result) {
-       }
-       /* Bump the pointer one more step, which should be the auxv. */
-       ++result;
-       vec = (AuxVec *)result;
-       if (vec->type != 22 /*AT_IGNOREPPC*/) {
-               *count = 0;
-               return NULL;
-       }
-       while (vec->type != 0 /*AT_NULL*/) {
-               vec++;
-               c++;
-       }
-       *count = c;
-       return (AuxVec *)result;
-}
-#endif
-
 #define MAX_AUX_ENTRIES 128
 /* 
  * PPC_FEATURE_POWER4, PPC_FEATURE_POWER5, PPC_FEATURE_POWER5_PLUS, PPC_FEATURE_CELL,
@@ -575,11 +550,12 @@ mono_arch_init (void)
 #if defined(MONO_CROSS_COMPILE)
 #elif defined(__APPLE__)
        int mib [3];
-       size_t len;
+       size_t len = sizeof (cachelinesize);
+
        mib [0] = CTL_HW;
        mib [1] = HW_CACHELINE;
-       len = sizeof (cachelinesize);
-       if (sysctl (mib, 2, &cachelinesize, (size_t*)&len, NULL, 0) == -1) {
+
+       if (sysctl (mib, 2, &cachelinesize, &len, NULL, 0) == -1) {
                perror ("sysctl");
                cachelinesize = 128;
        } else {
@@ -590,38 +566,18 @@ mono_arch_init (void)
        int i, vec_entries = 0;
        /* sadly this will work only with 2.6 kernels... */
        FILE* f = fopen ("/proc/self/auxv", "rb");
+
        if (f) {
                vec_entries = fread (&vec, sizeof (AuxVec), MAX_AUX_ENTRIES, f);
                fclose (f);
-#ifdef USE_ENVIRON_HACK
-       } else {
-               AuxVec *evec = linux_find_auxv (&vec_entries);
-               if (vec_entries)
-                       memcpy (&vec, evec, sizeof (AuxVec) * MIN (vec_entries, MAX_AUX_ENTRIES));
-#endif
        }
+
        for (i = 0; i < vec_entries; i++) {
                int type = vec [i].type;
+
                if (type == 19) { /* AT_DCACHEBSIZE */
                        cachelinesize = vec [i].value;
                        continue;
-               } else if (type == 16) { /* AT_HWCAP */
-                       if (vec [i].value & 0x00002000 /*PPC_FEATURE_ICACHE_SNOOP*/)
-                               cpu_hw_caps |= PPC_ICACHE_SNOOP;
-                       if (vec [i].value & ISA_2X)
-                               cpu_hw_caps |= PPC_ISA_2X;
-                       if (vec [i].value & ISA_64)
-                               cpu_hw_caps |= PPC_ISA_64;
-                       if (vec [i].value & ISA_MOVE_FPR_GPR)
-                               cpu_hw_caps |= PPC_MOVE_FPR_GPR;
-                       continue;
-               } else if (type == 15) { /* AT_PLATFORM */
-                       const char *arch = (char*)vec [i].value;
-                       if (strcmp (arch, "ppc970") == 0 ||
-                                       (strncmp (arch, "power", 5) == 0 && arch [5] >= '4' && arch [5] <= '7'))
-                               cpu_hw_caps |= PPC_MULTIPLE_LS_UNITS;
-                       /*printf ("cpu: %s\n", (char*)vec [i].value);*/
-                       continue;
                }
        }
 #elif defined(G_COMPILER_CODEWARRIOR)
@@ -630,13 +586,31 @@ mono_arch_init (void)
 #else
 //#error Need a way to get cache line size
 #endif
+
+       if (mono_hwcap_ppc_has_icache_snoop)
+               cpu_hw_caps |= PPC_ICACHE_SNOOP;
+
+       if (mono_hwcap_ppc_is_isa_2x)
+               cpu_hw_caps |= PPC_ISA_2X;
+
+       if (mono_hwcap_ppc_is_isa_64)
+               cpu_hw_caps |= PPC_ISA_64;
+
+       if (mono_hwcap_ppc_has_move_fpr_gpr)
+               cpu_hw_caps |= PPC_MOVE_FPR_GPR;
+
+       if (mono_hwcap_ppc_has_multiple_ls_units)
+               cpu_hw_caps |= PPC_MULTIPLE_LS_UNITS;
+
        if (!cachelinesize)
                cachelinesize = 32;
+
        if (!cachelineinc)
                cachelineinc = cachelinesize;
 
        if (mono_cpu_count () > 1)
                cpu_hw_caps |= PPC_SMP_CAPABLE;
+
        InitializeCriticalSection (&mini_arch_mutex);
 
        ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
@@ -3788,7 +3762,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        }
 
                        ppc_mr (code, ppc_sp, ppc_r11);
-                       mono_add_patch_info (cfg, (guint8*) code - cfg->native_code, MONO_PATCH_INFO_METHOD_JUMP, ins->inst_p0);
+                       mono_add_patch_info (cfg, (guint8*) code - cfg->native_code, MONO_PATCH_INFO_METHOD_JUMP, call->method);
                        if (cfg->compile_aot) {
                                /* arch_emit_got_access () patches this */
                                ppc_load32 (code, ppc_r0, 0);
diff --git a/mono/mini/mini-s390.c b/mono/mini/mini-s390.c
deleted file mode 100644 (file)
index 6f2f76a..0000000
+++ /dev/null
@@ -1,5296 +0,0 @@
-/*------------------------------------------------------------------*/
-/*                                                                 */
-/* Name        - mini-s390.c                                       */
-/*                                                                 */
-/* Function    - S/390 backend for the Mono code generator.         */
-/*                                                                 */
-/* Name               - Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com) */
-/*                                                                 */
-/* Date        - January, 2004                                     */
-/*                                                                 */
-/* Derivation  - From mini-x86 & mini-ppc by -                     */
-/*              Paolo Molaro (lupus@ximian.com)                    */
-/*              Dietmar Maurer (dietmar@ximian.com)                */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-/*------------------------------------------------------------------*/
-/*                 D e f i n e s                                    */
-/*------------------------------------------------------------------*/
-
-#define EMIT_COND_BRANCH(ins,cond)                                                     \
-{                                                                                      \
-if (ins->inst_true_bb->native_offset) {                                        \
-       int displace;                                                           \
-       displace = ((cfg->native_code +                                         \
-                   ins->inst_true_bb->native_offset) - code) / 2;              \
-       if (s390_is_imm16(displace)) {                                          \
-               s390_brc (code, cond, displace);                                \
-       } else {                                                                \
-               s390_jcl (code, cond, displace);                                \
-       }                                                                       \
-} else {                                                                       \
-       mono_add_patch_info (cfg, code - cfg->native_code,                      \
-                            MONO_PATCH_INFO_BB, ins->inst_true_bb);            \
-       s390_jcl (code, cond, 0);                                               \
-}                                                                              \
-}
-
-#define EMIT_UNCOND_BRANCH(ins)                                                        \
-{                                                                                      \
-if (ins->inst_target_bb->native_offset) {                                      \
-       int displace;                                                           \
-       displace = ((cfg->native_code +                                         \
-                   ins->inst_target_bb->native_offset) - code) / 2;            \
-       if (s390_is_imm16(displace)) {                                          \
-               s390_brc (code, S390_CC_UN, displace);                          \
-       } else {                                                                \
-               s390_jcl (code, S390_CC_UN, displace);                          \
-       }                                                                       \
-} else {                                                                       \
-       mono_add_patch_info (cfg, code - cfg->native_code,                      \
-                            MONO_PATCH_INFO_BB, ins->inst_target_bb);          \
-       s390_jcl (code, S390_CC_UN, 0);                                         \
-}                                                                              \
-}
-
-#define EMIT_COND_SYSTEM_EXCEPTION(cond,exc_name)                      \
-        do {                                                           \
-               mono_add_patch_info (cfg, code - cfg->native_code,      \
-                                   MONO_PATCH_INFO_EXC, exc_name);     \
-               s390_jcl (code, cond, 0);                               \
-       } while (0); 
-
-#define CHECK_SRCDST_COM                                               \
-       if (ins->dreg == ins->sreg2) {                                  \
-               src2 = ins->sreg1;                                      \
-       } else {                                                        \
-               src2 = ins->sreg2;                                      \
-               if (ins->dreg != ins->sreg1) {                          \
-                       s390_lr  (code, ins->dreg, ins->sreg1);         \
-               }                                                       \
-       }
-
-#define CHECK_SRCDST_NCOM                                              \
-       if (ins->dreg == ins->sreg2) {                                  \
-               src2 = s390_r13;                                        \
-               s390_lr  (code, s390_r13, ins->sreg2);                  \
-       } else {                                                        \
-               src2 = ins->sreg2;                                      \
-       }                                                               \
-       if (ins->dreg != ins->sreg1) {                                  \
-               s390_lr  (code, ins->dreg, ins->sreg1);                 \
-       }
-
-#define CHECK_SRCDST_COM_F                                             \
-       if (ins->dreg == ins->sreg2) {                                  \
-               src2 = ins->sreg1;                                      \
-       } else {                                                        \
-               src2 = ins->sreg2;                                      \
-               if (ins->dreg != ins->sreg1) {                          \
-                       s390_ldr (code, ins->dreg, ins->sreg1);         \
-               }                                                       \
-       }       
-
-#define CHECK_SRCDST_NCOM_F                                            \
-       if (ins->dreg == ins->sreg2) {                                  \
-               src2 = s390_f15;                                        \
-               s390_ldr (code, s390_r13, ins->sreg2);                  \
-       } else {                                                        \
-               src2 = ins->sreg2;                                      \
-       }                                                               \
-       if (ins->dreg != ins->sreg1) {                                  \
-               s390_ldr (code, ins->dreg, ins->sreg1);                 \
-       }
-
-#define MONO_EMIT_NEW_MOVE(cfg,dest,offset,src,imm,size) do {                  \
-                MonoInst *inst;                                                \
-               int tmpr = 0;                                                   \
-               int sReg, dReg;                                                 \
-               MONO_INST_NEW (cfg, inst, OP_NOP);                              \
-               if (size > 256) {                                               \
-                       inst->dreg        = dest;                               \
-                       inst->inst_offset = offset;                             \
-                       inst->sreg1       = src;                                \
-                       inst->inst_imm    = imm;                                \
-               } else {                                                        \
-                       if (s390_is_uimm12(offset)) {                           \
-                               inst->dreg        = dest;                       \
-                               inst->inst_offset = offset;                     \
-                       } else {                                                \
-                               dReg = mono_alloc_preg (cfg);                   \
-                               MONO_EMIT_NEW_BIALU_IMM(cfg, OP_ADD_IMM,        \
-                                       dReg, dest, offset);                    \
-                               inst->dreg        = dReg;                       \
-                               inst->inst_offset = 0;                          \
-                       }                                                       \
-                       if (s390_is_uimm12(imm)) {                              \
-                               inst->sreg1       = src;                        \
-                               inst->inst_imm    = imm;                        \
-                       } else {                                                \
-                               sReg = mono_alloc_preg (cfg);                   \
-                               MONO_EMIT_NEW_BIALU_IMM(cfg, OP_ADD_IMM,        \
-                                       sReg, src, imm);                        \
-                               inst->sreg1       = sReg;                       \
-                               inst->inst_imm    = 0;                          \
-                       }                                                       \
-               }                                                               \
-                inst->opcode           = OP_S390_MOVE;                         \
-               inst->backend.size      = size;                                 \
-        MONO_ADD_INS (cfg->cbb, inst);                                                 \
-       } while (0)
-
-#define MONO_OUTPUT_VTR(cfg, size, dr, sr, so) do {                            \
-       int reg = mono_alloc_preg (cfg); \
-       switch (size) {                                                         \
-               case 0:                                                         \
-                       MONO_EMIT_NEW_ICONST(cfg, reg, 0);                      \
-                       mono_call_inst_add_outarg_reg(cfg, call, reg, dr, FALSE);       \
-               break;                                                          \
-               case 1:                                                         \
-                       MONO_EMIT_NEW_LOAD_MEMBASE_OP(cfg, OP_LOADU1_MEMBASE,   \
-                               reg, sr, so);                                   \
-                       mono_call_inst_add_outarg_reg(cfg, call, reg, dr, FALSE);       \
-               break;                                                          \
-               case 2:                                                         \
-                       MONO_EMIT_NEW_LOAD_MEMBASE_OP(cfg, OP_LOADU2_MEMBASE,   \
-                               reg, sr, so);                                   \
-                       mono_call_inst_add_outarg_reg(cfg, call, reg, dr, FALSE);       \
-               break;                                                          \
-               case 4:                                                         \
-                       MONO_EMIT_NEW_LOAD_MEMBASE_OP(cfg, OP_LOAD_MEMBASE,     \
-                               reg, sr, so);                                   \
-                       mono_call_inst_add_outarg_reg(cfg, call, reg, dr, FALSE);       \
-               break;                                                          \
-               case 8:                                                         \
-                       MONO_EMIT_NEW_LOAD_MEMBASE_OP(cfg, OP_LOAD_MEMBASE,     \
-                               reg, sr, so);                                   \
-                       mono_call_inst_add_outarg_reg(cfg, call, reg, dr, FALSE);       \
-                       reg = mono_alloc_preg (cfg); \
-                       MONO_EMIT_NEW_LOAD_MEMBASE_OP(cfg, OP_LOAD_MEMBASE,     \
-                               reg, sr, so + sizeof (guint32));                                        \
-                       mono_call_inst_add_outarg_reg(cfg, call, reg, dr + 1, FALSE);   \
-               break;                                                          \
-       }                                                                       \
-} while (0)
-
-#define MONO_OUTPUT_VTS(cfg, size, dr, dx, sr, so) do {                                \
-       int tmpr;                                                               \
-       switch (size) {                                                         \
-               case 0:                                                         \
-                       tmpr = mono_alloc_preg (cfg); \
-                       MONO_EMIT_NEW_ICONST(cfg, tmpr, 0);                     \
-                       MONO_EMIT_NEW_STORE_MEMBASE(cfg, OP_STORE_MEMBASE_REG,  \
-                               dr, dx, tmpr);                                  \
-               break;                                                          \
-               case 1:                                                         \
-                       tmpr = mono_alloc_preg (cfg); \
-                       MONO_EMIT_NEW_LOAD_MEMBASE_OP(cfg, OP_LOADU1_MEMBASE,   \
-                               tmpr, sr, so);                                  \
-                       MONO_EMIT_NEW_STORE_MEMBASE(cfg, OP_STORE_MEMBASE_REG,  \
-                               dr, dx, tmpr);                                  \
-               break;                                                          \
-               case 2:                                                         \
-                       tmpr = mono_alloc_preg (cfg); \
-                       MONO_EMIT_NEW_LOAD_MEMBASE_OP(cfg, OP_LOADU2_MEMBASE,   \
-                               tmpr, sr, so);                                  \
-                       MONO_EMIT_NEW_STORE_MEMBASE(cfg, OP_STORE_MEMBASE_REG,  \
-                               dr, dx, tmpr);                                  \
-               break;                                                          \
-               case 4:                                                         \
-               case 8:                                                         \
-                       MONO_EMIT_NEW_MOVE (cfg, dr, dx, sr, so, size);         \
-               break;                                                          \
-       }                                                                       \
-} while (0)
-
-#undef DEBUG
-#define DEBUG(a) if (cfg->verbose_level > 1) a
-
-#define MAX_EXC        16
-
-#define S390_TRACE_STACK_SIZE (5*sizeof(gint32)+3*sizeof(gdouble))
-
-#define MAX (a, b) ((a) > (b) ? (a) : (b))
-
-/*========================= End of Defines =========================*/
-
-/*------------------------------------------------------------------*/
-/*                 I n c l u d e s                                  */
-/*------------------------------------------------------------------*/
-
-#include "mini.h"
-#include <string.h>
-
-#include <mono/metadata/appdomain.h>
-#include <mono/metadata/debug-helpers.h>
-#include <mono/metadata/profiler-private.h>
-#include <mono/utils/mono-math.h>
-
-#include "mini-s390.h"
-#include "cpu-s390.h"
-#include "jit-icalls.h"
-#include "ir-emit.h"
-
-/*========================= End of Includes ========================*/
-
-/*------------------------------------------------------------------*/
-/*                 T y p e d e f s                                  */
-/*------------------------------------------------------------------*/
-
-typedef struct {
-       guint stack_size,
-             local_size,
-             code_size,
-             parm_size,
-             offset,
-             offStruct,
-             retStruct;
-} size_data;   
-
-/*------------------------------------------------------------------*/
-/* Used by the instrument_emit_epilog                              */
-/*------------------------------------------------------------------*/
-
-enum {
-       SAVE_NONE,
-       SAVE_STRUCT,
-       SAVE_ONE,
-       SAVE_TWO,
-       SAVE_R4,
-       SAVE_R8
-};
-
-typedef struct InstList InstList;
-
-struct InstList {
-       InstList *prev;
-       InstList *next;
-       MonoInst *data;
-};
-
-typedef enum {
-       RegTypeGeneral,
-       RegTypeBase,
-       RegTypeFP,
-       RegTypeFPR4,
-       RegTypeStructByVal,
-       RegTypeStructByValInFP,
-       RegTypeStructByAddr
-} ArgStorage;
-
-typedef struct {
-       gint32  offset;         /* offset from caller's stack */
-       gint32  offparm;        /* offset from callee's stack */
-       guint16 vtsize;         /* in param area */
-       guint8  reg;
-       ArgStorage regtype;             /* See RegType* */
-       guint32 size;           /* Size of structure used by RegTypeStructByVal */
-} ArgInfo;
-
-typedef struct {
-       int nargs;
-       int lastgr;
-       guint32 stack_usage;
-       guint32 struct_ret;
-       ArgInfo ret;
-       ArgInfo sigCookie;
-       size_data sz;
-       ArgInfo args [1];
-} CallInfo;
-
-typedef struct {
-       gint32  gr[5];          /* R2-R6                            */
-       gdouble fp[3];          /* F0-F2                            */
-} __attribute__ ((packed)) RegParm;
-
-/*========================= End of Typedefs ========================*/
-
-/*------------------------------------------------------------------*/
-/*                   P r o t o t y p e s                            */
-/*------------------------------------------------------------------*/
-
-static void indent (int);
-static guint8 * backUpStackPtr(MonoCompile *, guint8 *, gint);
-static void decodeParm (MonoType *, void *, int);
-static void enter_method (MonoMethod *, RegParm *, char *);
-static void leave_method (MonoMethod *, ...);
-static gboolean is_regsize_var (MonoType *);
-static inline void add_general (guint *, size_data *, ArgInfo *, gboolean);
-static inline void add_stackParm (guint *, size_data *, ArgInfo *, gint);
-static inline void add_float (guint *, size_data *, ArgInfo *);
-static CallInfo * get_call_info (MonoCompile *, MonoMemPool *, MonoMethodSignature *, gboolean);
-static guchar * emit_float_to_int (MonoCompile *, guchar *, int, int, int, gboolean);
-gpointer mono_arch_get_lmf_addr (void);
-static guint8 * emit_load_volatile_registers(guint8 *, MonoCompile *);
-static void emit_sig_cookie (MonoCompile *, MonoCallInst *, CallInfo *);
-
-/*========================= End of Prototypes ======================*/
-
-/*------------------------------------------------------------------*/
-/*                 G l o b a l   V a r i a b l e s                  */
-/*------------------------------------------------------------------*/
-
-int mono_exc_esp_offset = 0;
-
-static int indent_level = 0;
-
-static int appdomain_tls_offset = -1,
-           thread_tls_offset = -1;
-
-pthread_key_t lmf_addr_key;
-
-gboolean lmf_addr_key_inited = FALSE; 
-
-#if 0
-
-extern __thread MonoDomain *tls_appdomain;
-extern __thread MonoThread *tls_current_object;
-extern __thread gpointer   mono_lmf_addr;
-               
-#endif
-
-/*====================== End of Global Variables ===================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_regname                                 */
-/*                                                                  */
-/* Function    - Returns the name of the register specified by     */
-/*               the input parameter.                              */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-const char*
-mono_arch_regname (int reg) {
-       static const char * rnames[] = {
-               "s390_r0", "s390_sp", "s390_r2", "s390_r3", "s390_r4",
-               "s390_r5", "s390_r6", "s390_r7", "s390_r8", "s390_r9",
-               "s390_r10", "s390_r11", "s390_r12", "s390_r13", "s390_r14",
-               "s390_r15"
-       };
-
-       if (reg >= 0 && reg < 16)
-               return rnames [reg];
-       else
-               return "unknown";
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_fregname                                */
-/*                                                                  */
-/* Function    - Returns the name of the register specified by     */
-/*               the input parameter.                              */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-const char*
-mono_arch_fregname (int reg) {
-       static const char * rnames[] = {
-               "s390_f0", "s390_f1", "s390_f2", "s390_f3", "s390_f4",
-               "s390_f5", "s390_f6", "s390_f7", "s390_f8", "s390_f9",
-               "s390_f10", "s390_f11", "s390_f12", "s390_f13", "s390_f14",
-               "s390_f15"
-       };
-
-       if (reg >= 0 && reg < 16)
-               return rnames [reg];
-       else
-               return "unknown";
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - arch_get_argument_info                            */
-/*                                                                  */
-/* Function    - Gathers information on parameters such as size,   */
-/*               alignment, and padding. arg_info should be large  */
-/*               enough to hold param_count + 1 entries.           */
-/*                                                                 */
-/* Parameters   - @csig - Method signature                                 */
-/*               @param_count - No. of parameters to consider      */
-/*               @arg_info - An array to store the result info     */
-/*                                                                 */
-/* Returns      - Size of the activation frame                             */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-int
-mono_arch_get_argument_info (MonoGenericSharingContext *gsctx, MonoMethodSignature *csig, 
-                            int param_count, 
-                            MonoJitArgumentInfo *arg_info)
-{
-       int k, frame_size = 0;
-       int size, align, pad;
-       int offset = 8;
-
-       if (MONO_TYPE_ISSTRUCT (csig->ret)) { 
-               frame_size += sizeof (gpointer);
-               offset += 4;
-       }
-
-       arg_info [0].offset = offset;
-
-       if (csig->hasthis) {
-               frame_size += sizeof (gpointer);
-               offset += 4;
-       }
-
-       arg_info [0].size = frame_size;
-
-       for (k = 0; k < param_count; k++) {
-               
-               if (csig->pinvoke)
-                       size = mono_type_native_stack_size (csig->params [k], &align);
-               else
-                       size = mini_type_stack_size (NULL, csig->params [k], &align);
-
-               frame_size += pad = (align - (frame_size & (align - 1))) & (align - 1); 
-               arg_info [k].pad = pad;
-               frame_size += size;
-               arg_info [k + 1].pad = 0;
-               arg_info [k + 1].size = size;
-               offset += pad;
-               arg_info [k + 1].offset = offset;
-               offset += size;
-       }
-
-       align = MONO_ARCH_FRAME_ALIGNMENT;
-       frame_size += pad = (align - (frame_size & (align - 1))) & (align - 1);
-       arg_info [k].pad = pad;
-
-       return frame_size;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - retFitsInReg.                                     */
-/*                                                                  */
-/* Function    - Determines if a value can be returned in one or   */
-/*                two registers.                                    */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static inline gboolean
-retFitsInReg(guint32 size)
-{
-       switch (size) {
-               case 0:
-               case 1:
-               case 2:
-               case 4:
-               case 8:
-                       return (TRUE);
-               break;
-               default:
-                       return (FALSE);
-       }
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - backStackPtr.                                     */
-/*                                                                  */
-/* Function    - Restore Stack Pointer to previous frame.          */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static inline guint8 *
-backUpStackPtr(MonoCompile *cfg, guint8 *code, gint framePtr)
-{
-       int stackSize = cfg->stack_usage;
-
-       if (s390_is_uimm16 (cfg->stack_usage)) {
-               s390_ahi  (code, framePtr, cfg->stack_usage);
-       } else { 
-               while (stackSize > 32767) {
-                       s390_ahi  (code, framePtr, 32767);
-                       stackSize -= 32767;
-               }
-               s390_ahi  (code, framePtr, stackSize);
-       }
-       return (code);
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - indent                                            */
-/*                                                                  */
-/* Function    - Perform nice indenting to current level           */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static void 
-indent (int diff) {
-       int v;
-       if (diff < 0)
-               indent_level += diff;
-       v = indent_level;
-       printf("[%3d] ",v);
-       while (v-- > 0) {
-               printf (". ");
-       }
-       if (diff > 0) 
-               indent_level += diff;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - decodeParm                                        */
-/*                                                                  */
-/* Function    - Decode a parameter for the trace.                 */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-static void 
-decodeParm(MonoType *type, void *curParm, int size)
-{
-       guint32 simpleType;
-
-       if (type->byref) {
-               printf("[BYREF:%p], ", *((char **) curParm));
-       } else {
-               simpleType = mono_type_get_underlying_type(type)->type;
-enum_parmtype:
-               switch (simpleType) {
-                       case MONO_TYPE_I :
-                               printf ("[INTPTR:%p], ", *((int **) curParm));
-                               break;
-                       case MONO_TYPE_U :
-                               printf ("[UINTPTR:%p], ", *((int **) curParm));
-                               break;
-                       case MONO_TYPE_BOOLEAN :
-                               printf ("[BOOL:%d], ", *((int *) curParm));
-                               break;
-                       case MONO_TYPE_CHAR :
-                               printf ("[CHAR:%c], ", *((int *) curParm));
-                               break;
-                       case MONO_TYPE_I1 :
-                               printf ("[INT1:%d], ", *((int *) curParm));
-                               break; 
-                       case MONO_TYPE_I2 :
-                               printf ("[INT2:%d], ", *((int *) curParm));
-                               break; 
-                       case MONO_TYPE_I4 :
-                               printf ("[INT4:%d], ", *((int *) curParm));
-                               break; 
-                       case MONO_TYPE_U1 :
-                               printf ("[UINT1:%u], ", *((unsigned int *) curParm));
-                               break; 
-                       case MONO_TYPE_U2 :
-                               printf ("[UINT2:%u], ", *((guint16 *) curParm));
-                               break; 
-                       case MONO_TYPE_U4 :
-                               printf ("[UINT4:%u], ", *((guint32 *) curParm));
-                               break; 
-                       case MONO_TYPE_U8 :
-                               printf ("[UINT8:%llu], ", *((guint64 *) curParm));
-                               break; 
-                       case MONO_TYPE_STRING : {
-                               MonoString *s = *((MonoString **) curParm);
-                               if (s) {
-                                       g_assert (((MonoObject *) s)->vtable->klass == mono_defaults.string_class);
-                                       printf("[STRING:%p:%s], ", s, mono_string_to_utf8(s));
-                               } else {
-                                       printf("[STRING:null], ");
-                               }
-                               break;
-                       }
-                       case MONO_TYPE_CLASS :
-                       case MONO_TYPE_OBJECT : {
-                               MonoObject *obj = *((MonoObject **) curParm);
-                               MonoClass *class;
-                               if ((obj) && (obj->vtable)) {
-                                       printf("[CLASS/OBJ:");
-                                       class = obj->vtable->klass;
-                                       printf("%p [%p] ",obj,curParm);
-//                                     if (class == mono_defaults.string_class) {
-//                                             printf("[STRING:%p:%s]", 
-//                                                    *obj, mono_string_to_utf8 (obj));
-//                                     } else if (class == mono_defaults.int32_class) { 
-//                                             printf("[INT32:%p:%d]", 
-//                                                     obj, *(gint32 *)((char *)obj + sizeof (MonoObject)));
-//                                     } else
-//                                             printf("[%s.%s:%p]", 
-//                                                    class->name_space, class->name, obj);
-                                       printf("], ");
-                               } else {
-                                       printf("[OBJECT:null], ");
-                               }
-                               break;
-                       }
-                       case MONO_TYPE_PTR :
-                               printf("[PTR:%p], ", *((gpointer **) (curParm)));
-                               break;
-                       case MONO_TYPE_FNPTR :
-                               printf("[FNPTR:%p], ", *((gpointer **) (curParm)));
-                               break;
-                       case MONO_TYPE_ARRAY :
-                               printf("[ARRAY:%p], ", *((gpointer **) (curParm)));
-                               break;
-                       case MONO_TYPE_SZARRAY :
-                               printf("[SZARRAY:%p], ", *((gpointer **) (curParm)));
-                               break;
-                       case MONO_TYPE_I8 :
-                               printf("[INT8:%lld], ", *((gint64 *) (curParm)));
-                               break;
-                       case MONO_TYPE_R4 :
-                               printf("[FLOAT4:%g], ", *((double *) (curParm)));
-                               break;
-                       case MONO_TYPE_R8 :
-                               printf("[FLOAT8:%g], ", *((double *) (curParm)));
-                               break;
-                       case MONO_TYPE_VALUETYPE : {
-                               int i;
-                               MonoMarshalType *info;
-
-                               if (type->data.klass->enumtype) {
-                                       simpleType = mono_class_enum_basetype (type->data.klass)->type;
-                                       printf("{VALUETYPE} - ");
-                                       goto enum_parmtype;
-                               }
-
-                               info = mono_marshal_load_type_info (type->data.klass);
-
-                               if ((info->native_size == sizeof(float)) &&
-                                   (info->num_fields  == 1) &&
-                                   (info->fields[0].field->type->type == MONO_TYPE_R4)) {
-                                               printf("[FLOAT4:%f], ", *((float *) (curParm)));
-                                       break;
-                               }
-
-                               if ((info->native_size == sizeof(double)) &&
-                                   (info->num_fields  == 1) &&
-                                   (info->fields[0].field->type->type == MONO_TYPE_R8)) {
-                                       printf("[FLOAT8:%g], ", *((double *) (curParm)));
-                                       break;
-                               }
-
-                               printf("[VALUETYPE:");
-                               for (i = 0; i < size; i++)
-                                       printf("%02x,", *((guint8 *)curParm+i));
-                               printf("]");
-                               break;
-                       }
-                       case MONO_TYPE_TYPEDBYREF: {
-                               int i;
-                               printf("[TYPEDBYREF:");
-                               for (i = 0; i < size; i++)
-                                       printf("%02x,", *((guint8 *)curParm+i));
-                               printf("]");
-                               break;
-                       }
-                       default :
-                               printf("[?? - %d], ",simpleType);
-               }
-       }
-}
-
-/*========================= End of Function ========================*/
-
-//static int lc = 0;
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - enter_method                                      */
-/*                                                                  */
-/* Function    - Perform tracing of the entry to the current       */
-/*               method.                                           */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-static void
-enter_method (MonoMethod *method, RegParm *rParm, char *sp)
-{
-       int i, oParm = 0, iParm = 0;
-       MonoObject *obj;
-       MonoMethodSignature *sig;
-       char *fname;
-       guint32 ip;
-       CallInfo *cinfo;
-       ArgInfo *ainfo;
-       void *curParm;
-
-       fname = mono_method_full_name (method, TRUE);
-       indent (1);
-       printf ("ENTER: %s(", fname);
-       g_free (fname);
-
-       ip  = (*(guint32 *) (sp+S390_RET_ADDR_OFFSET)) & 0x7fffffff;
-       printf (") ip: %p sp: %p - ", (gpointer) ip, sp); 
-
-       if (rParm == NULL)
-               return;
-       
-       sig = mono_method_signature (method);
-       
-       cinfo = get_call_info (NULL, NULL, sig, sig->pinvoke);
-
-       if (cinfo->struct_ret) {
-               printf ("[STRUCTRET:%p], ", (gpointer) rParm->gr[0]);
-               iParm = 1;
-       }
-
-       if (sig->hasthis) {
-               gpointer *this = (gpointer *) rParm->gr[iParm];
-               obj = (MonoObject *) this;
-               if (method->klass->valuetype) { 
-                       if (obj) {
-                               printf("this:[value:%p:%08x], ", 
-                                      this, *((guint32 *)(this+sizeof(MonoObject))));
-                       } else 
-                               printf ("this:[NULL], ");
-               } else {
-                       if (obj) {
-//                             class = obj->vtable->klass;
-//                             if (class == mono_defaults.string_class) {
-//                                     printf ("this:[STRING:%p:%s], ", 
-//                                             obj, mono_string_to_utf8 ((MonoString *)obj));
-//                             } else {
-//                                     printf ("this:%p[%s.%s], ", 
-//                                             obj, class->name_space, class->name);
-//                             }
-printf("this:%p, ",obj);
-                       } else 
-                               printf ("this:NULL, ");
-               }
-               oParm++;
-       }
-                                       
-       for (i = 0; i < sig->param_count; ++i) {
-               ainfo = &cinfo->args[i + oParm];
-               switch (ainfo->regtype) {
-                       case RegTypeGeneral :
-                               decodeParm(sig->params[i], &(rParm->gr[ainfo->reg-2]), ainfo->size);
-                               break;
-                       case RegTypeFP :
-                               decodeParm(sig->params[i], &(rParm->fp[ainfo->reg]), ainfo->size);
-                               break;
-                       case RegTypeBase :
-                               decodeParm(sig->params[i], sp+ainfo->offset, ainfo->size);
-                               break;
-                       case RegTypeStructByVal :
-                               if (ainfo->reg != STK_BASE) 
-                                       curParm = &(rParm->gr[ainfo->reg-2]);
-                               else
-                                       curParm = sp+ainfo->offset;
-
-                               if (retFitsInReg (ainfo->vtsize)) 
-                                       decodeParm(sig->params[i], 
-                                                  curParm,
-                                                  ainfo->size);
-                               else
-                                       decodeParm(sig->params[i], 
-                                                  *((char **) curParm),
-                                                  ainfo->vtsize);
-                               break;
-                       case RegTypeStructByAddr :
-                               if (ainfo->reg != STK_BASE) 
-                                       curParm = &(rParm->gr[ainfo->reg-2]);
-                               else
-                                       curParm = sp+ainfo->offset;
-
-                               decodeParm(sig->params[i], 
-                                          *((char **) curParm),
-                                          ainfo->vtsize);
-                               break;
-                               
-                       default :
-                               printf("???, ");
-               }
-       }       
-       printf("\n");
-       g_free(cinfo);
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - leave_method                                      */
-/*                                                                  */
-/* Function    -                                                   */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-static void
-leave_method (MonoMethod *method, ...)
-{
-       MonoType *type;
-       char *fname;
-       guint32 ip;
-       va_list ap;
-
-       va_start(ap, method);
-
-       fname = mono_method_full_name (method, TRUE);
-       indent (-1);
-       printf ("LEAVE: %s", fname);
-       g_free (fname);
-
-       type = mono_method_signature (method)->ret;
-
-handle_enum:
-       switch (type->type) {
-       case MONO_TYPE_VOID:
-               break;
-       case MONO_TYPE_BOOLEAN: {
-               int val = va_arg (ap, int);
-               if (val)
-                       printf ("[TRUE:%d]", val);
-               else 
-                       printf ("[FALSE]");
-                       
-               break;
-       }
-       case MONO_TYPE_CHAR: {
-               int val = va_arg (ap, int);
-               printf ("[CHAR:%d]", val);
-               break;
-       }
-       case MONO_TYPE_I1: {
-               int val = va_arg (ap, int);
-               printf ("[INT1:%d]", val);
-               break;
-       }
-       case MONO_TYPE_U1: {
-               int val = va_arg (ap, int);
-               printf ("[UINT1:%d]", val);
-               break;
-       }
-       case MONO_TYPE_I2: {
-               int val = va_arg (ap, int);
-               printf ("[INT2:%d]", val);
-               break;
-       }
-       case MONO_TYPE_U2: {
-               int val = va_arg (ap, int);
-               printf ("[UINT2:%d]", val);
-               break;
-       }
-       case MONO_TYPE_I4: {
-               int val = va_arg (ap, int);
-               printf ("[INT4:%d]", val);
-               break;
-       }
-       case MONO_TYPE_U4: {
-               int val = va_arg (ap, int);
-               printf ("[UINT4:%d]", val);
-               break;
-       }
-       case MONO_TYPE_I: {
-               int val = va_arg (ap, int);
-               printf ("[INT:%d]", val);
-               printf("]");
-               break;
-       }
-       case MONO_TYPE_U: {
-               int val = va_arg (ap, int);
-               printf ("[UINT:%d]", val);
-               printf("]");
-               break;
-       }
-       case MONO_TYPE_STRING: {
-               MonoString *s = va_arg (ap, MonoString *);
-;
-               if (s) {
-                       g_assert (((MonoObject *)s)->vtable->klass == mono_defaults.string_class);
-                       printf ("[STRING:%p:%s]", s, mono_string_to_utf8 (s));
-               } else 
-                       printf ("[STRING:null], ");
-               break;
-       }
-       case MONO_TYPE_CLASS: 
-       case MONO_TYPE_OBJECT: {
-               MonoObject *o = va_arg (ap, MonoObject *);
-
-//             if ((o) && (o->vtable)) {
-//                     if (o->vtable->klass == mono_defaults.boolean_class) {
-//                             printf ("[BOOLEAN:%p:%d]", o, *((guint8 *)o + sizeof (MonoObject)));            
-//                     } else if  (o->vtable->klass == mono_defaults.int32_class) {
-//                             printf ("[INT32:%p:%d]", o, *((gint32 *)((char *)o + sizeof (MonoObject))));    
-//                     } else if  (o->vtable->klass == mono_defaults.int64_class) {
-//                             printf ("[INT64:%p:%lld]", o, *((gint64 *)((char *)o + sizeof (MonoObject))));  
-//                     } else
-//                             printf ("[%s.%s:%p]", o->vtable->klass->name_space, o->vtable->klass->name, o);
-//             } else
-                       printf ("[OBJECT:%p]", o);
-              
-               break;
-       }
-       case MONO_TYPE_PTR:
-       case MONO_TYPE_FNPTR:
-       case MONO_TYPE_ARRAY:
-       case MONO_TYPE_SZARRAY: {
-               gpointer p = va_arg (ap, gpointer);
-               printf ("[result=%p]", p);
-               break;
-       }
-       case MONO_TYPE_I8: {
-               gint64 l =  va_arg (ap, gint64);
-               printf ("[LONG:%lld]", l);
-               break;
-       }
-       case MONO_TYPE_U8: {
-               guint64 l =  va_arg (ap, guint64);
-               printf ("[ULONG:%llu]", l);
-               break;
-       }
-       case MONO_TYPE_R4: {
-               double f;
-               f = va_arg (ap, double);
-               printf ("[FLOAT4:%g]\n", f);
-               break;
-       }
-       case MONO_TYPE_R8: {
-               double f = va_arg (ap, double);
-               printf ("[FLOAT8:%g]\n", f);
-               break;
-       }
-       case MONO_TYPE_VALUETYPE: {
-               MonoMarshalType *info;
-               if (type->data.klass->enumtype) {
-                       type = mono_class_enum_basetype (type->data.klass);
-                       goto handle_enum;
-               } else {
-                       guint8 *p = va_arg (ap, gpointer);
-                       int j, size, align;
-
-                       info = mono_marshal_load_type_info (type->data.klass);
-
-                       if ((info->native_size == sizeof(float)) &&
-                           (info->num_fields  == 1) &&
-                           (info->fields[0].field->type->type == MONO_TYPE_R4)) {
-                               double f = va_arg (ap, double);
-                               printf("[FLOAT4:%g]\n", (double) f);
-                               break;
-                       }
-
-                       if ((info->native_size == sizeof(double)) &&
-                           (info->num_fields  == 1) &&
-                           (info->fields[0].field->type->type == MONO_TYPE_R8)) {
-                               double f = va_arg (ap, double);
-                               printf("[FLOAT8:%g]\n", f);
-                               break;
-                       }
-
-                       size = mono_type_size (type, &align);
-                       switch (size) {
-                       case 1:
-                       case 2:
-                       case 4:
-                       case 8:
-                               printf ("[");
-                               for (j = 0; p && j < size; j++)
-                                       printf ("%02x,", p [j]);
-                               printf ("]\n");
-                               break;
-                       default:
-                               printf ("[VALUERET]\n");
-                       }
-               }       
-               break;
-       }
-       case MONO_TYPE_TYPEDBYREF: {
-               guint8 *p = va_arg (ap, gpointer);
-               int j, size, align;
-               size = mono_type_size (type, &align);
-               switch (size) {
-               case 1:
-               case 2:
-               case 4:
-               case 8:
-                       printf ("[");
-                       for (j = 0; p && j < size; j++)
-                               printf ("%02x,", p [j]);
-                       printf ("]\n");
-                       break;
-               default:
-                       printf ("[TYPEDBYREF]\n");
-               }
-       }
-               break;
-       default:
-               printf ("(unknown return type %x)", 
-                       mono_method_signature (method)->ret->type);
-       }
-
-       ip = ((gint32) __builtin_return_address (0)) & 0x7fffffff;
-       printf (" ip: %p\n", (gpointer) ip);
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_cpu_init                                */
-/*                                                                  */
-/* Function    - Perform CPU specific initialization to execute    */
-/*               managed code.                                     */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_cpu_init (void)
-{
-       guint mode = 1;
-
-       /*--------------------------------------*/      
-       /* Set default rounding mode for FP     */
-       /*--------------------------------------*/      
-       __asm__ ("SRNM\t%0\n\t"
-               : : "m" (mode));
-}
-
-/*========================= End of Function ========================*/
-
-
-/*
- * Initialize architecture specific code.
- */
-void
-mono_arch_init (void)
-{
-}
-
-/*
- * Cleanup architecture specific code.
- */
-void
-mono_arch_cleanup (void)
-{
-}
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_cpu_optimizations                       */
-/*                                                                  */
-/* Function    - Returns the optimizations supported on this CPU   */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-guint32
-mono_arch_cpu_optimizations (guint32 *exclude_mask)
-{
-       guint32 opts = 0;
-
-       /*----------------------------------------------------------*/
-       /* no s390-specific optimizations yet                       */
-       /*----------------------------------------------------------*/
-       *exclude_mask = MONO_OPT_INLINE|MONO_OPT_LINEARS;
-//     *exclude_mask = MONO_OPT_INLINE;
-       return opts;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name         - mono_arch_cpu_enumerate_simd_versions             */
-/*                                                                  */
-/* Function     - Returns the SIMD instruction sets on this CPU     */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-guint32
-mono_arch_cpu_enumerate_simd_versions (void)
-{
-       /* SIMD is currently unimplemented */
-       return 0;
-}
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                -                                                   */
-/*                                                                  */
-/* Function    -                                                   */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-static gboolean
-is_regsize_var (MonoType *t) {
-       if (t->byref)
-               return TRUE;
-       switch (mono_type_get_underlying_type (t)->type) {
-       case MONO_TYPE_I4:
-       case MONO_TYPE_U4:
-       case MONO_TYPE_I:
-       case MONO_TYPE_U:
-       case MONO_TYPE_PTR:
-       case MONO_TYPE_FNPTR:
-               return TRUE;
-       case MONO_TYPE_OBJECT:
-       case MONO_TYPE_STRING:
-       case MONO_TYPE_CLASS:
-       case MONO_TYPE_SZARRAY:
-       case MONO_TYPE_ARRAY:
-               return FALSE;
-       case MONO_TYPE_VALUETYPE:
-               if (t->data.klass->enumtype)
-                       return is_regsize_var (mono_class_enum_basetype (t->data.klass));
-               return FALSE;
-       }
-       return FALSE;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_get_allocatable_int_vars                */
-/*                                                                  */
-/* Function    -                                                   */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-GList *
-mono_arch_get_allocatable_int_vars (MonoCompile *cfg)
-{
-       GList *vars = NULL;
-       int i;
-
-       for (i = 0; i < cfg->num_varinfo; i++) {
-               MonoInst *ins = cfg->varinfo [i];
-               MonoMethodVar *vmv = MONO_VARINFO (cfg, i);
-
-               /* unused vars */
-               if (vmv->range.first_use.abs_pos >= vmv->range.last_use.abs_pos)
-                       continue;
-
-               if (ins->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT) || 
-                   (ins->opcode != OP_LOCAL && ins->opcode != OP_ARG))
-                       continue;
-
-               /* we can only allocate 32 bit values */
-               if (is_regsize_var (ins->inst_vtype)) {
-                       g_assert (MONO_VARINFO (cfg, i)->reg == -1);
-                       g_assert (i == vmv->idx);
-                       vars = mono_varlist_insert_sorted (cfg, vars, vmv, FALSE);
-               }
-       }
-
-       return vars;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_global_int_regs                         */
-/*                                                                  */
-/* Function    - Return a list of usable integer registers.        */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-GList *
-mono_arch_get_global_int_regs (MonoCompile *cfg)
-{
-       GList *regs = NULL;
-       MonoMethodHeader *header;
-       int i, top = 13;
-
-       header = cfg->header;
-       if ((cfg->flags & MONO_CFG_HAS_ALLOCA) || header->num_clauses)
-               cfg->frame_reg = s390_r11;
-
-       /* FIXME: s390_r12 is reserved for bkchain_reg. Only reserve it if needed */
-       top = 12;
-       for (i = 8; i < top; ++i) {
-               if (cfg->frame_reg != i)
-                       regs = g_list_prepend (regs, GUINT_TO_POINTER (i));
-       }
-
-       return regs;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                -  mono_arch_flush_icache                           */
-/*                                                                  */
-/* Function    -  Flush the CPU icache.                            */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_flush_icache (guint8 *code, gint size)
-{
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                -  mono_arch_is_inst_imm                                */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-gboolean 
-mono_arch_is_inst_imm (gint64 imm)
-{
-       /* The lowering pass will take care of it */
-       return TRUE;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - add_general                                       */
-/*                                                                  */
-/* Function    - Determine code and stack size incremements for a  */
-/*               parameter.                                        */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static void inline
-add_general (guint *gr, size_data *sz, ArgInfo *ainfo, gboolean simple)
-{
-       int disp;
-
-       if (simple) {
-               if (*gr > S390_LAST_ARG_REG) {
-                       sz->stack_size  = S390_ALIGN(sz->stack_size, sizeof(long));
-                       ainfo->offset   = sz->stack_size;
-                       ainfo->reg      = STK_BASE;
-                       ainfo->regtype  = RegTypeBase;
-                       sz->stack_size += sizeof(int);
-                       sz->local_size += sizeof(int);
-                       sz->offStruct  += sizeof(int);
-                       sz->code_size  += 12;    
-               } else {
-                       ainfo->reg      = *gr;
-                       sz->code_size  += 8;    
-               }
-       } else {
-               if (*gr > S390_LAST_ARG_REG - 1) {
-                       disp            = sz->stack_size;
-                       sz->stack_size  = S390_ALIGN(sz->stack_size, S390_STACK_ALIGNMENT);
-                       disp            = sz->stack_size - disp;
-                       ainfo->offset   = sz->stack_size;
-                       ainfo->reg      = STK_BASE;
-                       ainfo->regtype  = RegTypeBase;
-                       sz->stack_size += sizeof(long long);
-                       sz->local_size += (sizeof(long long) + disp);
-                       sz->offStruct  += (sizeof(long long) + disp);
-                       sz->code_size  += 10;   
-               } else {
-                       ainfo->reg      = *gr;
-                       sz->code_size  += 8;
-               }
-               (*gr) ++;
-       }
-       (*gr) ++;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - add_stackParm                                     */
-/*                                                                  */
-/* Function    - Determine code and stack size incremements for a  */
-/*               parameter.                                        */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static void inline
-add_stackParm (guint *gr, size_data *sz, ArgInfo *ainfo, gint size)
-{
-       if (*gr > S390_LAST_ARG_REG) {
-               sz->stack_size  = S390_ALIGN(sz->stack_size, sizeof(long));
-               ainfo->reg          = STK_BASE;
-               ainfo->offset   = sz->stack_size;
-               sz->stack_size += sizeof (gpointer);
-               sz->parm_size  += sizeof(gpointer);
-               sz->offStruct  += sizeof(gpointer);
-       } else {
-               ainfo->reg      = *gr;
-               ainfo->offset   = sz->stack_size;
-       }
-       (*gr) ++;
-       ainfo->offparm  = sz->offset;
-       sz->offset      = S390_ALIGN(sz->offset+size, sizeof(long));
-       ainfo->size     = size;
-       ainfo->regtype  = RegTypeStructByAddr; 
-       ainfo->vtsize   = size;
-       sz->parm_size  += size;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - add_float                                         */
-/*                                                                  */
-/* Function    - Determine code and stack size incremements for a  */
-/*               float parameter.                                  */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static void inline
-add_float (guint *fr,  size_data *sz, ArgInfo *ainfo)
-{
-       if ((*fr) <= S390_LAST_FPARG_REG) {
-               ainfo->regtype = RegTypeFP;
-               ainfo->reg     = *fr;
-               sz->code_size += 4;
-               (*fr) += 2;
-       }
-       else {
-               ainfo->offset   = sz->stack_size;
-               ainfo->reg      = STK_BASE;
-               ainfo->regtype  = RegTypeBase;
-               sz->code_size  += 4;
-               sz->stack_size += ainfo->size;
-               sz->local_size += ainfo->size;
-               sz->offStruct  += ainfo->size;
-       }
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - get_call_info                                         */
-/*                                                                  */
-/* Function    - Determine the amount of space required for code   */
-/*               and stack. In addition determine starting points  */
-/*               for stack-based parameters, and area for struct-  */
-/*               ures being returned on the stack.                 */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static CallInfo *
-get_call_info (MonoCompile *cfg, MonoMemPool *mp, MonoMethodSignature *sig, gboolean is_pinvoke)
-{
-       guint i, fr, gr, size;
-       int nParm = sig->hasthis + sig->param_count;
-       MonoType *ret_type;
-       guint32 simpletype, align;
-       CallInfo *cinfo;
-       size_data *sz;
-       MonoGenericSharingContext *gsctx = cfg ? cfg->generic_sharing_context : NULL;
-
-       if (mp)
-               cinfo = mono_mempool_alloc0 (mp, sizeof (CallInfo) + sizeof (ArgInfo) * nParm);
-       else
-               cinfo = g_malloc0 (sizeof (CallInfo) + sizeof (ArgInfo) * nParm);
-
-       fr                = 0;
-       gr                = s390_r2;
-       nParm                 = 0;
-       cinfo->struct_ret = 0;
-       sz                = &cinfo->sz;
-       sz->offset            = 0;
-       sz->offStruct     = S390_MINIMAL_STACK_SIZE;
-       sz->retStruct     = 0;
-       sz->stack_size    = S390_MINIMAL_STACK_SIZE;
-       sz->code_size     = 0;
-       sz->parm_size     = 0;
-       sz->local_size    = 0;
-
-       /*----------------------------------------------------------*/
-       /* We determine the size of the return code/stack in case we*/
-       /* need to reserve a register to be used to address a stack */
-       /* area that the callee will use.                           */
-       /*----------------------------------------------------------*/
-
-       ret_type = mono_type_get_underlying_type (sig->ret);
-       ret_type = mini_get_basic_type_from_generic (gsctx, ret_type);
-       simpletype = ret_type->type;
-enum_retvalue:
-       switch (simpletype) {
-               case MONO_TYPE_BOOLEAN:
-               case MONO_TYPE_I1:
-               case MONO_TYPE_U1:
-               case MONO_TYPE_I2:
-               case MONO_TYPE_U2:
-               case MONO_TYPE_CHAR:
-               case MONO_TYPE_I4:
-               case MONO_TYPE_U4:
-               case MONO_TYPE_I:
-               case MONO_TYPE_U:
-               case MONO_TYPE_CLASS:
-               case MONO_TYPE_OBJECT:
-               case MONO_TYPE_SZARRAY:
-               case MONO_TYPE_ARRAY:
-               case MONO_TYPE_PTR:
-               case MONO_TYPE_FNPTR:
-               case MONO_TYPE_STRING:
-                       cinfo->ret.reg = s390_r2;
-                       sz->code_size += 4;
-                       break;
-               case MONO_TYPE_R4:
-               case MONO_TYPE_R8:
-                       cinfo->ret.reg = s390_f0;
-                       sz->code_size += 4;
-                       break;
-               case MONO_TYPE_I8:
-               case MONO_TYPE_U8:
-                       cinfo->ret.reg = s390_r2;
-                       sz->code_size += 4;
-                       break;
-               case MONO_TYPE_GENERICINST:
-                       if (!mono_type_generic_inst_is_valuetype (ret_type)) {
-                               cinfo->ret.reg = s390_r2;
-                               sz->code_size += 4;
-                               break;
-                       }
-                       /* Fall through */
-               case MONO_TYPE_VALUETYPE: {
-                       MonoClass *klass = mono_class_from_mono_type (sig->ret);
-                       if (klass->enumtype) {
-                               simpletype = mono_class_enum_basetype (klass)->type;
-                               goto enum_retvalue;
-                       }
-                       if (sig->pinvoke)
-                               size = mono_class_native_size (klass, &align);
-                       else
-                               size = mono_class_value_size (klass, &align);
-       
-                       cinfo->ret.reg    = s390_r2;
-                       cinfo->struct_ret = 1;
-                       cinfo->ret.size   = size;
-                       cinfo->ret.vtsize = size;
-                       gr++;
-                        break;
-               }
-               case MONO_TYPE_TYPEDBYREF:
-                       size = sizeof (MonoTypedRef);
-                       cinfo->ret.reg    = s390_r2;
-                       cinfo->struct_ret = 1;
-                       cinfo->ret.size   = size;
-                       cinfo->ret.vtsize = size;
-                       gr++;
-                       break;
-               case MONO_TYPE_VOID:
-                       break;
-               default:
-                       g_error ("mini-s390: cannot handle as return value 0x%x (0x%x)", sig->ret->type,simpletype);
-       }
-
-       if (sig->hasthis) {
-               add_general (&gr, sz, cinfo->args+nParm, TRUE);
-               cinfo->args[nParm].size = sizeof(gpointer);
-               nParm++;
-       }
-
-       /*----------------------------------------------------------*/
-       /* We determine the size of the parameter code and stack    */
-       /* requirements by checking the types and sizes of the      */
-       /* parameters.                                              */
-       /*----------------------------------------------------------*/
-
-       for (i = 0; i < sig->param_count; ++i) {
-               MonoType *ptype;
-
-               /*--------------------------------------------------*/
-               /* Handle vararg type calls. All args are put on    */
-               /* the stack.                                       */
-               /*--------------------------------------------------*/
-               if ((sig->call_convention == MONO_CALL_VARARG) &&
-                   (i == sig->sentinelpos)) {
-                       gr = S390_LAST_ARG_REG + 1;
-                       add_general (&gr, sz, &cinfo->sigCookie, TRUE);
-               }
-
-               if (sig->params [i]->byref) {
-                       add_general (&gr, sz, cinfo->args+nParm, TRUE);
-                       cinfo->args[nParm].size = sizeof(gpointer);
-                       nParm++;
-                       continue;
-               }
-
-               ptype = mono_type_get_underlying_type (sig->params [i]);
-               ptype = mini_get_basic_type_from_generic (gsctx, ptype);
-               simpletype = ptype->type;
-               switch (simpletype) {
-               case MONO_TYPE_BOOLEAN:
-               case MONO_TYPE_I1:
-               case MONO_TYPE_U1:
-                       cinfo->args[nParm].size = sizeof(char);
-                       add_general (&gr, sz, cinfo->args+nParm, TRUE);
-                       nParm++;
-                       break;
-               case MONO_TYPE_I2:
-               case MONO_TYPE_U2:
-               case MONO_TYPE_CHAR:
-                       cinfo->args[nParm].size = sizeof(short);
-                       add_general (&gr, sz, cinfo->args+nParm, TRUE);
-                       nParm++;
-                       break;
-               case MONO_TYPE_I4:
-               case MONO_TYPE_U4:
-                       cinfo->args[nParm].size = sizeof(int);
-                       add_general (&gr, sz, cinfo->args+nParm, TRUE);
-                       nParm++;
-                       break;
-               case MONO_TYPE_I:
-               case MONO_TYPE_U:
-               case MONO_TYPE_PTR:
-               case MONO_TYPE_FNPTR:
-               case MONO_TYPE_CLASS:
-               case MONO_TYPE_OBJECT:
-               case MONO_TYPE_STRING:
-               case MONO_TYPE_SZARRAY:
-               case MONO_TYPE_ARRAY:
-                       cinfo->args[nParm].size = sizeof(gpointer);
-                       add_general (&gr, sz, cinfo->args+nParm, TRUE);
-                       nParm++;
-                       break;
-               case MONO_TYPE_I8:
-               case MONO_TYPE_U8:
-                       cinfo->args[nParm].size = sizeof(long long);
-                       add_general (&gr, sz, cinfo->args+nParm, FALSE);
-                       nParm++;
-                       break;
-               case MONO_TYPE_R4:
-                       cinfo->args[nParm].size = sizeof(float);
-                       add_float (&fr, sz, cinfo->args+nParm);
-                       nParm++;
-                       break;
-               case MONO_TYPE_R8:
-                       cinfo->args[nParm].size = sizeof(double);
-                       add_float (&fr, sz, cinfo->args+nParm);
-                       nParm++;
-                       break;
-               case MONO_TYPE_GENERICINST:
-                       if (!mono_type_generic_inst_is_valuetype (ptype)) {
-                               cinfo->args[nParm].size = sizeof(gpointer);
-                               add_general (&gr, sz, cinfo->args+nParm, TRUE);
-                               nParm++;
-                               break;
-                       }
-                       /* Fall through */
-               case MONO_TYPE_VALUETYPE: {
-                       MonoMarshalType *info;
-                       MonoClass *klass = mono_class_from_mono_type (sig->params [i]);
-                       if (sig->pinvoke)
-                               size = mono_class_native_size (klass, &align);
-                       else
-                               size = mono_class_value_size (klass, &align);
-       
-                       info = mono_marshal_load_type_info (klass);
-
-                       if ((info->native_size == sizeof(float)) &&
-                           (info->num_fields  == 1) &&
-                           (info->fields[0].field->type->type == MONO_TYPE_R4)) {
-                               cinfo->args[nParm].size = sizeof(float);
-                               add_float(&fr, sz, cinfo->args+nParm);
-                               nParm ++;
-                               break;
-                       }
-
-                       if ((info->native_size == sizeof(double)) &&
-                           (info->num_fields  == 1) &&
-                           (info->fields[0].field->type->type == MONO_TYPE_R8)) {
-                               cinfo->args[nParm].size = sizeof(double);
-                               add_float(&fr, sz, cinfo->args+nParm);
-                               nParm ++;
-                               break;
-                       }
-
-                       cinfo->args[nParm].vtsize  = 0;
-                       cinfo->args[nParm].size    = 0;
-
-                       switch (size) {
-                               /*----------------------------------*/
-                               /* On S/390, structures of size 1,  */
-                               /* 2, 4, and 8 bytes are passed in  */
-                               /* (a) register(s).                 */
-                               /*----------------------------------*/
-                               case 0:
-                               case 1:
-                               case 2:
-                               case 4:
-                                       add_general(&gr, sz, cinfo->args+nParm, TRUE);
-                                       cinfo->args[nParm].size    = size;
-                                       cinfo->args[nParm].regtype = RegTypeStructByVal; 
-                                       nParm++;
-                                       sz->local_size            += sizeof(long);
-                                       break;
-                               case 8:
-                                       add_general(&gr, sz, cinfo->args+nParm, FALSE);
-                                       cinfo->args[nParm].size    = sizeof(long long);
-                                       cinfo->args[nParm].regtype = RegTypeStructByVal; 
-                                       nParm++;
-                                       sz->local_size            += sizeof(long long);
-                                       break;
-                               default:
-                                       add_stackParm(&gr, sz, cinfo->args+nParm, size);
-                                       nParm++;
-                       }
-               }
-                       break;
-               case MONO_TYPE_TYPEDBYREF: {
-                       int size = sizeof (MonoTypedRef);
-
-                       cinfo->args[nParm].vtsize  = 0;
-                       cinfo->args[nParm].size    = 0;
-
-                       switch (size) {
-                               /*----------------------------------*/
-                               /* On S/390, structures of size 1,  */
-                               /* 2, 4, and 8 bytes are passed in  */
-                               /* (a) register(s).                 */
-                               /*----------------------------------*/
-                               case 0:
-                               case 1:
-                               case 2:
-                               case 4:
-                                       add_general(&gr, sz, cinfo->args+nParm, TRUE);
-                                       cinfo->args[nParm].size    = size;
-                                       cinfo->args[nParm].regtype = RegTypeStructByVal; 
-                                       nParm++;
-                                       sz->local_size            += sizeof(long);
-                                       break;
-                               case 8:
-                                       add_general(&gr, sz, cinfo->args+nParm, FALSE);
-                                       cinfo->args[nParm].size    = sizeof(long long);
-                                       cinfo->args[nParm].regtype = RegTypeStructByVal; 
-                                       nParm++;
-                                       sz->local_size            += sizeof(long long);
-                                       break;
-                               default:
-                                       add_stackParm(&gr, sz, cinfo->args+nParm, size);
-                                       nParm++;
-                       }
-               }
-                       break;
-               default:
-                       g_error ("Can't trampoline 0x%x", sig->params [i]->type);
-               }
-       }
-
-       /*----------------------------------------------------------*/
-       /* If we are passing a structure back then if it won't be   */
-       /* in a register(s) then we make room at the end of the     */
-       /* parameters that may have been placed on the stack        */
-       /*----------------------------------------------------------*/
-       if (cinfo->struct_ret) {
-               cinfo->ret.offset = sz->stack_size;
-               switch (cinfo->ret.size) {
-               case 0:
-               case 1:
-               case 2:
-               case 4:
-               case 8:
-                       break;
-               default:
-                       sz->stack_size   += S390_ALIGN(cinfo->ret.size, align);
-               }
-       }
-
-       /*----------------------------------------------------------*/
-       /* Handle the case where there are no implicit arguments    */
-       /*----------------------------------------------------------*/
-       if ((sig->call_convention == MONO_CALL_VARARG) &&
-           (sig->param_count == sig->sentinelpos)) {
-               gr = S390_LAST_ARG_REG + 1;
-               add_general (&gr, sz, &cinfo->sigCookie, TRUE);
-       }
-
-       cinfo->lastgr   = gr;
-       sz->stack_size  = sz->stack_size + sz->local_size + sz->parm_size + 
-                         sz->offset;
-       sz->stack_size  = S390_ALIGN(sz->stack_size, sizeof(long));
-
-       return (cinfo);
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_allocate_vars                           */
-/*                                                                  */
-/* Function    - Set var information according to the calling      */
-/*               convention for S/390. The local var stuff should  */
-/*               most likely be split in another method.           */
-/*                                                                 */
-/* Parameter    - @m - Compile unit.                               */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_allocate_vars (MonoCompile *cfg)
-{
-       MonoMethodSignature *sig;
-       MonoMethodHeader *header;
-       MonoInst *inst;
-       CallInfo *cinfo;
-       int iParm, iVar, offset, size, align, curinst;
-       int frame_reg = STK_BASE;
-       int sArg, eArg;
-
-       header  = cfg->header;
-
-       cfg->flags |= MONO_CFG_HAS_SPILLUP;
-
-       sig     = mono_method_signature (cfg->method);
-       
-       cinfo   = get_call_info (cfg, cfg->mempool, sig, sig->pinvoke);
-
-       /*---------------------------------------------------------*/    
-       /* We use the frame register also for any method that has  */ 
-       /* filter clauses. This way, when the handlers are called, */
-       /* the code will reference local variables using the frame */
-       /* reg instead of the stack pointer: if we had to restore  */
-       /* the stack pointer, we'd corrupt the method frames that  */
-       /* are already on the stack (since filters get called      */
-       /* before stack unwinding happens) when the filter code    */
-       /* would call any method.                                  */
-       /*---------------------------------------------------------*/    
-       if ((cfg->flags & MONO_CFG_HAS_ALLOCA) || header->num_clauses)
-               frame_reg = s390_r11;
-
-       cfg->frame_reg = frame_reg;
-
-       cfg->arch.bkchain_reg = -1;
-
-       if (frame_reg != STK_BASE) 
-               cfg->used_int_regs |= 1 << frame_reg;           
-
-       sig     = mono_method_signature (cfg->method);
-       
-       cinfo   = get_call_info (cfg, cfg->mempool, sig, sig->pinvoke);
-
-       if (!cinfo->struct_ret) {
-               switch (mono_type_get_underlying_type (sig->ret)->type) {
-               case MONO_TYPE_VOID:
-                       break;
-               default:
-                       cfg->ret->opcode = OP_REGVAR;
-                       cfg->ret->dreg   = s390_r2;
-                       break;
-               }
-       }
-
-       /*--------------------------------------------------------------*/
-       /* local vars are at a positive offset from the stack pointer   */
-       /* also note that if the function uses alloca, we use s390_r11  */
-       /* to point at the local variables.                             */
-       /* add parameter area size for called functions                 */
-       /*--------------------------------------------------------------*/
-       offset          = (cfg->param_area + S390_MINIMAL_STACK_SIZE);
-       cfg->sig_cookie = 0;
-
-       if (cinfo->struct_ret) {
-               inst               = cfg->vret_addr;
-               offset             = S390_ALIGN(offset, sizeof(gpointer));
-               inst->inst_offset  = offset;
-               inst->opcode       = OP_REGOFFSET;
-               inst->inst_basereg = frame_reg;
-               offset            += sizeof(gpointer);
-               if (G_UNLIKELY (cfg->verbose_level > 1)) {
-                       printf ("vret_addr =");
-                       mono_print_ins (cfg->vret_addr);
-               }
-       }
-
-       if (sig->hasthis) {
-               inst = cfg->args [0];
-               if (inst->opcode != OP_REGVAR) {
-                       inst->opcode       = OP_REGOFFSET;
-                       inst->inst_basereg = frame_reg;
-                       offset             = S390_ALIGN(offset, sizeof(gpointer));
-                       inst->inst_offset  = offset;
-                       offset            += sizeof (gpointer);
-               }
-               curinst = sArg = 1;
-       } else {
-               curinst = sArg = 0;
-       }
-
-       eArg = sig->param_count + sArg;
-
-       if (sig->call_convention == MONO_CALL_VARARG)
-               cfg->sig_cookie += S390_MINIMAL_STACK_SIZE;
-
-       for (iParm = sArg; iParm < eArg; ++iParm) {
-               inst = cfg->args [curinst];
-               if (inst->opcode != OP_REGVAR) {
-                       switch (cinfo->args[iParm].regtype) {
-                           case RegTypeStructByAddr : {
-                                       MonoInst *indir;
-
-                                       size = sizeof (gpointer);
-
-                                       if (cinfo->args [iParm].reg == STK_BASE) {
-                                               cfg->arch.bkchain_reg = s390_r12;
-                                               cfg->used_int_regs |= 1 << cfg->arch.bkchain_reg;
-
-                                               inst->opcode       = OP_REGOFFSET;
-                                               inst->inst_basereg = cfg->arch.bkchain_reg;
-                                               inst->inst_offset  = cinfo->args [iParm].offset;
-                                       } else {
-                                               inst->opcode = OP_REGOFFSET;
-                                               inst->inst_basereg = frame_reg;
-                                               inst->inst_offset = S390_ALIGN(offset, sizeof (gpointer));
-                                       }
-
-                                       /* Add a level of indirection */
-                                       MONO_INST_NEW (cfg, indir, 0);
-                                       *indir = *inst;
-                                       inst->opcode = OP_VTARG_ADDR;
-                                       inst->inst_left = indir;
-                               }
-                                       break;
-                               case RegTypeStructByVal :
-                                       size               = cinfo->args[iParm].size;
-                                       offset             = S390_ALIGN(offset, size);
-                                       inst->opcode = OP_REGOFFSET;
-                                       inst->inst_basereg = frame_reg;
-                                       inst->inst_offset = S390_ALIGN (offset, size);
-                                       break;
-                               default :
-                                       if (cinfo->args [iParm].reg == STK_BASE) {
-                                               /*
-                                                * These arguments are in the previous frame, so we can't 
-                                                * compute their offset from the current frame pointer right
-                                                * now, since cfg->stack_offset is not yet known, so dedicate a 
-                                                * register holding the previous frame pointer.
-                                                */
-                                               cfg->arch.bkchain_reg = s390_r12;
-                                               cfg->used_int_regs |= 1 << cfg->arch.bkchain_reg;
-
-                                               inst->opcode       = OP_REGOFFSET;
-                                               inst->inst_basereg = cfg->arch.bkchain_reg;
-                                               size               = (cinfo->args[iParm].size < 4
-                                                                                 ? 4 - cinfo->args[iParm].size
-                                                                                 : 0);
-                                               inst->inst_offset  = cinfo->args [iParm].offset + size;
-                                               size = sizeof (long);
-                                       } else {
-                                               inst->opcode       = OP_REGOFFSET;
-                                               inst->inst_basereg = frame_reg;
-                                               size               = (cinfo->args[iParm].size < 8
-                                                                                 ? sizeof(long)  
-                                                                                 : sizeof(long long));
-                                               offset             = S390_ALIGN(offset, size);
-                                               inst->inst_offset  = offset;
-                                       }
-                       }
-                       if ((sig->call_convention == MONO_CALL_VARARG) && 
-                           (cinfo->args[iParm].regtype != RegTypeGeneral) &&
-                           (iParm < sig->sentinelpos)) 
-                               cfg->sig_cookie += size;
-
-                       offset += size;
-               }
-               curinst++;
-       }
-
-       curinst = cfg->locals_start;
-       for (iVar = curinst; iVar < cfg->num_varinfo; ++iVar) {
-               inst = cfg->varinfo [iVar];
-               if ((inst->flags & MONO_INST_IS_DEAD) || 
-                   (inst->opcode == OP_REGVAR))
-                       continue;
-
-               /*--------------------------------------------------*/
-               /* inst->backend.is_pinvoke indicates native sized value types, */
-               /* this is used by the pinvoke wrappers when they   */
-               /* call functions returning structure               */
-               /*--------------------------------------------------*/
-               if (inst->backend.is_pinvoke && MONO_TYPE_ISSTRUCT (inst->inst_vtype))
-                       size = mono_class_native_size (mono_class_from_mono_type(inst->inst_vtype), &align);
-               else
-                       size = mono_type_size (inst->inst_vtype, &align);
-
-               offset             = S390_ALIGN(offset, align);
-               inst->inst_offset  = offset;
-               inst->opcode       = OP_REGOFFSET;
-               inst->inst_basereg = frame_reg;
-               offset            += size;
-               DEBUG (g_print("allocating local %d to %ld\n", iVar, inst->inst_offset));
-       }
-
-       /*------------------------------------------------------*/
-       /* Allow space for the trace method stack area if needed*/
-       /*------------------------------------------------------*/
-       if (mono_jit_trace_calls != NULL && mono_trace_eval (cfg->method)) {
-               offset += S390_TRACE_STACK_SIZE;
-       }
-
-       /*------------------------------------------------------*/
-       /* Reserve space to save LMF and caller saved registers */
-       /*------------------------------------------------------*/
-       if (cfg->method->save_lmf)
-               offset += sizeof (MonoLMF);
-
-       /*------------------------------------------------------*/
-       /* align the offset                                     */
-       /*------------------------------------------------------*/
-       cfg->stack_offset = S390_ALIGN(offset, S390_STACK_ALIGNMENT);
-
-       /* Fix up offsets for arguments whose value is in the parent frame */
-       for (iParm = sArg; iParm < eArg; ++iParm) {
-               inst = cfg->args [iParm];
-
-               if (inst->opcode == OP_S390_STKARG) {
-                       inst->opcode = OP_REGOFFSET;
-                       inst->inst_offset += cfg->stack_offset;
-               }
-       }
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_create_vars                                 */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_create_vars (MonoCompile *cfg)
-{
-       MonoMethodSignature *sig;
-       CallInfo *cinfo;
-
-       sig = mono_method_signature (cfg->method);
-
-       cinfo = get_call_info (cfg, cfg->mempool, sig, sig->pinvoke);
-
-       if (cinfo->struct_ret) {
-               cfg->vret_addr = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_ARG);
-               if (G_UNLIKELY (cfg->verbose_level > 1)) {
-                       printf ("vret_addr = ");
-                       mono_print_ins (cfg->vret_addr);
-               }
-       }
-}
-
-/*========================= End of Function ========================*/
-
-static void
-add_outarg_reg2 (MonoCompile *cfg, MonoCallInst *call, ArgStorage storage, int reg, MonoInst *tree)
-{
-       MonoInst *ins;
-
-       switch (storage) {
-       case RegTypeGeneral:
-               MONO_INST_NEW (cfg, ins, OP_MOVE);
-               ins->dreg = mono_alloc_ireg (cfg);
-               ins->sreg1 = tree->dreg;
-               MONO_ADD_INS (cfg->cbb, ins);
-               mono_call_inst_add_outarg_reg (cfg, call, ins->dreg, reg, FALSE);
-               break;
-       case RegTypeFP:
-               MONO_INST_NEW (cfg, ins, OP_FMOVE);
-               ins->dreg = mono_alloc_freg (cfg);
-               ins->sreg1 = tree->dreg;
-               MONO_ADD_INS (cfg->cbb, ins);
-               mono_call_inst_add_outarg_reg (cfg, call, ins->dreg, reg, TRUE);
-               break;
-       case RegTypeFPR4:
-               MONO_INST_NEW (cfg, ins, OP_S390_SETF4RET);
-               ins->dreg = mono_alloc_freg (cfg);
-               ins->sreg1 = tree->dreg;
-               MONO_ADD_INS (cfg->cbb, ins);
-               mono_call_inst_add_outarg_reg (cfg, call, ins->dreg, reg, TRUE);
-               break;
-       default:
-               g_assert_not_reached ();
-       }
-}
-
-static void
-emit_sig_cookie (MonoCompile *cfg, MonoCallInst *call, CallInfo *cinfo)
-{
-       MonoMethodSignature *tmpSig;
-       MonoInst *sig_arg;
-                       
-       cfg->disable_aot = TRUE;
-
-       /*----------------------------------------------------------*/
-       /* mono_ArgIterator_Setup assumes the signature cookie is   */
-       /* passed first and all the arguments which were before it  */
-       /* passed on the stack after the signature. So compensate   */
-       /* by passing a different signature.                        */
-       /*----------------------------------------------------------*/
-       tmpSig = mono_metadata_signature_dup (call->signature);
-       tmpSig->param_count -= call->signature->sentinelpos;
-       tmpSig->sentinelpos  = 0;
-       if (tmpSig->param_count > 0)
-               memcpy (tmpSig->params, 
-                       call->signature->params + call->signature->sentinelpos, 
-                       tmpSig->param_count * sizeof(MonoType *));
-
-       MONO_INST_NEW (cfg, sig_arg, OP_ICONST);
-       sig_arg->dreg = mono_alloc_ireg (cfg);
-       sig_arg->inst_p0 = tmpSig;
-       MONO_ADD_INS (cfg->cbb, sig_arg);
-
-       MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, STK_BASE, 
-                                                                cinfo->sigCookie.offset, sig_arg->dreg);
-}
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_emit_call                                   */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
-{
-       MonoInst *in;
-       MonoMethodSignature *sig;
-       MonoInst *ins;
-       int i, n, lParamArea;
-       CallInfo *cinfo;
-       ArgInfo *ainfo = NULL;
-       int stackSize;
-
-       sig = call->signature;
-       n = sig->param_count + sig->hasthis;
-       DEBUG (g_print ("Call requires: %d parameters\n",n));
-       
-       cinfo = get_call_info (cfg, cfg->mempool, sig, sig->pinvoke);
-
-       stackSize         = cinfo->sz.stack_size + cinfo->sz.local_size + cinfo->sz.parm_size + cinfo->sz.offset;
-       call->stack_usage = MAX(stackSize, call->stack_usage);
-       lParamArea        = MAX((call->stack_usage-S390_MINIMAL_STACK_SIZE-cinfo->sz.parm_size), 0);
-       cfg->param_area   = MAX(((signed) cfg->param_area), lParamArea);
-       cfg->flags       |= MONO_CFG_HAS_CALLS;
-
-       if (cinfo->struct_ret) {
-               MONO_INST_NEW (cfg, ins, OP_MOVE);
-               ins->sreg1 = call->vret_var->dreg;
-               ins->dreg = mono_alloc_preg (cfg);
-               MONO_ADD_INS (cfg->cbb, ins);
-               mono_call_inst_add_outarg_reg (cfg, call, ins->dreg, cinfo->ret.reg, FALSE);
-       }
-
-       for (i = 0; i < n; ++i) {
-               ainfo = cinfo->args + i;
-               MonoType *t;
-
-               if (i >= sig->hasthis)
-                       t = sig->params [i - sig->hasthis];
-               else
-                       t = &mono_defaults.int_class->byval_arg;
-               t = mono_type_get_underlying_type (t);
-
-               in = call->args [i];
-
-               if ((sig->call_convention == MONO_CALL_VARARG) &&
-                   (i == sig->sentinelpos)) {
-                       emit_sig_cookie (cfg, call, cinfo);
-               }
-
-               switch (ainfo->regtype) {
-               case RegTypeGeneral:
-                       if (!t->byref && (t->type == MONO_TYPE_I8 || t->type == MONO_TYPE_U8)) {
-                               MONO_INST_NEW (cfg, ins, OP_MOVE);
-                               ins->dreg = mono_alloc_ireg (cfg);
-                               ins->sreg1 = in->dreg + 2;
-                               MONO_ADD_INS (cfg->cbb, ins);
-                               mono_call_inst_add_outarg_reg (cfg, call, ins->dreg, ainfo->reg, FALSE);
-                               MONO_INST_NEW (cfg, ins, OP_MOVE);
-                               ins->dreg = mono_alloc_ireg (cfg);
-                               ins->sreg1 = in->dreg + 1;
-                               MONO_ADD_INS (cfg->cbb, ins);
-                               mono_call_inst_add_outarg_reg (cfg, call, ins->dreg, ainfo->reg + 1, FALSE);
-                       } else {
-                               add_outarg_reg2 (cfg, call, ainfo->regtype, ainfo->reg, in);
-                       }
-                       break;
-               case RegTypeFP:
-                       if (MONO_TYPE_ISSTRUCT (t)) {
-                               /* Valuetype passed in one fp register */
-                               ainfo->regtype = RegTypeStructByValInFP;
-                               /* Fall through */
-                       } else {
-                               if (ainfo->size == 4)
-                                       ainfo->regtype = RegTypeFPR4;
-                               add_outarg_reg2 (cfg, call, ainfo->regtype, ainfo->reg, in);
-                               break;
-                       }
-               case RegTypeStructByVal:
-               case RegTypeStructByAddr: {
-                       guint32 align;
-                       guint32 size;
-
-                       if (sig->params [i - sig->hasthis]->type == MONO_TYPE_TYPEDBYREF) {
-                               size = sizeof (MonoTypedRef);
-                               align = sizeof (gpointer);
-                       }
-                       else
-                               if (sig->pinvoke)
-                                       size = mono_type_native_stack_size (&in->klass->byval_arg, &align);
-                               else {
-                                       /* 
-                                        * Other backends use mono_type_stack_size (), but that
-                                        * aligns the size to 8, which is larger than the size of
-                                        * the source, leading to reads of invalid memory if the
-                                        * source is at the end of address space.
-                                        */
-                                       size = mono_class_value_size (in->klass, &align);
-                               }
-
-                       g_assert (in->klass);
-
-                       ainfo->offparm += cinfo->sz.offStruct;
-
-                       MONO_INST_NEW (cfg, ins, OP_OUTARG_VT);
-                       ins->sreg1 = in->dreg;
-                       ins->klass = in->klass;
-                       ins->backend.size = ainfo->size;
-                       ins->inst_p0 = call;
-                       ins->inst_p1 = mono_mempool_alloc (cfg->mempool, sizeof (ArgInfo));
-                       memcpy (ins->inst_p1, ainfo, sizeof (ArgInfo));
-
-                       MONO_ADD_INS (cfg->cbb, ins);
-
-                       if (ainfo->regtype == RegTypeStructByAddr) {
-                               /* 
-                                * We use OP_OUTARG_VT to copy the valuetype to a stack location, then
-                                * use the normal OUTARG opcodes to pass the address of the location to
-                                * the callee.
-                                */
-                               int treg = mono_alloc_preg (cfg);
-                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ADD_IMM, treg, 
-                                                                                STK_BASE, ainfo->offparm);
-                               if (ainfo->reg == STK_BASE) {
-                                       /* The address is passed on the stack */
-                                       MONO_INST_NEW (cfg, ins, OP_STORE_MEMBASE_REG);
-                                       ins->inst_destbasereg = STK_BASE;
-                                       ins->inst_offset = ainfo->offset;
-                                       ins->sreg1 = treg;
-                                       MONO_ADD_INS (cfg->cbb, ins);
-                               } else {
-                                       mono_call_inst_add_outarg_reg (cfg, call, treg, ainfo->reg, FALSE);
-                               }
-                       }
-                       break;
-               }
-               case RegTypeBase:
-                       if (!t->byref && t->type == MONO_TYPE_R4) {
-                               MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORER4_MEMBASE_REG, 
-                                                                                        STK_BASE, ainfo->offset,
-                                                                                        in->dreg);
-                       } else if (!t->byref && (t->type == MONO_TYPE_R8)) {
-                               MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORER8_MEMBASE_REG, 
-                                                                                        STK_BASE, ainfo->offset,
-                                                                                        in->dreg);
-                       } else if (!t->byref && (t->type == MONO_TYPE_I8 || t->type == MONO_TYPE_U8)) {
-                               MONO_INST_NEW (cfg, ins, OP_STORE_MEMBASE_REG);
-                               ins->inst_destbasereg = STK_BASE;
-                               ins->inst_offset = ainfo->offset + MINI_LS_WORD_OFFSET;
-                               ins->sreg1 = in->dreg + 1;
-                               MONO_ADD_INS (cfg->cbb, ins);
-
-                               MONO_INST_NEW (cfg, ins, OP_STORE_MEMBASE_REG);
-                               ins->inst_destbasereg = STK_BASE;
-                               ins->inst_offset = ainfo->offset + MINI_MS_WORD_OFFSET;
-                               ins->sreg1 = in->dreg + 2;
-                               MONO_ADD_INS (cfg->cbb, ins);
-                       } else {
-                               MONO_INST_NEW (cfg, ins, OP_STORE_MEMBASE_REG);
-                               ins->inst_destbasereg = STK_BASE;
-                               ins->inst_offset = ainfo->offset;
-                               ins->sreg1 = in->dreg;
-                               MONO_ADD_INS (cfg->cbb, ins);
-                       }
-                       break;
-               default:
-                       g_assert_not_reached ();
-                       break;
-               }
-       }
-
-       /*
-        * Handle the case where there are no implicit arguments 
-        */
-       if ((sig->call_convention == MONO_CALL_VARARG) &&
-           (i == sig->sentinelpos)) {
-               emit_sig_cookie (cfg, call, cinfo);
-       }
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_emit_outarg_vt                              */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
-{
-       MonoCallInst *call = (MonoCallInst*)ins->inst_p0;
-       ArgInfo *ainfo = (ArgInfo*)ins->inst_p1;
-       int size = ins->backend.size;
-
-       if (ainfo->regtype == RegTypeStructByVal) {
-               /*
-                               arg->ins.sreg1  = ainfo->reg;
-                               arg->ins.opcode = OP_OUTARG_VT;
-                               arg->size       = ainfo->size;
-                               arg->offset     = ainfo->offset;
-                               arg->offPrm     = ainfo->offparm + cinfo->sz.offStruct;
-               */
-               if (ainfo->reg != STK_BASE) {
-                       MONO_OUTPUT_VTR (cfg, size, ainfo->reg, src->dreg, 0);
-               } else {
-                       MONO_OUTPUT_VTS (cfg, size, ainfo->reg, ainfo->offset,
-                                                         src->dreg, 0);
-               }       
-       } else if (ainfo->regtype == RegTypeStructByValInFP) {
-               int dreg = mono_alloc_freg (cfg);
-
-               if (ainfo->size == 4) {
-                       MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADR4_MEMBASE, dreg, src->dreg, 0);
-                       MONO_EMIT_NEW_UNALU (cfg, OP_S390_SETF4RET, dreg, dreg);
-               } else {
-                       g_assert (ainfo->size == 8);
-
-                       MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADR8_MEMBASE, dreg, src->dreg, 0);
-               }
-
-               mono_call_inst_add_outarg_reg (cfg, call, dreg, ainfo->reg, TRUE);
-       } else {
-               MONO_EMIT_NEW_MOVE (cfg, STK_BASE, ainfo->offparm,
-                                                        src->dreg, 0, size);
-       }
-}
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_emit_setret                                 */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_emit_setret (MonoCompile *cfg, MonoMethod *method, MonoInst *val)
-{
-       MonoType *ret = mono_type_get_underlying_type (mono_method_signature (method)->ret);
-
-       if (!ret->byref) {
-               if (ret->type == MONO_TYPE_R4) {
-                       MONO_EMIT_NEW_UNALU (cfg, OP_S390_SETF4RET, s390_f0, val->dreg);
-                       return;
-               } else if (ret->type == MONO_TYPE_R8) {
-                       MONO_EMIT_NEW_UNALU (cfg, OP_FMOVE, s390_f0, val->dreg);
-                       return;
-               } else if (ret->type == MONO_TYPE_I8 || ret->type == MONO_TYPE_U8) {
-                       MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, s390_r3, val->dreg + 1);
-                       MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, s390_r2, val->dreg + 2);
-                       return;
-               }
-       }
-                       
-       MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, cfg->ret->dreg, val->dreg);
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_instrument_mem_needs                    */
-/*                                                                  */
-/* Function    - Allow tracing to work with this interface (with   */
-/*               an optional argument).                            */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_instrument_mem_needs (MonoMethod *method, int *stack, int *code)
-{
-       /* no stack room needed now (may be needed for FASTCALL-trace support) */
-       *stack = 0;
-       /* split prolog-epilog requirements? */
-       *code = 50; /* max bytes needed: check this number */
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_instrument_prolog                       */
-/*                                                                  */
-/* Function    - Create an "instrumented" prolog.                  */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void*
-mono_arch_instrument_prolog (MonoCompile *cfg, void *func, void *p, 
-                            gboolean enable_arguments)
-{
-       guchar  *code = p;
-       int     parmOffset, 
-               fpOffset,
-               baseReg;
-
-       parmOffset = cfg->stack_usage - S390_TRACE_STACK_SIZE;
-       if (cfg->method->save_lmf)
-               parmOffset -= sizeof(MonoLMF);
-       fpOffset   = parmOffset + (5*sizeof(gint32));
-       if (fpOffset > 4096) {
-               s390_lr (code, s390_r12, STK_BASE);
-               baseReg = s390_r12;
-               while (fpOffset > 4096) {
-                       s390_ahi (code, baseReg, 4096);
-                       fpOffset   -= 4096;
-                       parmOffset -= 4096;
-               }
-       } else {
-               baseReg = STK_BASE;
-       }       
-
-       s390_stm  (code, s390_r2, s390_r6, baseReg, parmOffset);
-       s390_std  (code, s390_f0, 0, baseReg, fpOffset);
-       s390_std  (code, s390_f1, 0, baseReg, fpOffset+sizeof(gdouble));
-       s390_std  (code, s390_f2, 0, baseReg, fpOffset+2*sizeof(gdouble));
-       s390_basr (code, s390_r13, 0);
-       s390_j    (code, 6);
-       s390_word (code, cfg->method);
-       s390_word (code, func);
-       s390_l    (code, s390_r2, 0, s390_r13, 4);
-       s390_la   (code, s390_r3, 0, baseReg, parmOffset);
-       s390_lr   (code, s390_r4, STK_BASE);
-       s390_ahi  (code, s390_r4, cfg->stack_usage);
-       s390_l    (code, s390_r1, 0, s390_r13, 8);
-       s390_basr (code, s390_r14, s390_r1);
-       s390_ld   (code, s390_f2, 0, baseReg, fpOffset+2*sizeof(gdouble));
-       s390_ld   (code, s390_f1, 0, baseReg, fpOffset+sizeof(gdouble));
-       s390_ld   (code, s390_f0, 0, baseReg, fpOffset);
-       s390_lm   (code, s390_r2, s390_r6, baseReg, parmOffset);
-
-       return code;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_instrument_epilog                       */
-/*                                                                  */
-/* Function    - Create an epilog that will handle the returned    */
-/*               values used in instrumentation.                   */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void*
-mono_arch_instrument_epilog_full (MonoCompile *cfg, void *func, void *p, gboolean enable_arguments, gboolean preserve_argument_registers)
-{
-       guchar     *code = p;
-       int        save_mode = SAVE_NONE,
-                  saveOffset;
-       MonoMethod *method = cfg->method;
-       int        rtype = mono_type_get_underlying_type (mono_method_signature (method)->ret)->type;
-
-       saveOffset = cfg->stack_usage - S390_TRACE_STACK_SIZE;
-       if (method->save_lmf)
-               saveOffset -= sizeof(MonoLMF);
-
-handle_enum:
-       switch (rtype) {
-       case MONO_TYPE_VOID:
-               /* special case string .ctor icall */
-               if (strcmp (".ctor", method->name) && method->klass == mono_defaults.string_class)
-                       save_mode = SAVE_ONE;
-               else
-                       save_mode = SAVE_NONE;
-               break;
-       case MONO_TYPE_I8:
-       case MONO_TYPE_U8:
-               save_mode = SAVE_TWO;
-               break;
-       case MONO_TYPE_R4:
-               save_mode = SAVE_R4;
-               break;
-       case MONO_TYPE_R8:
-               save_mode = SAVE_R8;
-               break;
-       case MONO_TYPE_VALUETYPE:
-               if (mono_method_signature (method)->ret->data.klass->enumtype) {
-                       rtype = mono_class_enum_basetype (mono_method_signature (method)->ret->data.klass)->type;
-                       goto handle_enum;
-               }
-               save_mode = SAVE_STRUCT;
-               break;
-       default:
-               save_mode = SAVE_ONE;
-               break;
-       }
-
-       switch (save_mode) {
-       case SAVE_TWO:
-               s390_stm (code, s390_r2, s390_r3, cfg->frame_reg, saveOffset);
-               if (enable_arguments) {
-                       s390_lr (code, s390_r4, s390_r3);
-                       s390_lr (code, s390_r3, s390_r2);
-               }
-               break;
-       case SAVE_ONE:
-               s390_st (code, s390_r2, 0, cfg->frame_reg, saveOffset);
-               if (enable_arguments) {
-                       s390_lr (code, s390_r3, s390_r2);
-               }
-               break;
-       case SAVE_R4:
-               s390_std (code, s390_f0, 0, cfg->frame_reg, saveOffset);
-               if (enable_arguments) {
-                       s390_ldebr (code, s390_f0, s390_f0);
-               }
-               break;
-       case SAVE_R8:
-               s390_std (code, s390_f0, 0, cfg->frame_reg, saveOffset);
-               break;
-       case SAVE_STRUCT:
-               s390_st (code, s390_r2, 0, cfg->frame_reg, saveOffset);
-               if (enable_arguments) {
-                       s390_l (code, s390_r3, 0, cfg->frame_reg, 
-                               S390_MINIMAL_STACK_SIZE+cfg->param_area);
-               }
-               break;
-       case SAVE_NONE:
-       default:
-               break;
-       }
-
-       s390_basr (code, s390_r13, 0);
-       s390_j    (code, 6);
-       s390_word (code, cfg->method);
-       s390_word (code, func);
-       s390_l    (code, s390_r2, 0, s390_r13, 4);
-       s390_l    (code, s390_r1, 0, s390_r13, 8);
-       s390_basr (code, s390_r14, s390_r1);
-
-       switch (save_mode) {
-       case SAVE_TWO:
-               s390_lm  (code, s390_r2, s390_r3, cfg->frame_reg, saveOffset);
-               break;
-       case SAVE_ONE:
-               s390_l   (code, s390_r2, 0, cfg->frame_reg, saveOffset);
-               break;
-       case SAVE_R4:
-       case SAVE_R8:
-               s390_ld  (code, s390_f0, 0, cfg->frame_reg, saveOffset);
-               break;
-       case SAVE_STRUCT:
-               s390_l   (code, s390_r2, 0, cfg->frame_reg, saveOffset);
-               break;
-       case SAVE_NONE:
-       default:
-               break;
-       }
-
-       return code;
-}
-
-/*========================= End of Function ========================*/
-
-void
-mono_arch_peephole_pass_1 (MonoCompile *cfg, MonoBasicBlock *bb)
-{
-}
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_peephole_pass                                     */
-/*                                                                  */
-/* Function    - Form a peephole pass at the code looking for      */
-/*               simple optimizations.                             */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_peephole_pass_2 (MonoCompile *cfg, MonoBasicBlock *bb)
-{
-       MonoInst *ins, *n;
-
-       MONO_BB_FOR_EACH_INS_SAFE (bb, n, ins) {
-               mono_peephole_ins (bb, ins);
-       }
-}
-
-/*========================= End of Function ========================*/
-
-void
-mono_arch_lowering_pass (MonoCompile *cfg, MonoBasicBlock *bb)
-{
-       MonoInst *ins, *next;
-
-       MONO_BB_FOR_EACH_INS_SAFE (bb, next, ins) {
-               switch (ins->opcode) {
-               case OP_DIV_IMM:
-               case OP_REM_IMM:
-               case OP_IDIV_IMM:
-               case OP_IREM_IMM:
-               case OP_IDIV_UN_IMM:
-               case OP_IREM_UN_IMM:
-               case OP_LOCALLOC_IMM:
-                       mono_decompose_op_imm (cfg, bb, ins);
-                       break;
-               default:
-                       break;
-               }
-       }
-
-       bb->max_vreg = cfg->next_vreg;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - emit_float_to_int                                 */
-/*                                                                  */
-/* Function    - Create instructions which will convert a floating */
-/*               point value to integer.                           */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-static guchar*
-emit_float_to_int (MonoCompile *cfg, guchar *code, int dreg, int sreg, int size, gboolean is_signed)
-{
-       /* sreg is a float, dreg is an integer reg. */
-       if (is_signed) {
-               s390_cfdbr (code, dreg, 5, sreg);
-               switch (size) {
-                       case 1:
-                               s390_lhi  (code, s390_r0, 0);
-                               s390_lhi  (code, s390_r13, 0xff);
-                               s390_ltr  (code, dreg, dreg);
-                               s390_jnl  (code, 4);
-                               s390_lhi  (code, s390_r0, 0x80);
-                               s390_nr   (code, dreg, s390_r13);
-                               s390_or   (code, dreg, s390_r0);
-                               break;
-               }
-       } else {
-               short *o[1];
-               s390_basr   (code, s390_r13, 0);
-               s390_j      (code, 10);
-               s390_llong  (code, 0x41e0000000000000LL);
-               s390_llong  (code, 0x41f0000000000000LL);
-               s390_ldr    (code, s390_f15, sreg);
-               s390_cdb    (code, s390_f15, 0, s390_r13, 4);
-               s390_jl     (code, 0); CODEPTR(code, o[0]);
-               s390_sdb    (code, s390_f15, 0, s390_r13, 12);
-               s390_cfdbr  (code, dreg, 7, s390_f15);
-               s390_j      (code, 4);
-               PTRSLOT(code, o[0]);
-               s390_cfdbr  (code, dreg, 5, sreg);
-               switch (size) {
-                       case 1: 
-                               s390_lhi  (code, s390_r0, 0xff);
-                               s390_nr   (code, dreg, s390_r0);
-                               break;
-                       case 2:
-                               s390_lhi  (code, s390_r0, -1);
-                               s390_srl  (code, s390_r0, 0, 16);
-                               s390_nr   (code, dreg, s390_r0);
-                               break;
-               }
-       }
-       return code;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_output_basic_block                      */
-/*                                                                  */
-/* Function    - Perform the "real" work of emitting instructions  */
-/*               that will do the work of in the basic block.      */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
-{
-       MonoInst *ins;
-       MonoCallInst *call;
-       guint offset;
-       guint8 *code = cfg->native_code + cfg->code_len;
-       MonoInst *last_ins = NULL;
-       guint last_offset = 0;
-       int max_len, cpos, src2;
-
-       /* we don't align basic blocks of loops on s390 */
-
-       if (cfg->verbose_level > 2)
-               g_print ("Basic block %d starting at offset 0x%x\n", bb->block_num, bb->native_offset);
-
-       cpos = bb->max_offset;
-
-       if (cfg->prof_options & MONO_PROFILE_COVERAGE) {
-               //MonoCoverageInfo *cov = mono_get_coverage_info (cfg->method);
-               //g_assert (!mono_compile_aot);
-               //cpos += 6;
-               //if (bb->cil_code)
-               //      cov->data [bb->dfn].iloffset = bb->cil_code - cfg->cil_code;
-               /* this is not thread save, but good enough */
-               /* fixme: howto handle overflows? */
-               //x86_inc_mem (code, &cov->data [bb->dfn].count); 
-       }
-
-       MONO_BB_FOR_EACH_INS (bb, ins) {
-               offset = code - cfg->native_code;
-
-               max_len = ((guint8 *)ins_get_spec (ins->opcode))[MONO_INST_LEN];
-
-               if (offset > (cfg->code_size - max_len - 16)) {
-                       cfg->code_size *= 2;
-                       cfg->native_code = g_realloc (cfg->native_code, cfg->code_size);
-                       code = cfg->native_code + offset;
-               }
-
-               mono_debug_record_line_number (cfg, ins, offset);
-
-               switch (ins->opcode) {
-               case OP_STOREI1_MEMBASE_IMM: {
-                       s390_lhi (code, s390_r0, ins->inst_imm);
-                       if (s390_is_uimm12(ins->inst_offset))
-                               s390_stc (code, s390_r0, 0, ins->inst_destbasereg, ins->inst_offset);
-                       else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_stc  (code, s390_r0, s390_r13, ins->inst_destbasereg, 0);
-                       }
-               }
-                       break;
-               case OP_STOREI2_MEMBASE_IMM: {
-                       s390_lhi (code, s390_r0, ins->inst_imm);
-                       if (s390_is_uimm12(ins->inst_offset)) {
-                               s390_sth (code, s390_r0, 0, ins->inst_destbasereg, ins->inst_offset);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_sth  (code, s390_r0, s390_r13, ins->inst_destbasereg, 0);
-                       }
-               }
-                       break;
-               case OP_STORE_MEMBASE_IMM:
-               case OP_STOREI4_MEMBASE_IMM: {
-                       if (s390_is_imm16(ins->inst_imm)) {
-                               s390_lhi  (code, s390_r0, ins->inst_imm);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               s390_l    (code, s390_r0, 0, s390_r13, 4);
-                       }
-                       if (s390_is_uimm12(ins->inst_offset)) {
-                               s390_st  (code, s390_r0, 0, ins->inst_destbasereg, ins->inst_offset);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_st   (code, s390_r0, s390_r13, ins->inst_destbasereg, 0);
-                       }
-               }
-                       break;
-               case OP_STOREI1_MEMBASE_REG: {
-                       if (s390_is_uimm12(ins->inst_offset)) {
-                               s390_stc  (code, ins->sreg1, 0, ins->inst_destbasereg, ins->inst_offset);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_stc  (code, ins->sreg1, s390_r13, ins->inst_destbasereg, 0);
-                       }
-               }
-                       break;
-               case OP_STOREI2_MEMBASE_REG: {
-                       if (s390_is_uimm12(ins->inst_offset)) {
-                               s390_sth  (code, ins->sreg1, 0, ins->inst_destbasereg, ins->inst_offset);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_sth  (code, ins->sreg1, s390_r13, ins->inst_destbasereg, 0);
-                       }
-               }
-                       break;
-               case OP_STORE_MEMBASE_REG:
-               case OP_STOREI4_MEMBASE_REG: {
-                       if (s390_is_uimm12(ins->inst_offset)) {
-                               s390_st   (code, ins->sreg1, 0, ins->inst_destbasereg, ins->inst_offset);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_st   (code, ins->sreg1, s390_r13, ins->inst_destbasereg, 0);
-                       }
-               }
-                       break;
-               case OP_LOADU4_MEM:
-                       g_assert_not_reached ();
-                       break;
-               case OP_LOAD_MEMBASE:
-               case OP_LOADI4_MEMBASE:
-               case OP_LOADU4_MEMBASE: {
-                       if (s390_is_uimm12(ins->inst_offset))
-                               s390_l    (code, ins->dreg, 0, ins->inst_basereg, ins->inst_offset);
-                       else {
-                               if (s390_is_imm16(ins->inst_offset)) {
-                                       s390_lhi (code, s390_r13, ins->inst_offset);
-                                       s390_l   (code, ins->dreg, s390_r13, ins->inst_basereg, 0);
-                               } else {
-                                       s390_basr (code, s390_r13, 0);
-                                       s390_j    (code, 4);
-                                       s390_word (code, ins->inst_offset);
-                                       s390_l    (code, s390_r13, 0, s390_r13, 4);
-                                       s390_l    (code, ins->dreg, s390_r13, ins->inst_basereg, 0);
-                               }
-                       }
-               }
-                       break;
-               case OP_LOADU1_MEMBASE: {
-                       s390_lhi (code, s390_r0, 0);
-                       if (s390_is_uimm12(ins->inst_offset))
-                               s390_ic   (code, s390_r0, 0, ins->inst_basereg, ins->inst_offset);
-                       else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_ic   (code, s390_r0, s390_r13, ins->inst_basereg, 0);
-                       }
-                       s390_lr   (code, ins->dreg, s390_r0);
-               }
-                       break;
-               case OP_LOADI1_MEMBASE: {
-                       s390_lhi (code, s390_r0, 0);
-                       if (s390_is_uimm12(ins->inst_offset))
-                               s390_ic   (code, s390_r0, 0, ins->inst_basereg, ins->inst_offset);
-                       else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_ic   (code, s390_r0, s390_r13, ins->inst_basereg, 0);
-                       }
-                       s390_lhi  (code, s390_r13, 0x80);
-                       s390_nr   (code, s390_r13, s390_r0);
-                       s390_jz   (code, 5);
-                       s390_lhi  (code, s390_r13, 0xff00);
-                       s390_or   (code, s390_r0, s390_r13);
-                       s390_lr   (code, ins->dreg, s390_r0);
-               }
-                       break;
-               case OP_LOADU2_MEMBASE: {
-                       s390_lhi (code, s390_r0, 0);
-                       if (s390_is_uimm12(ins->inst_offset))
-                               s390_icm  (code, s390_r0, 3, ins->inst_basereg, ins->inst_offset);
-                       else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_ar   (code, s390_r13, ins->inst_basereg);
-                               s390_icm  (code, s390_r0, 3, s390_r13, 0);
-                       }
-                       s390_lr  (code, ins->dreg, s390_r0);
-               }
-                       break;
-               case OP_LOADI2_MEMBASE: {
-                       s390_lhi (code, s390_r0, 0);
-                       if (s390_is_uimm12(ins->inst_offset))
-                               s390_lh   (code, s390_r0, 0, ins->inst_basereg, ins->inst_offset);
-                       else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_lh   (code, s390_r0, s390_r13, ins->inst_basereg, 0);
-                       }
-                       s390_lr  (code, ins->dreg, s390_r0);
-               }
-                       break;
-
-               case OP_ICONV_TO_I1: {
-                       if (ins->dreg != ins->sreg1)
-                               s390_lr   (code, ins->dreg, ins->sreg1);
-                       s390_sll (code, ins->dreg, 0, 24);
-                       s390_sra (code, ins->dreg, 0, 24);
-               }
-                       break;
-               case OP_ICONV_TO_I2: {
-                       if (ins->dreg != ins->sreg1)
-                               s390_lr   (code, ins->dreg, ins->sreg1);
-                       s390_sll (code, ins->dreg, 0, 16);
-                       s390_sra (code, ins->dreg, 0, 16);
-               }
-                       break;
-               case OP_ICONV_TO_U1: {
-                       s390_lhi  (code, s390_r0, 0xff);
-                       if (ins->dreg != ins->sreg1) {
-                               s390_lr   (code, ins->dreg, ins->sreg1);
-                       }
-                       s390_nr   (code, ins->dreg, s390_r0);
-               }
-                       break;
-               case OP_ICONV_TO_U2: {
-                       s390_lhi  (code, s390_r0, -1);
-                       s390_sll  (code, s390_r0, 0, 16);
-                       s390_srl  (code, s390_r0, 0, 16);
-                       if (ins->dreg != ins->sreg1) {
-                               s390_lr   (code, ins->dreg, ins->sreg1);
-                       }
-                       s390_nr   (code, ins->dreg, s390_r0);
-               }
-                       break;
-               case OP_COMPARE:
-               case OP_ICOMPARE: {
-                       gboolean un = FALSE;
-                       MonoInst *next = ins->next;
-
-                       if ((next) && 
-                           (((next->opcode >= OP_IBNE_UN) &&
-                             (next->opcode <= OP_IBLT_UN)) || 
-                            ((next->opcode >= OP_COND_EXC_NE_UN) &&
-                             (next->opcode <= OP_COND_EXC_LT_UN)) ||
-                            ((next->opcode >= OP_COND_EXC_INE_UN) &&
-                             (next->opcode <= OP_COND_EXC_ILT_UN)) ||
-                            ((next->opcode == OP_CLT_UN) ||
-                             (next->opcode == OP_CGT_UN)) ||
-                            ((next->opcode == OP_ICLT_UN) ||
-                             (next->opcode == OP_ICGT_UN))))
-                               un = TRUE;
-
-                       if (un)
-                               s390_clr  (code, ins->sreg1, ins->sreg2);
-                       else
-                               s390_cr   (code, ins->sreg1, ins->sreg2);
-               }
-                       break;
-               case OP_COMPARE_IMM:
-               case OP_ICOMPARE_IMM: {
-                       gboolean un = FALSE;
-                       MonoInst *next = ins->next;
-
-                       if ((next) && 
-                           (((next->opcode >= OP_IBNE_UN) &&
-                             (next->opcode <= OP_IBLT_UN)) || 
-                            ((next->opcode >= OP_COND_EXC_NE_UN) &&
-                             (next->opcode <= OP_COND_EXC_LT_UN)) ||
-                            ((next->opcode >= OP_COND_EXC_INE_UN) &&
-                             (next->opcode <= OP_COND_EXC_ILT_UN)) ||
-                            ((next->opcode == OP_CLT_UN) ||
-                             (next->opcode == OP_CGT_UN)) ||
-                            ((next->opcode == OP_ICLT_UN) ||
-                             (next->opcode == OP_ICGT_UN))))
-                               un = TRUE;
-
-                       if (s390_is_imm16 (ins->inst_imm)) {
-                               s390_lhi  (code, s390_r0, ins->inst_imm);
-                               if (un)
-                                       s390_clr  (code, ins->sreg1, s390_r0);
-                               else
-                                       s390_cr   (code, ins->sreg1, s390_r0);
-                       }
-                       else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               if (un)
-                                       s390_cl   (code, ins->sreg1, 0, s390_r13, 4);
-                               else
-                                       s390_c    (code, ins->sreg1, 0, s390_r13, 4);
-                       }
-               }
-                       break;
-               case OP_BREAK: {
-                       mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_ABS, mono_break);
-                        s390_brasl (code, s390_r14, 0);
-               }
-                       break;
-               case OP_ADDCC:
-               case OP_IADDCC: {
-                       CHECK_SRCDST_COM;
-                       s390_alr  (code, ins->dreg, src2);
-               }
-                       break;
-               case OP_IADD: {
-                       CHECK_SRCDST_COM;
-                       s390_ar   (code, ins->dreg, src2);
-               }
-                       break;
-               case OP_ADC:
-               case OP_IADC: {
-                       CHECK_SRCDST_COM;
-                       s390_alcr (code, ins->dreg, src2);
-               }
-                       break;
-               case OP_ADD_IMM:
-               case OP_IADD_IMM: {
-                       if (ins->dreg != ins->sreg1) {
-                               s390_lr   (code, ins->dreg, ins->sreg1);
-                       }
-                       if ((ins->next) &&
-                           (ins->next->opcode == OP_ADC_IMM)) {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               s390_a (code, ins->dreg, 0, s390_r13, 4);
-                       } else {
-                               if (s390_is_imm16 (ins->inst_imm)) {
-                                       s390_ahi  (code, ins->dreg, ins->inst_imm);
-                               } else {
-                                       s390_basr (code, s390_r13, 0);
-                                       s390_j    (code, 4);
-                                       s390_word (code, ins->inst_imm);
-                                       s390_a (code, ins->dreg, 0, s390_r13, 4);
-                               }
-                       }
-               }
-                       break;
-               case OP_ADDCC_IMM: {
-                       if ((ins->next) &&
-                           (ins->next->opcode == OP_ADC_IMM)) {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               if (ins->dreg != ins->sreg1) {
-                                       s390_lr   (code, ins->dreg, ins->sreg1);
-                               }
-                               s390_al   (code, ins->dreg, 0, s390_r13, 4);
-                       } else {
-                               if (s390_is_imm16 (ins->inst_imm)) {
-                                       if (ins->dreg != ins->sreg1) {
-                                               s390_lr   (code, ins->dreg, ins->sreg1);
-                                       }
-                                       s390_lhi  (code, s390_r0, ins->inst_imm);
-                                       s390_alcr (code, ins->dreg, s390_r0);
-                               } else {
-                                       s390_basr (code, s390_r13, 0);
-                                       s390_j    (code, 4);
-                                       s390_word (code, ins->inst_imm);
-                                       if (ins->dreg != ins->sreg1) {
-                                               s390_lr   (code, ins->dreg, ins->sreg1);
-                                       }
-                                       s390_al   (code, ins->dreg, 0, s390_r13, 4);
-                               }
-                       }
-               }
-                       break;
-               case OP_ADC_IMM: {
-                       if (s390_is_imm16 (ins->inst_imm)) {
-                               if (ins->dreg != ins->sreg1) {
-                                       s390_lr   (code, ins->dreg, ins->sreg1);
-                               } 
-                               s390_lhi  (code, s390_r0, ins->inst_imm);
-                               s390_alcr (code, ins->dreg, s390_r0);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_alcr (code, ins->dreg, s390_r13);
-                       }
-               }
-                       break;
-               case OP_IADD_OVF:
-               case OP_S390_IADD_OVF: {
-                       CHECK_SRCDST_COM;
-                       s390_ar   (code, ins->dreg, src2);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_OV, "OverflowException");
-               }
-                       break;
-               case OP_IADD_OVF_UN:
-               case OP_S390_IADD_OVF_UN: {
-                       CHECK_SRCDST_COM;
-                       s390_alr  (code, ins->dreg, src2);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_CY, "OverflowException");
-               }
-                       break;
-               case OP_LADD:
-               case OP_S390_LADD: {
-                       s390_alr  (code, s390_r0, ins->sreg1);
-                       s390_jnc  (code, 4);
-                       s390_ahi  (code, s390_r1, 1);
-                       s390_ar   (code, s390_r1, ins->sreg2);
-                       s390_lr   (code, ins->dreg, s390_r0);
-                       s390_lr   (code, ins->dreg+1, s390_r1);
-               }
-                       break;
-               case OP_LADD_OVF:
-               case OP_S390_LADD_OVF: {
-                       short int *o[1];
-                       s390_alr  (code, s390_r0, ins->sreg1);
-                       s390_jnc  (code, 0); CODEPTR(code, o[0]);
-                       s390_ahi  (code, s390_r1, 1);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_OV, "OverflowException");
-                       PTRSLOT   (code, o[0]);
-                       s390_ar   (code, s390_r1, ins->sreg2);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_OV, "OverflowException");
-                       s390_lr   (code, ins->dreg, s390_r0);
-                       s390_lr   (code, ins->dreg+1, s390_r1);
-               }
-                       break;
-               case OP_LADD_OVF_UN:
-               case OP_S390_LADD_OVF_UN: {
-                       s390_alr  (code, s390_r0, ins->sreg1);
-                       s390_alcr (code, s390_r1, ins->sreg2);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_CY, "OverflowException");
-                       s390_lr   (code, ins->dreg, s390_r0);
-                       s390_lr   (code, ins->dreg+1, s390_r1);
-               }
-                       break;
-               case OP_ADD_OVF_CARRY: {
-                       CHECK_SRCDST_COM;
-                       s390_lhi  (code, s390_r0, 0);
-                       s390_lr   (code, s390_r1, s390_r0);
-                       s390_alcr (code, s390_r0, s390_r1);
-                       s390_ar   (code, ins->dreg, src2);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_OV, "OverflowException");
-                       s390_ar   (code, ins->dreg, s390_r0);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_OV, "OverflowException");
-               }
-                       break;
-               case OP_ADD_OVF_UN_CARRY: {
-                       CHECK_SRCDST_COM;
-                       s390_alcr (code, ins->dreg, src2);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_CY, "OverflowException");
-               }
-                       break;
-               case OP_SUBCC:
-               case OP_ISUBCC: {
-                       CHECK_SRCDST_NCOM;
-                       s390_slr (code, ins->dreg, src2);
-               }
-                       break;
-               case OP_ISUB: {
-                       CHECK_SRCDST_NCOM;
-                       s390_sr   (code, ins->dreg, src2);
-               }
-                       break;
-               case OP_SBB:
-               case OP_ISBB: {
-                       CHECK_SRCDST_NCOM;
-                       s390_slbr (code, ins->dreg, src2);
-               }
-                       break;
-               case OP_SUBCC_IMM: {
-                       if (s390_is_imm16 (-ins->inst_imm)) {
-                               if (ins->dreg != ins->sreg1) {
-                                       s390_lr   (code, ins->dreg, ins->sreg1);
-                               }
-                               s390_lhi  (code, s390_r0, ins->inst_imm);
-                               s390_slr  (code, ins->dreg, s390_r0);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               if (ins->dreg != ins->sreg1) {
-                                       s390_lr   (code, ins->dreg, ins->sreg1);
-                               }
-                               s390_sl   (code, ins->dreg, 0, s390_r13, 4);
-                       }
-               }
-                       break;
-               case OP_SUB_IMM:
-               case OP_ISUB_IMM: {
-                       if (s390_is_imm16 (-ins->inst_imm)) {
-                               if (ins->dreg != ins->sreg1) {
-                                       s390_lr   (code, ins->dreg, ins->sreg1);
-                               }
-                               s390_ahi  (code, ins->dreg, -ins->inst_imm);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               if (ins->dreg != ins->sreg1) {
-                                       s390_lr   (code, ins->dreg, ins->sreg1);
-                               }
-                               s390_s    (code, ins->dreg, 0, s390_r13, 4);
-                       }
-               }
-                       break;
-               case OP_SBB_IMM: {
-                       if (ins->dreg != ins->sreg1) {
-                               s390_lr    (code, ins->dreg, ins->sreg1);
-                       }
-                       if (s390_is_imm16 (-ins->inst_imm)) {
-                               s390_lhi   (code, s390_r0, ins->inst_imm);
-                               s390_slbr  (code, ins->dreg, s390_r0);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               s390_slb  (code, ins->dreg, 0, s390_r13, 4);
-                       }
-               }
-                       break;
-               case OP_ISUB_OVF:
-               case OP_S390_ISUB_OVF: {
-                       CHECK_SRCDST_NCOM;
-                       s390_sr   (code, ins->dreg, src2);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_OV, "OverflowException");
-               }
-                       break;
-               case OP_ISUB_OVF_UN:
-               case OP_S390_ISUB_OVF_UN: {
-                       CHECK_SRCDST_NCOM;
-                       s390_slr  (code, ins->dreg, src2);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_NC, "OverflowException");
-               }
-                       break;
-               case OP_LSUB:
-               case OP_S390_LSUB: {
-                       s390_lr   (code, s390_r14, ins->sreg2);
-                       s390_slr  (code, s390_r0, ins->sreg1);
-                       s390_jnl  (code, 4);
-                       s390_ahi  (code, s390_r14, 1);
-                       s390_sr   (code, s390_r1, s390_r14);
-                       s390_lr   (code, ins->dreg, s390_r0);
-                       s390_lr   (code, ins->dreg+1, s390_r1);
-               }
-                       break;
-               case OP_LSUB_OVF:
-               case OP_S390_LSUB_OVF: {
-                       short int *o[1];
-                       s390_lr   (code, s390_r14, ins->sreg2);
-                       s390_slr  (code, s390_r0, ins->sreg1);
-                       s390_jnl  (code, 0); CODEPTR(code, o[0]);
-                       s390_ahi  (code, s390_r14, 1);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_OV, "OverflowException");
-                       PTRSLOT   (code, o[0]);
-                       s390_sr   (code, s390_r1, s390_r14);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_OV, "OverflowException");
-                       s390_lr   (code, ins->dreg, s390_r0);
-                       s390_lr   (code, ins->dreg+1, s390_r1);
-               }
-                       break;
-               case OP_LSUB_OVF_UN:
-               case OP_S390_LSUB_OVF_UN: {
-                       s390_slr  (code, s390_r0, ins->sreg1);
-                       s390_slbr (code, s390_r1, ins->sreg2);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_LT, "OverflowException");
-                       s390_lr   (code, ins->dreg, s390_r0);
-                       s390_lr   (code, ins->dreg+1, s390_r1);
-               }
-                       break;
-               case OP_SUB_OVF_CARRY: {
-                       CHECK_SRCDST_NCOM;
-                       s390_lhi  (code, s390_r0, 0);
-                       s390_lr   (code, s390_r1, s390_r0);
-                       s390_slbr (code, s390_r0, s390_r1);
-                       s390_sr   (code, ins->dreg, src2);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_OV, "OverflowException");
-                       s390_ar   (code, ins->dreg, s390_r0);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_OV, "OverflowException");
-               }
-                       break;
-               case OP_SUB_OVF_UN_CARRY: {
-                       CHECK_SRCDST_NCOM;
-                       s390_slbr (code, ins->dreg, src2);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_NC, "OverflowException");
-               }
-                       break;
-               case OP_IAND: {
-                       if (ins->sreg1 == ins->dreg) {
-                               s390_nr   (code, ins->dreg, ins->sreg2);
-                       } 
-                       else { 
-                               if (ins->sreg2 == ins->dreg) { 
-                                       s390_nr  (code, ins->dreg, ins->sreg1);
-                               }
-                               else { 
-                                       s390_lr  (code, ins->dreg, ins->sreg1);
-                                       s390_nr  (code, ins->dreg, ins->sreg2);
-                               }
-                       }
-               }
-                       break;
-               case OP_AND_IMM:
-               case OP_IAND_IMM: {
-                       if (s390_is_imm16 (ins->inst_imm)) {
-                               s390_lhi  (code, s390_r0, ins->inst_imm);
-                               if (ins->dreg != ins->sreg1) {
-                                       s390_lr   (code, ins->dreg, ins->sreg1);
-                               }
-                               s390_nr   (code, ins->dreg, s390_r0);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               if (ins->dreg != ins->sreg1) {
-                                       s390_lr   (code, ins->dreg, ins->sreg1);
-                               }
-                               s390_n    (code, ins->dreg, 0, s390_r13, 4);
-                       }
-               }
-                       break;
-               case OP_IDIV: {
-                       s390_lr   (code, s390_r0, ins->sreg1);
-                       s390_srda (code, s390_r0, 0, 32);
-                       s390_dr   (code, s390_r0, ins->sreg2);
-                       s390_lr   (code, ins->dreg, s390_r1);
-               }
-                       break;
-               case OP_IDIV_UN: {
-                       s390_lr   (code, s390_r0, ins->sreg1);
-                       s390_srdl (code, s390_r0, 0, 32);
-                       s390_dlr  (code, s390_r0, ins->sreg2);
-                       s390_lr   (code, ins->dreg, s390_r1);
-               }
-                       break;
-               case OP_IREM: {
-                       s390_lr   (code, s390_r0, ins->sreg1);
-                       s390_srda (code, s390_r0, 0, 32);
-                       s390_dr   (code, s390_r0, ins->sreg2);
-                       s390_lr   (code, ins->dreg, s390_r0);
-                       break;
-               case OP_IREM_UN:
-                       s390_lr   (code, s390_r0, ins->sreg1);
-                       s390_srdl (code, s390_r0, 0, 32);
-                       s390_dlr  (code, s390_r0, ins->sreg2);
-                       s390_lr   (code, ins->dreg, s390_r0);
-               }
-                       break;
-               case OP_IOR: {
-                       if (ins->sreg1 == ins->dreg) {
-                               s390_or   (code, ins->dreg, ins->sreg2);
-                       } 
-                       else { 
-                               if (ins->sreg2 == ins->dreg) { 
-                                       s390_or  (code, ins->dreg, ins->sreg1);
-                               }
-                               else { 
-                                       s390_lr  (code, ins->dreg, ins->sreg1);
-                                       s390_or  (code, ins->dreg, ins->sreg2);
-                               }
-                       }
-               }
-                       break;
-               case OP_OR_IMM:
-               case OP_IOR_IMM: {
-                       if (s390_is_imm16 (ins->inst_imm)) {
-                               s390_lhi  (code, s390_r0, ins->inst_imm);
-                               if (ins->dreg != ins->sreg1) {
-                                       s390_lr   (code, ins->dreg, ins->sreg1);
-                               }
-                               s390_or   (code, ins->dreg, s390_r0);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               if (ins->dreg != ins->sreg1) {
-                                       s390_lr   (code, ins->dreg, ins->sreg1);
-                               }
-                               s390_o    (code, ins->dreg, 0, s390_r13, 4);
-                       }
-               }
-                       break;
-               case OP_IXOR: {
-                       if (ins->sreg1 == ins->dreg) {
-                               s390_xr   (code, ins->dreg, ins->sreg2);
-                       } 
-                       else { 
-                               if (ins->sreg2 == ins->dreg) { 
-                                       s390_xr  (code, ins->dreg, ins->sreg1);
-                               }
-                               else { 
-                                       s390_lr  (code, ins->dreg, ins->sreg1);
-                                       s390_xr  (code, ins->dreg, ins->sreg2);
-                               }
-                       }
-               }
-                       break;
-               case OP_XOR_IMM:
-               case OP_IXOR_IMM: {
-                       if (s390_is_imm16 (ins->inst_imm)) {
-                               s390_lhi  (code, s390_r0, ins->inst_imm);
-                               if (ins->dreg != ins->sreg1) {
-                                       s390_lr   (code, ins->dreg, ins->sreg1);
-                               }
-                               s390_xr   (code, ins->dreg, s390_r0);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               if (ins->dreg != ins->sreg1) {
-                                       s390_lr   (code, ins->dreg, ins->sreg1);
-                               }
-                               s390_x    (code, ins->dreg, 0, s390_r13, 4);
-                       }
-               }
-                       break;
-               case OP_ISHL: {
-                       CHECK_SRCDST_NCOM;
-                       s390_sll  (code, ins->dreg, src2, 0);
-               }
-                       break;
-               case OP_SHL_IMM:
-               case OP_ISHL_IMM: {
-                       if (ins->sreg1 != ins->dreg) {
-                               s390_lr   (code, ins->dreg, ins->sreg1);
-                       }
-                       s390_sll  (code, ins->dreg, 0, (ins->inst_imm & 0x1f));
-               }
-                       break;
-               case OP_ISHR: {
-                       CHECK_SRCDST_NCOM;
-                       s390_sra  (code, ins->dreg, src2, 0);
-               }
-                       break;
-               case OP_SHR_IMM:
-               case OP_ISHR_IMM: {
-                       if (ins->sreg1 != ins->dreg) {
-                               s390_lr   (code, ins->dreg, ins->sreg1);
-                       }
-                       s390_sra  (code, ins->dreg, 0, (ins->inst_imm & 0x1f));
-               }
-                       break;
-               case OP_SHR_UN_IMM:
-               case OP_ISHR_UN_IMM: {
-                       if (ins->sreg1 != ins->dreg) {
-                               s390_lr   (code, ins->dreg, ins->sreg1);
-                       }
-                       s390_srl  (code, ins->dreg, 0, (ins->inst_imm & 0x1f));
-               }
-                       break;
-               case OP_ISHR_UN: {
-                       CHECK_SRCDST_NCOM;
-                       s390_srl  (code, ins->dreg, src2, 0);
-               }
-                       break;
-               case OP_INOT: {
-                       if (ins->sreg1 != ins->dreg) {
-                               s390_lr   (code, ins->dreg, ins->sreg1);
-                       }
-                       s390_lhi (code, s390_r0, -1);
-                       s390_xr  (code, ins->dreg, s390_r0);
-               }
-                       break;
-               case OP_INEG: {
-                       s390_lcr (code, ins->dreg, ins->sreg1);
-               }
-                       break;
-               case OP_S390_LNEG: {
-                       /* From gcc code */
-                       g_assert (ins->dreg + 1 != ins->sreg1);
-                       s390_lcr (code, ins->dreg + 1, ins->sreg2);
-                       s390_lcr (code, ins->dreg, ins->sreg1);
-                       s390_je (code, 3);
-                       s390_bctr (code, ins->dreg + 1, 0);
-               }
-                       break;
-               case OP_IMUL: {
-                       if (ins->sreg1 == ins->dreg) {
-                               s390_msr  (code, ins->dreg, ins->sreg2);
-                       } 
-                       else { 
-                               if (ins->sreg2 == ins->dreg) { 
-                                       s390_msr (code, ins->dreg, ins->sreg1);
-                               }
-                               else { 
-                                       s390_lr  (code, ins->dreg, ins->sreg1);
-                                       s390_msr (code, ins->dreg, ins->sreg2);
-                               }
-                       }
-               }
-                       break;
-               case OP_MUL_IMM:
-               case OP_IMUL_IMM: {
-                       if (s390_is_imm16 (ins->inst_imm)) {
-                               s390_lhi  (code, s390_r13, ins->inst_imm);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-//                             if (ins->dreg != ins->sreg1) {
-//                                     s390_lr   (code, ins->dreg, ins->sreg1);
-//                             }
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                       }
-                       if (ins->dreg != ins->sreg1) {
-                               s390_lr   (code, ins->dreg, ins->sreg1);
-                       }
-                       s390_msr  (code, ins->dreg, s390_r13);
-               }
-                       break;
-               case OP_IMUL_OVF: {
-                       short int *o[2];
-                       s390_ltr  (code, s390_r1, ins->sreg1);
-                       s390_jz   (code, 0); CODEPTR(code, o[0]);
-                       s390_ltr  (code, s390_r0, ins->sreg2);
-                       s390_jnz  (code, 6);
-                       s390_lhi  (code, s390_r1, 0);
-                       s390_j    (code, 0); CODEPTR(code, o[1]);
-                       s390_xr   (code, s390_r0, s390_r1);
-                       s390_msr  (code, s390_r1, ins->sreg2);
-                       s390_xr   (code, s390_r0, s390_r1);
-                       s390_srl  (code, s390_r0, 0, 31);
-                       s390_ltr  (code, s390_r0, s390_r0);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_NZ, "OverflowException");
-                       PTRSLOT   (code, o[0]); 
-                       PTRSLOT   (code, o[1]);
-                       s390_lr   (code, ins->dreg, s390_r1);
-               }
-                       break;
-               case OP_IMUL_OVF_UN: {
-                       s390_lhi  (code, s390_r0, 0);
-                       s390_lr   (code, s390_r1, ins->sreg1);
-                       s390_mlr  (code, s390_r0, ins->sreg2);
-                       s390_ltr  (code, s390_r0, s390_r0);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_NZ, "OverflowException");
-                       s390_lr   (code, ins->dreg, s390_r1);
-               }
-                       break;
-               case OP_LMUL: {
-                       s390_l    (code, s390_r0, 0, ins->sreg1, 4);
-                       s390_srda (code, s390_r0, 0, 32);
-                       s390_m    (code, s390_r0, 0, ins->sreg2, 4);
-                       s390_l    (code, s390_r0, 0, ins->sreg1, 4);
-                       s390_srl  (code, s390_r0, 0, 31);
-                       s390_a    (code, s390_r0, 0, ins->sreg1, 0);
-                       s390_l    (code, s390_r13, 0, ins->sreg2, 0);
-                       s390_srl  (code, s390_r13, 0, 31);
-                       s390_ms   (code, s390_r13, 0, ins->sreg1, 4);
-                       s390_ar   (code, s390_r0, s390_r13);
-                       s390_st   (code, s390_r0, 0, ins->dreg, 0);
-                       s390_st   (code, s390_r1, 0, ins->dreg, 4);
-               }
-                       break;  
-               case OP_ICONST: {
-                       if (s390_is_imm16(ins->inst_c0)) {
-                               s390_lhi  (code, ins->dreg, ins->inst_c0);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_c0);
-                               s390_l    (code, ins->dreg, 0, s390_r13, 4);
-                       }
-               }
-                       break;
-               case OP_AOTCONST: {
-                       s390_basr (code, s390_r13, 0);
-                       s390_j    (code, 4);
-                       mono_add_patch_info (cfg, code - cfg->native_code, 
-                               (MonoJumpInfoType)ins->inst_i1, ins->inst_p0);
-                       s390_word (code, 0);
-                       s390_l    (code,ins->dreg, 0, s390_r13, 4);
-               }
-                       break;
-               case OP_JUMP_TABLE: {
-                       mono_add_patch_info (cfg, code - cfg->native_code, 
-                               (MonoJumpInfoType)ins->inst_i1, ins->inst_p0);
-                       s390_basr (code, s390_r13, 0);
-                       s390_j    (code, 4);
-                       s390_word (code, 0);
-                       s390_l    (code, ins->dreg, 0, s390_r13, 4);
-               }
-                       break;
-               case OP_ICONV_TO_I4:
-               case OP_ICONV_TO_U4:
-               case OP_MOVE: {
-                       if (ins->dreg != ins->sreg1) {
-                               s390_lr (code, ins->dreg, ins->sreg1);
-                       }
-               }
-                       break;
-               case OP_SETLRET: {
-                       int saved = ins->sreg1;
-                       if (ins->sreg1 == s390_r2) {
-                               s390_lr (code, s390_r0, ins->sreg1);
-                               saved = s390_r0;
-                       }
-                       if (ins->sreg2 != s390_r2)
-                               s390_lr (code, s390_r2, ins->sreg2);
-                       if (saved != s390_r3)
-                               s390_lr (code, s390_r3, saved);
-                       break;
-               }
-               case OP_FMOVE: {
-                       if (ins->dreg != ins->sreg1) {
-                               s390_ldr   (code, ins->dreg, ins->sreg1);
-                       }
-               }
-                       break;
-               case OP_S390_SETF4RET: {
-                       s390_ledbr (code, ins->dreg, ins->sreg1);
-               }
-                       break;
-               case OP_TLS_GET: {
-                       if (s390_is_imm16 (ins->inst_offset)) {
-                               s390_lhi (code, s390_r13, ins->inst_offset);
-                       } else {
-                               s390_bras (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                       }
-                       s390_ear (code, s390_r1, 0);
-                       s390_l   (code, ins->dreg, s390_r13, s390_r1, 0);
-               }
-                       break;
-               case OP_FCONV_TO_R4: {
-                       // FIXME:
-                       if (ins->dreg != ins->sreg1) {
-                               s390_ldr   (code, ins->dreg, ins->sreg1);
-                       }
-                       /*
-                       NOT_IMPLEMENTED;
-                       if ((ins->next) &&
-                            (ins->next->opcode != OP_FMOVE) &&
-                            (ins->next->opcode != OP_STORER4_MEMBASE_REG))
-                               s390_ledbr (code, ins->dreg, ins->sreg1);
-                       */
-               }
-                       break;
-               case OP_JMP: {
-                       if (cfg->method->save_lmf)
-                               restoreLMF(code, cfg->frame_reg, cfg->stack_usage);
-
-                       if (cfg->flags & MONO_CFG_HAS_TAIL) {
-                               code = emit_load_volatile_registers(code, cfg);
-                       }
-
-                       code = backUpStackPtr(cfg, code, STK_BASE);
-                       s390_l   (code, s390_r14, 0, STK_BASE, S390_RET_ADDR_OFFSET);
-                       mono_add_patch_info (cfg, code - cfg->native_code,
-                                            MONO_PATCH_INFO_METHOD_JUMP,
-                                            ins->inst_p0);
-                       s390_jcl (code, S390_CC_UN, 0);
-               }
-                       break;
-               case OP_CHECK_THIS: {
-                       /* ensure ins->sreg1 is not NULL */
-                       s390_icm (code, s390_r0, 15, ins->sreg1, 0);
-               }
-                       break;
-               case OP_ARGLIST: {
-                       int offset = cfg->sig_cookie + cfg->stack_usage;
-
-                       if (s390_is_imm16 (offset))
-                               s390_lhi  (code, s390_r0, offset);
-                       else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, offset);
-                               s390_l    (code, s390_r0, 0, s390_r13, 0);
-                       }
-                       s390_ar   (code, s390_r0, cfg->frame_reg);
-                       s390_st   (code, s390_r0, 0, ins->sreg1, 0);
-               }
-                       break;
-               case OP_FCALL: {
-                       call = (MonoCallInst*)ins;
-                       if (ins->flags & MONO_INST_HAS_METHOD)
-                               mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_METHOD, 
-                                                    call->method);
-                       else
-                               mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_ABS, 
-                                                    call->fptr);
-                       s390_brasl (code, s390_r14, 0);
-                       if (call->signature->ret->type == MONO_TYPE_R4)
-                               s390_ldebr (code, s390_f0, s390_f0);
-               }
-                       break;
-               case OP_LCALL:
-               case OP_VCALL:
-               case OP_VCALL2:
-               case OP_VOIDCALL:
-               case OP_CALL: {
-                       call = (MonoCallInst*)ins;
-                       if (ins->flags & MONO_INST_HAS_METHOD)
-                               mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_METHOD, call->method);
-                       else
-                               mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_ABS, call->fptr);
-                       s390_brasl (code, s390_r14, 0);
-               }
-                       break;
-               case OP_FCALL_REG: {
-                       call = (MonoCallInst*)ins;
-                       s390_lr   (code, s390_r1, ins->sreg1);
-                       s390_basr (code, s390_r14, s390_r1);
-                       if (call->signature->ret->type == MONO_TYPE_R4)
-                               s390_ldebr (code, s390_f0, s390_f0);
-               }
-                       break;
-               case OP_LCALL_REG:
-               case OP_VCALL_REG:
-               case OP_VCALL2_REG:
-               case OP_VOIDCALL_REG:
-               case OP_CALL_REG: {
-                       s390_lr   (code, s390_r1, ins->sreg1);
-                       s390_basr (code, s390_r14, s390_r1);
-               }
-                       break;
-               case OP_LCALL_MEMBASE:
-               case OP_VCALL_MEMBASE:
-               case OP_VCALL2_MEMBASE:
-               case OP_VOIDCALL_MEMBASE:
-               case OP_FCALL_MEMBASE:
-               case OP_CALL_MEMBASE: {
-                       call = (MonoCallInst*)ins;
-                       if (s390_is_uimm12(ins->inst_offset))
-                               s390_l    (code, s390_r1, 0, ins->inst_basereg, ins->inst_offset);
-                       else {
-                               if (s390_is_imm16(ins->inst_offset)) {
-                                       s390_lhi (code, s390_r13, ins->inst_offset);
-                                       s390_l   (code, s390_r1, s390_r13, ins->inst_basereg, 0);
-                               } else {
-                                       s390_basr (code, s390_r13, 0);
-                                       s390_j    (code, 4);
-                                       s390_word (code, ins->inst_offset);
-                                       s390_l    (code, s390_r13, 0, s390_r13, 4);
-                                       s390_l    (code, s390_r1, s390_r13, ins->inst_basereg, 0);
-                               }
-                       }
-                       s390_basr (code, s390_r14, s390_r1);
-                       if (ins->opcode == OP_FCALL_MEMBASE && call->signature->ret->type == MONO_TYPE_R4)
-                               s390_ldebr (code, s390_f0, s390_f0);
-               }
-                       break;
-               case OP_LOCALLOC: {
-                       /*------------------------------------------*/
-                       /* To allocate space on the stack we have   */
-                       /* to allow room for parameters passed in   */
-                       /* calls, the backchain pointer and round   */
-                       /* it to our stack alignment requirements   */
-                       /*------------------------------------------*/
-                       int alloca_skip = S390_MINIMAL_STACK_SIZE + cfg->param_area;
-                       int area_offset = S390_ALIGN(alloca_skip, S390_STACK_ALIGNMENT);
-                       s390_lr   (code, s390_r1, ins->sreg1);
-                       if (ins->flags & MONO_INST_INIT)
-                               s390_lr   (code, s390_r0, ins->sreg1);
-                       s390_ahi  (code, s390_r1, 14);
-                       s390_srl  (code, s390_r1, 0, 3);
-                       s390_sll  (code, s390_r1, 0, 3);
-                       if (cfg->method->save_lmf) {
-                               /*----------------------------------*/
-                               /* we have to adjust lmf ebp value  */ 
-                               /*----------------------------------*/
-                               int lmfOffset = cfg->stack_usage - sizeof(MonoLMF);     
-                                                                                       
-                               s390_lr (code, s390_r13, cfg->frame_reg);
-                               if (s390_is_uimm16(lmfOffset))
-                                       s390_ahi   (code, s390_r13, lmfOffset); 
-                               else {
-                                       s390_basr (code, s390_r14, 0);
-                                       s390_j    (code, 4);
-                                       s390_word (code, lmfOffset);
-                                       s390_a    (code, s390_r13, 0, s390_r14, 4);
-                               }
-                               s390_lr (code, s390_r14, STK_BASE);
-                               s390_sr (code, s390_r14, s390_r1);
-                               s390_st (code, s390_r14, 0, s390_r13, 
-                                        G_STRUCT_OFFSET(MonoLMF, ebp));        
-                       }
-                       s390_l    (code, s390_r13, 0, STK_BASE, 0);
-                       s390_sr   (code, STK_BASE, s390_r1);
-                       s390_st   (code, s390_r13, 0, STK_BASE, 0);
-                       s390_la   (code, ins->dreg, 0, STK_BASE, area_offset);
-                       s390_srl  (code, ins->dreg, 0, 3);
-                       s390_sll  (code, ins->dreg, 0, 3);
-                       if (ins->flags & MONO_INST_INIT) {
-                               s390_lr   (code, s390_r1, s390_r0);
-                               s390_lr   (code, s390_r0, ins->dreg);
-                               s390_lr   (code, s390_r14, s390_r12);
-                               s390_lhi  (code, s390_r13, 0);
-                               s390_mvcle(code, s390_r0, s390_r12, 0, 0);
-                               s390_jo   (code, -2);
-                               s390_lr   (code, s390_r12, s390_r14);
-                       }
-               }
-                       break;
-               case OP_THROW: {
-                       s390_lr (code, s390_r2, ins->sreg1);
-                       mono_add_patch_info (cfg, code-cfg->native_code, MONO_PATCH_INFO_INTERNAL_METHOD, 
-                                            (gpointer)"mono_arch_throw_exception");
-                       s390_brasl (code, s390_r14, 0);
-               }
-                       break;
-               case OP_RETHROW: {
-                       s390_lr (code, s390_r2, ins->sreg1);
-                       mono_add_patch_info (cfg, code-cfg->native_code, MONO_PATCH_INFO_INTERNAL_METHOD, 
-                                            (gpointer)"mono_arch_rethrow_exception");
-                       s390_brasl (code, s390_r14, 0);
-               }
-                       break;
-               case OP_START_HANDLER: {
-                       MonoInst *spvar = mono_find_spvar_for_region (cfg, bb->region);
-                       if (s390_is_uimm12 (spvar->inst_offset)) {
-                               s390_st   (code, s390_r14, 0, 
-                                          spvar->inst_basereg, 
-                                          spvar->inst_offset);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, spvar->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_st   (code, s390_r14, s390_r13, 
-                                                  spvar->inst_basereg, 0);
-                       }
-               }
-                       break;
-               case OP_ENDFILTER: {
-                       MonoInst *spvar = mono_find_spvar_for_region (cfg, bb->region);
-                       if (ins->sreg1 != s390_r2)
-                               s390_lr (code, s390_r2, ins->sreg1);
-                       if (s390_is_uimm12 (spvar->inst_offset)) {
-                               s390_l  (code, s390_r14, 0, spvar->inst_basereg,
-                                        spvar->inst_offset);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, spvar->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_l    (code, s390_r14, s390_r13, 
-                                                  spvar->inst_basereg, 0);
-                       }
-                       s390_br  (code, s390_r14);
-               }
-                       break;
-               case OP_ENDFINALLY: {
-                       MonoInst *spvar = mono_find_spvar_for_region (cfg, bb->region);
-                       if (s390_is_uimm12 (spvar->inst_offset)) {
-                               s390_l  (code, s390_r14, 0, spvar->inst_basereg,
-                                        spvar->inst_offset);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, spvar->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_l    (code, s390_r14, s390_r13, 
-                                                  spvar->inst_basereg, 0);
-                       }
-                       s390_br  (code, s390_r14);
-               }
-                       break;
-               case OP_CALL_HANDLER: {
-                       mono_add_patch_info (cfg, code-cfg->native_code, 
-                                            MONO_PATCH_INFO_BB, ins->inst_target_bb);
-                       s390_brasl (code, s390_r14, 0);
-                       mono_cfg_add_try_hole (cfg, ins->inst_eh_block, code, bb);
-               }
-                       break;
-               case OP_LABEL: {
-                       ins->inst_c0 = code - cfg->native_code;
-               }
-                       break;
-               case OP_RELAXED_NOP:
-               case OP_NOP:
-               case OP_DUMMY_USE:
-               case OP_DUMMY_STORE:
-               case OP_NOT_REACHED:
-               case OP_NOT_NULL: {
-               }
-                       break;
-               case OP_BR: 
-                       EMIT_UNCOND_BRANCH(ins);
-                       break;
-               case OP_BR_REG: {
-                       s390_br  (code, ins->sreg1);
-               }
-                       break;
-               case OP_CEQ:
-               case OP_ICEQ: {
-                       s390_lhi (code, ins->dreg, 1);
-                       s390_jz  (code, 4);
-                       s390_lhi (code, ins->dreg, 0);
-               }
-                       break;
-               case OP_CLT:
-               case OP_ICLT: {
-                       s390_lhi (code, ins->dreg, 1);
-                       s390_jl  (code, 4);
-                       s390_lhi (code, ins->dreg, 0);
-               }
-                       break;
-               case OP_CLT_UN:
-               case OP_ICLT_UN: {
-                       s390_lhi (code, ins->dreg, 1);
-                       s390_jlo (code, 4);
-                       s390_lhi (code, ins->dreg, 0);
-               }
-                       break;
-               case OP_CGT:
-               case OP_ICGT: {
-                       s390_lhi (code, ins->dreg, 1);
-                       s390_jh  (code, 4);
-                       s390_lhi (code, ins->dreg, 0);
-               }
-                       break;
-               case OP_CGT_UN:
-               case OP_ICGT_UN: {
-                       s390_lhi (code, ins->dreg, 1);
-                       s390_jho (code, 4);
-                       s390_lhi (code, ins->dreg, 0);
-               }
-                       break;
-               case OP_COND_EXC_EQ:
-               case OP_COND_EXC_IEQ:
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_EQ, ins->inst_p1);
-                       break;
-               case OP_COND_EXC_NE_UN:
-               case OP_COND_EXC_INE_UN:
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_NE, ins->inst_p1);
-                       break;
-               case OP_COND_EXC_LT:
-               case OP_COND_EXC_ILT:
-               case OP_COND_EXC_LT_UN:
-               case OP_COND_EXC_ILT_UN:
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_LT, ins->inst_p1);
-                       break;
-               case OP_COND_EXC_GT:
-               case OP_COND_EXC_IGT:
-               case OP_COND_EXC_GT_UN:
-               case OP_COND_EXC_IGT_UN:
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_GT, ins->inst_p1);
-                       break;
-               case OP_COND_EXC_GE:
-               case OP_COND_EXC_IGE:
-               case OP_COND_EXC_GE_UN:
-               case OP_COND_EXC_IGE_UN:
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_GE, ins->inst_p1);
-                       break;
-               case OP_COND_EXC_LE:
-               case OP_COND_EXC_ILE:
-               case OP_COND_EXC_LE_UN:
-               case OP_COND_EXC_ILE_UN:
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_LE, ins->inst_p1);
-                       break;
-               case OP_COND_EXC_OV:
-               case OP_COND_EXC_IOV:
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_OV, ins->inst_p1);
-                       break;
-               case OP_COND_EXC_NO:
-               case OP_COND_EXC_INO:
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_NO, ins->inst_p1);
-                       break;
-               case OP_COND_EXC_C:
-               case OP_COND_EXC_IC:
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_CY, ins->inst_p1);
-                       break;
-               case OP_COND_EXC_NC:
-               case OP_COND_EXC_INC:
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_NC, ins->inst_p1);
-                       break;
-               case OP_IBEQ:
-                       EMIT_COND_BRANCH (ins, S390_CC_EQ);
-                       break;  
-               case OP_IBNE_UN:
-                       EMIT_COND_BRANCH (ins, S390_CC_NE);
-                       break;  
-               case OP_IBLT:
-               case OP_IBLT_UN:
-                       EMIT_COND_BRANCH (ins, S390_CC_LT);
-                       break;  
-               case OP_IBGT:
-               case OP_IBGT_UN:
-                       EMIT_COND_BRANCH (ins, S390_CC_GT);
-                       break;  
-               case OP_IBGE:
-               case OP_IBGE_UN:
-                       EMIT_COND_BRANCH (ins, S390_CC_GE);
-                       break;  
-               case OP_IBLE:
-               case OP_IBLE_UN:
-                       EMIT_COND_BRANCH (ins, S390_CC_LE);
-                       break;
-
-               /* floating point opcodes */
-               case OP_R8CONST: {
-                       if (*((float *) ins->inst_p0) == 0) {
-                               s390_lzdr (code, ins->dreg);
-                       } else {
-                               s390_basr  (code, s390_r13, 0);
-                               s390_j     (code, 4);
-                               s390_word  (code, ins->inst_p0);
-                               s390_l     (code, s390_r13, 0, s390_r13, 4);
-                               s390_ld    (code, ins->dreg, 0, s390_r13, 0);
-                       }
-               }
-                       break;
-               case OP_R4CONST: {
-                       if (*((float *) ins->inst_p0) == 0) {
-                               s390_lzdr (code, ins->dreg);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_p0);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_ldeb (code, ins->dreg, 0, s390_r13, 0);
-                       }
-               }
-                       break;
-               case OP_STORER8_MEMBASE_REG: {
-                       if (s390_is_uimm12(ins->inst_offset)) {
-                               s390_std  (code, ins->sreg1, 0, ins->inst_destbasereg, ins->inst_offset);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_std  (code, ins->sreg1, s390_r13, ins->inst_destbasereg, 0);
-                       }
-               }
-                       break;
-               case OP_LOADR8_MEMBASE: {
-                       if (s390_is_uimm12(ins->inst_offset)) {
-                               s390_ld   (code, ins->dreg, 0, ins->inst_basereg, ins->inst_offset);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_ld   (code, ins->dreg, s390_r13, ins->inst_basereg, 0);
-                       }
-               }
-                       break;
-               case OP_STORER4_MEMBASE_REG: {
-                       if (s390_is_uimm12(ins->inst_offset)) {
-                               s390_ledbr(code, s390_f15, ins->sreg1);
-                               s390_ste  (code, s390_f15, 0, ins->inst_destbasereg, ins->inst_offset);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_ledbr(code, s390_f15, ins->sreg1);
-                               s390_ste  (code, s390_f15, s390_r13, ins->inst_destbasereg, 0);
-                       }
-               }
-                       break;
-               case OP_LOADR4_MEMBASE: {
-                       if (s390_is_uimm12(ins->inst_offset)) {
-                               s390_ldeb (code, ins->dreg, 0, ins->inst_basereg, ins->inst_offset);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_offset);
-                               s390_l    (code, s390_r13, 0, s390_r13, 4);
-                               s390_ldeb (code, ins->dreg, s390_r13, ins->inst_basereg, 0);
-                       }
-               }
-                       break;
-               case OP_ICONV_TO_R_UN: {
-                       s390_cdfbr (code, ins->dreg, ins->sreg1);
-                       s390_ltr   (code, ins->sreg1, ins->sreg1);
-                       s390_jnl   (code, 12);
-                       s390_basr  (code, s390_r13, 0);
-                       s390_j     (code, 6);
-                       s390_word  (code, 0x41f00000);
-                       s390_word  (code, 0);
-                       s390_adb   (code, ins->dreg, 0, s390_r13, 4);
-               }
-                       break;
-               case OP_ICONV_TO_R4: {
-                       s390_cdfbr (code, ins->dreg, ins->sreg1);
-               }
-                       break;
-               case OP_ICONV_TO_R8: {
-                       s390_cdfbr (code, ins->dreg, ins->sreg1);
-               }
-                       break;
-               case OP_FCONV_TO_I1:
-                       code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 1, TRUE);
-                       break;
-               case OP_FCONV_TO_U1:
-                       code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 1, FALSE);
-                       break;
-               case OP_FCONV_TO_I2:
-                       code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 2, TRUE);
-                       break;
-               case OP_FCONV_TO_U2:
-                       code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 2, FALSE);
-                       break;
-               case OP_FCONV_TO_I4:
-               case OP_FCONV_TO_I:
-                       code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 4, TRUE);
-                       break;
-               case OP_FCONV_TO_U4:
-               case OP_FCONV_TO_U:
-                       code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 4, FALSE);
-                       break;
-               case OP_FCONV_TO_I8:
-               case OP_FCONV_TO_U8:
-                       g_assert_not_reached ();
-                       /* Implemented as helper calls */
-                       break;
-               case OP_LCONV_TO_R_UN:
-                       g_assert_not_reached ();
-                       /* Implemented as helper calls */
-                       break;
-               case OP_LCONV_TO_OVF_I:
-               case OP_LCONV_TO_OVF_I4_2: {
-                       /* Valid ints: 0xffffffff:8000000 to 00000000:0x7f000000 */
-                       short int *o[5];
-                       s390_ltr  (code, ins->sreg1, ins->sreg1);
-                       s390_jnl  (code, 0); CODEPTR(code, o[0]);
-                       s390_ltr  (code, ins->sreg2, ins->sreg2);
-                       s390_jnl  (code, 0); CODEPTR(code, o[1]);
-                       s390_lhi  (code, s390_r13, -1);
-                       s390_cr   (code, ins->sreg2, s390_r13);
-                       s390_jnz  (code, 0); CODEPTR(code, o[2]);
-                       s390_j    (code, 0); CODEPTR(code, o[3]);
-                       PTRSLOT(code, o[0]);
-                       s390_ltr  (code, ins->sreg2, ins->sreg2);
-                       s390_jz   (code, 0); CODEPTR(code, o[4]);
-                       PTRSLOT(code, o[1]);
-                       PTRSLOT(code, o[2]);
-                       mono_add_patch_info (cfg, code - cfg->native_code, 
-                                            MONO_PATCH_INFO_EXC, "OverflowException");
-                       s390_brasl (code, s390_r14, 0);
-                       PTRSLOT(code, o[3]);
-                       PTRSLOT(code, o[4]);
-                       if (ins->dreg != ins->sreg1)
-                               s390_lr   (code, ins->dreg, ins->sreg1);
-               }
-                       break;
-               case OP_SQRT: {
-                       s390_sqdbr (code, ins->dreg, ins->sreg1);
-               }
-                       break;
-               case OP_FADD: {
-                       CHECK_SRCDST_COM_F;
-                       s390_adbr (code, ins->dreg, src2);
-               }
-                       break;
-               case OP_FSUB: {
-                       CHECK_SRCDST_NCOM_F;
-                       s390_sdbr (code, ins->dreg, src2);
-               }
-                       break;          
-               case OP_FMUL: {
-                       CHECK_SRCDST_COM_F;
-                       s390_mdbr (code, ins->dreg, src2);
-               }
-                       break;          
-               case OP_FDIV: {
-                       CHECK_SRCDST_NCOM_F;
-                       s390_ddbr (code, ins->dreg, src2);
-               }
-                       break;          
-               case OP_FNEG: {
-                       s390_lcdbr (code, ins->dreg, ins->sreg1);
-               }
-                       break;          
-               case OP_FREM: {
-                       CHECK_SRCDST_NCOM_F;
-                       s390_didbr (code, ins->dreg, src2, 5, s390_f15);
-               }
-                       break;
-               case OP_FCOMPARE: {
-                       s390_cdbr (code, ins->sreg1, ins->sreg2);
-               }
-                       break;
-               case OP_FCEQ: {
-                       s390_cdbr  (code, ins->sreg1, ins->sreg2);
-                       s390_lhi   (code, ins->dreg, 1);
-                       s390_je    (code, 4);
-                       s390_lhi   (code, ins->dreg, 0);
-               }
-                       break;
-               case OP_FCLT: {
-                       s390_cdbr  (code, ins->sreg1, ins->sreg2);
-                       s390_lhi   (code, ins->dreg, 1);
-                       s390_jl    (code, 4);
-                       s390_lhi   (code, ins->dreg, 0);
-               }
-                       break;
-               case OP_FCLT_UN: {
-                       s390_cdbr  (code, ins->sreg1, ins->sreg2);
-                       s390_lhi   (code, ins->dreg, 1);
-                       s390_jlo   (code, 4);
-                       s390_lhi   (code, ins->dreg, 0);
-               }
-                       break;
-               case OP_FCGT: {
-                       s390_cdbr  (code, ins->sreg1, ins->sreg2);
-                       s390_lhi   (code, ins->dreg, 1);
-                       s390_jh    (code, 4);
-                       s390_lhi   (code, ins->dreg, 0);
-               }
-                       break;
-               case OP_FCGT_UN: {
-                       s390_cdbr  (code, ins->sreg1, ins->sreg2);
-                       s390_lhi   (code, ins->dreg, 1);
-                       s390_jho   (code, 4);
-                       s390_lhi   (code, ins->dreg, 0);
-               }
-                       break;
-               case OP_FBEQ: {
-                       short *o;
-                       s390_jo (code, 0); CODEPTR(code, o);
-                       EMIT_COND_BRANCH (ins, S390_CC_EQ);
-                       PTRSLOT(code, o);
-               }
-                       break;
-               case OP_FBNE_UN:
-                       EMIT_COND_BRANCH (ins, S390_CC_NE|S390_CC_OV);
-                       break;
-               case OP_FBLT: {
-                       short *o;
-                       s390_jo (code, 0); CODEPTR(code, o);
-                       EMIT_COND_BRANCH (ins, S390_CC_LT);
-                       PTRSLOT(code, o);
-               }
-                       break;
-               case OP_FBLT_UN:
-                       EMIT_COND_BRANCH (ins, S390_CC_LT|S390_CC_OV);
-                       break;
-               case OP_FBGT: {
-                       short *o;
-                       s390_jo (code, 0); CODEPTR(code, o);
-                       EMIT_COND_BRANCH (ins, S390_CC_GT);
-                       PTRSLOT(code, o);
-               }
-                       break;
-               case OP_FBGT_UN:
-                       EMIT_COND_BRANCH (ins, S390_CC_GT|S390_CC_OV);
-                       break;
-               case OP_FBGE: {
-                       short *o;
-                       s390_jo (code, 0); CODEPTR(code, o);
-                       EMIT_COND_BRANCH (ins, S390_CC_GE);
-                       PTRSLOT(code, o);
-               }
-                       break;
-               case OP_FBGE_UN:
-                       EMIT_COND_BRANCH (ins, S390_CC_GE|S390_CC_OV);
-                       break;
-               case OP_FBLE: {
-                       short *o;
-                       s390_jo (code, 0); CODEPTR(code, o);
-                       EMIT_COND_BRANCH (ins, S390_CC_LE);
-                       PTRSLOT(code, o);
-               }
-                       break;
-               case OP_FBLE_UN:
-                       EMIT_COND_BRANCH (ins, S390_CC_LE|S390_CC_OV);
-                       break;
-               case OP_CKFINITE: {
-                       short *o;
-                       s390_lhi  (code, s390_r13, 0x7f);
-                       s390_tcdb (code, ins->sreg1, 0, s390_r13, 0);
-                       s390_jz   (code, 0); CODEPTR(code, o);
-                       mono_add_patch_info (cfg, code - cfg->native_code, 
-                                            MONO_PATCH_INFO_EXC, "ArithmeticException");
-                       s390_brasl (code, s390_r14,0);
-                       PTRSLOT(code, o);
-               }
-                       break;
-               case OP_S390_MOVE: {
-                       if (ins->backend.size > 0) {
-                               if (ins->backend.size <= 256) {
-                                       s390_mvc  (code, ins->backend.size, ins->dreg, 
-                                                  ins->inst_offset, ins->sreg1, ins->inst_imm);
-                               } else {
-                                       s390_lr  (code, s390_r0, ins->dreg);
-                                       if (s390_is_imm16 (ins->inst_offset)) {
-                                               s390_ahi  (code, s390_r0, ins->inst_offset);
-                                       } else {
-                                               s390_basr (code, s390_r13, 0);
-                                               s390_j    (code, 6);
-                                               s390_long (code, ins->inst_offset);
-                                               s390_a    (code, s390_r0, 0, s390_r13, 4);
-                                       }
-                                       s390_lr  (code, s390_r12, ins->sreg1);
-                                       if (s390_is_imm16 (ins->inst_imm)) {
-                                               s390_ahi  (code, s390_r12, ins->inst_imm);
-                                       } else {
-                                               s390_basr (code, s390_r13, 0);
-                                               s390_j    (code, 6);
-                                               s390_long (code, ins->inst_imm);
-                                               s390_a    (code, s390_r12, 0, s390_r13, 4);
-                                       }
-                                       if (s390_is_imm16 (ins->backend.size)) {
-                                               s390x_lhi (code, s390_r1, ins->backend.size);
-                                       } else {
-                                               s390_basr (code, s390_r13, 0);
-                                               s390_j    (code, 6);
-                                               s390_long (code, ins->backend.size);
-                                               s390_l    (code, s390_r1, 0, s390_r13, 4);
-                                       }
-                                       s390_lr   (code, s390_r1, ins->backend.size);
-                                       s390_lr   (code, s390_r13, s390_r1);
-                                       s390_mvcle(code, s390_r0, s390_r12, 0, 0);
-                                       s390_jo   (code, -2);
-                               }
-                       }
-               }
-               case OP_ATOMIC_ADD_I4: {
-                       s390_lr  (code, s390_r1, ins->sreg2);
-                       s390_l   (code, s390_r0, 0, ins->inst_basereg, ins->inst_offset);
-                       s390_a   (code, s390_r1, 0, ins->inst_basereg, ins->inst_offset);
-                       s390_cs  (code, s390_r0, s390_r1, ins->inst_basereg, ins->inst_offset);
-                       s390_jnz (code, -7);
-                       s390_lr  (code, ins->dreg, s390_r1);
-               }
-                       break;  
-               case OP_ATOMIC_ADD_NEW_I4: {
-                       s390_lr  (code, s390_r1, ins->sreg2);
-                       s390_l   (code, s390_r0, 0, ins->inst_basereg, ins->inst_offset);
-                       s390_a   (code, s390_r1, 0, ins->inst_basereg, ins->inst_offset);
-                       s390_cs  (code, s390_r0, s390_r1, ins->inst_basereg, ins->inst_offset);
-                       s390_jnz (code, -7);
-                       s390_lr  (code, ins->dreg, s390_r1);
-               }
-                       break;  
-               case OP_ATOMIC_EXCHANGE_I4: {
-                       s390_l   (code, s390_r0, 0, ins->inst_basereg, ins->inst_offset);
-                       s390_cs  (code, s390_r0, ins->sreg2, ins->inst_basereg, ins->inst_offset);
-                       s390_jnz (code, -4);
-                       s390_lr  (code, ins->dreg, s390_r0);
-               }
-                       break;  
-               case OP_S390_BKCHAIN: {
-                       s390_lr  (code, ins->dreg, ins->sreg1);
-                       if (s390_is_imm16 (cfg->stack_offset)) {
-                               s390_ahi (code, ins->dreg, cfg->stack_offset);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_word (code, cfg->stack_offset);
-                               s390_a    (code, ins->dreg, 0, s390_r13, 4);
-                       }
-               }
-               case OP_MEMORY_BARRIER: {
-               }
-                       break;  
-               default:
-                       g_warning ("unknown opcode %s in %s()\n", mono_inst_name (ins->opcode), __FUNCTION__);
-                       g_assert_not_reached ();
-               }
-
-               if ((cfg->opt & MONO_OPT_BRANCH) && ((code - cfg->native_code - offset) > max_len)) {
-                       g_warning ("wrong maximal instruction length of instruction %s (expected %d, got %d)",
-                                  mono_inst_name (ins->opcode), max_len, code - cfg->native_code - offset);
-                       g_assert_not_reached ();
-               }
-              
-               cpos += max_len;
-
-               last_ins = ins;
-               last_offset = offset;
-       }
-
-       cfg->code_len = code - cfg->native_code;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_register_lowlevel_calls                 */
-/*                                                                  */
-/* Function    - Register routines to help with --trace operation. */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_register_lowlevel_calls (void)
-{
-       mono_register_jit_icall (mono_arch_get_lmf_addr, "mono_arch_get_lmf_addr", NULL, TRUE);
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_patch_code                              */
-/*                                                                  */
-/* Function    - Process the patch data created during the         */
-/*               instruction build process. This resolves jumps,   */
-/*               calls, variables etc.                             */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, 
-                     guint8 *code, MonoJumpInfo *ji, MonoCodeManager *dyn_code_mp, gboolean run_cctors)
-{
-       MonoJumpInfo *patch_info;
-
-       for (patch_info = ji; patch_info; patch_info = patch_info->next) {
-               unsigned char *ip = patch_info->ip.i + code;
-               gconstpointer target = NULL;
-
-               target = mono_resolve_patch_target (method, domain, code, 
-                                                   patch_info, run_cctors);
-
-               switch (patch_info->type) {
-                       case MONO_PATCH_INFO_IP:
-                       case MONO_PATCH_INFO_EXC_NAME:
-                       case MONO_PATCH_INFO_LDSTR:
-                       case MONO_PATCH_INFO_TYPE_FROM_HANDLE: 
-                       case MONO_PATCH_INFO_LDTOKEN: 
-                       case MONO_PATCH_INFO_EXC:
-                               continue;
-                       case MONO_PATCH_INFO_SWITCH: 
-                               /*----------------------------------*/
-                               /* ip points at the basr r13,0/j +4 */
-                               /* instruction the vtable value     */
-                               /* follows this (i.e. ip+6)         */
-                               /*----------------------------------*/
-                               *((gconstpointer *)(ip+6)) = target;
-                               target = NULL;
-                               continue;
-                       case MONO_PATCH_INFO_METHODCONST:
-                       case MONO_PATCH_INFO_CLASS:
-                       case MONO_PATCH_INFO_IMAGE:
-                       case MONO_PATCH_INFO_FIELD:
-                       case MONO_PATCH_INFO_IID:
-                               target = S390_RELATIVE(target, ip);
-                               continue;
-                       case MONO_PATCH_INFO_R4:
-                       case MONO_PATCH_INFO_R8:
-                       case MONO_PATCH_INFO_METHOD_REL:
-                               g_assert_not_reached ();
-                               continue;
-                       default:
-                               target = S390_RELATIVE(target, ip);
-                               ip += 2;
-               }
-               s390_patch (ip, (guint32) target);
-       }
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - emit_load_volatile_registers                      */
-/*                                                                  */
-/* Function    - Create the instruction sequence for loading the   */
-/*               parameter registers for use with the 'tail' op.   */
-/*                                                                 */
-/*               The register loading operations performed here    */
-/*               are the mirror of the store operations performed  */
-/*               in mono_arch_emit_prolog and need to be kept in   */
-/*               synchronization with it.                          */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-guint8 *
-emit_load_volatile_registers (guint8 * code, MonoCompile *cfg)
-{
-       MonoMethod *method = cfg->method;
-       MonoMethodSignature *sig;
-       MonoInst *inst;
-       int pos, i;
-       CallInfo *cinfo;
-
-       sig = mono_method_signature (method);
-       pos = 0;
-
-       cinfo = get_call_info (cfg, cfg->mempool, sig, sig->pinvoke);
-
-       if (cinfo->struct_ret) {
-               ArgInfo *ainfo = &cinfo->ret;
-               inst         = cfg->vret_addr;
-               s390_l (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-       }
-
-       for (i = 0; i < sig->param_count + sig->hasthis; ++i) {
-               ArgInfo *ainfo = cinfo->args + i;
-               inst = cfg->args [pos];
-               
-               if (inst->opcode == OP_REGVAR) {
-                       if (ainfo->regtype == RegTypeGeneral)
-                               s390_lr (code, ainfo->reg, inst->dreg);
-                       else if (ainfo->regtype == RegTypeFP) {
-                               if (inst->dreg != ainfo->reg) {
-                                       if (ainfo->size == 4) {
-                                               s390_ldebr (code, ainfo->reg, inst->dreg);
-                                       } else {
-                                               s390_ldr   (code, ainfo->reg, inst->dreg);
-                                       }
-                               }
-                       }
-                       else if (ainfo->regtype == RegTypeBase) {
-                       } else
-                               g_assert_not_reached ();
-               } else {
-                       if (ainfo->regtype == RegTypeGeneral) {
-                               if (!((ainfo->reg >= 2) && (ainfo->reg <= 6)))
-                                       g_assert_not_reached();
-                               switch (ainfo->size) {
-                               case 1:
-                                       s390_ic (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-                                       break;
-                               case 2:
-                                       s390_lh (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-                                       break;
-                               case 8:
-                                       s390_lm (code, ainfo->reg, ainfo->reg + 1, 
-                                                 inst->inst_basereg, inst->inst_offset);
-                                       break;
-                               default:
-                                       s390_l  (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-                               }
-                       } else if (ainfo->regtype == RegTypeBase) {
-                       } else if (ainfo->regtype == RegTypeFP) {
-                               if (ainfo->size == 8)
-                                       s390_ld (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-                               else if (ainfo->size == 4)
-                                       s390_le (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-                               else
-                                       g_assert_not_reached ();
-                       } else if (ainfo->regtype == RegTypeStructByVal) {
-                               if (ainfo->reg != STK_BASE) {
-                                       switch (ainfo->size) {
-                                       case 1:
-                                               s390_ic (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-                                               break;
-                                       case 2:
-                                               s390_lh (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-                                               break;
-                                       case 4:
-                                               s390_l  (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-                                               break;
-                                       case 8:
-                                               s390_lm (code, ainfo->reg, ainfo->reg+1, inst->inst_basereg, inst->inst_offset);
-                                               break;
-                                       }
-                               }
-                       } else if (ainfo->regtype == RegTypeStructByAddr) {
-                               if (ainfo->reg != STK_BASE) {
-                                       s390_l  (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-                               }
-                       } else
-                               g_assert_not_reached ();
-               }
-               pos++;
-       }
-
-       return code;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_emit_prolog                             */
-/*                                                                  */
-/* Function    - Create the instruction sequence for a function    */
-/*               prolog.                                           */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-guint8 *
-mono_arch_emit_prolog (MonoCompile *cfg)
-{
-       MonoMethod *method = cfg->method;
-       MonoBasicBlock *bb;
-       MonoMethodSignature *sig;
-       MonoInst *inst;
-       int alloc_size, pos, max_offset, i;
-       guint8 *code;
-       CallInfo *cinfo;
-       int tracing = 0;
-       int lmfOffset;                                                          \
-
-       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
-               tracing = 1;
-
-       cfg->code_size   = 1024;
-       cfg->native_code = code = g_malloc (cfg->code_size);
-
-       s390_stm  (code, s390_r6, s390_r14, STK_BASE, S390_REG_SAVE_OFFSET);
-
-       if (cfg->arch.bkchain_reg != -1)
-               s390_lr (code, cfg->arch.bkchain_reg, STK_BASE);
-
-       if (cfg->flags & MONO_CFG_HAS_ALLOCA) {
-               cfg->used_int_regs |= 1 << 11;
-       }
-
-       alloc_size = cfg->stack_offset;
-
-       cfg->stack_usage = alloc_size;
-       s390_lr   (code, s390_r11, STK_BASE);
-       if (s390_is_uimm16 (alloc_size)) {
-               s390_ahi  (code, STK_BASE, -alloc_size);
-       } else { 
-               int stackSize = alloc_size;
-               while (stackSize > 32767) {
-                       s390_ahi  (code, STK_BASE, -32767);
-                       stackSize -= 32767;
-               }
-               s390_ahi  (code, STK_BASE, -stackSize);
-       }
-       s390_st   (code, s390_r11, 0, STK_BASE, 0);
-
-       if (cfg->frame_reg != STK_BASE)
-               s390_lr (code, s390_r11, STK_BASE);
-
-        /* compute max_offset in order to use short forward jumps
-        * we always do it on s390 because the immediate displacement
-        * for jumps is too small 
-        */
-       max_offset = 0;
-       for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
-               MonoInst *ins = bb->code;
-               bb->max_offset = max_offset;
-
-               if (cfg->prof_options & MONO_PROFILE_COVERAGE)
-                       max_offset += 6; 
-
-               MONO_BB_FOR_EACH_INS (bb, ins)
-                       max_offset += ((guint8 *)ins_get_spec (ins->opcode))[MONO_INST_LEN];
-       }
-
-       /* load arguments allocated to register from the stack */
-       sig = mono_method_signature (method);
-       pos = 0;
-
-       cinfo = get_call_info (cfg, cfg->mempool, sig, sig->pinvoke);
-
-       if (cinfo->struct_ret) {
-               ArgInfo *ainfo = &cinfo->ret;
-               inst         = cfg->vret_addr;
-               inst->backend.size = ainfo->vtsize;
-               s390_st (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-       }
-
-       for (i = 0; i < sig->param_count + sig->hasthis; ++i) {
-               ArgInfo *ainfo = cinfo->args + i;
-               inst = cfg->args [pos];
-               
-               if (inst->opcode == OP_VTARG_ADDR)
-                       inst = inst->inst_left;
-
-               if (inst->opcode == OP_REGVAR) {
-                       if (ainfo->regtype == RegTypeGeneral)
-                               s390_lr (code, inst->dreg, ainfo->reg);
-                       else if (ainfo->regtype == RegTypeFP) {
-                               if (inst->dreg != ainfo->reg) {
-                                       if (ainfo->size == 4) {
-                                               s390_ledbr (code, inst->dreg, ainfo->reg);
-                                       } else {
-                                               s390_ldr   (code, inst->dreg, ainfo->reg);
-                                       }
-                               }
-                       }
-                       else if (ainfo->regtype == RegTypeBase) {
-                               s390_lr  (code, s390_r13, STK_BASE);
-                               s390_ahi (code, s390_r13, alloc_size);
-                               s390_l   (code, inst->dreg, 0, s390_r13, ainfo->offset);
-                       } else
-                               g_assert_not_reached ();
-
-                       if (cfg->verbose_level > 2)
-                               g_print ("Argument %d assigned to register %s\n", 
-                                        pos, mono_arch_regname (inst->dreg));
-               } else {
-                       if (ainfo->regtype == RegTypeGeneral) {
-                               if (!((ainfo->reg >= 2) && (ainfo->reg <= 6)))
-                                       g_assert_not_reached();
-                               switch (ainfo->size) {
-                               case 1:
-                                       s390_stc (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-                                       break;
-                               case 2:
-                                       s390_sth (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-                                       break;
-                               case 8:
-                                       s390_stm (code, ainfo->reg, ainfo->reg + 1, 
-                                                 inst->inst_basereg, inst->inst_offset);
-                                       break;
-                               default:
-                                       s390_st  (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-                               }
-                       } else if (ainfo->regtype == RegTypeBase) {
-                       } else if (ainfo->regtype == RegTypeFP) {
-                               if (ainfo->size == 8)
-                                       s390_std (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-                               else if (ainfo->size == 4)
-                                       s390_ste (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-                               else
-                                       g_assert_not_reached ();
-                       } else if (ainfo->regtype == RegTypeStructByVal) {
-                               int doffset = inst->inst_offset;
-                               int reg;
-                               if (ainfo->reg != STK_BASE)
-                                       reg = ainfo->reg;
-                               else {
-                                       reg = s390_r0;
-                                       s390_lr  (code, s390_r13, STK_BASE);
-                                       s390_ahi (code, s390_r13, alloc_size);
-                               }
-                               switch (ainfo->size) {
-                                       case 1:
-                                               if (ainfo->reg == STK_BASE)
-                                                       s390_ic  (code, reg, 0, s390_r13, ainfo->offset+3);
-                                               s390_stc (code, reg, 0, inst->inst_basereg, doffset);
-                                               break;
-                                       case 2:
-                                               if (ainfo->reg == STK_BASE)
-                                                       s390_lh  (code, reg, 0, s390_r13, ainfo->offset+2);
-                                               s390_sth (code, reg, 0, inst->inst_basereg, doffset);
-                                               break;
-                                       case 4:
-                                               if (ainfo->reg == STK_BASE)
-                                                       s390_l   (code, reg, 0, s390_r13, ainfo->offset);
-                                               s390_st  (code, reg, 0, inst->inst_basereg, doffset);
-                                               break;
-                                       case 8:
-                                               if (ainfo->reg == STK_BASE)
-                                                       s390_lm  (code, s390_r0, s390_r1, s390_r13, ainfo->offset);
-                                               s390_stm (code, reg, reg+1, inst->inst_basereg, doffset);
-                                               break;
-                               }
-                       } else if (ainfo->regtype == RegTypeStructByAddr) {
-                               if (ainfo->reg != STK_BASE) 
-                                       s390_st  (code, ainfo->reg, 0, inst->inst_basereg, inst->inst_offset);
-                       } else
-                               g_assert_not_reached ();
-               }
-               pos++;
-       }
-
-       if (method->save_lmf) {
-               /*---------------------------------------------------------------*/
-               /* we build the MonoLMF structure on the stack - see mini-s390.h */
-               /*---------------------------------------------------------------*/
-               lmfOffset = alloc_size - sizeof(MonoLMF);       
-                                                                                       
-               s390_lr    (code, s390_r13, cfg->frame_reg);            
-               if (s390_is_uimm16(lmfOffset))
-                       s390_ahi   (code, s390_r13, lmfOffset); 
-               else {
-                       s390_basr (code, s390_r14, 0);
-                       s390_j    (code, 4);
-                       s390_word (code, lmfOffset);
-                       s390_a    (code, s390_r13, 0, s390_r14, 4);
-               }
-                                                                                       
-               /*---------------------------------------------------------------*/
-               /* Preserve the parameter registers while we fix up the lmf      */
-               /*---------------------------------------------------------------*/
-               s390_stm   (code, s390_r2, s390_r6, s390_r13,
-                           G_STRUCT_OFFSET(MonoLMF, pregs[0]));
-
-               /*---------------------------------------------------------------*/
-               /* On return from this call r2 have the address of the &lmf      */
-               /*---------------------------------------------------------------*/
-               mono_add_patch_info (cfg, code - cfg->native_code, 
-                                    MONO_PATCH_INFO_INTERNAL_METHOD, 
-                                    (gpointer)"mono_get_lmf_addr");
-               s390_brasl (code, s390_r14, 0);
-
-               /*---------------------------------------------------------------*/     
-               /* Set lmf.lmf_addr = jit_tls->lmf                               */     
-               /*---------------------------------------------------------------*/     
-               s390_st    (code, s390_r2, 0, s390_r13,                                 
-                           G_STRUCT_OFFSET(MonoLMF, lmf_addr));                        
-                                                                                       
-               /*---------------------------------------------------------------*/     
-               /* Get current lmf                                               */     
-               /*---------------------------------------------------------------*/     
-               s390_l     (code, s390_r0, 0, s390_r2, 0);                              
-                                                                                       
-               /*---------------------------------------------------------------*/     
-               /* Set our lmf as the current lmf                                */     
-               /*---------------------------------------------------------------*/     
-               s390_st    (code, s390_r13, 0, s390_r2, 0);                             
-                                                                                       
-               /*---------------------------------------------------------------*/     
-               /* Have our lmf.previous_lmf point to the last lmf               */     
-               /*---------------------------------------------------------------*/     
-               s390_st    (code, s390_r0, 0, s390_r13,                                 
-                           G_STRUCT_OFFSET(MonoLMF, previous_lmf));                    
-                                                                                       
-               /*---------------------------------------------------------------*/     
-               /* save method info                                              */     
-               /*---------------------------------------------------------------*/     
-               s390_basr  (code, s390_r1, 0);                                          
-               s390_j     (code, 4);                                                   
-               s390_word  (code, method);                                              
-               s390_l     (code, s390_r1, 0, s390_r1, 4);                      
-               s390_st    (code, s390_r1, 0, s390_r13,                                 
-                           G_STRUCT_OFFSET(MonoLMF, method));                          
-                                                                               
-               /*---------------------------------------------------------------*/     
-               /* save the current IP                                           */     
-               /*---------------------------------------------------------------*/     
-               s390_st    (code, STK_BASE, 0, s390_r13, G_STRUCT_OFFSET(MonoLMF, ebp));
-               s390_basr  (code, s390_r1, 0);
-               s390_la    (code, s390_r1, 0, s390_r1, 0);                              
-               s390_st    (code, s390_r1, 0, s390_r13, G_STRUCT_OFFSET(MonoLMF, eip)); 
-                                                                                       
-               /*---------------------------------------------------------------*/     
-               /* Save general and floating point registers                     */     
-               /*---------------------------------------------------------------*/     
-               s390_stm   (code, s390_r2, s390_r12, s390_r13,                          
-                           G_STRUCT_OFFSET(MonoLMF, gregs[2]));                        
-               for (i = 0; i < 16; i++) {                                              
-                       s390_std  (code, i, 0, s390_r13,                                
-                                  G_STRUCT_OFFSET(MonoLMF, fregs[i]));                 
-               }                                                                       
-
-               /*---------------------------------------------------------------*/
-               /* Restore the parameter registers now that we've set up the lmf */
-               /*---------------------------------------------------------------*/
-               s390_lm    (code, s390_r2, s390_r6, s390_r13,                           
-                           G_STRUCT_OFFSET(MonoLMF, pregs[0]));                        
-       }
-
-       if (tracing)
-               code = mono_arch_instrument_prolog(cfg, enter_method, code, TRUE);
-
-       cfg->code_len = code - cfg->native_code;
-
-       g_assert (cfg->code_len < cfg->code_size);
-
-       return code;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_emit_epilog                             */
-/*                                                                  */
-/* Function    - Emit the instructions for a function epilog.      */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_emit_epilog (MonoCompile *cfg)
-{
-       MonoMethod *method = cfg->method;
-       int tracing = 0;
-       guint8 *code;
-       int max_epilog_size = 96;
-       
-       if (cfg->method->save_lmf)
-               max_epilog_size += 128;
-       
-       if (mono_jit_trace_calls != NULL)
-               max_epilog_size += 128;
-
-       if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE)
-               max_epilog_size += 128;
-       
-       while ((cfg->code_len + max_epilog_size) > (cfg->code_size - 16)) {
-               cfg->code_size  *= 2;
-               cfg->native_code = g_realloc (cfg->native_code, cfg->code_size);
-               cfg->stat_code_reallocs++;
-       }
-
-       code = cfg->native_code + cfg->code_len;
-
-       if (mono_jit_trace_calls != NULL && mono_trace_eval (method)) {
-               code = mono_arch_instrument_epilog (cfg, leave_method, code, TRUE);
-               tracing = 1;
-       }
-       
-       if (method->save_lmf) 
-               restoreLMF(code, cfg->frame_reg, cfg->stack_usage);
-
-       if (cfg->flags & MONO_CFG_HAS_ALLOCA) 
-               s390_l (code, STK_BASE, 0, STK_BASE, 0);
-       else
-               code = backUpStackPtr(cfg, code, STK_BASE);
-
-       s390_lm  (code, s390_r6, s390_r14, STK_BASE, S390_REG_SAVE_OFFSET);
-       s390_br  (code, s390_r14);
-
-       cfg->code_len = code - cfg->native_code;
-
-       g_assert (cfg->code_len < cfg->code_size);
-
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_emit_exceptions                         */
-/*                                                                  */
-/* Function    - Emit the blocks to handle exception conditions.   */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_emit_exceptions (MonoCompile *cfg) 
-{
-       MonoJumpInfo    *patch_info;
-       guint8          *code;
-       int             nThrows = 0,
-                       exc_count = 0,
-                       iExc;
-       guint32         code_size;
-       MonoClass       *exc_classes [MAX_EXC];
-       guint8          *exc_throw_start [MAX_EXC];
-
-       for (patch_info = cfg->patch_info; 
-            patch_info; 
-            patch_info = patch_info->next) {
-               if (patch_info->type == MONO_PATCH_INFO_EXC)
-                       exc_count++;
-       }
-
-       code_size = exc_count * 26;
-
-       while ((cfg->code_len + code_size) > (cfg->code_size - 16)) {
-               cfg->code_size  *= 2;
-               cfg->native_code = g_realloc (cfg->native_code, cfg->code_size);
-               cfg->stat_code_reallocs++; 
-       }
-
-       code = cfg->native_code + cfg->code_len;
-
-       /*---------------------------------------------------------------------*/
-       /* Add code to raise exceptions                                        */
-       /*---------------------------------------------------------------------*/
-       for (patch_info = cfg->patch_info; patch_info; patch_info = patch_info->next) {
-               switch (patch_info->type) {
-               case MONO_PATCH_INFO_EXC: {
-                       guint8 *ip = patch_info->ip.i + cfg->native_code;
-                       MonoClass *exc_class;
-                       guint32 throw_ip;
-
-                       /*-----------------------------------------------------*/
-                       /* Patch the branch in epilog to come here             */
-                       /*-----------------------------------------------------*/
-                       s390_patch (ip + 2, (guint32) (S390_RELATIVE(code,ip)));
-
-                       exc_class = mono_class_from_name (mono_defaults.corlib, 
-                                                         "System", 
-                                                         patch_info->data.name);
-                       g_assert (exc_class);
-                       throw_ip = patch_info->ip.i;
-
-                       for (iExc = 0; iExc < nThrows; ++iExc)
-                               if (exc_classes [iExc] == exc_class)
-                                       break;
-               
-                       if (iExc < nThrows) {
-                               s390_jcl (code, S390_CC_UN, (guint32) exc_throw_start [iExc]);
-                               patch_info->type = MONO_PATCH_INFO_NONE;
-                       } else {
-       
-                               if (nThrows < MAX_EXC) {
-                                       exc_classes [nThrows]     = exc_class;
-                                       exc_throw_start [nThrows] = code;
-                               }
-       
-                               /*---------------------------------------------*/
-                               /* Patch the parameter passed to the handler   */ 
-                               /*---------------------------------------------*/
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, patch_info->data.target);
-                               /*---------------------------------------------*/
-                               /* Load return address & parameter register    */
-                               /*---------------------------------------------*/
-                               s390_larl (code, s390_r14, (gsize)S390_RELATIVE((patch_info->ip.i +
-                                                          cfg->native_code + 8), code));
-                               s390_l    (code, s390_r2, 0, s390_r13, 4);
-                               /*---------------------------------------------*/
-                               /* Reuse the current patch to set the jump     */
-                               /*---------------------------------------------*/
-                               patch_info->type      = MONO_PATCH_INFO_INTERNAL_METHOD;
-                               patch_info->data.name = "mono_arch_throw_exception_by_name";
-                               patch_info->ip.i      = code - cfg->native_code;
-                               s390_jcl  (code, S390_CC_UN, 0);
-                       }
-                       break;
-               }
-               default:
-                       /* do nothing */
-                       break;
-               }
-       }
-
-       cfg->code_len = code - cfg->native_code;
-
-       g_assert (cfg->code_len < cfg->code_size);
-
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_finish_init                                 */
-/*                                                                  */
-/* Function    - Setup the JIT's Thread Level Specific Data.       */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_finish_init (void)
-{
-#if HAVE_KW_THREAD
-# if 0
-       __asm__ ("\tear\t%r1,0\n"
-                "\tlr\t%0,%3\n"
-                "\tsr\t%0,%r1\n"
-                "\tlr\t%1,%4\n"
-                "\tsr\t%1,%r1\n"
-                "\tlr\t%2,%5\n"
-                "\tsr\t%2,%r1\n"
-                : "=r" (appdomain_tls_offset),
-                  "=r" (thread_tls_offset),
-                  "=r" (lmf_tls_offset)
-                : "r" (&tls_appdomain),
-                  "r" (&tls_current_object),
-                  "r" (&mono_lmf_addr)
-                : "1", "cc");
-# endif
-#endif
-
-       if (!lmf_addr_key_inited) {
-               lmf_addr_key_inited = TRUE;
-               pthread_key_create (&lmf_addr_key, NULL);
-       }
-       pthread_setspecific (lmf_addr_key, &tls->lmf);
-
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_free_jit_tls_data                       */
-/*                                                                  */
-/* Function    - Free tls data.                                    */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_free_jit_tls_data (MonoJitTlsData *tls)
-{
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_emit_inst_for_method                    */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-MonoInst*
-mono_arch_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig, MonoInst **args)
-{
-       return NULL;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_decompose_opts                          */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_decompose_opts (MonoCompile *cfg, MonoInst *ins)
-{
-       switch (ins->opcode) {
-       case OP_ISUB_OVF:
-               ins->opcode = OP_S390_ISUB_OVF;
-               break;
-       case OP_ISUB_OVF_UN:
-               ins->opcode = OP_S390_ISUB_OVF_UN;
-               break;
-       case OP_IADD_OVF:
-               ins->opcode = OP_S390_IADD_OVF;
-               break;
-       case OP_IADD_OVF_UN:
-               ins->opcode = OP_S390_IADD_OVF_UN;
-               break;
-       default:
-               break;
-       }
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_decompose_long_opts                     */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_decompose_long_opts (MonoCompile *cfg, MonoInst *ins)
-{
-       // The generic code seems to work for OP_LSUB fine on s390, why is a different
-       // implementation needed ? gcc also seems to use the different implementation.
-       // FIXME: What about the other OP_L opcodes below ?
-
-       switch (ins->opcode) {
-       case OP_LADD_OVF:
-       case OP_LADD_OVF_UN:
-       case OP_LSUB_OVF:
-       case OP_LSUB_OVF_UN: {
-               int opcode = 0;
-
-               switch (ins->opcode) {
-               case OP_LADD:
-                       opcode = OP_S390_LADD;
-                       break;
-               case OP_LADD_OVF:
-                       opcode = OP_S390_LADD_OVF;
-                       break;
-               case OP_LADD_OVF_UN:
-                       opcode = OP_S390_LADD_OVF_UN;
-                       break;
-               case OP_LSUB:
-                       opcode = OP_S390_LSUB;
-                       break;
-               case OP_LSUB_OVF:
-                       opcode = OP_S390_LSUB_OVF;
-                       break;
-               case OP_LSUB_OVF_UN:
-                       opcode = OP_S390_LSUB_OVF_UN;
-                       break;
-               default:
-                       g_assert_not_reached ();
-               }
-
-               /* These hard regs make ssa crazy */
-               cfg->disable_ssa = TRUE;
-               MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, s390_r0, ins->sreg1 + 1);
-               MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, s390_r1, ins->sreg1 + 2);
-               MONO_EMIT_NEW_BIALU (cfg, opcode, ins->dreg, ins->sreg2 + 1, ins->sreg2 + 2);
-               NULLIFY_INS (ins);
-               break;
-       }
-       case OP_LADD_IMM: {
-               int dreg = mono_alloc_dreg (cfg, STACK_I8);
-               MONO_EMIT_NEW_I8CONST (cfg, dreg, ins->inst_l);
-               MONO_EMIT_NEW_BIALU (cfg, OP_LADD, ins->dreg, ins->sreg1, dreg);
-               NULLIFY_INS (ins);
-               break;
-       }
-       case OP_LSUB_IMM: {
-               int dreg = mono_alloc_dreg (cfg, STACK_I8);
-               MONO_EMIT_NEW_I8CONST (cfg, dreg, ins->inst_l);
-               MONO_EMIT_NEW_BIALU (cfg, OP_LSUB, ins->dreg, ins->sreg1, dreg);
-               NULLIFY_INS (ins);
-               break;
-       }
-       case OP_LNEG: {
-               MONO_EMIT_NEW_BIALU (cfg, OP_S390_LNEG, ins->dreg, ins->sreg1 + 1, ins->sreg1 + 2);
-               NULLIFY_INS (ins);
-               break;
-       }
-       case OP_ISUB_OVF:
-               ins->opcode = OP_S390_ISUB_OVF;
-               break;
-       case OP_ISUB_OVF_UN:
-               ins->opcode = OP_S390_ISUB_OVF_UN;
-               break;
-       default:
-               break;
-       }
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_print_tree                              */
-/*                                                                  */
-/* Function    - Print platform-specific opcode details.           */
-/*                                                                 */
-/* Returns     - 1 - opcode details have been printed              */
-/*               0 - opcode details have not been printed          */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-gboolean
-mono_arch_print_tree (MonoInst *tree, int arity)
-{
-       gboolean done;
-
-       switch (tree->opcode) {
-               case OP_S390_LOADARG:
-               case OP_S390_ARGREG:
-               case OP_S390_ARGPTR:
-                       printf ("[0x%lx(%s)]", tree->inst_offset, 
-                               mono_arch_regname (tree->inst_basereg));
-                       done = 1;
-                       break;
-               case OP_S390_STKARG:
-                       printf ("[0x%lx(previous_frame)]", 
-                               tree->inst_offset); 
-                       done = 1;
-                       break;
-               case OP_S390_MOVE:
-                       printf ("[0x%lx(%d,%s),0x%lx(%s)]",
-                               tree->inst_offset, tree->backend.size,
-                               mono_arch_regname(tree->dreg), tree->inst_imm, 
-                               mono_arch_regname(tree->sreg1));
-                       done = 1;
-                       break;
-               case OP_S390_SETF4RET:
-                       printf ("[%s,%s]", 
-                               mono_arch_fregname (tree->dreg),
-                               mono_arch_fregname (tree->sreg1));
-                       done = 1;
-                       break;
-               case OP_TLS_GET:
-                       printf ("[0x%lx(0x%lx,%s)]", tree->inst_offset,
-                               tree->inst_imm,
-                               mono_arch_regname (tree->sreg1));
-                       done = 1;
-                       break;
-               case OP_S390_BKCHAIN:
-                       printf ("[previous_frame(%s)]", 
-                               mono_arch_regname (tree->sreg1));
-                       done = 1;
-                       break;
-               default:
-                       done = 0;
-       }
-       return (done);
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_regalloc_cost                           */
-/*                                                                  */
-/* Function    - Determine the cost, in the number of memory       */
-/*               references, of the action of allocating the var-  */
-/*               iable VMV into a register during global register  */
-/*               allocation.                                       */
-/*                                                                 */
-/* Returns     - Cost                                              */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-guint32
-mono_arch_regalloc_cost (MonoCompile *cfg, MonoMethodVar *vmv)
-{
-       /* FIXME: */
-       return 2;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_get_domain_intrinsic                    */
-/*                                                                  */
-/* Function    -                                                   */
-/*                                                                 */
-/* Returns     -                                                   */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-MonoInst * 
-mono_arch_get_domain_intrinsic (MonoCompile* cfg)
-{
-       MonoInst *ins;
-
-       if (appdomain_tls_offset == -1)
-               return NULL;
-       
-       MONO_INST_NEW (cfg, ins, OP_TLS_GET);
-       ins->inst_offset = appdomain_tls_offset;
-       return (ins);
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_flush_register_windows                  */
-/*                                                                  */
-/* Function    -                                                   */
-/*                                                                 */
-/* Returns     -                                                   */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-void 
-mono_arch_flush_register_windows (void)
-{
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_get_lmf_addr                            */
-/*                                                                  */
-/* Function    -                                                   */
-/*                                                                 */
-/* Returns     -                                                   */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-gpointer
-mono_arch_get_lmf_addr (void)
-{
-        return pthread_getspecific (lmf_addr_key);
-}
-
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_get_patch_offset                        */
-/*                                                                  */
-/* Function    - Dummy entry point until s390x supports aot.       */
-/*                                                                 */
-/* Returns     - Offset for patch.                                 */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-guint32
-mono_arch_get_patch_offset (guint8 *code)
-{
-       return 0;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_context_get_int_reg.                    */
-/*                                                                  */
-/* Function    - Dummy entry point until s390x supports aot.       */
-/*                                                                 */
-/* Returns     - Pointer to intreg.                                */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-mgreg_t
-mono_arch_context_get_int_reg (MonoContext *ctx, int reg)
-{
-       /* FIXME: implement */
-       g_assert_not_reached ();
-       return NULL;
-}
-
-/*========================= End of Function ========================*/
diff --git a/mono/mini/mini-s390.h b/mono/mini/mini-s390.h
deleted file mode 100644 (file)
index d44c475..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-#ifndef __MONO_MINI_S390_H__
-#define __MONO_MINI_S390_H__
-
-#include <mono/arch/s390/s390-codegen.h>
-#include <signal.h>
-
-#define MONO_ARCH_CPU_SPEC s390_cpu_desc
-
-#define MONO_MAX_IREGS 16
-#define MONO_MAX_FREGS 16
-
-/*-------------------------------------------*/
-/* Parameters used by the register allocator */
-/*-------------------------------------------*/
-
-struct MonoLMF {
-       gpointer    previous_lmf;
-       gpointer    lmf_addr;
-       MonoMethod *method;
-       gulong      ebp;
-       gulong      eip;
-       gulong      pregs[6];
-       gulong      gregs[16];
-       gdouble     fregs[16];
-};
-
-typedef struct ucontext MonoContext;
-
-typedef struct MonoCompileArch {
-       int bkchain_reg;
-} MonoCompileArch;
-
-typedef struct
-{
-       void *prev;
-       void *unused[5];
-       void *regs[8];
-       void *return_address;
-} MonoS390StackFrame;
-
-typedef struct
-{
-       gint32  size;
-       gint32  offset;
-       gint32  offPrm;
-} MonoS390ArgParm;
-
-#define MONO_ARCH_EMULATE_FCONV_TO_I8          1
-#define MONO_ARCH_EMULATE_LCONV_TO_R8          1
-#define MONO_ARCH_EMULATE_LCONV_TO_R4          1
-#define MONO_ARCH_EMULATE_LCONV_TO_R8_UN       1
-#define MONO_ARCH_EMULATE_LMUL                         1
-#define MONO_ARCH_HAVE_IS_INT_OVERFLOW         1
-#define MONO_ARCH_NEED_DIV_CHECK               1
-#define MONO_ARCH_HAVE_ATOMIC_ADD 1
-#define MONO_ARCH_HAVE_ATOMIC_EXCHANGE 1
-#define MONO_ARCH_HAVE_DECOMPOSE_OPTS 1
-#define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS 1
-// #define MONO_ARCH_SIGSEGV_ON_ALTSTACK               1
-// #define MONO_ARCH_SIGNAL_STACK_SIZE         65536
-
-#define MONO_ARCH_USE_SIGACTION        1
-
-#define S390_STACK_ALIGNMENT            8
-#define S390_FIRST_ARG_REG             s390_r2
-#define S390_LAST_ARG_REG              s390_r6
-#define S390_FIRST_FPARG_REG           s390_f0
-#define S390_LAST_FPARG_REG            s390_f2
-#define S390_PASS_STRUCTS_BY_VALUE      1
-#define S390_SMALL_RET_STRUCT_IN_REG    1
-
-#define S390_NUM_REG_ARGS (S390_LAST_ARG_REG-S390_FIRST_ARG_REG+1)
-#define S390_NUM_REG_FPARGS (S390_LAST_FPARG_REG-S390_FIRST_FPARG_REG)
-
-/*===============================================*/
-/* Definitions used by mini-codegen.c            */
-/*===============================================*/
-
-/*-----------------------------------------------------*/
-/* use s390_r2-s390_r6 as parm registers               */
-/* s390_r0, s390_r1, s390_r12, s390_r13 used internally*/
-/* s390_r8..s390_r11 are used for global regalloc      */
-/* s390_r15 is the stack pointer                       */
-/*-----------------------------------------------------*/
-#define MONO_ARCH_CALLEE_REGS (0xfc)
-
-#define MONO_ARCH_CALLEE_SAVED_REGS 0xff80
-
-/*----------------------------------------*/
-/* use s390_f1/s390_f3-s390_f15 as temps  */
-/*----------------------------------------*/
-
-#define MONO_ARCH_CALLEE_FREGS (0xfffe)
-
-#define MONO_ARCH_CALLEE_SAVED_FREGS 0
-
-#define MONO_ARCH_USE_FPSTACK FALSE
-#define MONO_ARCH_FPSTACK_SIZE 0
-
-#define MONO_ARCH_INST_FIXED_REG(desc) ((desc == 'o') ? s390_r2 :              \
-                                       ((desc == 'L') ? s390_r3 :              \
-                                       ((desc == 'g') ? s390_f0 : - 1)))
-
-#define MONO_ARCH_INST_IS_FLOAT(desc)  ((desc == 'f') || (desc == 'g'))
-
-#define MONO_ARCH_INST_SREG2_MASK(ins) (0)
-
-#define MONO_ARCH_INST_IS_REGPAIR(desc) ((desc == 'l') || (desc == 'L'))
-//#define MONO_ARCH_INST_IS_REGPAIR(desc) (0)
-#define MONO_ARCH_INST_REGPAIR_REG2(desc,hr) ((desc == 'l') ? (hr + 1) :       \
-                                             ((desc == 'L') ? s390_r2 : -1))
-
-#define MONO_ARCH_IS_GLOBAL_IREG(reg) 0
-
-#define MONO_ARCH_FRAME_ALIGNMENT 4
-#define MONO_ARCH_CODE_ALIGNMENT 32
-
-#define MONO_ARCH_RETREG1 s390_r2
-
-/*-----------------------------------------------*/
-/* Macros used to generate instructions          */
-/*-----------------------------------------------*/
-#define S390_OFFSET(b, t)      (guchar *) ((gint32) (b) - (gint32) (t))
-#define S390_RELATIVE(b, t)     (guchar *) ((((gint32) (b) - (gint32) (t))) / 2)
-
-#define CODEPTR(c, o) (o) = (short *) ((guint32) c - 2)
-#define PTRSLOT(c, o) *(o) = (short) ((guint32) c - (guint32) (o) + 2)/2
-
-#define S390_CC_EQ                     8
-#define S390_ALIGN(v, a)       (((a) > 0 ? (((v) + ((a) - 1)) & ~((a) - 1)) : (v)))
-
-#define MONO_CONTEXT_SET_IP(ctx,ip)                                    \
-       do {                                                            \
-               (ctx)->uc_mcontext.gregs[14] = (unsigned long)ip;       \
-               (ctx)->uc_mcontext.psw.addr = (unsigned long)ip;        \
-       } while (0); 
-
-#define MONO_CONTEXT_SET_SP(ctx,bp) MONO_CONTEXT_SET_BP((ctx),(bp))
-#define MONO_CONTEXT_SET_BP(ctx,bp)                                    \
-       do {                                                            \
-               (ctx)->uc_mcontext.gregs[15] = (unsigned long)bp;       \
-               (ctx)->uc_stack.ss_sp        = (void*)bp;       \
-       } while (0); 
-
-#define MONO_CONTEXT_GET_IP(ctx) context_get_ip ((ctx))
-#define MONO_CONTEXT_GET_BP(ctx) MONO_CONTEXT_GET_SP((ctx))
-#define MONO_CONTEXT_GET_SP(ctx) ((gpointer)((ctx)->uc_mcontext.gregs[15]))
-
-#define MONO_INIT_CONTEXT_FROM_FUNC(ctx,func) do {                     \
-               MonoS390StackFrame *sframe;                             \
-               __asm__ volatile("lr    %0,15" : "=r" (sframe));        \
-               MONO_CONTEXT_SET_BP ((ctx), sframe->prev);              \
-               MONO_CONTEXT_SET_SP ((ctx), sframe->prev);              \
-               sframe = (MonoS390StackFrame*)sframe->prev;             \
-               MONO_CONTEXT_SET_IP ((ctx), sframe->return_address);    \
-       } while (0)
-
-#define MONO_ARCH_INIT_TOP_LMF_ENTRY(lmf) do { (lmf)->ebp = -1; } while (0)
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - context_get_ip                                    */
-/*                                                                  */
-/* Function    - Extract the current instruction address from the  */
-/*               context.                                          */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-static inline gpointer 
-context_get_ip (MonoContext *ctx) 
-{
-       gpointer ip;
-
-       ip = (gpointer) ((gint32) (ctx->uc_mcontext.psw.addr) & 0x7fffffff);
-       return ip;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - s390_patch                                        */
-/*                                                                  */
-/* Function    - Patch the code with a given value.                */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-static void inline
-s390_patch (guchar *code, gint32 target)
-{
-       gint32 *offset = (gint32 *) code;
-       
-       if (target != 00) {
-               *offset = target;
-       }
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - restoreLMF                                        */
-/*                                                                  */
-/* Function    - Restore the LMF state prior to exiting a method.  */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-#define restoreLMF(code, frame_reg, stack_usage) do                    \
-{                                                                      \
-       int lmfOffset = 0;                                              \
-                                                                       \
-       s390_lr  (code, s390_r13, frame_reg);                           \
-                                                                       \
-       lmfOffset = stack_usage -  sizeof(MonoLMF);                     \
-                                                                       \
-       /*-------------------------------------------------*/           \
-       /* r13 = my lmf                                    */           \
-       /*-------------------------------------------------*/           \
-       s390_ahi (code, s390_r13, lmfOffset);                           \
-                                                                       \
-       /*-------------------------------------------------*/           \
-       /* r6 = &jit_tls->lmf                              */           \
-       /*-------------------------------------------------*/           \
-       s390_l   (code, s390_r6, 0, s390_r13,                           \
-                 G_STRUCT_OFFSET(MonoLMF, lmf_addr));                  \
-                                                                       \
-       /*-------------------------------------------------*/           \
-       /* r0 = lmf.previous_lmf                           */           \
-       /*-------------------------------------------------*/           \
-       s390_l   (code, s390_r0, 0, s390_r13,                           \
-                 G_STRUCT_OFFSET(MonoLMF, previous_lmf));              \
-                                                                       \
-       /*-------------------------------------------------*/           \
-       /* jit_tls->lmf = previous_lmf                     */           \
-       /*-------------------------------------------------*/           \
-       s390_l   (code, s390_r13, 0, s390_r6, 0);                       \
-       s390_st  (code, s390_r0, 0, s390_r6, 0);                        \
-} while (0)
-
-/*========================= End of Function ========================*/
-
-#endif /* __MONO_MINI_S390_H__ */  
index f37b087e49d4f7d356256acf358ea642f768c88e..b98526161d816cfcc4f9081335858ee8957da10a 100644 (file)
@@ -246,6 +246,9 @@ if (ins->inst_target_bb->native_offset) {                                   \
 #define JUMP_SIZE      6
 #define ENABLE_WRONG_METHOD_CHECK 0
 
+#define mono_mini_arch_lock() EnterCriticalSection (&mini_arch_mutex)
+#define mono_mini_arch_unlock() LeaveCriticalSection (&mini_arch_mutex)
+
 /*========================= End of Defines =========================*/
 
 /*------------------------------------------------------------------*/
@@ -260,6 +263,7 @@ if (ins->inst_target_bb->native_offset) {                                   \
 #include <mono/metadata/profiler-private.h>
 #include <mono/utils/mono-math.h>
 #include <mono/utils/mono-mmap.h>
+#include <mono/utils/mono-hwcap-s390x.h>
 
 #include "mini-s390x.h"
 #include "cpu-s390x.h"
@@ -365,7 +369,7 @@ static gboolean is_regsize_var (MonoType *);
 static inline void add_general (guint *, size_data *, ArgInfo *);
 static inline void add_stackParm (guint *, size_data *, ArgInfo *, gint);
 static inline void add_float (guint *, size_data *, ArgInfo *);
-static CallInfo * get_call_info (MonoCompile *, MonoMemPool *, MonoMethodSignature *, gboolean);
+static CallInfo * get_call_info (MonoCompile *, MonoMemPool *, MonoMethodSignature *);
 static guchar * emit_float_to_int (MonoCompile *, guchar *, int, int, int, gboolean);
 static guint8 * emit_load_volatile_arguments (guint8 *, MonoCompile *);
 static void catch_SIGILL(int, siginfo_t *, void *);
@@ -381,8 +385,6 @@ int mono_exc_esp_offset = 0;
 
 static int indent_level = 0;
 
-int has_ld = 0;
-
 static gint appdomain_tls_offset = -1,
            lmf_tls_offset = -1,
            lmf_addr_tls_offset = -1;
@@ -414,6 +416,11 @@ static gpointer bp_trigger_page;
 
 breakpoint_t breakpointCode;
 
+/* 
+ * This mutex protects architecture specific caches 
+ */
+static CRITICAL_SECTION mini_arch_mutex;
+
 /*====================== End of Global Variables ===================*/
 
 /*------------------------------------------------------------------*/
@@ -916,7 +923,7 @@ enter_method (MonoMethod *method, RegParm *rParm, char *sp)
        
        sig = mono_method_signature (method);
        
-       cinfo = get_call_info (NULL, NULL, sig, sig->pinvoke);
+       cinfo = get_call_info (NULL, NULL, sig);
 
        if (cinfo->struct_ret) {
                printf ("[STRUCTRET:%p], ", (gpointer) rParm->gr[0]);
@@ -1233,24 +1240,6 @@ handle_enum:
 
 /*========================= End of Function ========================*/
 
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - catch_SIGILL                                      */
-/*                                                                  */
-/* Function    - Catch SIGILL as a result of testing for long      */
-/*               displacement facility.                            */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void
-catch_SIGILL(int sigNo, siginfo_t *info, void *act) {
-
-       has_ld = 0;
-
-}
-
-/*========================= End of Function ========================*/
-
 /*------------------------------------------------------------------*/
 /*                                                                  */
 /* Name                - mono_arch_cpu_init                                */
@@ -1263,35 +1252,6 @@ catch_SIGILL(int sigNo, siginfo_t *info, void *act) {
 void
 mono_arch_cpu_init (void)
 {
-       struct sigaction sa,
-                        *oldSa = NULL;
-       guint mode = 1;
-
-       /*--------------------------------------*/      
-       /* Set default rounding mode for FP     */
-       /*--------------------------------------*/      
-       __asm__ ("SRNM\t%0\n\t"
-               : : "m" (mode));
-
-       /*--------------------------------------*/      
-       /* Determine if we have long displace-  */
-       /* ment facility on this processor      */
-       /*--------------------------------------*/      
-       sa.sa_sigaction = catch_SIGILL;
-       sigemptyset (&sa.sa_mask);
-       sa.sa_flags = SA_SIGINFO;
-
-       sigaction (SIGILL, &sa, oldSa);
-
-       /*--------------------------------------*/
-       /* We test by executing the STY inst    */
-       /*--------------------------------------*/
-       __asm__ ("LGHI\t0,1\n\t"
-                "LA\t1,%0\n\t"
-                ".byte\t0xe3,0x00,0x10,0x00,0x00,0x50\n\t"
-               : "=m" (has_ld) : : "0", "1");
-
-       sigaction (SIGILL, oldSa, NULL);
 }
 
 /*========================= End of Function ========================*/
@@ -1623,12 +1583,13 @@ add_float (guint *fr,  size_data *sz, ArgInfo *ainfo)
 /*------------------------------------------------------------------*/
 
 static CallInfo *
-get_call_info (MonoCompile *cfg, MonoMemPool *mp, MonoMethodSignature *sig, gboolean is_pinvoke)
+get_call_info (MonoCompile *cfg, MonoMemPool *mp, MonoMethodSignature *sig)
 {
        guint i, fr, gr, size, pstart;
        int nParm = sig->hasthis + sig->param_count;
        MonoType *ret_type;
-       guint32 simpletype, align;
+       guint32 simpleType, align;
+       gboolean is_pinvoke = sig->pinvoke;
        CallInfo *cinfo;
        size_data *sz;
        MonoGenericSharingContext *gsctx = cfg ? cfg->generic_sharing_context : NULL;
@@ -1659,11 +1620,11 @@ get_call_info (MonoCompile *cfg, MonoMemPool *mp, MonoMethodSignature *sig, gboo
        /* area that the callee will use.                           */
        /*----------------------------------------------------------*/
 
-       ret_type = mono_type_get_underlying_type (sig->ret);
+       ret_type = mini_type_get_underlying_type (gsctx, sig->ret);
        ret_type = mini_get_basic_type_from_generic (gsctx, ret_type);
-       simpletype = ret_type->type;
+       simpleType = ret_type->type;
 enum_retvalue:
-       switch (simpletype) {
+       switch (simpleType) {
                case MONO_TYPE_BOOLEAN:
                case MONO_TYPE_I1:
                case MONO_TYPE_U1:
@@ -1704,13 +1665,10 @@ enum_retvalue:
                case MONO_TYPE_VALUETYPE: {
                        MonoClass *klass = mono_class_from_mono_type (sig->ret);
                        if (klass->enumtype) {
-                               simpletype = mono_class_enum_basetype (klass)->type;
+                               simpleType = mono_class_enum_basetype (klass)->type;
                                goto enum_retvalue;
                        }
-                       if (sig->pinvoke)
-                               size = mono_class_native_size (klass, &align);
-                       else
-                               size = mono_class_value_size (klass, &align);
+                       size = mini_type_stack_size_full (gsctx, &klass->byval_arg, NULL, sig->pinvoke);
        
                        cinfo->struct_ret = 1;
                        cinfo->ret.size   = size;
@@ -1803,11 +1761,10 @@ enum_retvalue:
                        continue;
                }
 
-               ptype = mono_type_get_underlying_type (sig->params [i]);
-               ptype = mini_get_basic_type_from_generic (gsctx, ptype);
-               simpletype = ptype->type;
-               cinfo->args[nParm].type = simpletype;
-               switch (simpletype) {
+               ptype = mini_type_get_underlying_type (gsctx, sig->params [i]);
+               simpleType = ptype->type;
+               cinfo->args[nParm].type = simpleType;
+               switch (simpleType) {
                case MONO_TYPE_BOOLEAN:
                case MONO_TYPE_I1:
                case MONO_TYPE_U1:
@@ -1858,7 +1815,7 @@ enum_retvalue:
                        nParm++;
                        break;
                case MONO_TYPE_GENERICINST:
-                       if (!mono_type_generic_inst_is_valuetype (sig->params [i])) {
+                       if (!mono_type_generic_inst_is_valuetype (ptype)) {
                                cinfo->args[nParm].size = sizeof(gpointer);
                                add_general (&gr, sz, cinfo->args+nParm);
                                nParm++;
@@ -1867,30 +1824,29 @@ enum_retvalue:
                        /* Fall through */
                case MONO_TYPE_VALUETYPE: {
                        MonoMarshalType *info;
-                       MonoClass *klass = mono_class_from_mono_type (sig->params [i]);
-                       if (sig->pinvoke)
-                               size = mono_class_native_size (klass, &align);
-                       else
-                               size = mono_class_value_size (klass, &align);
-       
-                       info = mono_marshal_load_type_info (klass);
+                       MonoClass *klass = mono_class_from_mono_type (ptype);
 
-                       if ((info->native_size == sizeof(float)) &&
-                           (info->num_fields  == 1) &&
-                           (info->fields[0].field->type->type == MONO_TYPE_R4)) {
-                               cinfo->args[nParm].size = sizeof(float);
-                               add_float(&fr, sz, cinfo->args+nParm);
-                               nParm ++;
-                               break;
-                       }
+                       size = mini_type_stack_size_full(gsctx, &klass->byval_arg, NULL, sig->pinvoke);
+                       if (simpleType != MONO_TYPE_GENERICINST) {
+                               info = mono_marshal_load_type_info(klass);
 
-                       if ((info->native_size == sizeof(double)) &&
-                           (info->num_fields  == 1) &&
-                           (info->fields[0].field->type->type == MONO_TYPE_R8)) {
-                               cinfo->args[nParm].size = sizeof(double);
-                               add_float(&fr, sz, cinfo->args+nParm);
-                               nParm ++;
-                               break;
+                               if ((info->native_size == sizeof(float)) &&
+                                   (info->num_fields  == 1) &&
+                                   (info->fields[0].field->type->type == MONO_TYPE_R4)) {
+                                       cinfo->args[nParm].size = sizeof(float);
+                                       add_float(&fr, sz, cinfo->args+nParm);
+                                       nParm ++;
+                                       break;
+                               }
+
+                               if ((info->native_size == sizeof(double)) &&
+                                   (info->num_fields  == 1) &&
+                                   (info->fields[0].field->type->type == MONO_TYPE_R8)) {
+                                       cinfo->args[nParm].size = sizeof(double);
+                                       add_float(&fr, sz, cinfo->args+nParm);
+                                       nParm ++;
+                                       break;
+                               }
                        }
 
                        cinfo->args[nParm].vtsize  = 0;
@@ -1949,7 +1905,7 @@ enum_retvalue:
                }
                        break;
                default:
-                       g_error ("Can't trampoline 0x%x", sig->params [i]->type);
+                       g_error ("Can't trampoline 0x%x", ptype);
                }
        }
 
@@ -2043,7 +1999,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 
        sig     = mono_method_signature (cfg->method);
        
-       cinfo   = get_call_info (cfg, cfg->mempool, sig, sig->pinvoke);
+       cinfo   = get_call_info (cfg, cfg->mempool, sig);
 
        if (!cinfo->struct_ret) {
                switch (mono_type_get_underlying_type (sig->ret)->type) {
@@ -2229,7 +2185,8 @@ printf("%s %4d cookine %x\n",__FUNCTION__,__LINE__,cfg->sig_cookie);
        /*------------------------------------------------------*/
        /* Allow space for the trace method stack area if needed*/
        /*------------------------------------------------------*/
-       if (mono_jit_trace_calls != NULL && mono_trace_eval (cfg->method)) 
+       if ((mono_jit_trace_calls != NULL && mono_trace_eval (cfg->method)) 
+           || (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE))
                offset += S390_TRACE_STACK_SIZE;
 
        /*------------------------------------------------------*/
@@ -2272,7 +2229,7 @@ mono_arch_create_vars (MonoCompile *cfg)
 
        sig = mono_method_signature (cfg->method);
 
-       cinfo = get_call_info (cfg, cfg->mempool, sig, sig->pinvoke);
+       cinfo = get_call_info (cfg, cfg->mempool, sig);
 
        if (cinfo->struct_ret) {
                cfg->vret_addr = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_ARG);
@@ -2387,7 +2344,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
        n = sig->param_count + sig->hasthis;
        DEBUG (g_print ("Call requires: %d parameters\n",n));
        
-       cinfo = get_call_info (cfg, cfg->mempool, sig, sig->pinvoke);
+       cinfo = get_call_info (cfg, cfg->mempool, sig);
 
        stackSize         = cinfo->sz.stack_size + cinfo->sz.local_size + 
                            cinfo->sz.parm_size + cinfo->sz.offset;
@@ -2692,7 +2649,7 @@ mono_arch_instrument_prolog (MonoCompile *cfg, void *func, void *p,
        if (cfg->method->save_lmf)
                parmOffset -= sizeof(MonoLMF);
        fpOffset   = parmOffset + (5*sizeof(gpointer));
-       if ((!has_ld) && (fpOffset > 4096)) {
+       if ((!mono_hwcap_s390x_has_ld) && (fpOffset > 4096)) {
                s390_lgr (code, s390_r12, STK_BASE);
                baseReg = s390_r12;
                while (fpOffset > 4096) {
@@ -2705,7 +2662,7 @@ mono_arch_instrument_prolog (MonoCompile *cfg, void *func, void *p,
        }       
 
        s390_stmg (code, s390_r2, s390_r6, STK_BASE, parmOffset);
-       if (has_ld) {
+       if (mono_hwcap_s390x_has_ld) {
                s390_stdy (code, s390_f0, 0, STK_BASE, fpOffset);
                s390_stdy (code, s390_f2, 0, STK_BASE, fpOffset+sizeof(gdouble));
                s390_stdy (code, s390_f4, 0, STK_BASE, fpOffset+2*sizeof(gdouble));
@@ -2721,7 +2678,7 @@ mono_arch_instrument_prolog (MonoCompile *cfg, void *func, void *p,
        s390_llong(code, cfg->method);
        s390_llong(code, func);
        s390_lg   (code, s390_r2, 0, s390_r13, 4);
-       if (has_ld)
+       if (mono_hwcap_s390x_has_ld)
                s390_lay  (code, s390_r3, 0, STK_BASE, parmOffset);
        else
                s390_la   (code, s390_r3, 0, baseReg, parmOffset);
@@ -2729,7 +2686,7 @@ mono_arch_instrument_prolog (MonoCompile *cfg, void *func, void *p,
        s390_aghi (code, s390_r4, cfg->stack_usage);
        s390_lg   (code, s390_r1, 0, s390_r13, 12);
        s390_basr (code, s390_r14, s390_r1);
-       if (has_ld) {
+       if (mono_hwcap_s390x_has_ld) {
                s390_ldy  (code, s390_f6, 0, STK_BASE, fpOffset+3*sizeof(gdouble));
                s390_ldy  (code, s390_f4, 0, STK_BASE, fpOffset+2*sizeof(gdouble));
                s390_ldy  (code, s390_f2, 0, STK_BASE, fpOffset+sizeof(gdouble));
@@ -2761,10 +2718,21 @@ mono_arch_instrument_epilog_full (MonoCompile *cfg, void *func, void *p, gboolea
 {
        guchar     *code = p;
        int        save_mode = SAVE_NONE,
-                  saveOffset;
+                  saveOffset,
+                  offset;
        MonoMethod *method = cfg->method;
        int        rtype = mono_type_get_underlying_type (mono_method_signature (method)->ret)->type;
 
+       offset = code - cfg->native_code;
+       /*-----------------------------------------*/
+       /* We need about 128 bytes of instructions */
+       /*-----------------------------------------*/
+       if (offset > (cfg->code_size - 128)) {
+               cfg->code_size *= 2;
+               cfg->native_code = g_realloc (cfg->native_code, cfg->code_size);
+               code = cfg->native_code + offset;
+       }
+
        saveOffset = cfg->stack_usage - S390_TRACE_STACK_SIZE;
        if (method->save_lmf)
                saveOffset -= sizeof(MonoLMF);
@@ -4161,6 +4129,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        /* ensure ins->sreg1 is not NULL */
                        s390_lg   (code, s390_r0, 0, ins->sreg1, 0);
                        s390_ltgr (code, s390_r0, s390_r0);
+                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_ZR, "NullReferenceException");
                }
                        break;
                case OP_ARGLIST: {
@@ -4979,8 +4948,11 @@ mono_arch_patch_code (MonoMethod *method, MonoDomain *domain,
                        case MONO_PATCH_INFO_EXC:
                        case MONO_PATCH_INFO_ABS:
                        case MONO_PATCH_INFO_METHOD:
+                       case MONO_PATCH_INFO_RGCTX_FETCH:
                        case MONO_PATCH_INFO_INTERNAL_METHOD:
                        case MONO_PATCH_INFO_CLASS_INIT:
+                       case MONO_PATCH_INFO_JIT_ICALL_ADDR:
+                       case MONO_PATCH_INFO_GENERIC_CLASS_INIT:
                                s390_patch_addr (ip, (guint64) target);
                                continue;
                        case MONO_PATCH_INFO_SWITCH: 
@@ -5037,7 +5009,7 @@ emit_load_volatile_arguments (guint8 *code, MonoCompile *cfg)
        int pos = 0, i;
        CallInfo *cinfo;
 
-       cinfo = get_call_info (NULL, NULL, sig, sig->pinvoke);
+       cinfo = get_call_info (NULL, NULL, sig);
 
        if (cinfo->struct_ret) {
                ArgInfo *ainfo = &cinfo->ret;
@@ -5150,7 +5122,8 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        if (mono_jit_trace_calls != NULL && mono_trace_eval (method)) {
                tracing         = 1;
                cfg->code_size += 256;
-       }
+       } else if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE)
+               cfg->code_size += 256;
 
        if (method->save_lmf)
                cfg->code_size += 200;
@@ -5191,6 +5164,15 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 
        mono_emit_unwind_op_def_cfa_reg (cfg, code, cfg->frame_reg);
 
+       /* store runtime generic context */
+       if (cfg->rgctx_var) {
+               g_assert (cfg->rgctx_var->opcode == OP_REGOFFSET);
+
+               s390_stg  (code, MONO_ARCH_RGCTX_REG, 0, 
+                          cfg->rgctx_var->inst_basereg, 
+                          cfg->rgctx_var->inst_offset);
+       }
+
         /* compute max_offset in order to use short forward jumps
         * we always do it on s390 because the immediate displacement
         * for jumps is too small 
@@ -5211,7 +5193,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        sig = mono_method_signature (method);
        pos = 0;
 
-       cinfo = get_call_info (cfg, cfg->mempool, sig, sig->pinvoke);
+       cinfo = get_call_info (cfg, cfg->mempool, sig);
 
        if (cinfo->struct_ret) {
                ArgInfo *ainfo     = &cinfo->ret;
@@ -5446,8 +5428,7 @@ mono_arch_emit_epilog (MonoCompile *cfg)
        
        if (mono_jit_trace_calls != NULL)
                max_epilog_size += 128;
-
-       if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE)
+       else if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE)
                max_epilog_size += 128;
        
        while ((cfg->code_len + max_epilog_size) > (cfg->code_size - 16)) {
@@ -5467,8 +5448,6 @@ mono_arch_emit_epilog (MonoCompile *cfg)
                restoreLMF(code, cfg->frame_reg, cfg->stack_usage);
 
        if (cfg->flags & MONO_CFG_HAS_ALLOCA) {
-//             if (cfg->frame_reg != STK_BASE)
-//                     s390_lgr (code, STK_BASE, cfg->frame_reg);
                s390_lg  (code, STK_BASE, 0, STK_BASE, 0);
        } else
                code = backUpStackPtr(cfg, code);
@@ -6231,6 +6210,44 @@ mono_arch_find_imt_method (mgreg_t *regs, guint8 *code)
 
 /*========================= End of Function ========================*/
 
+/*------------------------------------------------------------------*/
+/*                                                                  */
+/* Name                - mono_arch_find_static_call_vtable                 */
+/*                                                                  */
+/* Function    - Find the static call vtable.                      */
+/*                                                                 */
+/*------------------------------------------------------------------*/
+
+MonoVTable*
+mono_arch_find_static_call_vtable (mgreg_t *regs, guint8 *code)
+{
+       mgreg_t *r = (mgreg_t*)regs;
+
+       return (MonoVTable*)(gsize) r [MONO_ARCH_RGCTX_REG];
+}
+
+/*========================= End of Function ========================*/
+
+/*------------------------------------------------------------------*/
+/*                                                                  */
+/* Name                - mono_arch_get_cie_program                         */
+/*                                                                  */
+/* Function    - Find the static call vtable.                      */
+/*                                                                 */
+/*------------------------------------------------------------------*/
+
+GSList*
+mono_arch_get_cie_program (void)
+{
+       GSList *l = NULL;
+
+       mono_add_unwind_op_def_cfa (l, NULL, NULL, STK_BASE, 0);
+
+       return(l);
+}
+
+/*========================= End of Function ========================*/
+
 #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
 
 /*------------------------------------------------------------------*/
index 930ef14de7e8d2ac617a8ea736e248c374f02bf2..764db673bf5dc792c311074bd0bdc1a58509bf2a 100644 (file)
@@ -117,6 +117,8 @@ typedef struct
 #define MONO_ARCH_HAVE_TLS_GET                         1
 #define MONO_ARCH_ENABLE_MONO_LMF_VAR                  1
 #define MONO_ARCH_IMT_REG                              s390_r9
+#define MONO_ARCH_VTABLE_REG                           MONO_ARCH_IMT_REG
+#define MONO_ARCH_RGCTX_REG                            MONO_ARCH_IMT_REG
 #define MONO_ARCH_THIS_AS_FIRST_ARG                    1
 #define MONO_ARCH_HAVE_XP_UNWIND                       1
 #define MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX               1
@@ -124,6 +126,8 @@ typedef struct
 #define MONO_ARCH_HAVE_CONTEXT_SET_INT_REG             1
 #define MONO_ARCH_USE_SIGACTION                        1
 #define MONO_ARCH_GC_MAPS_SUPPORTED                    1
+#define MONO_ARCH_GSHARED_SUPPORTED                    1
+#define MONO_ARCH_MONITOR_ENTER_ADJUSTMENT             1
 
 #define S390_STACK_ALIGNMENT            8
 #define S390_FIRST_ARG_REG             s390_r2
index 12150ca1eb6f75ed24be0269957c7b8f4a37cb58..9a0e4ec1508d9cccd85f6678f7387f2870833132 100644 (file)
@@ -18,7 +18,6 @@
 #include <unistd.h>
 
 #ifndef __linux__
-#include <sys/systeminfo.h>
 #include <thread.h>
 #endif
 
@@ -29,6 +28,7 @@
 #include <mono/metadata/debug-helpers.h>
 #include <mono/metadata/tokentype.h>
 #include <mono/utils/mono-math.h>
+#include <mono/utils/mono-hwcap-sparc.h>
 
 #include "mini-sparc.h"
 #include "trace.h"
 
 #endif
 
-/* Whenever the CPU supports v9 instructions */
-static gboolean sparcv9 = FALSE;
-
 /* Whenever this is a 64bit executable */
 #if SPARCV9
 static gboolean v64 = TRUE;
@@ -202,9 +199,6 @@ mono_arch_fregname (int reg) {
 void
 mono_arch_cpu_init (void)
 {
-       guint32 dummy;
-       /* make sure sparcv9 is initialized for embedded use */
-       mono_arch_cpu_optimizations(&dummy);
 }
 
 /*
@@ -229,35 +223,16 @@ mono_arch_cleanup (void)
 guint32
 mono_arch_cpu_optimizations (guint32 *exclude_mask)
 {
-       char buf [1024];
        guint32 opts = 0;
 
        *exclude_mask = 0;
 
-#ifndef __linux__
-       if (!sysinfo (SI_ISALIST, buf, 1024))
-               g_assert_not_reached ();
-#else
-       /* From glibc.  If the getpagesize is 8192, we're on sparc64, which
-        * (in)directly implies that we're a v9 or better.
-        * Improvements to this are greatly accepted...
-        * Also, we don't differentiate between v7 and v8.  I sense SIGILL
-        * sniffing in my future.  
-        */
-       if (getpagesize() == 8192)
-               strcpy (buf, "sparcv9");
-       else
-               strcpy (buf, "sparcv8");
-#endif
-
-       /* 
+       /*
         * On some processors, the cmov instructions are even slower than the
         * normal ones...
         */
-       if (strstr (buf, "sparcv9")) {
+       if (mono_hwcap_sparc_is_v9)
                opts |= MONO_OPT_CMOV | MONO_OPT_FCMOV;
-               sparcv9 = TRUE;
-       }
        else
                *exclude_mask |= MONO_OPT_CMOV | MONO_OPT_FCMOV;
 
@@ -306,7 +281,7 @@ mono_arch_flush_icache (guint8 *code, gint size)
         *
         * Sparcv8 needs a flush every 8 bytes.
         */
-       align = (sparcv9 ? 32 : 8);
+       align = (mono_hwcap_sparc_is_v9 ? 32 : 8);
 
        start &= ~(align - 1);
        end = (end + (align - 1)) & ~(align - 1);
@@ -370,7 +345,7 @@ mono_arch_is_inst_imm (gint64 imm)
 
 gboolean 
 mono_sparc_is_v9 (void) {
-       return sparcv9;
+       return mono_hwcap_sparc_is_v9;
 }
 
 gboolean 
@@ -1510,7 +1485,7 @@ else { \
 #define EMIT_COND_SYSTEM_EXCEPTION_GENERAL(ins,cond,sexc_name,filldelay,icc) do {     \
                mono_add_patch_info (cfg, (guint8*)(code) - (cfg)->native_code,   \
                                    MONO_PATCH_INFO_EXC, sexc_name);  \
-        if (sparcv9 && ((icc) != sparc_icc_short)) {          \
+        if (mono_hwcap_sparc_is_v9 && ((icc) != sparc_icc_short)) {          \
            sparc_branchp (code, 0, (cond), (icc), 0, 0); \
         } \
         else { \
@@ -1741,7 +1716,7 @@ mono_arch_peephole_pass_2 (MonoCompile *cfg, MonoBasicBlock *bb)
                                ((ins->inst_offset == last_ins->inst_offset - 4)) &&
                                (ins->inst_imm == 0) &&
                                (last_ins->inst_imm == 0)) {
-                               if (sparcv9) {
+                               if (mono_hwcap_sparc_is_v9) {
                                        last_ins->opcode = OP_STOREI8_MEMBASE_IMM;
                                        last_ins->inst_offset = ins->inst_offset;
                                        MONO_DELETE_INS (bb, ins);
@@ -3020,10 +2995,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                sparc_branch (code, 0, sparc_be, 0);
                                /* delay slot */
                                sparc_set (code, 0, sparc_o7);
-                               sparc_sub_imm (code, 0, size_reg, sparcv9 ? 8 : 4, size_reg);
+                               sparc_sub_imm (code, 0, size_reg, mono_hwcap_sparc_is_v9 ? 8 : 4, size_reg);
                                /* start of loop */
                                br [1] = code;
-                               if (sparcv9)
+                               if (mono_hwcap_sparc_is_v9)
                                        sparc_stx (code, sparc_g0, ins->dreg, sparc_o7);
                                else
                                        sparc_st (code, sparc_g0, ins->dreg, sparc_o7);
@@ -3032,7 +3007,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                sparc_branch (code, 0, sparc_bl, 0);
                                sparc_patch (br [2], br [1]);
                                /* delay slot */
-                               sparc_add_imm (code, 0, sparc_o7, sparcv9 ? 8 : 4, sparc_o7);
+                               sparc_add_imm (code, 0, sparc_o7, mono_hwcap_sparc_is_v9 ? 8 : 4, sparc_o7);
                                sparc_patch (br [0], code);
                        }
                        break;
@@ -3066,7 +3041,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                if (offset <= 16) {
                                        i = 0;
                                        while (i < offset) {
-                                               if (sparcv9) {
+                                               if (mono_hwcap_sparc_is_v9) {
                                                        sparc_stx_imm (code, sparc_g0, ins->dreg, i);
                                                        i += 8;
                                                }
@@ -3078,10 +3053,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                }
                                else {
                                        sparc_set (code, offset, sparc_o7);
-                                       sparc_sub_imm (code, 0, sparc_o7, sparcv9 ? 8 : 4, sparc_o7);
+                                       sparc_sub_imm (code, 0, sparc_o7, mono_hwcap_sparc_is_v9 ? 8 : 4, sparc_o7);
                                        /* beginning of loop */
                                        br [0] = code;
-                                       if (sparcv9)
+                                       if (mono_hwcap_sparc_is_v9)
                                                sparc_stx (code, sparc_g0, ins->dreg, sparc_o7);
                                        else
                                                sparc_st (code, sparc_g0, ins->dreg, sparc_o7);
@@ -3089,7 +3064,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                        br [1] = code;
                                        sparc_branch (code, 0, sparc_bne, 0);
                                        /* delay slot */
-                                       sparc_sub_imm (code, 0, sparc_o7, sparcv9 ? 8 : 4, sparc_o7);
+                                       sparc_sub_imm (code, 0, sparc_o7, mono_hwcap_sparc_is_v9 ? 8 : 4, sparc_o7);
                                        sparc_patch (br [1], br [0]);
                                }
                        }
@@ -3284,7 +3259,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_IBGE_UN:
                case OP_IBLE:
                case OP_IBLE_UN: {
-                       if (sparcv9)
+                       if (mono_hwcap_sparc_is_v9)
                                EMIT_COND_BRANCH_PREDICTED (ins, opcode_to_sparc_cond (ins->opcode), 1, 1);
                        else
                                EMIT_COND_BRANCH (ins, opcode_to_sparc_cond (ins->opcode), 1, 1);
@@ -4361,8 +4336,10 @@ mono_arch_get_lmf_addr (void)
 #endif
 
 void
-mono_arch_finish_init (void)
+mono_arch_tls_init (void)
 {
+       MonoJitTlsData *jit_tls;
+
        if (!lmf_addr_key_inited) {
                int res;
 
@@ -4377,13 +4354,20 @@ mono_arch_finish_init (void)
 
        }
 
+       jit_tls = pthread_getspecific (mono_get_jit_tls_key ());
+
 #ifdef MONO_SPARC_THR_TLS
-       thr_setspecific (lmf_addr_key, &tls->lmf);
+       thr_setspecific (lmf_addr_key, &jit_tls->lmf);
 #else
-       pthread_setspecific (lmf_addr_key, &tls->lmf);
+       pthread_setspecific (lmf_addr_key, &jit_tls->lmf);
 #endif
 }
 
+void
+mono_arch_finish_init (void)
+{
+}
+
 void
 mono_arch_free_jit_tls_data (MonoJitTlsData *tls)
 {
index b65457117f51878668390be7a0ef458f5436bfbe..f2b3b41d7963a5ae2a0c8b4ac632d74813ef8af5 100644 (file)
@@ -105,6 +105,9 @@ typedef struct MonoCompileArch {
 #define MONO_ARCH_HAVE_IMT 1
 #define MONO_ARCH_IMT_REG sparc_g1
 #define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS 1
+#define MONO_ARCH_HAVE_TLS_INIT 1
+
+void mono_arch_tls_init (void);
 
 #ifdef SPARCV9
 #define MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS
index 9f602d5a4f312c7a0ce477a7d3e25d716f16ed8d..a56a2fea00abd5bc2b8a3bdd1acaa7c026465649 100644 (file)
@@ -31,24 +31,6 @@ static guint32 trampoline_calls, jit_trampolines, unbox_trampolines, static_rgct
 #define mono_trampolines_unlock() LeaveCriticalSection (&trampolines_mutex)
 static CRITICAL_SECTION trampolines_mutex;
 
-static gpointer
-get_unbox_trampoline (MonoMethod *m, gpointer addr, gboolean need_rgctx_tramp)
-{
-       if (mono_aot_only) {
-               if (need_rgctx_tramp)
-                       /* 
-                        * The unbox trampolines call the method directly, so need to add
-                        * an rgctx tramp before them.
-                        */
-                       return mono_create_static_rgctx_trampoline (m, mono_aot_get_unbox_trampoline (m));
-               else
-                       return mono_aot_get_unbox_trampoline (m);
-       } else {
-               unbox_trampolines ++;
-               return mono_arch_get_unbox_trampoline (m, addr);
-       }
-}
-
 #ifdef MONO_ARCH_GSHARED_SUPPORTED
 
 typedef struct {
@@ -284,8 +266,9 @@ is_generic_method_definition (MonoMethod *m)
                return TRUE;
        return FALSE;
 }
-static gboolean
-ji_is_gsharedvt (MonoJitInfo *ji)
+
+gboolean
+mini_jit_info_is_gsharedvt (MonoJitInfo *ji)
 {
        if (ji && ji->has_generic_jit_info && (mono_jit_info_get_generic_sharing_context (ji)->var_is_vt ||
                                                                                   mono_jit_info_get_generic_sharing_context (ji)->mvar_is_vt))
@@ -297,12 +280,12 @@ ji_is_gsharedvt (MonoJitInfo *ji)
 /*
  * mini_add_method_trampoline:
  *
- *   Add static rgctx/gsharedvt_in trampoline to M/COMPILED_METHOD if needed. Return the trampoline address, or
+ *   Add static rgctx/gsharedvt_in/unbox trampolines to M/COMPILED_METHOD if needed. Return the trampoline address, or
  * COMPILED_METHOD if no trampoline is needed.
  * ORIG_METHOD is the method the caller originally called i.e. an iface method, or NULL.
  */
 gpointer
-mini_add_method_trampoline (MonoMethod *orig_method, MonoMethod *m, gpointer compiled_method, gboolean add_static_rgctx_tramp)
+mini_add_method_trampoline (MonoMethod *orig_method, MonoMethod *m, gpointer compiled_method, gboolean add_static_rgctx_tramp, gboolean add_unbox_tramp)
 {
        gpointer addr = compiled_method;
        gboolean callee_gsharedvt, callee_array_helper;
@@ -310,7 +293,7 @@ mini_add_method_trampoline (MonoMethod *orig_method, MonoMethod *m, gpointer com
                mini_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (compiled_method), NULL);
 
        // FIXME: This loads information from AOT
-       callee_gsharedvt = ji_is_gsharedvt (ji);
+       callee_gsharedvt = mini_jit_info_is_gsharedvt (ji);
 
        callee_array_helper = FALSE;
        if (m->wrapper_type == MONO_WRAPPER_MANAGED_TO_MANAGED) {
@@ -341,6 +324,19 @@ mini_add_method_trampoline (MonoMethod *orig_method, MonoMethod *m, gpointer com
 
        addr = compiled_method;
 
+       if (add_unbox_tramp) {
+               /* 
+                * The unbox trampolines call the method directly, so need to add
+                * an rgctx tramp before them.
+                */
+               if (mono_aot_only) {
+                       addr = mono_aot_get_unbox_trampoline (m);
+               } else {
+                       unbox_trampolines ++;
+                       addr = mono_arch_get_unbox_trampoline (m, addr);
+               }
+       }
+
        if (callee_gsharedvt && mini_is_gsharedvt_variable_signature (mono_method_signature (ji->method))) {
                MonoGenericSharingContext *gsctx;
                MonoMethodSignature *sig, *gsig;
@@ -353,7 +349,7 @@ mini_add_method_trampoline (MonoMethod *orig_method, MonoMethod *m, gpointer com
                sig = mono_method_signature (m);
                gsig = mono_method_signature (ji->method); 
 
-               addr = mini_get_gsharedvt_wrapper (TRUE, compiled_method, sig, gsig, gsctx, -1, FALSE);
+               addr = mini_get_gsharedvt_wrapper (TRUE, addr, sig, gsig, gsctx, -1, FALSE);
 
                //printf ("IN: %s\n", mono_method_full_name (m, TRUE));
        }
@@ -375,6 +371,7 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
 {
        gpointer addr, compiled_method;
        gboolean generic_shared = FALSE;
+       gboolean need_unbox_tramp = FALSE;
        MonoMethod *declaring = NULL;
        MonoMethod *generic_virtual = NULL, *variant_iface = NULL, *orig_method = NULL;
        int context_used;
@@ -528,7 +525,7 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
                        actual_method = vt->klass->vtable [displacement];
                }
 
-               if (method_inst) {
+               if (method_inst || m->wrapper_type) {
                        MonoGenericContext context = { NULL, NULL };
 
                        if (m->is_inflated)
@@ -573,7 +570,15 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
 
        mono_debugger_trampoline_compiled (code, m, addr);
 
-       addr = mini_add_method_trampoline (orig_method, m, compiled_method, need_rgctx_tramp);
+       if (generic_virtual || variant_iface) {
+               if (vt->klass->valuetype) /*FIXME is this required variant iface?*/
+                       need_unbox_tramp = TRUE;
+       } else if (orig_vtable_slot) {
+               if (m->klass->valuetype)
+                       need_unbox_tramp = TRUE;
+       }
+
+       addr = mini_add_method_trampoline (orig_method, m, compiled_method, need_rgctx_tramp, need_unbox_tramp);
 
        if (generic_virtual || variant_iface) {
                MonoMethod *target = generic_virtual ? generic_virtual : variant_iface;
@@ -581,9 +586,6 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
                vtable_slot = orig_vtable_slot;
                g_assert (vtable_slot);
 
-               if (vt->klass->valuetype) /*FIXME is this required variant iface?*/
-                       addr = get_unbox_trampoline (m, addr, need_rgctx_tramp);
-
                mono_method_add_generic_virtual_invocation (mono_domain_get (), 
                                                                                                        vt, vtable_slot,
                                                                                                        target, addr);
@@ -622,9 +624,6 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
        vtable_slot = orig_vtable_slot;
 
        if (vtable_slot) {
-               if (m->klass->valuetype)
-                       addr = get_unbox_trampoline (m, addr, need_rgctx_tramp);
-
                if (vtable_slot_to_patch && (mono_aot_is_got_entry (code, (guint8*)vtable_slot_to_patch) || mono_domain_owns_vtable_slot (mono_domain_get (), vtable_slot_to_patch))) {
                        g_assert (*vtable_slot_to_patch);
                        *vtable_slot_to_patch = mono_get_addr_from_ftnptr (addr);
@@ -652,7 +651,7 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
                        if (generic_shared) {
                                if (m->wrapper_type != MONO_WRAPPER_NONE)
                                        m = mono_marshal_method_from_wrapper (m);
-                               //g_assert (mono_method_is_generic_sharable_impl (m, FALSE));
+                               //g_assert (mono_method_is_generic_sharable (m, FALSE));
                        }
 
                        /* Patch calling code */
@@ -999,7 +998,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *tramp_data, gui
 #ifndef DISABLE_REMOTING
                if (delegate->target && delegate->target->vtable->klass == mono_defaults.transparent_proxy_class) {
 #ifndef DISABLE_COM
-                       if (((MonoTransparentProxy *)delegate->target)->remote_class->proxy_class != mono_defaults.com_object_class && 
+                       if (((MonoTransparentProxy *)delegate->target)->remote_class->proxy_class != mono_class_get_com_object_class () &&
                           !mono_class_is_com_object (((MonoTransparentProxy *)delegate->target)->remote_class->proxy_class))
 #endif
                                method = mono_marshal_get_remoting_invoke (method);
@@ -1056,11 +1055,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *tramp_data, gui
                        delegate->method_ptr = *delegate->method_code;
                } else {
                        compiled_method = addr = mono_compile_method (method);
-                       if (need_unbox_tramp)
-                               // FIXME: GSHAREDVT
-                               addr = get_unbox_trampoline (method, addr, need_rgctx_tramp);
-                       else
-                               addr = mini_add_method_trampoline (NULL, method, compiled_method, need_rgctx_tramp);
+                       addr = mini_add_method_trampoline (NULL, method, compiled_method, need_rgctx_tramp, need_unbox_tramp);
                        delegate->method_ptr = addr;
                        if (enable_caching && delegate->method_code)
                                *delegate->method_code = delegate->method_ptr;
@@ -1088,7 +1083,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *tramp_data, gui
        /* The general, unoptimized case */
        m = mono_marshal_get_delegate_invoke (invoke, delegate);
        code = mono_compile_method (m);
-       code = mini_add_method_trampoline (NULL, m, code, mono_method_needs_static_rgctx_invoke (m, FALSE));
+       code = mini_add_method_trampoline (NULL, m, code, mono_method_needs_static_rgctx_invoke (m, FALSE), FALSE);
        delegate->invoke_impl = mono_get_addr_from_ftnptr (code);
        mono_debugger_trampoline_compiled (NULL, m, delegate->invoke_impl);
 
@@ -1680,7 +1675,9 @@ static const char*tramp_names [MONO_TRAMPOLINE_NUM] = {
        "aot_plt",
        "delegate",
        "restore_stack_prot",
+#ifndef DISABLE_REMOTING
        "generic_virtual_remoting",
+#endif
        "monitor_enter",
        "monitor_exit",
        "vcall",
index e7dd64909af47f0f386b6ae7c725f089d5f2fc82..7214ef35cce934285d641c9e053e892d44302c0e 100644 (file)
@@ -27,6 +27,7 @@
 #include <mono/utils/mono-counters.h>
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/mono-memory-model.h>
+#include <mono/utils/mono-hwcap-x86.h>
 
 #include "trace.h"
 #include "mini-x86.h"
@@ -74,8 +75,6 @@ mono_breakpoint_info [MONO_BREAKPOINT_ARRAY_SIZE];
 
 
 #ifdef __native_client_codegen__
-const guint kNaClAlignment = kNaClAlignmentX86;
-const guint kNaClAlignmentMask = kNaClAlignmentMaskX86;
 
 /* Default alignment for Native Client is 32-byte. */
 gint8 nacl_align_byte = -32; /* signed version of 0xe0 */
@@ -197,6 +196,8 @@ typedef enum {
        ArgValuetypeInReg,
        ArgOnFloatFpStack,
        ArgOnDoubleFpStack,
+       /* gsharedvt argument passed by addr */
+       ArgGSharedVt,
        ArgNone
 } ArgStorage;
 
@@ -246,6 +247,7 @@ add_general (guint32 *gr, guint32 *stack_size, ArgInfo *ainfo)
 
     if (*gr >= PARAM_REGS) {
                ainfo->storage = ArgOnStack;
+               ainfo->nslots = 1;
                (*stack_size) += sizeof (gpointer);
     }
     else {
@@ -407,6 +409,11 @@ get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoM
                                cinfo->ret.reg = X86_EAX;
                                break;
                        }
+                       if (mini_is_gsharedvt_type_gsctx (gsctx, ret_type)) {
+                               cinfo->ret.storage = ArgOnStack;
+                               cinfo->vtype_retaddr = TRUE;
+                               break;
+                       }
                        /* Fall through */
                case MONO_TYPE_VALUETYPE:
                case MONO_TYPE_TYPEDBYREF: {
@@ -419,6 +426,12 @@ get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoM
                        }
                        break;
                }
+               case MONO_TYPE_VAR:
+               case MONO_TYPE_MVAR:
+                       g_assert (mini_is_gsharedvt_type_gsctx (gsctx, ret_type));
+                       cinfo->ret.storage = ArgOnStack;
+                       cinfo->vtype_retaddr = TRUE;
+                       break;
                case MONO_TYPE_VOID:
                        cinfo->ret.storage = ArgNone;
                        break;
@@ -515,6 +528,13 @@ get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoM
                                add_general (&gr, &stack_size, ainfo);
                                break;
                        }
+                       if (mini_is_gsharedvt_type_gsctx (gsctx, ptype)) {
+                               /* gsharedvt arguments are passed by ref */
+                               add_general (&gr, &stack_size, ainfo);
+                               g_assert (ainfo->storage == ArgOnStack);
+                               ainfo->storage = ArgGSharedVt;
+                               break;
+                       }
                        /* Fall through */
                case MONO_TYPE_VALUETYPE:
                case MONO_TYPE_TYPEDBYREF:
@@ -530,6 +550,14 @@ get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoM
                case MONO_TYPE_R8:
                        add_float (&fr, &stack_size, ainfo, TRUE);
                        break;
+               case MONO_TYPE_VAR:
+               case MONO_TYPE_MVAR:
+                       /* gsharedvt arguments are passed by ref */
+                       g_assert (mini_is_gsharedvt_type_gsctx (gsctx, ptype));
+                       add_general (&gr, &stack_size, ainfo);
+                       g_assert (ainfo->storage == ArgOnStack);
+                       ainfo->storage = ArgGSharedVt;
+                       break;
                default:
                        g_error ("unexpected type 0x%x", ptype->type);
                        g_assert_not_reached ();
@@ -671,97 +699,6 @@ mono_x86_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignatu
        return res;
 }
 
-static const guchar cpuid_impl [] = {
-       0x55,                           /* push   %ebp */
-       0x89, 0xe5,                     /* mov    %esp,%ebp */
-       0x53,                           /* push   %ebx */
-       0x8b, 0x45, 0x08,               /* mov    0x8(%ebp),%eax */
-       0x0f, 0xa2,                     /* cpuid   */
-       0x50,                           /* push   %eax */
-       0x8b, 0x45, 0x10,               /* mov    0x10(%ebp),%eax */
-       0x89, 0x18,                     /* mov    %ebx,(%eax) */
-       0x8b, 0x45, 0x14,               /* mov    0x14(%ebp),%eax */
-       0x89, 0x08,                     /* mov    %ecx,(%eax) */
-       0x8b, 0x45, 0x18,               /* mov    0x18(%ebp),%eax */
-       0x89, 0x10,                     /* mov    %edx,(%eax) */
-       0x58,                           /* pop    %eax */
-       0x8b, 0x55, 0x0c,               /* mov    0xc(%ebp),%edx */
-       0x89, 0x02,                     /* mov    %eax,(%edx) */
-       0x5b,                           /* pop    %ebx */
-       0xc9,                           /* leave   */
-       0xc3,                           /* ret     */
-};
-
-typedef void (*CpuidFunc) (int id, int* p_eax, int* p_ebx, int* p_ecx, int* p_edx);
-
-static int 
-cpuid (int id, int* p_eax, int* p_ebx, int* p_ecx, int* p_edx)
-{
-#if defined(__native_client__)
-       /* Taken from below, the bug listed in the comment is */
-       /* only valid for non-static cases.                   */
-       __asm__ __volatile__ ("cpuid"
-               : "=a" (*p_eax), "=b" (*p_ebx), "=c" (*p_ecx), "=d" (*p_edx)
-               : "a" (id));
-       return 1;
-#else
-       int have_cpuid = 0;
-#ifndef _MSC_VER
-       __asm__  __volatile__ (
-               "pushfl\n"
-               "popl %%eax\n"
-               "movl %%eax, %%edx\n"
-               "xorl $0x200000, %%eax\n"
-               "pushl %%eax\n"
-               "popfl\n"
-               "pushfl\n"
-               "popl %%eax\n"
-               "xorl %%edx, %%eax\n"
-               "andl $0x200000, %%eax\n"
-               "movl %%eax, %0"
-               : "=r" (have_cpuid)
-               :
-               : "%eax", "%edx"
-       );
-#else
-       __asm {
-               pushfd
-               pop eax
-               mov edx, eax
-               xor eax, 0x200000
-               push eax
-               popfd
-               pushfd
-               pop eax
-               xor eax, edx
-               and eax, 0x200000
-               mov have_cpuid, eax
-       }
-#endif
-       if (have_cpuid) {
-               /* Have to use the code manager to get around WinXP DEP */
-               static CpuidFunc func = NULL;
-               void *ptr;
-               if (!func) {
-                       ptr = mono_global_codeman_reserve (sizeof (cpuid_impl));
-                       memcpy (ptr, cpuid_impl, sizeof (cpuid_impl));
-                       func = (CpuidFunc)ptr;
-               }
-               func (id, p_eax, p_ebx, p_ecx, p_edx);
-
-               /*
-                * We use this approach because of issues with gcc and pic code, see:
-                * http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7329
-               __asm__ __volatile__ ("cpuid"
-                       : "=a" (*p_eax), "=b" (*p_ebx), "=c" (*p_ecx), "=d" (*p_edx)
-                       : "a" (id));
-               */
-               return 1;
-       }
-       return 0;
-#endif
-}
-
 /*
  * Initialize the cpu to execute managed code.
  */
@@ -821,36 +758,32 @@ guint32
 mono_arch_cpu_optimizations (guint32 *exclude_mask)
 {
 #if !defined(__native_client__)
-       int eax, ebx, ecx, edx;
        guint32 opts = 0;
-       
+
        *exclude_mask = 0;
 
-       if (mono_aot_only)
-               /* The cpuid function allocates from the global codeman */
-               return opts;
+       if (mono_hwcap_x86_has_cmov) {
+               opts |= MONO_OPT_CMOV;
 
-       /* Feature Flags function, flags returned in EDX. */
-       if (cpuid (1, &eax, &ebx, &ecx, &edx)) {
-               if (edx & (1 << 15)) {
-                       opts |= MONO_OPT_CMOV;
-                       if (edx & 1)
-                               opts |= MONO_OPT_FCMOV;
-                       else
-                               *exclude_mask |= MONO_OPT_FCMOV;
-               } else
-                       *exclude_mask |= MONO_OPT_CMOV;
-               if (edx & (1 << 26))
-                       opts |= MONO_OPT_SSE2;
+               if (mono_hwcap_x86_has_fcmov)
+                       opts |= MONO_OPT_FCMOV;
                else
-                       *exclude_mask |= MONO_OPT_SSE2;
+                       *exclude_mask |= MONO_OPT_FCMOV;
+       } else {
+               *exclude_mask |= MONO_OPT_CMOV;
+       }
+
+       if (mono_hwcap_x86_has_sse2)
+               opts |= MONO_OPT_SSE2;
+       else
+               *exclude_mask |= MONO_OPT_SSE2;
 
 #ifdef MONO_ARCH_SIMD_INTRINSICS
                /*SIMD intrinsics require at least SSE2.*/
-               if (!(opts & MONO_OPT_SSE2))
+               if (!mono_hwcap_x86_has_sse2)
                        *exclude_mask |= MONO_OPT_SIMD;
 #endif
-       }
+
        return opts;
 #else
        return MONO_OPT_CMOV | MONO_OPT_FCMOV | MONO_OPT_SSE2;
@@ -866,42 +799,30 @@ mono_arch_cpu_optimizations (guint32 *exclude_mask)
 guint32
 mono_arch_cpu_enumerate_simd_versions (void)
 {
-       int eax, ebx, ecx, edx;
        guint32 sse_opts = 0;
 
-       if (mono_aot_only)
-               /* The cpuid function allocates from the global codeman */
-               return sse_opts;
-
-       if (cpuid (1, &eax, &ebx, &ecx, &edx)) {
-               if (edx & (1 << 25))
-                       sse_opts |= SIMD_VERSION_SSE1;
-               if (edx & (1 << 26))
-                       sse_opts |= SIMD_VERSION_SSE2;
-               if (ecx & (1 << 0))
-                       sse_opts |= SIMD_VERSION_SSE3;
-               if (ecx & (1 << 9))
-                       sse_opts |= SIMD_VERSION_SSSE3;
-               if (ecx & (1 << 19))
-                       sse_opts |= SIMD_VERSION_SSE41;
-               if (ecx & (1 << 20))
-                       sse_opts |= SIMD_VERSION_SSE42;
-       }
+       if (mono_hwcap_x86_has_sse1)
+               sse_opts |= SIMD_VERSION_SSE1;
 
-       /* Yes, all this needs to be done to check for sse4a.
-          See: "Amd: CPUID Specification"
-        */
-       if (cpuid (0x80000000, &eax, &ebx, &ecx, &edx)) {
-               /* eax greater or equal than 0x80000001, ebx = 'htuA', ecx = DMAc', edx = 'itne'*/
-               if ((((unsigned int) eax) >= 0x80000001) && (ebx == 0x68747541) && (ecx == 0x444D4163) && (edx == 0x69746E65)) {
-                       cpuid (0x80000001, &eax, &ebx, &ecx, &edx);
-                       if (ecx & (1 << 6))
-                               sse_opts |= SIMD_VERSION_SSE4a;
-               }
-       }
+       if (mono_hwcap_x86_has_sse2)
+               sse_opts |= SIMD_VERSION_SSE2;
+
+       if (mono_hwcap_x86_has_sse3)
+               sse_opts |= SIMD_VERSION_SSE3;
+
+       if (mono_hwcap_x86_has_ssse3)
+               sse_opts |= SIMD_VERSION_SSSE3;
 
+       if (mono_hwcap_x86_has_sse41)
+               sse_opts |= SIMD_VERSION_SSE41;
 
-       return sse_opts;        
+       if (mono_hwcap_x86_has_sse42)
+               sse_opts |= SIMD_VERSION_SSE42;
+
+       if (mono_hwcap_x86_has_sse4a)
+               sse_opts |= SIMD_VERSION_SSE4a;
+
+       return sse_opts;
 }
 
 /*
@@ -1412,6 +1333,9 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
                                linfo->args [i].pair_storage [j] = arg_storage_to_llvm_arg_storage (cfg, ainfo->pair_storage [j]);
                        */
                        break;
+               case ArgGSharedVt:
+                       linfo->args [i].storage = LLVMArgGSharedVt;
+                       break;
                default:
                        cfg->exception_message = g_strdup ("ainfo->storage");
                        cfg->disable_llvm = TRUE;
@@ -1521,7 +1445,13 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
 
                g_assert (in->dreg != -1);
 
-               if ((i >= sig->hasthis) && (MONO_TYPE_ISSTRUCT(t))) {
+               if (ainfo->storage == ArgGSharedVt) {
+                       arg->opcode = OP_OUTARG_VT;
+                       arg->sreg1 = in->dreg;
+                       arg->klass = in->klass;
+                       sp_offset += 4;
+                       MONO_ADD_INS (cfg->cbb, arg);
+               } else if ((i >= sig->hasthis) && (MONO_TYPE_ISSTRUCT(t))) {
                        guint32 align;
                        guint32 size;
 
@@ -1649,7 +1579,12 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
        MonoInst *arg;
        int size = ins->backend.size;
 
-       if (size <= 4) {
+       if (cfg->gsharedvt && mini_is_gsharedvt_klass (cfg, ins->klass)) {
+               /* Pass by addr */
+               MONO_INST_NEW (cfg, arg, OP_X86_PUSH);
+               arg->sreg1 = src->dreg;
+               MONO_ADD_INS (cfg->cbb, arg);
+       } else if (size <= 4) {
                MONO_INST_NEW (cfg, arg, OP_X86_PUSH_MEMBASE);
                arg->sreg1 = src->dreg;
 
@@ -2425,6 +2360,149 @@ emit_load_volatile_arguments (MonoCompile *cfg, guint8 *code)
        return code;
 }
 
+/*
+ * emit_setup_lmf:
+ *
+ *   Emit code to initialize an LMF structure at LMF_OFFSET.
+ */
+static guint8*
+emit_setup_lmf (MonoCompile *cfg, guint8 *code, gint32 lmf_offset, int cfa_offset)
+{
+       /* save the current IP */
+       if (cfg->compile_aot) {
+               /* This pushes the current ip */
+               x86_call_imm (code, 0);
+               x86_pop_reg (code, X86_EAX);
+       } else {
+               mono_add_patch_info (cfg, code + 1 - cfg->native_code, MONO_PATCH_INFO_IP, NULL);
+               x86_mov_reg_imm (code, X86_EAX, 0);
+       }
+       x86_mov_membase_reg (code, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, eip), X86_EAX, sizeof (mgreg_t));
+
+       /* save all caller saved regs */
+       x86_mov_membase_reg (code, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, ebp), X86_EBP, sizeof (mgreg_t));
+       x86_mov_membase_reg (code, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, esi), X86_ESI, sizeof (mgreg_t));
+       x86_mov_membase_reg (code, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, edi), X86_EDI, sizeof (mgreg_t));
+       x86_mov_membase_reg (code, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, ebx), X86_EBX, sizeof (mgreg_t));
+
+       mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset + lmf_offset + G_STRUCT_OFFSET (MonoLMF, eip), SLOT_NOREF);
+       mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset + lmf_offset + G_STRUCT_OFFSET (MonoLMF, ebp), SLOT_NOREF);
+       mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset + lmf_offset + G_STRUCT_OFFSET (MonoLMF, esi), SLOT_NOREF);
+       mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset + lmf_offset + G_STRUCT_OFFSET (MonoLMF, edi), SLOT_NOREF);
+       mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset + lmf_offset + G_STRUCT_OFFSET (MonoLMF, ebx), SLOT_NOREF);
+       mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset + lmf_offset + G_STRUCT_OFFSET (MonoLMF, esp), SLOT_NOREF);
+       mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset + lmf_offset + G_STRUCT_OFFSET (MonoLMF, method), SLOT_NOREF);
+       mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset + lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), SLOT_NOREF);
+       mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset + lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), SLOT_NOREF);
+
+       return code;
+}
+
+/*
+ * emit_save_lmf:
+ *
+ *   Emit code to push an LMF structure on the LMF stack.
+ */
+static guint8*
+emit_save_lmf (MonoCompile *cfg, guint8 *code, gint32 lmf_offset)
+{
+       if ((lmf_tls_offset != -1) && !is_win32 && !optimize_for_xen) {
+               /*
+                * Optimized version which uses the mono_lmf TLS variable instead of indirection
+                * through the mono_lmf_addr TLS variable.
+                */
+               /* %eax = previous_lmf */
+               code = mono_x86_emit_tls_get (code, X86_EAX, lmf_tls_offset);
+               /* set previous_lmf */
+               x86_mov_membase_reg (code, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), X86_EAX, sizeof (mgreg_t));
+               x86_lea_membase (code, X86_EAX, cfg->frame_reg, lmf_offset);
+               /* set new LMF */
+               code = mono_x86_emit_tls_set (code, X86_EAX, lmf_tls_offset);
+       } else {
+               /* get the address of lmf for the current thread */
+               /* 
+                * This is performance critical so we try to use some tricks to make
+                * it fast.
+                */                                                                        
+               if (lmf_addr_tls_offset != -1) {
+                       /* Load lmf quicky using the GS register */
+                       code = mono_x86_emit_tls_get (code, X86_EAX, lmf_addr_tls_offset);
+#ifdef TARGET_WIN32
+                       /* The TLS key actually contains a pointer to the MonoJitTlsData structure */
+                       /* FIXME: Add a separate key for LMF to avoid this */
+                       x86_alu_reg_imm (code, X86_ADD, X86_EAX, G_STRUCT_OFFSET (MonoJitTlsData, lmf));
+#endif
+               } else {
+                       if (cfg->compile_aot)
+                               code = mono_arch_emit_load_got_addr (cfg->native_code, code, cfg, NULL);
+                       code = emit_call (cfg, code, MONO_PATCH_INFO_INTERNAL_METHOD, (gpointer)"mono_get_lmf_addr");
+               }
+
+               /* save lmf_addr */
+               x86_mov_membase_reg (code, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), X86_EAX, sizeof (mgreg_t));
+               /* save previous_lmf */
+               x86_mov_reg_membase (code, X86_ECX, X86_EAX, 0, sizeof (mgreg_t));
+               x86_mov_membase_reg (code, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), X86_ECX, sizeof (mgreg_t));
+               /* set new LMF */
+               x86_lea_membase (code, X86_ECX, cfg->frame_reg, lmf_offset);
+               x86_mov_membase_reg (code, X86_EAX, 0, X86_ECX, sizeof (mgreg_t));
+       }
+       return code;
+}
+
+/*
+ * emit_restore_lmf:
+ *
+ *   Emit code to pop an LMF structure from the LMF stack.
+ * Preserves the return registers.
+ */
+static guint8*
+emit_restore_lmf (MonoCompile *cfg, guint8 *code, gint32 lmf_offset)
+{
+       MonoMethodSignature *sig = mono_method_signature (cfg->method);
+       int prev_lmf_reg;
+
+       if ((lmf_tls_offset != -1) && !is_win32 && !optimize_for_xen) {
+               /*
+                * Optimized version which uses the mono_lmf TLS variable instead of indirection
+                * through the mono_lmf_addr TLS variable.
+                */
+               /* reg = previous_lmf */
+               x86_mov_reg_membase (code, X86_ECX, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), 4);
+
+               /* lmf = previous_lmf */
+               code = mono_x86_emit_tls_set (code, X86_ECX, lmf_tls_offset);
+       } else {
+               /* Find a spare register */
+               switch (mini_type_get_underlying_type (cfg->generic_sharing_context, sig->ret)->type) {
+               case MONO_TYPE_I8:
+               case MONO_TYPE_U8:
+                       prev_lmf_reg = X86_EDI;
+                       cfg->used_int_regs |= (1 << X86_EDI);
+                       break;
+               default:
+                       prev_lmf_reg = X86_EDX;
+                       break;
+               }
+
+               /* reg = previous_lmf */
+               x86_mov_reg_membase (code, prev_lmf_reg, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), 4);
+
+               /* ecx = lmf */
+               x86_mov_reg_membase (code, X86_ECX, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), 4);
+
+               /* *(lmf) = previous_lmf */
+               x86_mov_membase_reg (code, X86_ECX, 0, prev_lmf_reg, 4);
+       }
+       return code;
+}
+
+gboolean
+mono_arch_enable_lmf_ir (MonoCompile *cfg)
+{
+       return FALSE;
+}
+
 #define REAL_PRINT_REG(text,reg) \
 mono_assert (reg >= 0); \
 x86_push_reg (code, X86_EAX); \
@@ -2450,17 +2528,6 @@ x86_pop_reg (code, X86_EAX);
 #define bb_is_loop_start(bb) ((bb)->loop_body_start && (bb)->nesting)
 
 #ifndef DISABLE_JIT
-
-#if defined(__native_client__) || defined(__native_client_codegen__)
-void
-mono_nacl_gc()
-{
-#ifdef __native_client_gc__
-       __nacl_suspend_thread_if_needed();
-#endif
-}
-#endif
-
 void
 mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 {
@@ -2794,6 +2861,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                case OP_IDIV:
                case OP_IREM:
+#if defined( __native_client_codegen__ )
+                       x86_alu_reg_imm (code, X86_CMP, ins->sreg2, 0);
+                       EMIT_COND_SYSTEM_EXCEPTION (X86_CC_EQ, TRUE, "DivideByZeroException");
+#endif
                        /* 
                         * The code is the same for div/rem, the allocator will allocate dreg
                         * to RAX/RDX as appropriate.
@@ -2811,6 +2882,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                case OP_IDIV_UN:
                case OP_IREM_UN:
+#if defined( __native_client_codegen__ )
+                       x86_alu_reg_imm (code, X86_CMP, ins->sreg2, 0);
+                       EMIT_COND_SYSTEM_EXCEPTION (X86_CC_EQ, TRUE, "DivideByZeroException");
+#endif
                        if (ins->sreg2 == X86_EDX) {
                                x86_push_reg (code, ins->sreg2);
                                x86_alu_reg_reg (code, X86_XOR, X86_EDX, X86_EDX);
@@ -2822,6 +2897,13 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        }
                        break;
                case OP_DIV_IMM:
+#if defined( __native_client_codegen__ )
+                       if (ins->inst_imm == 0) {
+                               mono_add_patch_info (cfg, code - cfg->native_code, MONO_PATCH_INFO_EXC, "DivideByZeroException");
+                               x86_jump32 (code, 0);
+                               break;
+                       }
+#endif
                        x86_mov_reg_imm (code, ins->sreg2, ins->inst_imm);
                        x86_cdq (code);
                        x86_div_reg (code, ins->sreg2, TRUE);
@@ -3201,7 +3283,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        /* restore ESP/EBP */
                        x86_leave (code);
                        offset = code - cfg->native_code;
-                       mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_METHOD_JUMP, ins->inst_p0);
+                       mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_METHOD_JUMP, call->method);
                        x86_jump32 (code, 0);
 
                        ins->flags |= MONO_INST_GC_CALLSITE;
@@ -3832,8 +3914,9 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        x86_fprem (code);
                        x86_fnstsw (code);
                        x86_alu_reg_imm (code, X86_AND, X86_EAX, X86_FP_C2);
-                       l2 = code + 2;
-                       x86_branch8 (code, X86_CC_NE, l1 - l2, FALSE);
+                       l2 = code;
+                       x86_branch8 (code, X86_CC_NE, 0, FALSE);
+                       x86_patch (l2, l1);
 
                        /* pop result */
                        x86_fstp (code, 1);
@@ -4123,6 +4206,21 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        code = mono_x86_emit_tls_get (code, ins->dreg, ins->inst_offset);
                        break;
                }
+               case OP_TLS_GET_REG: {
+#ifdef __APPLE__
+                       // FIXME: tls_gs_offset can change too, do these when calculating the tls offset
+                       if (ins->dreg != ins->sreg1)
+                               x86_mov_reg_reg (code, ins->dreg, ins->sreg1, sizeof (gpointer));
+                       x86_shift_reg_imm (code, X86_SHL, ins->dreg, 2);
+                       if (tls_gs_offset)
+                               x86_alu_reg_imm (code, X86_ADD, ins->dreg, tls_gs_offset);
+                       x86_prefix (code, X86_GS_PREFIX);
+                       x86_mov_reg_membase (code, ins->dreg, ins->dreg, 0, sizeof (gpointer));
+#else
+                       g_assert_not_reached ();
+#endif
+                       break;
+               }
                case OP_MEMORY_BARRIER: {
                        /* x86 only needs barrier for StoreLoad and FullBarrier */
                        switch (ins->backend.memory_barrier_kind) {
@@ -4886,8 +4984,17 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                }
                case OP_NACL_GC_SAFE_POINT: {
-#if defined(__native_client_codegen__)
-                       code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, (gpointer)mono_nacl_gc);
+#if defined(__native_client_codegen__) && defined(__native_client_gc__)
+                       if (cfg->compile_aot)
+                               code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, (gpointer)mono_nacl_gc);
+                       else {
+                               guint8 *br [1];
+
+                               x86_test_mem_imm8 (code, (gpointer)&__nacl_thread_suspension_needed, 0xFFFFFFFF);
+                               br[0] = code; x86_branch8 (code, X86_CC_EQ, 0, FALSE);
+                               code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, (gpointer)mono_nacl_gc);
+                               x86_patch (br[0], code);
+                       }
 #endif
                        break;
                }
@@ -5047,6 +5154,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        code = cfg->native_code = g_malloc (cfg->code_size);
 #elif defined(__native_client_codegen__)
        /* native_code_alloc is not 32-byte aligned, native_code is. */
+       cfg->code_size = NACL_BUNDLE_ALIGN_UP (cfg->code_size);
        cfg->native_code_alloc = g_malloc (cfg->code_size + kNaClAlignment);
 
        /* Align native_code to next nearest kNaclAlignment byte. */
@@ -5106,89 +5214,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        alloc_size = cfg->stack_offset;
        pos = 0;
 
-       if (method->save_lmf) {
-               pos += sizeof (MonoLMF);
-
-               /* save the current IP */
-               if (cfg->compile_aot) {
-                       /* This pushes the current ip */
-                       x86_call_imm (code, 0);
-               } else {
-                       mono_add_patch_info (cfg, code + 1 - cfg->native_code, MONO_PATCH_INFO_IP, NULL);
-                       x86_push_imm_template (code);
-               }
-               cfa_offset += sizeof (gpointer);
-               mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset, SLOT_NOREF);
-
-               /* save all caller saved regs */
-               x86_push_reg (code, X86_EBP);
-               cfa_offset += sizeof (gpointer);
-               mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset, SLOT_NOREF);
-               x86_push_reg (code, X86_ESI);
-               cfa_offset += sizeof (gpointer);
-               mono_emit_unwind_op_offset (cfg, code, X86_ESI, - cfa_offset);
-               mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset, SLOT_NOREF);
-               x86_push_reg (code, X86_EDI);
-               cfa_offset += sizeof (gpointer);
-               mono_emit_unwind_op_offset (cfg, code, X86_EDI, - cfa_offset);
-               mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset, SLOT_NOREF);
-               x86_push_reg (code, X86_EBX);
-               cfa_offset += sizeof (gpointer);
-               mono_emit_unwind_op_offset (cfg, code, X86_EBX, - cfa_offset);
-               mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset, SLOT_NOREF);
-
-               if ((lmf_tls_offset != -1) && !is_win32 && !optimize_for_xen) {
-                       /*
-                        * Optimized version which uses the mono_lmf TLS variable instead of indirection
-                        * through the mono_lmf_addr TLS variable.
-                        */
-                       /* %eax = previous_lmf */
-                       code = mono_x86_emit_tls_get (code, X86_EAX, lmf_tls_offset);
-                       /* skip esp + method_info + lmf */
-                       x86_alu_reg_imm (code, X86_SUB, X86_ESP, 12);
-                       cfa_offset += 12;
-                       mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset, SLOT_NOREF);
-                       mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset + 4, SLOT_NOREF);
-                       mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset + 8, SLOT_NOREF);
-                       /* push previous_lmf */
-                       x86_push_reg (code, X86_EAX);
-                       cfa_offset += 4;
-                       mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset, SLOT_NOREF);
-                       /* new lmf = ESP */
-                       code = mono_x86_emit_tls_set (code, X86_ESP, lmf_tls_offset);
-               } else {
-                       /* get the address of lmf for the current thread */
-                       /* 
-                        * This is performance critical so we try to use some tricks to make
-                        * it fast.
-                        */                                                                        
-
-                       if (lmf_addr_tls_offset != -1) {
-                               /* Load lmf quicky using the GS register */
-                               code = mono_x86_emit_tls_get (code, X86_EAX, lmf_addr_tls_offset);
-#ifdef TARGET_WIN32
-                               /* The TLS key actually contains a pointer to the MonoJitTlsData structure */
-                               /* FIXME: Add a separate key for LMF to avoid this */
-                               x86_alu_reg_imm (code, X86_ADD, X86_EAX, G_STRUCT_OFFSET (MonoJitTlsData, lmf));
-#endif
-                       } else {
-                               if (cfg->compile_aot)
-                                       code = mono_arch_emit_load_got_addr (cfg->native_code, code, cfg, NULL);
-                               code = emit_call (cfg, code, MONO_PATCH_INFO_INTERNAL_METHOD, (gpointer)"mono_get_lmf_addr");
-                       }
-
-                       /* Skip esp + method info */
-                       x86_alu_reg_imm (code, X86_SUB, X86_ESP, 8);
-
-                       /* push lmf */
-                       x86_push_reg (code, X86_EAX); 
-                       /* push *lfm (previous_lmf) */
-                       x86_push_membase (code, X86_EAX, 0);
-                       /* *(lmf) = ESP */
-                       x86_mov_membase_reg (code, X86_EAX, 0, X86_ESP, 4);
-               }
-       } else {
-
+       if (!method->save_lmf) {
                if (cfg->used_int_regs & (1 << X86_EBX)) {
                        x86_push_reg (code, X86_EBX);
                        pos += 4;
@@ -5290,19 +5316,38 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                                max_offset += LOOP_ALIGNMENT;
 #ifdef __native_client_codegen__
                        /* max alignment for native client */
-                       max_offset += kNaClAlignment;
+                       if (bb->flags & BB_INDIRECT_JUMP_TARGET || bb->flags & BB_EXCEPTION_HANDLER)
+                               max_offset += kNaClAlignment;
 #endif
                        MONO_BB_FOR_EACH_INS (bb, ins) {
                                if (ins->opcode == OP_LABEL)
                                        ins->inst_c1 = max_offset;
 #ifdef __native_client_codegen__
+                               switch (ins->opcode)
                                {
-                                       int space_in_block = kNaClAlignment -
-                                               ((max_offset + cfg->code_len) & kNaClAlignmentMask);
-                                       int max_len = ((guint8 *)ins_get_spec (ins->opcode))[MONO_INST_LEN];
-                                       if (space_in_block < max_len && max_len < kNaClAlignment) {
-                                               max_offset += space_in_block;
-                                       }
+                                       case OP_FCALL:
+                                       case OP_LCALL:
+                                       case OP_VCALL:
+                                       case OP_VCALL2:
+                                       case OP_VOIDCALL:
+                                       case OP_CALL:
+                                       case OP_FCALL_REG:
+                                       case OP_LCALL_REG:
+                                       case OP_VCALL_REG:
+                                       case OP_VCALL2_REG:
+                                       case OP_VOIDCALL_REG:
+                                       case OP_CALL_REG:
+                                       case OP_FCALL_MEMBASE:
+                                       case OP_LCALL_MEMBASE:
+                                       case OP_VCALL_MEMBASE:
+                                       case OP_VCALL2_MEMBASE:
+                                       case OP_VOIDCALL_MEMBASE:
+                                       case OP_CALL_MEMBASE:
+                                               max_offset += kNaClAlignment;
+                                               break;
+                                       default:
+                                               max_offset += ((guint8 *)ins_get_spec (ins->opcode))[MONO_INST_LEN] - 1;
+                                               break;
                                }
 #endif  /* __native_client_codegen__ */
                                max_offset += ((guint8 *)ins_get_spec (ins->opcode))[MONO_INST_LEN];
@@ -5317,6 +5362,11 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                x86_mov_membase_reg (code, X86_EBP, cfg->rgctx_var->inst_offset, MONO_ARCH_RGCTX_REG, 4);
        }
 
+       if (method->save_lmf) {
+               code = emit_setup_lmf (cfg, code, cfg->lmf_var->inst_offset, cfa_offset);
+               code = emit_save_lmf (cfg, code, cfg->lmf_var->inst_offset);
+       }
+
        if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
                code = mono_arch_instrument_prolog (cfg, mono_trace_enter_method, code, TRUE);
 
@@ -5372,8 +5422,7 @@ mono_arch_emit_epilog (MonoCompile *cfg)
        pos = 0;
        
        if (method->save_lmf) {
-               gint32 prev_lmf_reg;
-               gint32 lmf_offset = -sizeof (MonoLMF);
+               gint32 lmf_offset = cfg->lmf_var->inst_offset;
 
                /* check if we need to restore protection of the stack after a stack overflow */
                if (mono_get_jit_tls_offset () != -1) {
@@ -5392,49 +5441,19 @@ mono_arch_emit_epilog (MonoCompile *cfg)
                } else {
                        /* FIXME: maybe save the jit tls in the prolog */
                }
-               if ((lmf_tls_offset != -1) && !is_win32 && !optimize_for_xen) {
-                       /*
-                        * Optimized version which uses the mono_lmf TLS variable instead of indirection
-                        * through the mono_lmf_addr TLS variable.
-                        */
-                       /* reg = previous_lmf */
-                       x86_mov_reg_membase (code, X86_ECX, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), 4);
 
-                       /* lmf = previous_lmf */
-                       code = mono_x86_emit_tls_set (code, X86_ECX, lmf_tls_offset);
-               } else {
-                       /* Find a spare register */
-                       switch (mini_type_get_underlying_type (cfg->generic_sharing_context, sig->ret)->type) {
-                       case MONO_TYPE_I8:
-                       case MONO_TYPE_U8:
-                               prev_lmf_reg = X86_EDI;
-                               cfg->used_int_regs |= (1 << X86_EDI);
-                               break;
-                       default:
-                               prev_lmf_reg = X86_EDX;
-                               break;
-                       }
-
-                       /* reg = previous_lmf */
-                       x86_mov_reg_membase (code, prev_lmf_reg, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), 4);
-
-                       /* ecx = lmf */
-                       x86_mov_reg_membase (code, X86_ECX, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), 4);
-
-                       /* *(lmf) = previous_lmf */
-                       x86_mov_membase_reg (code, X86_ECX, 0, prev_lmf_reg, 4);
-               }
+               code = emit_restore_lmf (cfg, code, lmf_offset);
 
                /* restore caller saved regs */
                if (cfg->used_int_regs & (1 << X86_EBX)) {
-                       x86_mov_reg_membase (code, X86_EBX, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, ebx), 4);
+                       x86_mov_reg_membase (code, X86_EBX, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, ebx), 4);
                }
 
                if (cfg->used_int_regs & (1 << X86_EDI)) {
-                       x86_mov_reg_membase (code, X86_EDI, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, edi), 4);
+                       x86_mov_reg_membase (code, X86_EDI, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, edi), 4);
                }
                if (cfg->used_int_regs & (1 << X86_ESI)) {
-                       x86_mov_reg_membase (code, X86_ESI, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, esi), 4);
+                       x86_mov_reg_membase (code, X86_ESI, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, esi), 4);
                }
 
                /* EBP is restored by LEAVE */
@@ -5741,6 +5760,7 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
 #if defined(__native_client__) && defined(__native_client_codegen__)
        /* In Native Client, we don't re-use thunks, allocate from the */
        /* normal code manager paths. */
+       size = NACL_BUNDLE_ALIGN_UP (size);
        code = mono_domain_code_reserve (domain, size);
 #else
        if (fail_tramp)
index d908476291f5fac9ac06ef7e4f9af2faf9387fcd..77c67bf15f16e6bbdbcc28c5f4d3848bb5fb6b69 100644 (file)
@@ -262,6 +262,11 @@ typedef struct {
 #define MONO_ARCH_HAVE_CONTEXT_SET_INT_REG 1
 #define MONO_ARCH_HAVE_SETUP_ASYNC_CALLBACK 1
 #define MONO_ARCH_GSHAREDVT_SUPPORTED 1
+#define MONO_ARCH_ENABLE_LMF_IR 1
+
+#ifdef TARGET_OSX
+#define MONO_ARCH_HAVE_TLS_GET_REG 1
+#endif
 
 gboolean
 mono_x86_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig) MONO_INTERNAL;
@@ -298,7 +303,8 @@ typedef enum {
        GSHAREDVT_RET_I1 = 5,
        GSHAREDVT_RET_U1 = 6,
        GSHAREDVT_RET_I2 = 7,
-       GSHAREDVT_RET_U2 = 8
+       GSHAREDVT_RET_U2 = 8,
+       GSHAREDVT_RET_IREG = 9
 } GSharedVtRetMarshal;
 
 typedef struct {
index 28b66be959ff9fe33df01979916b3dd65ec2cc44..d5c9989337b3708a8fc2b6cf6e55675cb49c8b77 100644 (file)
@@ -54,7 +54,9 @@
 #include <mono/utils/mono-counters.h>
 #include <mono/utils/mono-logger-internal.h>
 #include <mono/utils/mono-mmap.h>
+#include <mono/utils/mono-path.h>
 #include <mono/utils/mono-tls.h>
+#include <mono/utils/mono-hwcap.h>
 #include <mono/utils/dtrace.h>
 
 #include "mini.h"
@@ -64,6 +66,7 @@
 #include <ctype.h>
 #include "trace.h"
 #include "version.h"
+#include "ir-emit.h"
 
 #include "jit-icalls.h"
 
 #include "mini-gc.h"
 #include "debugger-agent.h"
 
+/* this macro is used for a runtime check done in mini_init () */
+#ifdef MONO_ARCH_EMULATE_MUL_DIV
+#define EMUL_MUL_DIV 1
+#else
+#define EMUL_MUL_DIV 0
+#endif
+
 static gpointer mono_jit_compile_method_with_opt (MonoMethod *method, guint32 opt, MonoException **ex);
 
 
@@ -155,6 +165,7 @@ mono_realloc_native_code (MonoCompile *cfg)
 
        /* Save the old alignment offset so we can re-align after the realloc. */
        old_padding = (guint)(cfg->native_code - cfg->native_code_alloc);
+       cfg->code_size = NACL_BUNDLE_ALIGN_UP (cfg->code_size);
 
        cfg->native_code_alloc = g_realloc ( cfg->native_code_alloc,
                                                                                 cfg->code_size + kNaClAlignment );
@@ -242,12 +253,14 @@ guint8 *mono_nacl_align(guint8 *code) {
 
 void mono_nacl_fix_patches(const guint8 *code, MonoJumpInfo *ji)
 {
+#ifndef USE_JUMP_TABLES
   MonoJumpInfo *patch_info;
   for (patch_info = ji; patch_info; patch_info = patch_info->next) {
     unsigned char *ip = patch_info->ip.i + code;
     ip = mono_arch_nacl_skip_nops(ip);
     patch_info->ip.i = ip - code;
   }
+#endif
 }
 #endif  /* __native_client_codegen__ */
 
@@ -462,6 +475,14 @@ void *mono_global_codeman_reserve (int size)
 }
 
 #if defined(__native_client_codegen__) && defined(__native_client__)
+void
+mono_nacl_gc()
+{
+#ifdef __native_client_gc__
+       __nacl_suspend_thread_if_needed();
+#endif
+}
+
 /* Given the temporary buffer (allocated by mono_global_codeman_reserve) into
  * which we are generating code, return a pointer to the destination in the
  * dynamic code segment into which the code will be copied when
@@ -582,14 +603,14 @@ mono_jump_info_token_new (MonoMemPool *mp, MonoImage *image, guint32 token)
  * mono_tramp_info_create:
  *
  *   Create a MonoTrampInfo structure from the arguments. This function assumes ownership
- * of NAME, JI, and UNWIND_OPS.
+ * of JI, and UNWIND_OPS.
  */
 MonoTrampInfo*
 mono_tramp_info_create (const char *name, guint8 *code, guint32 code_size, MonoJumpInfo *ji, GSList *unwind_ops)
 {
        MonoTrampInfo *info = g_new0 (MonoTrampInfo, 1);
 
-       info->name = (char*)name;
+       info->name = g_strdup ((char*)name);
        info->code = code;
        info->code_size = code_size;
        info->ji = ji;
@@ -1189,11 +1210,11 @@ mono_compile_create_var_for_vreg (MonoCompile *cfg, MonoType *type, int opcode,
                set_vreg_to_inst (cfg, vreg, inst);
 
 #if SIZEOF_REGISTER == 4
-#ifdef MONO_ARCH_SOFT_FLOAT
-       regpair = mono_type_is_long (type) || mono_type_is_float (type);
-#else
-       regpair = mono_type_is_long (type);
-#endif
+       if (mono_arch_is_soft_float ()) {
+               regpair = mono_type_is_long (type) || mono_type_is_float (type);
+       } else {
+               regpair = mono_type_is_long (type);
+       }
 #else
        regpair = FALSE;
 #endif
@@ -1214,12 +1235,10 @@ mono_compile_create_var_for_vreg (MonoCompile *cfg, MonoType *type, int opcode,
                        printf ("  Create LVAR R%d (R%d, R%d)\n", inst->dreg, inst->dreg + 1, inst->dreg + 2);
                }
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-               if (cfg->opt & MONO_OPT_SSA) {
+               if (mono_arch_is_soft_float () && cfg->opt & MONO_OPT_SSA) {
                        if (mono_type_is_float (type))
                                inst->flags = MONO_INST_VOLATILE;
                }
-#endif
 
                /* Allocate a dummy MonoInst for the first vreg */
                MONO_INST_NEW (cfg, tree, OP_LOCAL);
@@ -1259,10 +1278,8 @@ mono_compile_create_var (MonoCompile *cfg, MonoType *type, int opcode)
 
        if (mono_type_is_long (type))
                dreg = mono_alloc_dreg (cfg, STACK_I8);
-#ifdef MONO_ARCH_SOFT_FLOAT
-       else if (mono_type_is_float (type))
+       else if (mono_arch_is_soft_float () && mono_type_is_float (type))
                dreg = mono_alloc_dreg (cfg, STACK_R8);
-#endif
        else
                /* All the others are unified */
                dreg = mono_alloc_preg (cfg);
@@ -1517,7 +1534,7 @@ mini_assembly_can_skip_verification (MonoDomain *domain, MonoMethod *method)
                return FALSE;
        if (assembly->in_gac || assembly->image == mono_defaults.corlib)
                return FALSE;
-       if (mono_security_get_mode () != MONO_SECURITY_MODE_NONE)
+       if (mono_security_enabled ())
                return FALSE;
        return mono_assembly_has_skip_verification (assembly);
 }
@@ -1763,7 +1780,7 @@ mono_allocate_stack_slots2 (MonoCompile *cfg, gboolean backward, guint32 *stack_
 
                t = mono_type_get_underlying_type (inst->inst_vtype);
                if (cfg->gsharedvt && mini_is_gsharedvt_variable_type (cfg, t))
-                       t = mini_get_gsharedvt_alloc_type_for_type (cfg, t);
+                       continue;
 
                /* inst->backend.is_pinvoke indicates native sized value types, this is used by the
                * pinvoke wrappers when they call functions returning structures */
@@ -2059,7 +2076,7 @@ mono_allocate_stack_slots (MonoCompile *cfg, gboolean backward, guint32 *stack_s
 
                t = mono_type_get_underlying_type (inst->inst_vtype);
                if (cfg->gsharedvt && mini_is_gsharedvt_variable_type (cfg, t))
-                       t = mini_get_gsharedvt_alloc_type_for_type (cfg, t);
+                       continue;
 
                /* inst->backend.is_pinvoke indicates native sized value types, this is used by the
                * pinvoke wrappers when they call functions returning structures */
@@ -2748,6 +2765,10 @@ setup_jit_tls_data (gpointer stack_start, gpointer abort_func)
        jit_tls->lmf = lmf;
 #endif
 
+#ifdef MONO_ARCH_HAVE_TLS_INIT
+       mono_arch_tls_init ();
+#endif
+
        mono_setup_altstack (jit_tls);
 
        return jit_tls;
@@ -2831,47 +2852,100 @@ mini_thread_cleanup (MonoInternalThread *thread)
        }
 }
 
+int
+mini_get_tls_offset (MonoJitTlsKey key)
+{
+       int offset;
+
+       switch (key) {
+       case TLS_KEY_THREAD:
+               offset = mono_thread_get_tls_offset ();
+               break;
+       case TLS_KEY_JIT_TLS:
+               offset = mono_get_jit_tls_offset ();
+               break;
+       case TLS_KEY_DOMAIN:
+               offset = mono_domain_get_tls_offset ();
+               break;
+       case TLS_KEY_LMF:
+               offset = mono_get_lmf_tls_offset ();
+               break;
+       case TLS_KEY_LMF_ADDR:
+               offset = mono_get_lmf_addr_tls_offset ();
+               break;
+       default:
+               g_assert_not_reached ();
+               offset = -1;
+               break;
+       }
+       return offset;
+}
+
 static MonoInst*
-mono_create_tls_get (MonoCompile *cfg, int offset)
+mono_create_tls_get_offset (MonoCompile *cfg, int offset)
 {
-#ifdef MONO_ARCH_HAVE_TLS_GET
-       if (MONO_ARCH_HAVE_TLS_GET) {
-               MonoInst* ins;
+       MonoInst* ins;
 
-               if (offset == -1)
-                       return NULL;
+       if (!MONO_ARCH_HAVE_TLS_GET)
+               return NULL;
 
-               MONO_INST_NEW (cfg, ins, OP_TLS_GET);
+       if (offset == -1)
+               return NULL;
+
+       MONO_INST_NEW (cfg, ins, OP_TLS_GET);
+       ins->dreg = mono_alloc_preg (cfg);
+       ins->inst_offset = offset;
+       return ins;
+}
+
+static MonoInst*
+mono_create_tls_get (MonoCompile *cfg, MonoJitTlsKey key)
+{
+       /*
+        * TLS offsets might be different at AOT time, so load them from a GOT slot and
+        * use a different opcode.
+        */
+       if (cfg->compile_aot && MONO_ARCH_HAVE_TLS_GET && ARCH_HAVE_TLS_GET_REG) {
+               MonoInst *ins, *c;
+
+               EMIT_NEW_TLS_OFFSETCONST (cfg, c, key);
+               MONO_INST_NEW (cfg, ins, OP_TLS_GET_REG);
                ins->dreg = mono_alloc_preg (cfg);
-               ins->inst_offset = offset;
+               ins->sreg1 = c->dreg;
                return ins;
        }
-#endif
-       return NULL;
+
+       return mono_create_tls_get_offset (cfg, mini_get_tls_offset (key));
 }
 
 MonoInst*
 mono_get_jit_tls_intrinsic (MonoCompile *cfg)
 {
-       return mono_create_tls_get (cfg, mono_get_jit_tls_offset ());
+       return mono_create_tls_get (cfg, TLS_KEY_JIT_TLS);
 }
 
 MonoInst*
 mono_get_domain_intrinsic (MonoCompile* cfg)
 {
-       return mono_create_tls_get (cfg, mono_domain_get_tls_offset ());
+       return mono_create_tls_get (cfg, TLS_KEY_DOMAIN);
 }
 
 MonoInst*
 mono_get_thread_intrinsic (MonoCompile* cfg)
 {
-       return mono_create_tls_get (cfg, mono_thread_get_tls_offset ());
+       return mono_create_tls_get (cfg, TLS_KEY_THREAD);
 }
 
 MonoInst*
 mono_get_lmf_intrinsic (MonoCompile* cfg)
 {
-       return mono_create_tls_get (cfg, mono_get_lmf_tls_offset ());
+       return mono_create_tls_get (cfg, TLS_KEY_LMF);
+}
+
+MonoInst*
+mono_get_lmf_addr_intrinsic (MonoCompile* cfg)
+{
+       return mono_create_tls_get (cfg, TLS_KEY_LMF_ADDR);
 }
 
 void
@@ -2948,6 +3022,29 @@ mono_patch_info_dup_mp (MonoMemPool *mp, MonoJumpInfo *patch_info)
                res->data.gsharedvt = mono_mempool_alloc (mp, sizeof (MonoJumpInfoGSharedVtCall));
                memcpy (res->data.gsharedvt, patch_info->data.gsharedvt, sizeof (MonoJumpInfoGSharedVtCall));
                break;
+       case MONO_PATCH_INFO_GSHAREDVT_METHOD: {
+               MonoGSharedVtMethodInfo *info;
+               MonoGSharedVtMethodInfo *oinfo;
+               int i;
+
+               oinfo = patch_info->data.gsharedvt_method;
+               info = mono_mempool_alloc (mp, sizeof (MonoGSharedVtMethodInfo));
+               res->data.gsharedvt_method = info;
+               memcpy (info, oinfo, sizeof (MonoGSharedVtMethodInfo));
+               info->entries = g_ptr_array_new ();
+               if (oinfo->entries) {
+                       for (i = 0; i < oinfo->entries->len; ++i) {
+                               MonoRuntimeGenericContextInfoTemplate *otemplate = g_ptr_array_index (oinfo->entries, i);
+                               MonoRuntimeGenericContextInfoTemplate *template = mono_mempool_alloc0 (mp, sizeof (MonoRuntimeGenericContextInfoTemplate));
+
+                               memcpy (template, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
+                               g_ptr_array_add (info->entries, template);
+                       }
+               }
+               //info->locals_types = mono_mempool_alloc0 (mp, info->nlocals * sizeof (MonoType*));
+               //memcpy (info->locals_types, oinfo->locals_types, info->nlocals * sizeof (MonoType*));
+               break;
+       }
        default:
                break;
        }
@@ -2975,19 +3072,46 @@ mono_patch_info_hash (gconstpointer data)
        case MONO_PATCH_INFO_IID:
        case MONO_PATCH_INFO_ADJUSTED_IID:
        case MONO_PATCH_INFO_CLASS_INIT:
+       case MONO_PATCH_INFO_GENERIC_CLASS_INIT:
        case MONO_PATCH_INFO_METHODCONST:
        case MONO_PATCH_INFO_METHOD:
        case MONO_PATCH_INFO_METHOD_JUMP:
        case MONO_PATCH_INFO_IMAGE:
        case MONO_PATCH_INFO_JIT_ICALL_ADDR:
+       case MONO_PATCH_INFO_ICALL_ADDR:
        case MONO_PATCH_INFO_FIELD:
        case MONO_PATCH_INFO_SFLDA:
        case MONO_PATCH_INFO_SEQ_POINT_INFO:
+       case MONO_PATCH_INFO_METHOD_RGCTX:
+       case MONO_PATCH_INFO_DELEGATE_TRAMPOLINE:
+       case MONO_PATCH_INFO_SIGNATURE:
+       case MONO_PATCH_INFO_TLS_OFFSET:
                return (ji->type << 8) | (gssize)ji->data.target;
        case MONO_PATCH_INFO_GSHAREDVT_CALL:
                return (ji->type << 8) | (gssize)ji->data.gsharedvt->method;
-       default:
+       case MONO_PATCH_INFO_RGCTX_FETCH: {
+               MonoJumpInfoRgctxEntry *e = ji->data.rgctx_entry;
+
+               return (ji->type << 8) | (gssize)e->method | (e->in_mrgctx) | e->info_type | mono_patch_info_hash (e->data);
+       }
+       case MONO_PATCH_INFO_INTERRUPTION_REQUEST_FLAG:
+       case MONO_PATCH_INFO_MSCORLIB_GOT_ADDR:
+       case MONO_PATCH_INFO_GC_CARD_TABLE_ADDR:
+       case MONO_PATCH_INFO_JIT_TLS_ID:
+       case MONO_PATCH_INFO_MONITOR_ENTER:
+       case MONO_PATCH_INFO_MONITOR_EXIT:
+       case MONO_PATCH_INFO_CASTCLASS_CACHE:
+       case MONO_PATCH_INFO_GOT_OFFSET:
                return (ji->type << 8);
+       case MONO_PATCH_INFO_SWITCH:
+               return (ji->type << 8) | ji->data.table->table_size;
+       case MONO_PATCH_INFO_GSHAREDVT_METHOD:
+               return (ji->type << 8) | (gssize)ji->data.gsharedvt_method->method;
+       default:
+               printf ("info type: %d\n", ji->type);
+               mono_print_ji (ji); printf ("\n");
+               g_assert_not_reached ();
+               return 0;
        }
 }
 
@@ -3034,6 +3158,8 @@ mono_patch_info_equal (gconstpointer ka, gconstpointer kb)
 
                return c1->sig == c2->sig && c1->method == c2->method;
        }
+       case MONO_PATCH_INFO_GSHAREDVT_METHOD:
+               return ji1->data.gsharedvt_method->method == ji2->data.gsharedvt_method->method;
        default:
                if (ji1->data.target != ji2->data.target)
                        return 0;
@@ -3097,25 +3223,33 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
        case MONO_PATCH_INFO_METHOD_JUMP:
                target = mono_create_jump_trampoline (domain, patch_info->data.method, FALSE);
 #if defined(__native_client__) && defined(__native_client_codegen__)
-#if defined(TARGET_AMD64)
+# if defined(TARGET_AMD64)
                /* This target is an absolute address, not relative to the */
                /* current code being emitted on AMD64. */
                target = nacl_inverse_modify_patch_target(target);
-#endif
+# endif
 #endif
                break;
        case MONO_PATCH_INFO_METHOD:
+#if defined(__native_client_codegen__) && defined(USE_JUMP_TABLES)
+               /*
+                * If we use jumptables, for recursive calls we cannot
+                * avoid trampoline, as we not yet know where we will
+                * be installed.
+                */
+               target = mono_create_jit_trampoline_in_domain (domain, patch_info->data.method);
+#else
                if (patch_info->data.method == method) {
                        target = code;
                } else {
                        /* get the trampoline to the method from the domain */
                        target = mono_create_jit_trampoline_in_domain (domain, patch_info->data.method);
                }
+#endif
                break;
        case MONO_PATCH_INFO_SWITCH: {
                gpointer *jump_table;
                int i;
-
 #if defined(__native_client__) && defined(__native_client_codegen__)
                /* This memory will leak, but we don't care if we're */
                /* not deleting JIT'd methods anyway                 */
@@ -3245,7 +3379,7 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                MonoClass *handle_class;
                
                handle = mono_ldtoken (patch_info->data.token->image,
-                                      patch_info->data.token->token, &handle_class, NULL);
+                                                          patch_info->data.token->token, &handle_class, patch_info->data.token->has_context ? &patch_info->data.token->context : NULL);
                mono_class_init (handle_class);
                
                target = handle;
@@ -3311,12 +3445,31 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                        slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, entry->data->data.sig, entry->info_type, mono_method_get_context (entry->method));
                        break;
                case MONO_PATCH_INFO_GSHAREDVT_CALL: {
-                       MonoJumpInfoGSharedVtCall *call_info = mono_domain_alloc0 (domain, sizeof (MonoJumpInfoGSharedVtCall));
+                       MonoJumpInfoGSharedVtCall *call_info = g_malloc0 (sizeof (MonoJumpInfoGSharedVtCall)); //mono_domain_alloc0 (domain, sizeof (MonoJumpInfoGSharedVtCall));
 
                        memcpy (call_info, entry->data->data.gsharedvt, sizeof (MonoJumpInfoGSharedVtCall));
                        slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, call_info, entry->info_type, mono_method_get_context (entry->method));
                        break;
                }
+               case MONO_PATCH_INFO_GSHAREDVT_METHOD: {
+                       MonoGSharedVtMethodInfo *info;
+                       MonoGSharedVtMethodInfo *oinfo = entry->data->data.gsharedvt_method;
+                       int i;
+
+                       /* Make a copy into the domain mempool */
+                       info = g_malloc0 (sizeof (MonoGSharedVtMethodInfo)); //mono_domain_alloc0 (domain, sizeof (MonoGSharedVtMethodInfo));
+                       info->method = oinfo->method;
+                       info->entries = g_ptr_array_new ();
+                       for (i = 0; i < oinfo->entries->len; ++i) {
+                               MonoRuntimeGenericContextInfoTemplate *otemplate = g_ptr_array_index (oinfo->entries, i);
+                               MonoRuntimeGenericContextInfoTemplate *template = g_malloc0 (sizeof (MonoRuntimeGenericContextInfoTemplate));
+
+                               memcpy (template, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
+                               g_ptr_array_add (info->entries, template);
+                       }
+                       slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, info, entry->info_type, mono_method_get_context (entry->method));
+                       break;
+               }
                default:
                        g_assert_not_reached ();
                        break;
@@ -3363,9 +3516,12 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                break;
        }
        case MONO_PATCH_INFO_JIT_TLS_ID: {
-               target = (gpointer)mono_jit_tls_id;
+               target = (gpointer) (size_t) mono_jit_tls_id;
                break;
        }
+       case MONO_PATCH_INFO_TLS_OFFSET:
+               target = GINT_TO_POINTER (mini_get_tls_offset (GPOINTER_TO_INT (patch_info->data.target)));
+               break;
        default:
                g_assert_not_reached ();
        }
@@ -3378,8 +3534,10 @@ mono_add_seq_point (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, int nat
 {
        ins->inst_offset = native_offset;
        g_ptr_array_add (cfg->seq_points, ins);
-       bb->seq_points = g_slist_prepend_mempool (cfg->mempool, bb->seq_points, ins);
-       bb->last_seq_point = ins;
+       if (bb) {
+               bb->seq_points = g_slist_prepend_mempool (cfg->mempool, bb->seq_points, ins);
+               bb->last_seq_point = ins;
+       }
 }
 
 void
@@ -3461,6 +3619,13 @@ mono_compile_create_vars (MonoCompile *cfg)
        if (cfg->verbose_level > 2)
                g_print ("locals done\n");
 
+       if (cfg->method->save_lmf && ARCH_ENABLE_LMF_IR) {
+               MonoInst *lmf_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
+               lmf_var->flags |= MONO_INST_VOLATILE;
+               lmf_var->flags |= MONO_INST_LMF;
+               cfg->lmf_var = lmf_var;
+       }
+
        mono_arch_create_vars (cfg);
 }
 
@@ -3610,7 +3775,7 @@ mono_save_seq_point_info (MonoCompile *cfg)
        if (!cfg->seq_points)
                return;
 
-       info = g_malloc0 (sizeof (MonoSeqPointInfo) + (cfg->seq_points->len - MONO_ZERO_LEN_ARRAY) * sizeof (SeqPoint));
+       info = g_malloc0 (sizeof (MonoSeqPointInfo) + (cfg->seq_points->len * sizeof (SeqPoint)));
        info->len = cfg->seq_points->len;
        for (i = 0; i < cfg->seq_points->len; ++i) {
                SeqPoint *sp = &info->seq_points [i];
@@ -3637,6 +3802,8 @@ mono_save_seq_point_info (MonoCompile *cfg)
                        if (ins->inst_imm == METHOD_ENTRY_IL_OFFSET || ins->inst_imm == METHOD_EXIT_IL_OFFSET)
                                /* Used to implement method entry/exit events */
                                continue;
+                       if (ins->inst_offset == SEQ_POINT_NATIVE_OFFSET_DEAD_CODE)
+                               continue;
 
                        if (last != NULL) {
                                /* Link with the previous seq point in the same bb */
@@ -3649,7 +3816,7 @@ mono_save_seq_point_info (MonoCompile *cfg)
                        last = ins;
                }
 
-               if (bb->last_ins && bb->last_ins->opcode == OP_ENDFINALLY) {
+               if (bb->last_ins && bb->last_ins->opcode == OP_ENDFINALLY && bb->seq_points) {
                        MonoBasicBlock *bb2;
                        MonoInst *endfinally_seq_point = NULL;
 
@@ -3804,6 +3971,9 @@ mono_codegen (MonoCompile *cfg)
 
        /* we always allocate code in cfg->domain->code_mp to increase locality */
        cfg->code_size = cfg->code_len + max_epilog_size;
+#ifdef __native_client_codegen__
+       cfg->code_size = NACL_BUNDLE_ALIGN_UP (cfg->code_size);
+#endif
        /* fixme: align to MONO_ARCH_CODE_ALIGNMENT */
 
        if (cfg->method->dynamic) {
@@ -4029,7 +4199,7 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                        printf ("Number of try block holes %d\n", num_holes);
        }
 
-       if (mono_method_has_declsec (cfg->method_to_register)) {
+       if (mono_security_method_has_declsec (cfg->method_to_register)) {
                cas_size = sizeof (MonoMethodCasInfo);
        }
 
@@ -4347,22 +4517,17 @@ is_gsharedvt_method (MonoMethod *method)
 }
 
 static gboolean
-has_ref_constraint (MonoGenericParamInfo *info)
+is_open_method (MonoMethod *method)
 {
-       MonoClass **constraints;
-
-       //return FALSE;
-
-       if (info && info->constraints) {
-               constraints = info->constraints;
+       MonoGenericContext *context;
 
-               while (*constraints) {
-                       MonoClass *cklass = *constraints;
-                       if (!(cklass == mono_defaults.object_class || (cklass->image == mono_defaults.corlib && !strcmp (cklass->name, "ValueType")) || MONO_CLASS_IS_INTERFACE (cklass)))
-                               return TRUE;
-                       constraints ++;
-               }
-       }
+       if (!method->is_inflated)
+               return FALSE;
+       context = mono_method_get_context (method);
+       if (context->class_inst && context->class_inst->is_open)
+               return TRUE;
+       if (context->method_inst && context->method_inst->is_open)
+               return TRUE;
        return FALSE;
 }
 
@@ -4378,10 +4543,7 @@ get_shared_inst (MonoGenericInst *inst, MonoGenericInst *shared_inst, MonoGeneri
                if (!all_vt && (MONO_TYPE_IS_REFERENCE (inst->type_argv [i]) || inst->type_argv [i]->type == MONO_TYPE_VAR || inst->type_argv [i]->type == MONO_TYPE_MVAR)) {
                        type_argv [i] = shared_inst->type_argv [i];
                } else if (all_vt) {
-                       if (container && has_ref_constraint (&container->type_params [i].info))
-                               type_argv [i] = shared_inst->type_argv [i];
-                       else
-                               type_argv [i] = get_gsharedvt_type (shared_inst->type_argv [i]);
+                       type_argv [i] = get_gsharedvt_type (shared_inst->type_argv [i]);
                } else if (gsharedvt) {
                        type_argv [i] = get_gsharedvt_type (shared_inst->type_argv [i]);
                } else {
@@ -4411,7 +4573,7 @@ mini_get_shared_method_full (MonoMethod *method, gboolean all_vt, gboolean is_gs
        gboolean gsharedvt = FALSE;
        MonoGenericContainer *class_container, *method_container = NULL;
 
-       if (method->is_generic || method->klass->generic_container) {
+       if (method->is_generic || (method->klass->generic_container && !method->is_inflated)) {
                declaring_method = method;
        } else {
                declaring_method = mono_method_get_declaring_generic_method (method);
@@ -4423,12 +4585,14 @@ mini_get_shared_method_full (MonoMethod *method, gboolean all_vt, gboolean is_gs
                shared_context = declaring_method->klass->generic_container->context;
 
        /* Handle gsharedvt/partial sharing */
-       if ((method != declaring_method && method->is_inflated && !mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE)) ||
+       if ((method != declaring_method && method->is_inflated && !mono_method_is_generic_sharable_full (method, FALSE, FALSE, TRUE)) ||
                is_gsharedvt || mini_is_gsharedvt_sharable_method (method)) {
                MonoGenericContext *context = mono_method_get_context (method);
                MonoGenericInst *inst;
 
-               gsharedvt = is_gsharedvt || mini_is_gsharedvt_sharable_method (method);
+               partial = mono_method_is_generic_sharable_full (method, FALSE, TRUE, FALSE);
+
+               gsharedvt = is_gsharedvt || (!partial && mini_is_gsharedvt_sharable_method (method));
 
                class_container = declaring_method->klass->generic_container;
                method_container = mono_method_get_generic_container (declaring_method);
@@ -4437,7 +4601,6 @@ mini_get_shared_method_full (MonoMethod *method, gboolean all_vt, gboolean is_gs
                 * Create the shared context by replacing the ref type arguments with
                 * type parameters, and keeping the rest.
                 */
-               partial = TRUE;
                if (context)
                        inst = context->class_inst;
                else
@@ -4451,6 +4614,8 @@ mini_get_shared_method_full (MonoMethod *method, gboolean all_vt, gboolean is_gs
                        inst = shared_context.method_inst;
                if (inst)
                        shared_context.method_inst = get_shared_inst (inst, shared_context.method_inst, method_container, all_vt, gsharedvt);
+
+               partial = TRUE;
        }
 
     res = mono_class_inflate_generic_method (declaring_method, &shared_context);
@@ -4539,10 +4704,10 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
                 * FIXME: Remove the method->klass->generic_class limitation.
                 */
                try_generic_shared = mono_class_generic_sharing_enabled (method->klass) &&
-                       (opts & MONO_OPT_GSHARED) && ((method->is_generic || method->klass->generic_container) || (!method->klass->generic_class && mono_method_is_generic_sharable_impl_full (method, TRUE, FALSE, FALSE)));
+                       (opts & MONO_OPT_GSHARED) && ((method->is_generic || method->klass->generic_container) || (!method->klass->generic_class && mono_method_is_generic_sharable_full (method, TRUE, FALSE, FALSE)));
        else
                try_generic_shared = mono_class_generic_sharing_enabled (method->klass) &&
-                       (opts & MONO_OPT_GSHARED) && mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE);
+                       (opts & MONO_OPT_GSHARED) && mono_method_is_generic_sharable (method, FALSE);
 
        if (opts & MONO_OPT_GSHARED) {
                if (try_generic_shared)
@@ -4558,7 +4723,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
                        try_generic_shared = FALSE;
        }
 
-       if (is_gsharedvt_method (method)) {
+       if (is_gsharedvt_method (method) || (compile_aot && is_open_method (method))) {
                /* We are AOTing a gshared method directly */
                method_is_gshared = TRUE;
                g_assert (compile_aot);
@@ -5116,8 +5281,8 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
                return cfg;
        }
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-       if (!COMPILE_LLVM (cfg))
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
+       if (COMPILE_SOFT_FLOAT (cfg))
                mono_decompose_soft_float (cfg);
 #endif
        if (!COMPILE_LLVM (cfg))
@@ -5410,7 +5575,7 @@ lookup_method_inner (MonoDomain *domain, MonoMethod *method)
        if (ji)
                return ji;
 
-       if (!mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE))
+       if (!mono_method_is_generic_sharable (method, FALSE))
                return NULL;
        return mono_domain_lookup_shared_generic (domain, method);
 }
@@ -5666,6 +5831,7 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
        case MONO_EXCEPTION_FIELD_ACCESS:
                ex = mono_exception_from_name_msg (mono_defaults.corlib, "System", "FieldAccessException", cfg->exception_message);
                break;
+#ifndef DISABLE_SECURITY
        /* this can only be set if the security manager is active */
        case MONO_EXCEPTION_SECURITY_LINKDEMAND: {
                MonoSecurityManager* secman = mono_security_manager_get_methods ();
@@ -5679,6 +5845,7 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
                ex = (MonoException*)exc;
                break;
        }
+#endif
        case MONO_EXCEPTION_OBJECT_SUPPLIED: {
                MonoException *exp = cfg->exception_ptr;
                MONO_GC_UNREGISTER_ROOT (cfg->exception_ptr);
@@ -5725,7 +5892,7 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
                mono_domain_jit_code_hash_unlock (target_domain);
                code = cfg->native_code;
 
-               if (cfg->generic_sharing_context && mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE))
+               if (cfg->generic_sharing_context && mono_method_is_generic_sharable (method, FALSE))
                        mono_stats.generics_shared_methods++;
                if (cfg->gsharedvt)
                        mono_stats.gsharedvt_methods++;
@@ -5767,8 +5934,15 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
                        patch_info.data.method = method;
                        g_hash_table_remove (domain_jit_info (target_domain)->jump_target_hash, method);
 
+#if defined(__native_client_codegen__) && defined(__native_client__)
+                       /* These patches are applied after a method has been installed, no target munging is needed. */
+                       nacl_allow_target_modification (FALSE);
+#endif
                        for (tmp = jlist->list; tmp; tmp = tmp->next)
                                mono_arch_patch_code (NULL, target_domain, tmp->data, &patch_info, NULL, TRUE);
+#if defined(__native_client_codegen__) && defined(__native_client__)
+                       nacl_allow_target_modification (TRUE);
+#endif
                }
        }
 
@@ -5846,8 +6020,14 @@ mono_jit_compile_method_with_opt (MonoMethod *method, guint32 opt, MonoException
                WrapperInfo *info = mono_marshal_get_wrapper_info (method);
 
                g_assert (info);
-               if (info->subtype == WRAPPER_SUBTYPE_SYNCHRONIZED_INNER)
+               if (info->subtype == WRAPPER_SUBTYPE_SYNCHRONIZED_INNER) {
+                       MonoGenericContext *ctx = NULL;
+                       if (method->is_inflated)
+                               ctx = mono_method_get_context (method);
                        method = info->d.synchronized_inner.method;
+                       if (ctx)
+                               method = mono_class_inflate_generic_method (method, ctx);
+               }
        }
 
        info = lookup_method (target_domain, method);
@@ -6063,7 +6243,7 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
        mono_domain_unlock (domain);            
 
        if (!info) {
-               if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR) {
+               if (mono_security_core_clr_enabled ()) {
                        /* 
                         * This might be redundant since mono_class_vtable () already does this,
                         * but keep it just in case for moonlight.
@@ -6106,7 +6286,7 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                                }
                        }
 
-                       info->compiled_method = mini_add_method_trampoline (NULL, method, info->compiled_method, mono_method_needs_static_rgctx_invoke (method, FALSE));
+                       info->compiled_method = mini_add_method_trampoline (NULL, method, info->compiled_method, mono_method_needs_static_rgctx_invoke (method, FALSE), FALSE);
                }
 
                /*
@@ -6722,11 +6902,7 @@ mini_init (const char *filename, const char *runtime_version)
 #endif
 #endif
 
-#ifdef MONO_ARCH_HAVE_TLS_GET
        mono_runtime_set_has_tls_get (MONO_ARCH_HAVE_TLS_GET);
-#else
-       mono_runtime_set_has_tls_get (FALSE);
-#endif
 
        if (!global_codeman)
                global_codeman = mono_code_manager_new ();
@@ -6759,7 +6935,11 @@ mini_init (const char *filename, const char *runtime_version)
 
        if (getenv ("MONO_DEBUG") != NULL)
                mini_parse_debug_options ();
-       
+
+       mono_code_manager_init ();
+
+       mono_hwcap_init ();
+
        mono_arch_cpu_init ();
 
        mono_arch_init ();
@@ -6864,9 +7044,9 @@ mini_init (const char *filename, const char *runtime_version)
                        mono_install_imt_thunk_builder (mono_arch_build_imt_thunk);
        }
 #endif
+
        /*Init arch tls information only after the metadata side is inited to make sure we see dynamic appdomain tls keys*/
        mono_arch_finish_init ();
-       
 
        /* This must come after mono_init () in the aot-only case */
        mono_exceptions_init ();
@@ -6966,8 +7146,10 @@ mini_init (const char *filename, const char *runtime_version)
        register_opcode_emulation (OP_IMUL_OVF_UN, "__emul_op_imul_ovf_un", "int32 int32 int32", mono_imul_ovf_un, "mono_imul_ovf_un", FALSE);
 #endif
 
-#if defined(MONO_ARCH_EMULATE_MUL_DIV) || defined(MONO_ARCH_SOFT_FLOAT)
-       register_opcode_emulation (OP_FDIV, "__emul_fdiv", "double double double", mono_fdiv, "mono_fdiv", FALSE);
+#if defined(MONO_ARCH_EMULATE_MUL_DIV) || defined(MONO_ARCH_SOFT_FLOAT_FALLBACK)
+       if (EMUL_MUL_DIV || mono_arch_is_soft_float ()) {
+               register_opcode_emulation (OP_FDIV, "__emul_fdiv", "double double double", mono_fdiv, "mono_fdiv", FALSE);
+       }
 #endif
 
        register_opcode_emulation (OP_FCONV_TO_U8, "__emul_fconv_to_u8", "ulong double", mono_fconv_u8, "mono_fconv_u8", FALSE);
@@ -6998,44 +7180,47 @@ mini_init (const char *filename, const char *runtime_version)
 #endif
 #endif
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-       register_opcode_emulation (OP_FSUB, "__emul_fsub", "double double double", mono_fsub, "mono_fsub", FALSE);
-       register_opcode_emulation (OP_FADD, "__emul_fadd", "double double double", mono_fadd, "mono_fadd", FALSE);
-       register_opcode_emulation (OP_FMUL, "__emul_fmul", "double double double", mono_fmul, "mono_fmul", FALSE);
-       register_opcode_emulation (OP_FNEG, "__emul_fneg", "double double", mono_fneg, "mono_fneg", FALSE);
-       register_opcode_emulation (OP_ICONV_TO_R8, "__emul_iconv_to_r8", "double int32", mono_conv_to_r8, "mono_conv_to_r8", FALSE);
-       register_opcode_emulation (OP_ICONV_TO_R4, "__emul_iconv_to_r4", "double int32", mono_conv_to_r4, "mono_conv_to_r4", FALSE);
-       register_opcode_emulation (OP_FCONV_TO_R4, "__emul_fconv_to_r4", "double double", mono_fconv_r4, "mono_fconv_r4", FALSE);
-       register_opcode_emulation (OP_FCONV_TO_I1, "__emul_fconv_to_i1", "int8 double", mono_fconv_i1, "mono_fconv_i1", FALSE);
-       register_opcode_emulation (OP_FCONV_TO_I2, "__emul_fconv_to_i2", "int16 double", mono_fconv_i2, "mono_fconv_i2", FALSE);
-       register_opcode_emulation (OP_FCONV_TO_I4, "__emul_fconv_to_i4", "int32 double", mono_fconv_i4, "mono_fconv_i4", FALSE);
-       register_opcode_emulation (OP_FCONV_TO_U1, "__emul_fconv_to_u1", "uint8 double", mono_fconv_u1, "mono_fconv_u1", FALSE);
-       register_opcode_emulation (OP_FCONV_TO_U2, "__emul_fconv_to_u2", "uint16 double", mono_fconv_u2, "mono_fconv_u2", FALSE);
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
+       if (mono_arch_is_soft_float ()) {
+               register_opcode_emulation (OP_FSUB, "__emul_fsub", "double double double", mono_fsub, "mono_fsub", FALSE);
+               register_opcode_emulation (OP_FADD, "__emul_fadd", "double double double", mono_fadd, "mono_fadd", FALSE);
+               register_opcode_emulation (OP_FMUL, "__emul_fmul", "double double double", mono_fmul, "mono_fmul", FALSE);
+               register_opcode_emulation (OP_FNEG, "__emul_fneg", "double double", mono_fneg, "mono_fneg", FALSE);
+               register_opcode_emulation (OP_ICONV_TO_R8, "__emul_iconv_to_r8", "double int32", mono_conv_to_r8, "mono_conv_to_r8", FALSE);
+               register_opcode_emulation (OP_ICONV_TO_R4, "__emul_iconv_to_r4", "double int32", mono_conv_to_r4, "mono_conv_to_r4", FALSE);
+               register_opcode_emulation (OP_FCONV_TO_R4, "__emul_fconv_to_r4", "double double", mono_fconv_r4, "mono_fconv_r4", FALSE);
+               register_opcode_emulation (OP_FCONV_TO_I1, "__emul_fconv_to_i1", "int8 double", mono_fconv_i1, "mono_fconv_i1", FALSE);
+               register_opcode_emulation (OP_FCONV_TO_I2, "__emul_fconv_to_i2", "int16 double", mono_fconv_i2, "mono_fconv_i2", FALSE);
+               register_opcode_emulation (OP_FCONV_TO_I4, "__emul_fconv_to_i4", "int32 double", mono_fconv_i4, "mono_fconv_i4", FALSE);
+               register_opcode_emulation (OP_FCONV_TO_U1, "__emul_fconv_to_u1", "uint8 double", mono_fconv_u1, "mono_fconv_u1", FALSE);
+               register_opcode_emulation (OP_FCONV_TO_U2, "__emul_fconv_to_u2", "uint16 double", mono_fconv_u2, "mono_fconv_u2", FALSE);
+
 #if SIZEOF_VOID_P == 4
-       register_opcode_emulation (OP_FCONV_TO_I, "__emul_fconv_to_i", "int32 double", mono_fconv_i4, "mono_fconv_i4", FALSE);
+               register_opcode_emulation (OP_FCONV_TO_I, "__emul_fconv_to_i", "int32 double", mono_fconv_i4, "mono_fconv_i4", FALSE);
 #endif
 
-       register_opcode_emulation (OP_FBEQ, "__emul_fcmp_eq", "uint32 double double", mono_fcmp_eq, "mono_fcmp_eq", FALSE);
-       register_opcode_emulation (OP_FBLT, "__emul_fcmp_lt", "uint32 double double", mono_fcmp_lt, "mono_fcmp_lt", FALSE);
-       register_opcode_emulation (OP_FBGT, "__emul_fcmp_gt", "uint32 double double", mono_fcmp_gt, "mono_fcmp_gt", FALSE);
-       register_opcode_emulation (OP_FBLE, "__emul_fcmp_le", "uint32 double double", mono_fcmp_le, "mono_fcmp_le", FALSE);
-       register_opcode_emulation (OP_FBGE, "__emul_fcmp_ge", "uint32 double double", mono_fcmp_ge, "mono_fcmp_ge", FALSE);
-       register_opcode_emulation (OP_FBNE_UN, "__emul_fcmp_ne_un", "uint32 double double", mono_fcmp_ne_un, "mono_fcmp_ne_un", FALSE);
-       register_opcode_emulation (OP_FBLT_UN, "__emul_fcmp_lt_un", "uint32 double double", mono_fcmp_lt_un, "mono_fcmp_lt_un", FALSE);
-       register_opcode_emulation (OP_FBGT_UN, "__emul_fcmp_gt_un", "uint32 double double", mono_fcmp_gt_un, "mono_fcmp_gt_un", FALSE);
-       register_opcode_emulation (OP_FBLE_UN, "__emul_fcmp_le_un", "uint32 double double", mono_fcmp_le_un, "mono_fcmp_le_un", FALSE);
-       register_opcode_emulation (OP_FBGE_UN, "__emul_fcmp_ge_un", "uint32 double double", mono_fcmp_ge_un, "mono_fcmp_ge_un", FALSE);
+               register_opcode_emulation (OP_FBEQ, "__emul_fcmp_eq", "uint32 double double", mono_fcmp_eq, "mono_fcmp_eq", FALSE);
+               register_opcode_emulation (OP_FBLT, "__emul_fcmp_lt", "uint32 double double", mono_fcmp_lt, "mono_fcmp_lt", FALSE);
+               register_opcode_emulation (OP_FBGT, "__emul_fcmp_gt", "uint32 double double", mono_fcmp_gt, "mono_fcmp_gt", FALSE);
+               register_opcode_emulation (OP_FBLE, "__emul_fcmp_le", "uint32 double double", mono_fcmp_le, "mono_fcmp_le", FALSE);
+               register_opcode_emulation (OP_FBGE, "__emul_fcmp_ge", "uint32 double double", mono_fcmp_ge, "mono_fcmp_ge", FALSE);
+               register_opcode_emulation (OP_FBNE_UN, "__emul_fcmp_ne_un", "uint32 double double", mono_fcmp_ne_un, "mono_fcmp_ne_un", FALSE);
+               register_opcode_emulation (OP_FBLT_UN, "__emul_fcmp_lt_un", "uint32 double double", mono_fcmp_lt_un, "mono_fcmp_lt_un", FALSE);
+               register_opcode_emulation (OP_FBGT_UN, "__emul_fcmp_gt_un", "uint32 double double", mono_fcmp_gt_un, "mono_fcmp_gt_un", FALSE);
+               register_opcode_emulation (OP_FBLE_UN, "__emul_fcmp_le_un", "uint32 double double", mono_fcmp_le_un, "mono_fcmp_le_un", FALSE);
+               register_opcode_emulation (OP_FBGE_UN, "__emul_fcmp_ge_un", "uint32 double double", mono_fcmp_ge_un, "mono_fcmp_ge_un", FALSE);
 
-       register_opcode_emulation (OP_FCEQ, "__emul_fcmp_ceq", "uint32 double double", mono_fceq, "mono_fceq", FALSE);
-       register_opcode_emulation (OP_FCGT, "__emul_fcmp_cgt", "uint32 double double", mono_fcgt, "mono_fcgt", FALSE);
-       register_opcode_emulation (OP_FCGT_UN, "__emul_fcmp_cgt_un", "uint32 double double", mono_fcgt_un, "mono_fcgt_un", FALSE);
-       register_opcode_emulation (OP_FCLT, "__emul_fcmp_clt", "uint32 double double", mono_fclt, "mono_fclt", FALSE);
-       register_opcode_emulation (OP_FCLT_UN, "__emul_fcmp_clt_un", "uint32 double double", mono_fclt_un, "mono_fclt_un", FALSE);
+               register_opcode_emulation (OP_FCEQ, "__emul_fcmp_ceq", "uint32 double double", mono_fceq, "mono_fceq", FALSE);
+               register_opcode_emulation (OP_FCGT, "__emul_fcmp_cgt", "uint32 double double", mono_fcgt, "mono_fcgt", FALSE);
+               register_opcode_emulation (OP_FCGT_UN, "__emul_fcmp_cgt_un", "uint32 double double", mono_fcgt_un, "mono_fcgt_un", FALSE);
+               register_opcode_emulation (OP_FCLT, "__emul_fcmp_clt", "uint32 double double", mono_fclt, "mono_fclt", FALSE);
+               register_opcode_emulation (OP_FCLT_UN, "__emul_fcmp_clt_un", "uint32 double double", mono_fclt_un, "mono_fclt_un", FALSE);
 
-       register_icall (mono_fload_r4, "mono_fload_r4", "double ptr", FALSE);
-       register_icall (mono_fstore_r4, "mono_fstore_r4", "void double ptr", FALSE);
-       register_icall (mono_fload_r4_arg, "mono_fload_r4_arg", "uint32 double", FALSE);
-       register_icall (mono_isfinite, "mono_isfinite", "uint32 double", FALSE);
+               register_icall (mono_fload_r4, "mono_fload_r4", "double ptr", FALSE);
+               register_icall (mono_fstore_r4, "mono_fstore_r4", "void double ptr", FALSE);
+               register_icall (mono_fload_r4_arg, "mono_fload_r4_arg", "uint32 double", FALSE);
+               register_icall (mono_isfinite, "mono_isfinite", "uint32 double", FALSE);
+       }
 #endif
 
 #ifdef COMPRESSED_INTERFACE_BITMAP
@@ -7082,6 +7267,9 @@ mini_init (const char *filename, const char *runtime_version)
        register_icall (mono_resume_unwind, "mono_resume_unwind", "void", TRUE);
        register_icall (mono_object_tostring_gsharedvt, "mono_object_tostring_gsharedvt", "object ptr ptr ptr", TRUE);
        register_icall (mono_object_gethashcode_gsharedvt, "mono_object_gethashcode_gsharedvt", "int ptr ptr ptr", TRUE);
+       register_icall (mono_object_equals_gsharedvt, "mono_object_equals_gsharedvt", "int ptr ptr ptr object", TRUE);
+       register_icall (mono_gsharedvt_constrained_call, "mono_gsharedvt_constrained_call", "void ptr ptr ptr ptr", TRUE);
+       register_icall (mono_gsharedvt_value_copy, "mono_gsharedvt_value_copy", "void ptr ptr ptr", TRUE);
 
        register_icall (mono_gc_wbarrier_value_copy_bitmap, "mono_gc_wbarrier_value_copy_bitmap", "void ptr ptr int int", FALSE);
 
@@ -7138,7 +7326,6 @@ print_jit_stats (void)
                g_print ("Biggest method:         %ld (%s)\n", mono_jit_stats.biggest_method_size,
                                 mono_jit_stats.biggest_method);
 
-               g_print ("\nCreated object count:   %ld\n", mono_stats.new_object_count);
                g_print ("Delegates created:      %ld\n", mono_stats.delegate_creations);
                g_print ("Initialized classes:    %ld\n", mono_stats.initialized_class_count);
                g_print ("Used classes:           %ld\n", mono_stats.used_class_count);
@@ -7175,7 +7362,7 @@ print_jit_stats (void)
                g_print ("JIT info table lookups: %ld\n", mono_stats.jit_info_table_lookup_count);
 
                g_print ("Hazardous pointers:     %ld\n", mono_stats.hazardous_pointer_count);
-               if (mono_security_get_mode () == MONO_SECURITY_MODE_CAS) {
+               if (mono_security_cas_enabled ()) {
                        g_print ("\nDecl security check   : %ld\n", mono_jit_stats.cas_declsec_check);
                        g_print ("LinkDemand (user)     : %ld\n", mono_jit_stats.cas_linkdemand);
                        g_print ("LinkDemand (icall)    : %ld\n", mono_jit_stats.cas_linkdemand_icall);
@@ -7223,7 +7410,9 @@ mini_cleanup (MonoDomain *domain)
 
        mono_runtime_cleanup_handlers ();
 
+#ifndef MONO_CROSS_COMPILE
        mono_domain_free (domain, TRUE);
+#endif
 
        mono_debugger_cleanup ();
 
@@ -7264,6 +7453,8 @@ mini_cleanup (MonoDomain *domain)
 
        DeleteCriticalSection (&mono_delegate_section);
 
+       mono_code_manager_cleanup ();
+
 #ifdef USE_JUMP_TABLES
        mono_jumptable_cleanup ();
 #endif
index 3bfb1e6a8da08f7fc70d71babca9e2b675699bf8..ce1fc4e0e1fcd30a7bab11121917cfa777cf6591 100644 (file)
@@ -29,6 +29,7 @@
 #include <mono/utils/mono-stack-unwinding.h>
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/mono-tls.h>
+#include <mono/utils/atomic.h>
 
 #define MONO_BREAKPOINT_ARRAY_SIZE 64
 
 #include "mini-unwind.h"
 #include "jit.h"
 
+#ifdef __native_client_codegen__
+#include <nacl/nacl_dyncode.h>
+#endif
+
+
 /*
  * The mini code should not have any compile time dependencies on the GC being used, so the same object file from mini/
  * can be linked into both mono and mono-sgen.
 #define LLVM_ENABLED FALSE
 #endif
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-#define COMPILE_SOFT_FLOAT(cfg) (!COMPILE_LLVM ((cfg)))
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
+#define COMPILE_SOFT_FLOAT(cfg) (!COMPILE_LLVM ((cfg)) && mono_arch_is_soft_float ())
 #else
-#define COMPILE_SOFT_FLOAT(cfg) 0
+#define COMPILE_SOFT_FLOAT(cfg) (0)
 #endif
 
 #ifdef ENABLE_LLVM
 #endif
 
 /* Version number of the AOT file format */
-#define MONO_AOT_FILE_VERSION 88
+#define MONO_AOT_FILE_VERSION 90
 
 //TODO: This is x86/amd64 specific.
 #define mono_simd_shuffle_mask(a,b,c,d) ((a) | ((b) << 2) | ((c) << 4) | ((d) << 6))
 
+/* Remap printf to g_print (we use a mix of these in the mini code) */
+#ifdef PLATFORM_ANDROID
+#define printf g_print
+#endif
+
 /* Constants used to encode different types of methods in AOT */
 enum {
        MONO_AOT_METHODREF_MIN = 240,
@@ -207,9 +218,7 @@ typedef struct MonoAotFileInfo
        gpointer method_info_offsets;
        gpointer ex_info_offsets;
        gpointer code_offsets;
-#ifdef MONOTOUCH
        gpointer method_addresses;
-#endif
        gpointer extra_method_info_offsets;
        gpointer extra_method_table;
        gpointer got_info_offsets;
@@ -301,6 +310,9 @@ typedef struct
        GHashTable *arch_seq_points;
        /* Maps a GSharedVtTrampInfo structure to a trampoline address */
        GHashTable *gsharedvt_arg_tramp_hash;
+       /* memcpy/bzero methods specialized for small constant sizes */
+       gpointer *memcpy_addr [17];
+       gpointer *bzero_addr [17];
 } MonoJitDomainInfo;
 
 typedef struct {
@@ -711,7 +723,8 @@ typedef enum {
        LLVMArgInFPReg,
        LLVMArgVtypeInReg,
        LLVMArgVtypeByVal,
-       LLVMArgVtypeRetAddr /* On on cinfo->ret */
+       LLVMArgVtypeRetAddr, /* On on cinfo->ret */
+       LLVMArgGSharedVt,
 } LLVMArgStorage;
 
 typedef struct {
@@ -1033,6 +1046,17 @@ typedef struct {
        gboolean orig_ex_ctx_set;
 } MonoJitTlsData;
 
+/* TLS entries used by JITted code */
+typedef enum {
+       /* mono_thread_internal_current () */
+       TLS_KEY_THREAD = 0,
+       TLS_KEY_JIT_TLS = 1,
+       /* mono_domain_get () */
+       TLS_KEY_DOMAIN = 2,
+       TLS_KEY_LMF = 3,
+       TLS_KEY_LMF_ADDR = 4
+} MonoJitTlsKey;
+
 /*
  * This structure is an extension of MonoLMF and contains extra information.
  */
@@ -1066,7 +1090,20 @@ typedef enum {
        MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT,
        /* Same for calli, associated with a signature */
        MONO_RGCTX_INFO_SIG_GSHAREDVT_OUT_TRAMPOLINE_CALLI,
-       MONO_RGCTX_INFO_CLASS_IS_REF
+       /*
+        * 0 - vtype
+        * 1 - ref
+        * 2 - gsharedvt type
+        */
+       MONO_RGCTX_INFO_CLASS_BOX_TYPE,
+       /* Resolves to a MonoGSharedVtMethodRuntimeInfo */
+       MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO,
+       MONO_RGCTX_INFO_LOCAL_OFFSET,
+       MONO_RGCTX_INFO_MEMCPY,
+       MONO_RGCTX_INFO_BZERO,
+       /* The address of Nullable<T>.Box () */
+       MONO_RGCTX_INFO_NULLABLE_CLASS_BOX,
+       MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX,
 } MonoRgctxInfoType;
 
 typedef struct _MonoRuntimeGenericContextInfoTemplate {
@@ -1096,6 +1133,23 @@ typedef struct {
 
 #define MONO_GSHAREDVT_DEL_INVOKE_VT_OFFSET -2
 
+typedef struct {
+       MonoMethod *method;
+       /* Array of MonoRuntimeGenericContextInfoTemplate* entries */
+       GPtrArray *entries;
+} MonoGSharedVtMethodInfo;
+
+/* This is used by gsharedvt methods to allocate locals and compute local offsets */
+typedef struct {
+       int locals_size;
+       /*
+        * The results of resolving the entries in MOonGSharedVtMethodInfo->entries.
+        * We use this instead of rgctx slots since these can be loaded using a load instead
+        * of a call to an rgctx fetch trampoline.
+        */
+       gpointer entries [MONO_ZERO_LEN_ARRAY];
+} MonoGSharedVtMethodRuntimeInfo;
+
 typedef enum {
 #define PATCH_INFO(a,b) MONO_PATCH_INFO_ ## a,
 #include "patch-info.h"
@@ -1160,6 +1214,7 @@ struct MonoJumpInfo {
                MonoJumpInfoRgctxEntry *rgctx_entry;
                MonoJumpInfoImtTramp *imt_tramp;
                MonoJumpInfoGSharedVtCall *gsharedvt;
+               MonoGSharedVtMethodInfo *gsharedvt_method;
                MonoMethodSignature *sig;
        } data;
 };
@@ -1318,9 +1373,23 @@ typedef struct {
 
        gboolean gsharedvt;
 
+       MonoGSharedVtMethodInfo *gsharedvt_info;
+
+       /* Points to the gsharedvt locals area at runtime */
+       MonoInst *gsharedvt_locals_var;
+
+       /* The localloc instruction used to initialize gsharedvt_locals_var */
+       MonoInst *gsharedvt_locals_var_ins;
+
+       /* Points to a MonoGSharedVtMethodRuntimeInfo at runtime */
+       MonoInst *gsharedvt_info_var;
+
        /* For native-to-managed wrappers, the saved old domain */
        MonoInst *orig_domain_var;
 
+       MonoInst *lmf_var;
+       MonoInst *lmf_addr_var;
+
        unsigned char   *cil_start;
 #ifdef __native_client_codegen__
        /* this alloc is not aligned, native_code */
@@ -1466,7 +1535,7 @@ typedef struct {
        GSList *headers_to_free;
 
        /* Used by AOT */
-       guint32 got_offset, ex_info_offset, method_info_offset;
+       guint32 got_offset, ex_info_offset, method_info_offset, method_index;
        /* Symbol used to refer to this method in generated assembly */
        char *asm_symbol;
        char *llvm_method_name;
@@ -1863,6 +1932,7 @@ void      mono_merge_basic_blocks           (MonoCompile *cfg, MonoBasicBlock *b
 void      mono_optimize_branches            (MonoCompile *cfg) MONO_INTERNAL;
 
 void      mono_blockset_print               (MonoCompile *cfg, MonoBitSet *set, const char *name, guint idom) MONO_INTERNAL;
+void      mono_print_ji                     (const MonoJumpInfo *ji) MONO_INTERNAL;
 void      mono_print_ins_index              (int i, MonoInst *ins) MONO_INTERNAL;
 void      mono_print_ins                    (MonoInst *ins) MONO_INTERNAL;
 void      mono_print_bb                     (MonoBasicBlock *bb, const char *msg) MONO_INTERNAL;
@@ -1899,10 +1969,12 @@ MonoNativeTlsKey mono_get_jit_tls_key       (void) MONO_INTERNAL;
 gint32    mono_get_jit_tls_offset           (void) MONO_INTERNAL;
 gint32    mono_get_lmf_tls_offset           (void) MONO_INTERNAL;
 gint32    mono_get_lmf_addr_tls_offset      (void) MONO_INTERNAL;
+int       mini_get_tls_offset               (MonoJitTlsKey key) MONO_INTERNAL;
 MonoInst* mono_get_jit_tls_intrinsic        (MonoCompile *cfg) MONO_INTERNAL;
 MonoInst* mono_get_domain_intrinsic         (MonoCompile* cfg) MONO_INTERNAL;
 MonoInst* mono_get_thread_intrinsic         (MonoCompile* cfg) MONO_INTERNAL;
 MonoInst* mono_get_lmf_intrinsic            (MonoCompile* cfg) MONO_INTERNAL;
+MonoInst* mono_get_lmf_addr_intrinsic       (MonoCompile* cfg) MONO_INTERNAL;
 GList    *mono_varlist_insert_sorted        (MonoCompile *cfg, GList *list, MonoMethodVar *mv, int sort_type) MONO_INTERNAL;
 GList    *mono_varlist_sort                 (MonoCompile *cfg, GList *list, int sort_type) MONO_INTERNAL;
 void      mono_analyze_liveness             (MonoCompile *cfg) MONO_INTERNAL;
@@ -1950,12 +2022,24 @@ void mono_nacl_fix_patches(const guint8 *code, MonoJumpInfo *ji);
 guint8 *mono_arch_nacl_pad(guint8 *code, int pad);
 guint8 *mono_arch_nacl_skip_nops(guint8 *code);
 
-extern const guint kNaClAlignment;
-extern const guint kNaClAlignmentMask;
+#if defined(TARGET_X86)
+#define kNaClAlignment kNaClAlignmentX86
+#define kNaClAlignmentMask kNaClAlignmentMaskX86
+#elif defined(TARGET_AMD64)
+#define kNaClAlignment kNaClAlignmentAMD64
+#define kNaClAlignmentMask kNaClAlignmentMaskAMD64
+#elif defined(TARGET_ARM)
+#define kNaClAlignment kNaClAlignmentARM
+#define kNaClAlignmentMask kNaClAlignmentMaskARM
+#endif
+
+#define NACL_BUNDLE_ALIGN_UP(p) ((((p)+kNaClAlignmentMask)) & ~kNaClAlignmentMask)
 #endif
 
 #if defined(__native_client__) || defined(__native_client_codegen__)
-void mono_nacl_gc();
+extern volatile int __nacl_thread_suspension_needed;
+void __nacl_suspend_thread_if_needed(void);
+void mono_nacl_gc(void);
 #endif
 
 #if defined(__native_client_codegen__) || defined(__native_client__)
@@ -1993,6 +2077,7 @@ MonoMethod* mono_aot_get_array_helper_from_wrapper (MonoMethod *method) MONO_INT
 guint32  mono_aot_get_got_offset            (MonoJumpInfo *ji) MONO_LLVM_INTERNAL;
 char*    mono_aot_get_method_name           (MonoCompile *cfg) MONO_LLVM_INTERNAL;
 char*    mono_aot_get_plt_symbol            (MonoJumpInfoType type, gconstpointer data) MONO_LLVM_INTERNAL;
+int      mono_aot_get_method_index          (MonoMethod *method) MONO_LLVM_INTERNAL;
 MonoJumpInfo* mono_aot_patch_info_dup       (MonoJumpInfo* ji) MONO_LLVM_INTERNAL;
 void     mono_aot_set_make_unreadable       (gboolean unreadable) MONO_INTERNAL;
 gboolean mono_aot_is_pagefault              (void *ptr) MONO_INTERNAL;
@@ -2071,7 +2156,8 @@ gconstpointer     mono_get_trampoline_func (MonoTrampolineType tramp_type);
 gpointer          mini_get_vtable_trampoline (int slot_index) MONO_INTERNAL;
 char*             mono_get_generic_trampoline_name (MonoTrampolineType tramp_type) MONO_INTERNAL;
 char*             mono_get_rgctx_fetch_trampoline_name (int slot) MONO_INTERNAL;
-gpointer          mini_add_method_trampoline (MonoMethod *orig_method, MonoMethod *m, gpointer compiled_method, gboolean add_static_rgctx_tramp) MONO_INTERNAL;
+gpointer          mini_add_method_trampoline (MonoMethod *orig_method, MonoMethod *m, gpointer compiled_method, gboolean add_static_rgctx_tramp, gboolean add_unbox_tramp) MONO_INTERNAL;
+gboolean          mini_jit_info_is_gsharedvt (MonoJitInfo *ji) MONO_INTERNAL;
 
 gboolean          mono_running_on_valgrind (void) MONO_INTERNAL;
 void*             mono_global_codeman_reserve (int size) MONO_INTERNAL;
@@ -2179,6 +2265,18 @@ void      mono_arch_set_target                  (char *mtriple) MONO_INTERNAL;
 gboolean  mono_arch_gsharedvt_sig_supported     (MonoMethodSignature *sig) MONO_INTERNAL;
 gpointer  mono_arch_get_gsharedvt_trampoline    (MonoTrampInfo **info, gboolean aot) MONO_INTERNAL;
 gpointer  mono_arch_get_gsharedvt_call_info     (gpointer addr, MonoMethodSignature *normal_sig, MonoMethodSignature *gsharedvt_sig, MonoGenericSharingContext *gsctx, gboolean gsharedvt_in, gint32 vcall_offset, gboolean calli) MONO_INTERNAL;
+gboolean  mono_arch_opcode_needs_emulation      (MonoCompile *cfg, int opcode) MONO_INTERNAL;
+gboolean  mono_arch_enable_lmf_ir               (MonoCompile *cfg) MONO_INTERNAL;
+
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
+gboolean  mono_arch_is_soft_float               (void) MONO_INTERNAL;
+#else
+static inline MONO_ALWAYS_INLINE gboolean
+mono_arch_is_soft_float (void)
+{
+       return FALSE;
+}
+#endif
 
 /* Soft Debug support */
 #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
@@ -2411,6 +2509,9 @@ mono_set_generic_sharing_supported (gboolean supported) MONO_INTERNAL;
 void
 mono_set_generic_sharing_vt_supported (gboolean supported) MONO_INTERNAL;
 
+void
+mono_set_partial_sharing_supported (gboolean supported) MONO_INTERNAL;
+
 gboolean
 mono_class_generic_sharing_enabled (MonoClass *class) MONO_INTERNAL;
 
@@ -2426,6 +2527,9 @@ mono_method_lookup_rgctx (MonoVTable *class_vtable, MonoGenericInst *method_inst
 const char*
 mono_rgctx_info_type_to_str (MonoRgctxInfoType type) MONO_INTERNAL;
 
+MonoJumpInfoType
+mini_rgctx_info_type_to_patch_info_type (MonoRgctxInfoType info_type) MONO_INTERNAL;
+
 gboolean
 mono_method_needs_static_rgctx_invoke (MonoMethod *method, gboolean allow_type_vars) MONO_INTERNAL;
 
@@ -2458,10 +2562,13 @@ gboolean
 mono_method_is_generic_impl (MonoMethod *method) MONO_INTERNAL;
 
 gboolean
-mono_method_is_generic_sharable_impl (MonoMethod *method, gboolean allow_type_vars) MONO_INTERNAL;
+mono_method_is_generic_sharable (MonoMethod *method, gboolean allow_type_vars) MONO_INTERNAL;
 
 gboolean
-mono_method_is_generic_sharable_impl_full (MonoMethod *method, gboolean allow_type_vars, gboolean allow_partial, gboolean allow_gsharedvt) MONO_INTERNAL;
+mono_method_is_generic_sharable_full (MonoMethod *method, gboolean allow_type_vars, gboolean allow_partial, gboolean allow_gsharedvt) MONO_INTERNAL;
+
+gboolean
+mini_class_is_generic_sharable (MonoClass *klass) MONO_INTERNAL;
 
 gboolean
 mono_is_partially_sharable_inst (MonoGenericInst *inst) MONO_INTERNAL;
@@ -2499,14 +2606,13 @@ void mono_cfg_add_try_hole (MonoCompile *cfg, MonoExceptionClause *clause, guint
 
 void mono_cfg_set_exception (MonoCompile *cfg, int type) MONO_INTERNAL;
 gboolean mini_type_is_reference (MonoCompile *cfg, MonoType *type) MONO_INTERNAL;
-gboolean mini_type_is_vtype (MonoCompile *cfg, MonoType *t) MONO_INTERNAL;
-gboolean mini_type_var_is_vt (MonoCompile *cfg, MonoType *type) MONO_INTERNAL;
-gboolean mini_is_gsharedvt_klass (MonoCompile *cfg, MonoClass *klass) MONO_INTERNAL;
+gboolean mini_type_is_vtype (MonoCompile *cfg, MonoType *t); /* should be internal but it's used by llvm */
+gboolean mini_type_var_is_vt (MonoCompile *cfg, MonoType *type); /* should be internal but it's used by llvm */
+gboolean mini_is_gsharedvt_klass (MonoCompile *cfg, MonoClass *klass); /* should be internal but it's used by llvm */
 gboolean mini_is_gsharedvt_type (MonoCompile *cfg, MonoType *t) MONO_INTERNAL;
 gboolean mini_is_gsharedvt_signature (MonoCompile *cfg, MonoMethodSignature *sig) MONO_INTERNAL;
 gboolean mini_is_gsharedvt_type_gsctx (MonoGenericSharingContext *gsctx, MonoType *t) MONO_INTERNAL;
 gboolean mini_is_gsharedvt_variable_type (MonoCompile *cfg, MonoType *t) MONO_INTERNAL;
-MonoType* mini_get_gsharedvt_alloc_type_for_type (MonoCompile *cfg, MonoType *t) MONO_INTERNAL;
 gboolean mini_is_gsharedvt_sharable_method (MonoMethod *method) MONO_INTERNAL;
 gboolean mini_is_gsharedvt_variable_signature (MonoMethodSignature *sig) MONO_INTERNAL;
 gboolean mini_is_gsharedvt_sharable_inst (MonoGenericInst *inst) MONO_INTERNAL;
@@ -2644,4 +2750,36 @@ void SIG_HANDLER_SIGNATURE (mono_sigsegv_signal_handler) MONO_INTERNAL;
 void SIG_HANDLER_SIGNATURE (mono_sigint_signal_handler)  MONO_INTERNAL;
 gboolean SIG_HANDLER_SIGNATURE (mono_chain_signal) MONO_INTERNAL;
 
+#ifdef MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE
+#define ARCH_HAVE_DELEGATE_TRAMPOLINES 1
+#else
+#define ARCH_HAVE_DELEGATE_TRAMPOLINES 0
+#endif
+
+#ifdef MONO_ARCH_USE_OP_TAIL_CALL
+#define ARCH_USE_OP_TAIL_CALL 1
+#else
+#define ARCH_USE_OP_TAIL_CALL 0
+#endif
+
+#ifndef MONO_ARCH_HAVE_TLS_GET
+#define MONO_ARCH_HAVE_TLS_GET 0
+#endif
+
+#ifdef MONO_ARCH_HAVE_TLS_GET_REG
+#define ARCH_HAVE_TLS_GET_REG 1
+#else
+#define ARCH_HAVE_TLS_GET_REG 0
+#endif
+
+/*
+ * When this is set, the code to push/pop the LMF from the LMF stack is generated as IR
+ * instead of being generated in emit_prolog ()/emit_epilog ().
+ */
+#ifdef MONO_ARCH_ENABLE_LMF_IR
+#define ARCH_ENABLE_LMF_IR 1
+#else
+#define ARCH_ENABLE_LMF_IR 0
+#endif
+
 #endif /* __MONO_MINI_H__ */
index 24cd2c5cc8209dcf1b1b9f5ddc4025fd71285d99..d47645a1ef21de3720f7e0308c5a21f07d51ead8 100644 (file)
 using System;
 using Mono.Simd;
+using System.Threading;
+
+class A {
+       public void Print() { Console.WriteLine("A"); }
+}
+
+class B : A {
+       public void Print() { Console.WriteLine("B"); }
+}
+
+class ThreadRunner {
+       public Int32 Inc2(Int32 a) { return Inc1(a); }
+       public Int32 Inc1(Int32 a) { return a + 2; }
+       public void PrintA(A a) { a.Print(); ((B)a).Print(); }
+       public void Run() {
+               Console.WriteLine("Running thread" );
+               B b = new B();
+               Int32 a=0;
+               for(int i = 0; i < 1000000; i++) {
+                       a = Inc2(a);
+                       if(i % 100000 == 0) PrintA(b);
+               }
+               Console.WriteLine("Ending thread");
+       }
+}
+
+
+class Extensions { public static string BogusProperty { get; set; } }
+
+class RuntimeServices {
+       public System.Reflection.MemberInfo[] members = typeof(Extensions).GetMembers();
+       public void Run() {
+               foreach (var m in members) System.Console.WriteLine(m);
+       }
+}
 
 class Tests {
        struct myvt {
-         public int X;
-         public int Y;
+               public int X;
+               public int Y;
        }
 
        static int test_0_vector4i_cmp_gt () {
-               Vector4i a = new Vector4i (10, 5, 12, -1);
+               Vector4i a = new Vector4i (10, 5, 12, -1);
                Vector4i b = new Vector4i (-1, 5, 10, 10);
 
                Vector4i c = a.CompareGreaterThan (b);
-       
+
                if (c.X != -1)
                        return 1;
                if (c.Y != 0)
                        return 2;
                if (c.Z != -1)
-                 return 3;
+                       return 3;
                if (c.W != 0)
-                 return 4;
+                       return 4;
                return 0;
        }
 
        static myvt CompareGT(myvt a, myvt b) {
-         myvt r;
-         r.X = a.X > b.X ? -1 : 0;
-         r.Y = a.Y > b.Y ? -1 : 0;
-         return r;
+               myvt r;
+               r.X = a.X > b.X ? -1 : 0;
+               r.Y = a.Y > b.Y ? -1 : 0;
+               return r;
        }
 
        static int test_0_struct2i_cmp_gt() {
-         myvt a;
-         myvt b;
-         a.X = 10;
-         a.Y = 5;
-         b.X = -1;
-         b.Y = 5;
-         myvt c = CompareGT(a, b);
-         if (c.X != -1)
-           return 1;
-         if (c.Y != 0)
-           return 2;
-         return 0;
+               myvt a;
+               myvt b;
+               a.X = 10;
+               a.Y = 5;
+               b.X = -1;
+               b.Y = 5;
+               myvt c = CompareGT(a, b);
+               if (c.X != -1)
+                       return 1;
+               if (c.Y != 0)
+                       return 2;
+               return 0;
        }
 
        static int vararg_sum(params int[] args) {
-         int sum = 0;
-         foreach(int arg in args) {
-           sum += arg;
-         }
-         return sum;
+               int sum = 0;
+               foreach(int arg in args) {
+                       sum += arg;
+               }
+               return sum;
        }
        static int test_21_vararg_test() {
-         int sum = 0;
-         sum += vararg_sum();
-         sum += vararg_sum(1);
-         sum += vararg_sum(2, 3);
-         sum += vararg_sum(4, 5, 6);
-         return sum;
+               int sum = 0;
+               sum += vararg_sum();
+               sum += vararg_sum(1);
+               sum += vararg_sum(2, 3);
+               sum += vararg_sum(4, 5, 6);
+               return sum;
        }
+
+       static int test_0_threads() {
+               // Run a bunch of threads, make them JIT some code and
+               // do some casts
+               ThreadRunner runner = new ThreadRunner();
+               Thread[] threads = new Thread[10];
+               for (int i = 0; i < 10; i++) {
+                       threads[i] = new Thread(new ThreadStart(runner.Run));
+                       threads[i].Start();
+               }
+               for (int i = 0; i < 10; i++) {
+                       threads[i].Join();
+               }
+               return 0;
+       }
+
+
+       static int test_0_reflection() {
+               RuntimeServices r = new RuntimeServices();
+               r.Run();
+               return 0;
+       }
+
+       public class BaseClass {
+       }
+
+       public class LongClass : BaseClass {
+               public long Value;
+               public LongClass(long val) { Value = val; }
+       }
+
+       static public long add_two_LongClass(BaseClass l1, BaseClass l2) {
+               long l = checked (((LongClass)l1).Value + ((LongClass)l2).Value);
+               return l;
+       }
+
+       static int test_0_laddcc() {
+               long l = add_two_LongClass(new LongClass(System.Int64.MinValue), new LongClass(1234));
+               if (l == 1234)
+                       return 1;
+               return 0;
+       }
+
        public static int Main(String[] args) {
-         return TestDriver.RunTests(typeof(Tests));
+               return TestDriver.RunTests(typeof(Tests));
        }
 }
index c7689c42ee476586e5e2f6e50e5bb008043d7ab1..ae3e724f36706f47d71ff354bbbdd2cf3a64f0cc 100644 (file)
@@ -114,8 +114,8 @@ struct Gamma {
 
 class Tests {
 
-       static int Main () {
-               return TestDriver.RunTests (typeof (Tests));
+       public static int Main (string[] args) {
+               return TestDriver.RunTests (typeof (Tests), args);
        }
        
        public static int test_0_return () {
@@ -1577,5 +1577,23 @@ ncells ) {
                return 0;
        }
 
+       public static void do_throw () {
+               throw new Exception ();
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       static void empty () {
+       }
+
+       // #11297
+       public static int test_0_llvm_inline_throw () {
+               try {
+                       empty ();
+               } catch (Exception) {
+                       do_throw ();
+               }
+
+               return 0;
+       }
 }
 
index 2ef31a4f9f4a5878a78c1c29651df1df7b89324f..daf32f03df508d803641a94f7fdb5efa0cf96815 100644 (file)
@@ -46,6 +46,10 @@ PATCH_INFO(GC_CARD_TABLE_ADDR, "gc_card_table_addr")
 PATCH_INFO(CASTCLASS_CACHE, "castclass_cache")
 PATCH_INFO(SIGNATURE, "signature")
 PATCH_INFO(GSHAREDVT_CALL, "gsharedvt_call")
+PATCH_INFO(GSHAREDVT_METHOD, "gsharedvt_method")
 PATCH_INFO(JIT_TLS_ID, "jit_tls_id")
+PATCH_INFO(TLS_OFFSET, "tls_offset")
 PATCH_INFO(NONE, "none")
 
+
+
index f043ddd6d55402ab6a17fb6d5d48293693da53af..9e910dc362e231df27f072bcfba0fa59f0264b04 100644 (file)
@@ -1,5 +1,8 @@
-
+#if defined(__native_client__) && defined(__x86_64__)
+typedef guint64 regmask_t;
+#else
 typedef size_t regmask_t;
+#endif
 
 enum {
        MONO_REG_INT,
index 024ddaf20eeb4d58867fd192e6f13bba711a0659..f67b704c362727b2e9f80e000e3fda8b85849779 100644 (file)
@@ -661,7 +661,7 @@ handle_enum:
        case MONO_TYPE_R4:
        case MONO_TYPE_R8: {
                double f = va_arg (ap, double);
-               printf ("FP=%f\n", f);
+               printf ("FP=%f", f);
                break;
        }
        case MONO_TYPE_VALUETYPE: 
index ee2c8c410c0d279b8ef4292bf084e51a6a9461bb..805ca4d112e84e767686804b385241d57a62c30e 100644 (file)
@@ -29,7 +29,7 @@
 
 #if defined(__native_client_codegen__) && defined(__native_client__)
 #include <malloc.h>
-#include <sys/nacl_syscalls.h>
+#include <nacl/nacl_dyncode.h>
 #endif
 
 #define IS_REX(inst) (((inst) >= 0x40) && ((inst) <= 0x4f))
@@ -49,21 +49,21 @@ gpointer
 mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr)
 {
        guint8 *code, *start;
-       int this_reg;
+       int this_reg, size = NACL_SIZE (20, 32);
 
        MonoDomain *domain = mono_domain_get ();
 
        this_reg = mono_arch_get_this_arg_reg (NULL);
 
-       start = code = mono_domain_code_reserve (domain, 20);
+       start = code = mono_domain_code_reserve (domain, size);
 
        amd64_alu_reg_imm (code, X86_ADD, this_reg, sizeof (MonoObject));
        /* FIXME: Optimize this */
        amd64_mov_reg_imm (code, AMD64_RAX, addr);
        amd64_jump_reg (code, AMD64_RAX);
-       g_assert ((code - start) < 20);
+       g_assert ((code - start) < size);
 
-       nacl_domain_code_validate (domain, &start, 20, &code);
+       nacl_domain_code_validate (domain, &start, size, &code);
 
        mono_arch_flush_icache (start, code - start);
 
@@ -88,9 +88,9 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m, MonoMethodRuntimeGenericCo
 #else
        /* AOTed code could still have a non-32 bit address */
        if ((((guint64)addr) >> 32) == 0)
-               buf_len = 16;
+               buf_len = NACL_SIZE (16, 32);
        else
-               buf_len = 30;
+               buf_len = NACL_SIZE (30, 32);
 #endif
 
        start = code = mono_domain_code_reserve (domain, buf_len);
@@ -734,16 +734,17 @@ gpointer
 mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
 {
        guint8 *code, *buf;
+       int size = NACL_SIZE (16, 32);
 
-       code = buf = mono_global_codeman_reserve (16);
+       code = buf = mono_global_codeman_reserve (size);
        amd64_ret (code);
 
-       nacl_global_codeman_validate(&buf, 16, &code);
+       nacl_global_codeman_validate(&buf, size, &code);
 
        mono_arch_flush_icache (buf, code - buf);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("nullified_class_init_trampoline"), buf, code - buf, NULL, NULL);
+               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
 
        if (mono_jit_map_is_enabled ())
                mono_emit_jit_tramp (buf, code - buf, "nullified_class_init_trampoline");
@@ -781,6 +782,7 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
        /* Aligning the call site below could */
        /* add up to kNaClAlignment-1 bytes   */
        size += (kNaClAlignment-1);
+       size = NACL_BUNDLE_ALIGN_UP (size);
        buf = mono_domain_code_reserve_align (domain, size, kNaClAlignment);
        code = buf;
 #endif
@@ -913,8 +915,11 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create (mono_get_rgctx_fetch_trampoline_name (slot), buf, code - buf, ji, unwind_ops);
+       if (info) {
+               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+               g_free (name);
+       }
 
        return buf;
 }
@@ -963,7 +968,7 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("generic_class_init_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -1087,7 +1092,7 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot)
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("monitor_enter_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("monitor_enter_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -1205,7 +1210,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("monitor_exit_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("monitor_exit_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
index b12ead690229bf715a037bef124771c421dd2ec9..44ef52d89ea5b792707d0c5a7cd4c6970bda5638 100644 (file)
@@ -473,7 +473,7 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
        mono_arch_flush_icache (buf, code - buf);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("nullified_class_init_trampoline"), buf, code - buf, NULL, NULL);
+               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
 
        return buf;
 }
@@ -765,8 +765,11 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create (mono_get_rgctx_fetch_trampoline_name (slot), buf, code - buf, ji, unwind_ops);
+       if (info) {
+               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+               g_free (name);
+       }
 
        return buf;
 }
@@ -873,7 +876,7 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("generic_class_init_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -1056,7 +1059,7 @@ mono_arch_get_gsharedvt_arg_trampoline (MonoDomain *domain, gpointer arg, gpoint
 #else
 
 gpointer
-mono_arm_start_gsharedvt_call (GSharedVtCallInfo *info, gpointer *caller, gpointer *callee, gpointer *caller_regs, gpointer *callee_regs, gpointer mrgctx_reg)
+mono_arm_start_gsharedvt_call (GSharedVtCallInfo *info, gpointer *caller, gpointer *callee, gpointer mrgctx_reg)
 {
        g_assert_not_reached ();
        return NULL;
index e90e0a3121bfe39db750792f3c8c235d5be678f0..c1ff0204d5009e12b3d023e50651aac1a4e9a94a 100644 (file)
@@ -153,7 +153,7 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
        mono_arch_flush_icache (buf, code - buf);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("nullified_class_init_trampoline"), buf, code - buf, NULL, NULL);
+               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
 
        return buf;
 }
@@ -482,8 +482,11 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create (mono_get_rgctx_fetch_trampoline_name (slot), buf, code - buf, ji, unwind_ops);
+       if (info) {
+               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+               g_free (name);
+       }
 
        return buf;
 }
@@ -539,7 +542,7 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("generic_class_init_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
index 2972348d09ed7103f088f375cf8c8618d5d23fe3..7e719be329d451ea09b97c2415e7f3574e6688a0 100644 (file)
@@ -617,8 +617,11 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create (mono_get_rgctx_fetch_trampoline_name (slot), buf, code - buf, ji, unwind_ops);
+       if (info) {
+               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+               g_free (name);
+       }
 
        return buf;
 #else
@@ -677,7 +680,7 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("generic_class_init_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -696,7 +699,7 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("nullified_class_init_trampoline"), buf, code - buf, NULL, NULL);
+               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
 
        return buf;
 }
diff --git a/mono/mini/tramp-s390.c b/mono/mini/tramp-s390.c
deleted file mode 100644 (file)
index 284e419..0000000
+++ /dev/null
@@ -1,509 +0,0 @@
-/*------------------------------------------------------------------*/
-/*                                                                 */
-/* Name        - tramp-s390.c                                      */
-/*                                                                 */
-/* Function    - JIT trampoline code for S/390.                     */
-/*                                                                 */
-/* Name               - Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com) */
-/*                                                                 */
-/* Date        - January, 2004                                     */
-/*                                                                 */
-/* Derivation  - From exceptions-x86 & exceptions-ppc              */
-/*              Paolo Molaro (lupus@ximian.com)                    */
-/*              Dietmar Maurer (dietmar@ximian.com)                */
-/*                                                                 */
-/* Copyright   - 2001 Ximian, Inc.                                 */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-/*------------------------------------------------------------------*/
-/*                 D e f i n e s                                    */
-/*------------------------------------------------------------------*/
-
-#define GR_SAVE_SIZE           4*sizeof(long)
-#define FP_SAVE_SIZE           16*sizeof(double)
-#define METHOD_SAVE_OFFSET     S390_MINIMAL_STACK_SIZE
-#define CREATE_GR_OFFSET       METHOD_SAVE_OFFSET+sizeof(gpointer)
-#define CREATE_FP_OFFSET       CREATE_GR_OFFSET+GR_SAVE_SIZE
-#define CREATE_LMF_OFFSET      CREATE_FP_OFFSET+FP_SAVE_SIZE
-#define CREATE_STACK_SIZE      (CREATE_LMF_OFFSET+2*sizeof(long)+sizeof(MonoLMF))
-
-/*------------------------------------------------------------------*/
-/* Specific trampoline code fragment sizes                                 */
-/*------------------------------------------------------------------*/
-#define SPECIFIC_TRAMPOLINE_SIZE       64
-
-/*========================= End of Defines =========================*/
-
-/*------------------------------------------------------------------*/
-/*                 I n c l u d e s                                  */
-/*------------------------------------------------------------------*/
-
-#include <config.h>
-#include <glib.h>
-#include <string.h>
-
-#include <mono/metadata/appdomain.h>
-#include <mono/metadata/marshal.h>
-#include <mono/metadata/tabledefs.h>
-#include <mono/arch/s390/s390-codegen.h>
-
-#include "mini.h"
-#include "mini-s390.h"
-
-/*========================= End of Includes ========================*/
-
-/*------------------------------------------------------------------*/
-/*                 T y p e d e f s                                  */
-/*------------------------------------------------------------------*/
-
-/*========================= End of Typedefs ========================*/
-
-/*------------------------------------------------------------------*/
-/*                   P r o t o t y p e s                            */
-/*------------------------------------------------------------------*/
-
-/*========================= End of Prototypes ======================*/
-
-/*------------------------------------------------------------------*/
-/*                 G l o b a l   V a r i a b l e s                  */
-/*------------------------------------------------------------------*/
-
-
-/*====================== End of Global Variables ===================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_get_unbox_trampoline                        */
-/*                                                                  */
-/* Function    - Return a pointer to a trampoline which does the   */
-/*               unboxing before calling the method.               */
-/*                                                                  */
-/*                When value type methods are called through the    */
-/*               vtable we need to unbox the 'this' argument.      */
-/*                                                                 */
-/* Parameters   - method - Methd pointer                           */
-/*               addr   - Pointer to native code for method        */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-gpointer
-mono_arch_get_unbox_trampoline (MonoMethod *method, gpointer addr)
-{
-       guint8 *code, *start;
-       int this_pos = s390_r2;
-       MonoDomain *domain = mono_domain_get ();
-
-       start = addr;
-       if (MONO_TYPE_ISSTRUCT (mono_method_signature (method)->ret))
-               this_pos = s390_r3;
-
-       start = code = mono_domain_code_reserve (domain, 28);
-    
-       s390_basr (code, s390_r13, 0);
-       s390_j    (code, 4);
-       s390_word (code, addr);
-       s390_l    (code, s390_r1, 0, s390_r13, 4);
-       s390_ahi  (code, this_pos, sizeof(MonoObject));
-       s390_br   (code, s390_r1);
-
-       g_assert ((code - start) <= 28);
-
-       mono_arch_flush_icache (start, code - start);
-
-       return start;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_patch_callsite                              */
-/*                                                                  */
-/* Function    - Patch a non-virtual callsite so it calls @addr.       */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_patch_callsite (guint8 *method_start, guint8 *orig_code, guint8 *addr)
-{
-       gint32 displace;
-       unsigned short opcode;
-
-       opcode = *((unsigned short *) (orig_code - 6));
-       /* This should be a 'brasl' instruction */
-       g_assert (opcode ==  0xc0e5);
-       orig_code    -= 4;
-       displace = ((gint32) addr - (gint32) (orig_code - 2)) / 2;
-       s390_patch (orig_code, displace);
-       mono_arch_flush_icache (orig_code, 4);
-}
-
-/*========================= End of Function ========================*/
-
-void
-mono_arch_patch_plt_entry (guint8 *code, gpointer *got, mgreg_t *regs, guint8 *addr)
-{
-       g_assert_not_reached ();
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_nullify_class_init_trampoline               */
-/*                                                                  */
-/* Function    - Nullify a call which calls a class init trampoline    */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-void
-mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs)
-{
-       char patch[6] = {0x47, 0x00, 0x00, 0x00, 0x07, 0x00};
-
-       code = code - 6;
-
-       memcpy(code, patch, sizeof(patch));
-}
-
-/*========================= End of Function ========================*/
-
-void
-mono_arch_nullify_plt_entry (guint8 *code, mgreg_t *regs)
-{
-       g_assert_not_reached ();
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_get_vcall_slot                              */
-/*                                                                  */
-/* Function    - This method is called by the arch independent         */
-/*            trampoline code to determine the vtable slot used by  */
-/*            the call which invoked the trampoline.                */
-/*                The calls                                         */
-/*                generated by mono for S/390 will look like either:*/
-/*                1. l     %r1,xxx(%rx)                             */
-/*                   bras  %r14,%r1                                 */
-/*                2. brasl %r14,xxxxxx                              */
-/*                                                                  */
-/* Parameters   - code   - Pointer into caller code                 */
-/*                regs   - Register state at the point of the call  */
-/*                displacement - Out parameter which will receive   */
-/*                the displacement of the vtable slot               */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-gpointer
-mono_arch_get_vcall_slot (guint8 *code, mgreg_t *regs, int *displacement)
-{
-       int reg;
-       guchar* base;
-       unsigned short opcode;
-       char *sp;
-
-       // We are passed sp instead of the register array
-       sp = (char*)regs;
-
-       *displacement = 0;
-
-       opcode = *((unsigned short *) (code - 6));
-       switch (opcode) {
-       case 0x5810 :
-               /* This is a bras r14,r1 instruction */
-               code    -= 4;
-               reg      = *code >> 4;
-               *displacement = *((short *)code) & 0x0fff;
-               if (reg > 5) 
-                       base = *((guchar **) (sp + S390_REG_SAVE_OFFSET+
-                                                                 sizeof(int)*(reg-6)));
-               else
-                       base = *((guchar **) ((sp - CREATE_STACK_SIZE) + 
-                                                                 CREATE_GR_OFFSET +
-                                                                 sizeof(int)*(reg-2)));
-               return base;
-       case 0x581d :
-               /* l %r1,OFFSET(%r13,%r7) */
-               code    -= 4;
-               reg      = *code >> 4;
-               *displacement = *((short *)code) & 0x0fff;
-               if (reg > 5) 
-                       base = *((guchar **) (sp + S390_REG_SAVE_OFFSET+
-                                                                 sizeof(int)*(reg-6)));
-               else
-                       base = *((guchar **) ((sp - CREATE_STACK_SIZE) + 
-                                                                 CREATE_GR_OFFSET +
-                                                                 sizeof(int)*(reg-2)));
-               base += *((guint32*) (sp + S390_REG_SAVE_OFFSET+
-                                                         sizeof(int)*(s390_r13-6)));
-               return base;
-       case 0xc0e5 :
-               /* This is the 'brasl' instruction */
-               return NULL;
-       default :
-               g_error("Unable to patch instruction prior to %p",code);
-       }
-
-       return NULL;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_create_trampoline_code                      */
-/*                                                                  */
-/* Function    - Create the designated type of trampoline according*/
-/*                to the 'tramp_type' parameter.                    */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-guchar*
-mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInfo **info, gboolean aot)
-{
-       guint8 *buf, *tramp, *code;
-       int i, offset, lmfOffset;
-
-       g_assert (!aot);
-       if (info)
-               *info = NULL;
-
-       /* Now we'll create in 'buf' the S/390 trampoline code. This
-          is the trampoline code common to all methods  */
-               
-       code = buf = mono_global_codeman_reserve (512);
-               
-       /*-----------------------------------------------------------
-         STEP 0: First create a non-standard function prologue with a
-         stack size big enough to save our registers.
-         -----------------------------------------------------------*/
-               
-       s390_stm  (buf, s390_r6, s390_r14, STK_BASE, S390_REG_SAVE_OFFSET);
-       s390_lr   (buf, s390_r11, s390_r15);
-       s390_ahi  (buf, STK_BASE, -CREATE_STACK_SIZE);
-       s390_st   (buf, s390_r11, 0, STK_BASE, 0);
-       s390_st   (buf, s390_r1, 0, STK_BASE, METHOD_SAVE_OFFSET);
-       s390_stm  (buf, s390_r2, s390_r5, STK_BASE, CREATE_GR_OFFSET);
-
-       /* Save the FP registers */
-       offset = CREATE_FP_OFFSET;
-       for (i = s390_f0; i <= s390_f15; ++i) {
-               s390_std  (buf, i, 0, STK_BASE, offset);
-               offset += 8;
-       }
-
-       /*----------------------------------------------------------
-         STEP 1: call 'mono_get_lmf_addr()' to get the address of our
-         LMF. We'll need to restore it after the call to
-         's390_magic_trampoline' and before the call to the native
-         method.
-         ----------------------------------------------------------*/
-                               
-       s390_basr (buf, s390_r13, 0);
-       s390_j    (buf, 4);
-       s390_word (buf, mono_get_lmf_addr);
-       s390_l    (buf, s390_r1, 0, s390_r13, 4);
-       s390_basr (buf, s390_r14, s390_r1);
-
-       /*---------------------------------------------------------------*/
-       /* we build the MonoLMF structure on the stack - see mini-s390.h */
-       /* Keep in sync with the code in mono_arch_emit_prolog           */
-       /*---------------------------------------------------------------*/
-       lmfOffset = CREATE_STACK_SIZE - sizeof(MonoLMF);
-                                                                                       
-       s390_lr    (buf, s390_r13, STK_BASE);
-       s390_ahi   (buf, s390_r13, lmfOffset);  
-                                                                                       
-       /*---------------------------------------------------------------*/     
-       /* Set lmf.lmf_addr = jit_tls->lmf                               */     
-       /*---------------------------------------------------------------*/     
-       s390_st    (buf, s390_r2, 0, s390_r13,                          
-                           G_STRUCT_OFFSET(MonoLMF, lmf_addr));                        
-                                                                                       
-       /*---------------------------------------------------------------*/     
-       /* Get current lmf                                               */     
-       /*---------------------------------------------------------------*/     
-       s390_l     (buf, s390_r0, 0, s390_r2, 0);                               
-                                                                                       
-       /*---------------------------------------------------------------*/     
-       /* Set our lmf as the current lmf                                */     
-       /*---------------------------------------------------------------*/     
-       s390_st    (buf, s390_r13, 0, s390_r2, 0);                              
-                                                                                       
-       /*---------------------------------------------------------------*/     
-       /* Have our lmf.previous_lmf point to the last lmf               */     
-       /*---------------------------------------------------------------*/     
-       s390_st    (buf, s390_r0, 0, s390_r13,                          
-                           G_STRUCT_OFFSET(MonoLMF, previous_lmf));                    
-                                                                                       
-       /*---------------------------------------------------------------*/     
-       /* save method info                                              */     
-       /*---------------------------------------------------------------*/     
-       s390_l     (buf, s390_r1, 0, STK_BASE, METHOD_SAVE_OFFSET);
-       s390_st    (buf, s390_r1, 0, s390_r13,                          
-                           G_STRUCT_OFFSET(MonoLMF, method));                          
-                                                                       
-       /*---------------------------------------------------------------*/     
-       /* save the current SP                                           */     
-       /*---------------------------------------------------------------*/     
-       s390_l     (buf, s390_r1, 0, STK_BASE, 0);
-       s390_st    (buf, s390_r1, 0, s390_r13, G_STRUCT_OFFSET(MonoLMF, ebp));  
-                                                                       
-       /*---------------------------------------------------------------*/     
-       /* save the current IP                                           */     
-       /*---------------------------------------------------------------*/     
-       if (tramp_type == MONO_TRAMPOLINE_JUMP) {
-               s390_lhi   (buf, s390_r1, 0);
-       } else {
-               s390_l     (buf, s390_r1, 0, s390_r1, S390_RET_ADDR_OFFSET);
-               s390_la    (buf, s390_r1, 0, s390_r1, 0);
-       }
-       s390_st    (buf, s390_r1, 0, s390_r13, G_STRUCT_OFFSET(MonoLMF, eip));  
-                                                                                       
-       /*---------------------------------------------------------------*/     
-       /* Save general and floating point registers                     */     
-       /*---------------------------------------------------------------*/     
-       s390_stm   (buf, s390_r2, s390_r12, s390_r13,                           
-                           G_STRUCT_OFFSET(MonoLMF, gregs[2]));                        
-       for (i = 0; i < 16; i++) {                                              
-               s390_std  (buf, i, 0, s390_r13,                                 
-                                  G_STRUCT_OFFSET(MonoLMF, fregs[i]));                 
-       }
-
-       /*---------------------------------------------------------------*/
-       /* STEP 2: call the C trampoline function                        */
-       /*---------------------------------------------------------------*/
-                               
-       /* Set arguments */
-
-       /* Arg 1: mgreg_t *regs. We pass sp instead */
-       s390_lr   (buf, s390_r2, STK_BASE);
-       s390_ahi  (buf, s390_r2, CREATE_STACK_SIZE);
-               
-       /* Arg 2: code (next address to the instruction that called us) */
-       if (tramp_type == MONO_TRAMPOLINE_JUMP) {
-               s390_lhi (buf, s390_r3, 0);
-       } else {
-               s390_l  (buf, s390_r3, 0, s390_r11, S390_RET_ADDR_OFFSET);
-
-               /* Mask out bit 31 */
-               s390_basr (buf, s390_r13, 0);
-               s390_j    (buf, 4);
-               s390_word (buf, (~(1 << 31)));
-               s390_n (buf, s390_r3, 0, s390_r13, 4);
-       }
-               
-       /* Arg 3: MonoMethod *method. It was put in r1 by the
-          method-specific trampoline code, and then saved before the call
-          to mono_get_lmf_addr()'. */
-       s390_l  (buf, s390_r4, 0, STK_BASE, METHOD_SAVE_OFFSET);
-
-       /* Arg 4: trampoline address. Ignore for now */
-               
-       /* Calculate call address and call the C trampoline. Return value will be in r2 */
-       s390_basr (buf, s390_r13, 0);
-       s390_j    (buf, 4);
-       tramp = (guint8*)mono_get_trampoline_func (tramp_type);
-       s390_word (buf, tramp);
-       s390_l    (buf, s390_r1, 0, s390_r13, 4);
-       s390_basr (buf, s390_r14, s390_r1);
-               
-       /* OK, code address is now on r2. Move it to r1, so that we
-          can restore r2 and use it from r1 later */
-       s390_lr   (buf, s390_r1, s390_r2);
-
-       /*----------------------------------------------------------
-         STEP 3: Restore the LMF
-         ----------------------------------------------------------*/
-       restoreLMF(buf, STK_BASE, CREATE_STACK_SIZE);
-       
-       /*----------------------------------------------------------
-         STEP 4: call the compiled method
-         ----------------------------------------------------------*/
-               
-       /* Restore registers */
-
-       s390_lm   (buf, s390_r2, s390_r5, STK_BASE, CREATE_GR_OFFSET);
-               
-       /* Restore the FP registers */
-       offset = CREATE_FP_OFFSET;
-       for (i = s390_f0; i <= s390_f15; ++i) {
-               s390_ld  (buf, i, 0, STK_BASE, offset);
-               offset += 8;
-       }
-
-       /* Restore stack pointer and jump to the code - 
-          R14 contains the return address to our caller */
-       s390_lr   (buf, STK_BASE, s390_r11);
-       s390_lm   (buf, s390_r6, s390_r14, STK_BASE, S390_REG_SAVE_OFFSET);
-
-       if (tramp_type == MONO_TRAMPOLINE_CLASS_INIT || tramp_type == MONO_TRAMPOLINE_GENERIC_CLASS_INIT)
-               s390_br (buf, s390_r14);
-       else
-               s390_br   (buf, s390_r1);
-
-       /* Flush instruction cache, since we've generated code */
-       mono_arch_flush_icache (code, buf - code);
-       
-       /* Sanity check */
-       g_assert ((buf - code) <= 512);
-
-       return code;
-}
-
-/*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - mono_arch_create_specific_trampoline                  */
-/*                                                                  */
-/* Function    - Creates the given kind of specific trampoline         */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-
-gpointer
-mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_type, MonoDomain *domain, guint32 *code_len)
-{
-       guint8 *code, *buf, *tramp;
-       gint32 displace;
-
-       tramp = mono_get_trampoline_code (tramp_type);
-
-       /*----------------------------------------------------------*/
-       /* This is the method-specific part of the trampoline. Its  */
-       /* purpose is to provide the generic part with the          */
-       /* MonoMethod *method pointer. We'll use r1 to keep it.     */
-       /*----------------------------------------------------------*/
-       code = buf = mono_domain_code_reserve (domain, SPECIFIC_TRAMPOLINE_SIZE);
-
-       s390_basr (buf, s390_r1, 0);
-       s390_j    (buf, 4);
-       s390_word (buf, arg1);
-       s390_l    (buf, s390_r1, 0, s390_r1, 4);
-       displace = (tramp - buf) / 2;
-       s390_jcl  (buf, S390_CC_UN, displace);
-
-       /* Flush instruction cache, since we've generated code */
-       mono_arch_flush_icache (code, buf - code);
-
-       /* Sanity check */
-       g_assert ((buf - code) <= SPECIFIC_TRAMPOLINE_SIZE);
-
-       if (code_len)
-               *code_len = buf - code;
-       
-       return code;
-}      
-
-/*========================= End of Function ========================*/
-
-gpointer
-mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info, gboolean aot)
-{
-       /* FIXME: implement! */
-       g_assert_not_reached ();
-       return NULL;
-}
index 7f3dd4aadd4b80afa7dff14ef0fa3c4ebb6a441c..7c6d914ebe2fe52f3fea2f72189c37605e6b726f 100644 (file)
@@ -27,6 +27,9 @@
 #define CREATE_FP_OFFSET       CREATE_GR_OFFSET+GR_SAVE_SIZE
 #define CREATE_LMF_OFFSET      CREATE_FP_OFFSET+FP_SAVE_SIZE
 #define CREATE_STACK_SIZE      (CREATE_LMF_OFFSET+2*sizeof(long)+sizeof(MonoLMF))
+#define GENERIC_REG_OFFSET     CREATE_STACK_SIZE + \
+                               S390_REG_SAVE_OFFSET + \
+                               3*sizeof(long)
 
 /*------------------------------------------------------------------*/
 /* Method-specific trampoline code fragment sizes                  */
@@ -343,10 +346,11 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
                s390_lg   (buf, s390_r3, 0, s390_r11, S390_RET_ADDR_OFFSET);
        }
 
-       /* Arg 3: MonoMethod *method. It was put in r1 by the
-          method-specific trampoline code, and then saved before the call
-          to mono_get_lmf_addr()'. */
-       s390_lg  (buf, s390_r4, 0, STK_BASE, METHOD_SAVE_OFFSET);
+       /* Arg 3: Trampoline argument */
+       if (tramp_type == MONO_TRAMPOLINE_GENERIC_CLASS_INIT)
+               s390_lg (buf, s390_r4, 0, STK_BASE, GENERIC_REG_OFFSET);
+       else
+               s390_lg (buf, s390_r4, 0, STK_BASE, METHOD_SAVE_OFFSET);
 
        /* Arg 4: trampoline address. Ignore for now */
                
@@ -387,16 +391,18 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        s390_lgr  (buf, STK_BASE, s390_r11);
        s390_lmg  (buf, s390_r6, s390_r14, STK_BASE, S390_REG_SAVE_OFFSET);
 
-       if (tramp_type == MONO_TRAMPOLINE_CLASS_INIT || tramp_type == MONO_TRAMPOLINE_GENERIC_CLASS_INIT)
-               s390_br (buf, s390_r14);
-       else
-               s390_br (buf, s390_r1);
+       if (MONO_TRAMPOLINE_TYPE_MUST_RETURN(tramp_type)) {
+               s390_lgr (buf, s390_r2, s390_r1);
+               s390_br  (buf, s390_r14);
+       } else {
+               s390_br  (buf, s390_r1);
+       }
 
        /* Flush instruction cache, since we've generated code */
        mono_arch_flush_icache (code, buf - code);
        
        if (info)
-               *info = mono_tramp_info_create (mono_get_generic_trampoline_name(tramp_type), 
+               *info = mono_tramp_info_create (mono_get_generic_trampoline_name(tramp_type),
                                                buf, buf - code, ji, unwind_ops);
 
        /* Sanity check */
@@ -435,7 +441,7 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
        s390_llong(buf, arg1);
        s390_lg   (buf, s390_r1, 0, s390_r1, 4);
        displace = (tramp - buf) / 2;
-       s390_jcl  (buf, S390_CC_UN, displace);
+       s390_jg   (buf, displace);
 
        /* Flush instruction cache, since we've generated code */
        mono_arch_flush_icache (code, buf - code);
@@ -462,9 +468,204 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
 gpointer
 mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info, gboolean aot)
 {
-       /* FIXME: implement! */
+#ifdef MONO_ARCH_VTABLE_REG
+       guint8 *tramp;
+       guint8 *code, *buf;
+       guint8 **rgctx_null_jumps;
+       gint32 displace;
+       int tramp_size,
+           depth, 
+           index, 
+           iPatch = 0,
+           i;
+       gboolean mrgctx;
+       MonoJumpInfo *ji = NULL;
+       GSList *unwind_ops = NULL;
+
+       mrgctx = MONO_RGCTX_SLOT_IS_MRGCTX (slot);
+       index = MONO_RGCTX_SLOT_INDEX (slot);
+       if (mrgctx)
+               index += MONO_SIZEOF_METHOD_RUNTIME_GENERIC_CONTEXT / sizeof (gpointer);
+       for (depth = 0; ; ++depth) {
+               int size = mono_class_rgctx_get_array_size (depth, mrgctx);
+
+               if (index < size - 1)
+                       break;
+               index -= size - 1;
+       }
+
+       tramp_size = 48 + 16 * depth;
+       if (mrgctx)
+               tramp_size += 4;
+       else
+               tramp_size += 12;
+
+       code = buf = mono_global_codeman_reserve (tramp_size);
+
+       unwind_ops = mono_arch_get_cie_program ();
+
+       rgctx_null_jumps = g_malloc (sizeof (guint8*) * (depth + 2));
+
+       if (mrgctx) {
+               /* get mrgctx ptr */
+               s390_lgr (code, s390_r1, s390_r2);
+       } else {
+               /* load rgctx ptr from vtable */
+               s390_lg (code, s390_r1, 0, s390_r2, G_STRUCT_OFFSET(MonoVTable, runtime_generic_context));
+               /* is the rgctx ptr null? */
+               s390_ltgr (code, s390_r1, s390_r1);
+               /* if yes, jump to actual trampoline */
+               rgctx_null_jumps [iPatch++] = code;
+               s390_jge (code, 0);
+       }
+
+       for (i = 0; i < depth; ++i) {
+               /* load ptr to next array */
+               if (mrgctx && i == 0)
+                       s390_lg (code, s390_r1, 0, s390_r1, MONO_SIZEOF_METHOD_RUNTIME_GENERIC_CONTEXT);
+               else
+                       s390_lg (code, s390_r1, 0, s390_r1, 0);
+               s390_ltgr (code, s390_r1, s390_r1);
+               /* if the ptr is null then jump to actual trampoline */
+               rgctx_null_jumps [iPatch++] = code;
+               s390_jge (code, 0);
+       }
+
+       /* fetch slot */
+       s390_lg (code, s390_r1, 0, s390_r1, (sizeof (gpointer) * (index  + 1)));
+       /* is the slot null? */
+       s390_ltgr (code, s390_r1, s390_r1);
+       /* if yes, jump to actual trampoline */
+       rgctx_null_jumps [iPatch++] = code;
+       s390_jge (code, 0);
+       /* otherwise return r1 */
+       s390_lgr (code, s390_r2, s390_r1);
+       s390_br  (code, s390_r14);
+
+       for (i = 0; i < iPatch; i++) {
+               displace = ((uintptr_t) code - (uintptr_t) rgctx_null_jumps[i]) / 2;
+               s390_patch_rel ((rgctx_null_jumps [i] + 2), displace);
+       }
+
+       g_free (rgctx_null_jumps);
+
+       /* move the rgctx pointer to the VTABLE register */
+       s390_lgr (code, MONO_ARCH_VTABLE_REG, s390_r2);
+
+       tramp = mono_arch_create_specific_trampoline (GUINT_TO_POINTER (slot),
+               MONO_TRAMPOLINE_RGCTX_LAZY_FETCH, mono_get_root_domain (), NULL);
+
+       /* jump to the actual trampoline */
+       displace = (tramp - code) / 2;
+       s390_jg (code, displace);
+
+       mono_arch_flush_icache (buf, code - buf);
+
+       g_assert (code - buf <= tramp_size);
+
+       if (info) {
+               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+               g_free (name);
+       }
+
+       return(buf);
+#else
        g_assert_not_reached ();
-       return NULL;
+#endif
+       return(NULL);
+}      
+
+/*========================= End of Function ========================*/
+
+/*------------------------------------------------------------------*/
+/*                                                                  */
+/* Name        - mono_arch_get_static_rgctx_trampoline             */
+/*                                                                  */
+/* Function    - Create a trampoline which sets RGCTX_REG to MRGCTX*/
+/*               then jumps to ADDR.                               */
+/*                                                                  */
+/*------------------------------------------------------------------*/
+
+gpointer
+mono_arch_get_static_rgctx_trampoline (MonoMethod *m, 
+                                       MonoMethodRuntimeGenericContext *mrgctx, 
+                                       gpointer addr)
+{
+       guint8 *code, *start;
+       gint32 displace;
+       int buf_len;
+
+       MonoDomain *domain = mono_domain_get ();
+
+       buf_len = 32;
+
+       start = code = mono_domain_code_reserve (domain, buf_len);
+
+       s390_basr (code, s390_r1, 0);
+       s390_j    (code, 6);
+       s390_llong(code, mrgctx);
+       s390_lg   (code, MONO_ARCH_RGCTX_REG, 0, s390_r1, 4);
+       displace = ((uintptr_t) addr - (uintptr_t) code) / 2;
+       s390_jg   (code, displace);
+       g_assert ((code - start) < buf_len);
+
+       mono_arch_flush_icache (start, code - start);
+
+       return(start);
 }      
 
 /*========================= End of Function ========================*/
+
+/*------------------------------------------------------------------*/
+/*                                                                  */
+/* Name                - mono_arch_create_generic_class_init_trampoline    */
+/*                                                                  */
+/* Function    -                                                   */
+/*                                                                  */
+/*------------------------------------------------------------------*/
+
+gpointer
+mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean aot)
+{
+       guint8 *tramp;
+       guint8 *code, *buf;
+       static int byte_offset = -1;
+       static guint8 bitmask;
+       guint8 *jump;
+       gint32 displace;
+       int tramp_size;
+       GSList *unwind_ops = NULL;
+       MonoJumpInfo *ji = NULL;
+
+       tramp_size = 48;
+
+       code = buf = mono_global_codeman_reserve (tramp_size);
+
+       unwind_ops = mono_arch_get_cie_program ();
+
+       if (byte_offset < 0)
+               mono_marshal_find_bitfield_offset (MonoVTable, initialized, &byte_offset, &bitmask);
+
+       s390_llgc(code, s390_r0, 0, MONO_ARCH_VTABLE_REG, byte_offset);
+       s390_nill(code, s390_r0, bitmask);
+       s390_bnzr(code, s390_r14);
+
+       tramp = mono_arch_create_specific_trampoline (NULL, MONO_TRAMPOLINE_GENERIC_CLASS_INIT,
+               mono_get_root_domain (), NULL);
+
+       /* jump to the actual trampoline */
+       displace = (tramp - code) / 2;
+       s390_jg (code, displace);
+
+       mono_arch_flush_icache (buf, code - buf);
+
+       g_assert (code - buf <= tramp_size);
+
+       if (info)
+               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
+
+       return(buf);
+}
+
+/*========================= End of Function ========================*/
index 83cdee58228d06aa7ebb79d80c97424309c4b58a..592d0c603d1cab714ce3f56520092360435da702 100644 (file)
@@ -40,16 +40,16 @@ gpointer
 mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr)
 {
        guint8 *code, *start;
-       int this_pos = 4;
+       int this_pos = 4, size = NACL_SIZE(16, 32);
        MonoDomain *domain = mono_domain_get ();
 
-       start = code = mono_domain_code_reserve (domain, 16);
+       start = code = mono_domain_code_reserve (domain, size);
 
        x86_alu_membase_imm (code, X86_ADD, X86_ESP, this_pos, sizeof (MonoObject));
        x86_jump_code (code, addr);
-       g_assert ((code - start) < 16);
+       g_assert ((code - start) < size);
 
-       nacl_domain_code_validate (domain, &start, 16, &code);
+       nacl_domain_code_validate (domain, &start, size, &code);
 
        return start;
 }
@@ -62,7 +62,7 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m, MonoMethodRuntimeGenericCo
 
        MonoDomain *domain = mono_domain_get ();
 
-       buf_len = 10;
+       buf_len = NACL_SIZE (10, 32);
 
        start = code = mono_domain_code_reserve (domain, buf_len);
 
@@ -554,7 +554,7 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
        mono_arch_flush_icache (buf, code - buf);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("nullified_class_init_trampoline"), buf, code - buf, NULL, NULL);
+               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
 
        if (mono_jit_map_is_enabled ())
                mono_emit_jit_tramp (buf, code - buf, "nullified_class_init_trampoline");
@@ -682,8 +682,11 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create (mono_get_rgctx_fetch_trampoline_name (slot), buf, code - buf, ji, unwind_ops);
+       if (info) {
+               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+               g_free (name);
+       }
 
        return buf;
 }
@@ -782,7 +785,7 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
        nacl_global_codeman_validate (&buf, tramp_size, &code);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("generic_class_init_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -931,7 +934,7 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot)
        nacl_global_codeman_validate (&buf, tramp_size, &code);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("monitor_enter_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("monitor_enter_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -1046,7 +1049,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("monitor_exit_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("monitor_exit_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
index c873a1d243b809827baab1f627e26a243e0814bd..c2a31ce1ea3532db21c42ecd459079fa733bfac2 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "mini.h"
 
-#if defined(HOST_WIN32) || !defined(HAVE_SYS_IPC_H) || !defined(HAVE_SYS_SEM_H)
+#if defined(HOST_WIN32) || !defined(HAVE_SYS_IPC_H) || !defined(HAVE_SYS_SEM_H) || (defined(__native_client__) && defined(__GLIBC__))
 
 int mini_wapi_hps (int argc, char **argv)
 {
index f32deb0cc045cb53f15f7cebcf75ff35c77f685f..9081b6f191a444435654128465cd312e5a6d9dbd 100644 (file)
@@ -105,9 +105,13 @@ struct jit_descriptor
 /* GDB puts a breakpoint in this function.  */
 void MONO_NOINLINE __jit_debug_register_code(void);
 
-/* Make sure to specify the version statically, because the
-   debugger may check the version before we can set it.  */
-struct jit_descriptor __jit_debug_descriptor = { 1, 0, 0, 0 };
+#if !defined(MONO_LLVM_LOADED) && defined(ENABLE_LLVM)
+
+/* LLVM already defines these */
+
+extern struct jit_descriptor __jit_debug_descriptor;
+
+#else
 
 /* gcc seems to inline/eliminate calls to noinline functions, thus the asm () */
 void MONO_NOINLINE __jit_debug_register_code(void) {
@@ -116,6 +120,12 @@ void MONO_NOINLINE __jit_debug_register_code(void) {
 #endif
 }
 
+/* Make sure to specify the version statically, because the
+   debugger may check the version before we can set it.  */
+struct jit_descriptor __jit_debug_descriptor = { 1, 0, 0, 0 };
+
+#endif
+
 static MonoImageWriter *xdebug_w;
 static MonoDwarfWriter *xdebug_writer;
 static FILE *xdebug_fp, *il_file;
@@ -157,7 +167,7 @@ mono_xdebug_init (char *options)
 
        img_writer_emit_start (w);
 
-       xdebug_writer = mono_dwarf_writer_create (w, il_file, 0, TRUE);
+       xdebug_writer = mono_dwarf_writer_create (w, il_file, 0, TRUE, TRUE);
 
        /* Emit something so the file has a text segment */
        img_writer_emit_section_change (w, ".text", 0);
@@ -180,7 +190,7 @@ xdebug_begin_emit (MonoImageWriter **out_w, MonoDwarfWriter **out_dw)
        if (!il_file)
                il_file = fopen ("xdb.il", "w");
 
-       dw = mono_dwarf_writer_create (w, il_file, il_file_line_index, FALSE);
+       dw = mono_dwarf_writer_create (w, il_file, il_file_line_index, FALSE, TRUE);
 
        mono_dwarf_writer_emit_base_info (dw, mono_unwind_get_cie_program ());
 
index 7d103d3d5fc992921d06a8355704cce0d254e850..27f1a5f3cf9cf801d857e750382395fcb80cccff 100644 (file)
@@ -18,6 +18,11 @@ static int max_depth = 6;
 static int verbose = 0;
 static const char *graph_properties = "\tnode [fontsize=8.0]\n\tedge [len=2,color=red]\n";
 
+#if defined(__native_client__) || defined(__native_client_codegen__)
+volatile int __nacl_thread_suspension_needed = 0;
+void __nacl_suspend_thread_if_needed() {}
+#endif
+
 static void
 output_type_edge (MonoClass *first, MonoClass *second) {
        if (include_namespace)
@@ -1200,5 +1205,3 @@ main (int argc, char *argv[]) {
                fclose (output);
        return 0;
 }
-
-
index a6f029ab59049bd9db9348715527bbd936609c9b..25bb9b51f707d608ed13a4e80d042ebdb38f6349 100644 (file)
@@ -82,7 +82,11 @@ MCS = $(RUNTIME) $(mcs_topdir)/class/lib/build/mcs.exe -unsafe -nowarn:0162 -now
 testlog: $(PLOG_TESTS)
        $(with_mono_path) perl $(srcdir)/ptestrunner.pl $(top_builddir)
 
+if NACL_CODEGEN
+check-local:
+else
 check-local: testlog
+endif
 
 EXTRA_DIST=utils.c utils.h proflog.h log-profiler.txt perf_event.h \
        $(PLOG_TESTS_SRC) ptestrunner.pl
index 1f893ce8128de73911cd3db3216dcb675ccc970e..1383ae90b27e10fb2f9434cd9e856184a82fd5d3 100644 (file)
 #define HASH_SIZE 9371
 #define SMALL_HASH_SIZE 31
 
+#if defined(__native_client__) || defined(__native_client_codegen__)
+volatile int __nacl_thread_suspension_needed = 0;
+void __nacl_suspend_thread_if_needed() {}
+#endif
+
 static int debug = 0;
 static int collect_traces = 0;
 static int show_traces = 0;
index a7b9969c9404244549569475b6210c3b99a52180..bc0dd2c1b65cc1ad70d71a62ae54332c18750afa 100644 (file)
@@ -23,7 +23,7 @@
 #include <mono/metadata/threads.h>
 #include <mono/metadata/profiler.h>
 #include <mono/metadata/loader.h>
-#include <mono/io-layer/mono-mutex.h>
+#include <mono/utils/mono-mutex.h>
 
 #define LOCATION_INDENT "        "
 #define BACKTRACE_SIZE 64
@@ -532,7 +532,7 @@ void mono_profiler_startup (const char *desc)
 {
        MonoProfiler *prof = g_new0 (MonoProfiler, 1);
 
-       mono_mutex_init (&mismatched_files_section, NULL);
+       mono_mutex_init (&mismatched_files_section);
        prof->mismatched_files_hash = g_hash_table_new (mismatched_files_guint32_hash, mismatched_files_guint32_equal);
        prof->saved_strings_hash = g_hash_table_new (NULL, NULL);
        prof->string_locations_hash = g_hash_table_new (mismatched_files_guint32_hash, mismatched_files_guint32_equal);
index afdb911315a36013562ec58cb4e5400c4b881c04..24fade03a89f600bbabd0473480706d6022441a8 100644 (file)
@@ -13,6 +13,7 @@
 #include <mono/metadata/threads.h>
 #include <mono/metadata/mono-gc.h>
 #include <mono/metadata/debug-helpers.h>
+#include <mono/utils/atomic.h>
 #include <stdlib.h>
 #include <string.h>
 #include <assert.h>
@@ -1139,7 +1140,7 @@ thread_name (MonoProfiler *prof, uintptr_t tid, const char *name)
 }
 
 #ifndef HOST_WIN32
-#include "mono/io-layer/atomic.h"
+#include "mono/utils/atomic.h"
 #endif
 #define cmp_exchange InterlockedCompareExchangePointer
 /*#else
@@ -1544,7 +1545,7 @@ dump_sample_hits (MonoProfiler *prof, StatBuffer *sbuf, int recurse)
                logbuffer = ensure_logbuf (20 + count * 8);
                emit_byte (logbuffer, TYPE_SAMPLE | TYPE_SAMPLE_HIT);
                emit_value (logbuffer, type);
-               emit_uvalue (logbuffer, (prof->startup_time + sample [2]) * 10000);
+               emit_uvalue (logbuffer, prof->startup_time + (uint64_t)sample [2] * (uint64_t)10000);
                emit_value (logbuffer, count);
                for (i = 0; i < count; ++i) {
                        emit_ptr (logbuffer, (void*)sample [i + 3]);
index e9d94af800e9a2606952722e32a4d712d24265db..c900988048711d9c8af79ec01e5d3877b7d27dc6 100644 (file)
@@ -26,3 +26,6 @@
 /tests-config
 /TAGS
 /runtime-invoke.gen.cs
+/*.exe.dylib
+/*.exe.dylib.dSYM
+
index 455a4b159409ec7d342845a5cc1b01e7fb533627..95c281f5982499569357091b6940238b53a87b67 100644 (file)
@@ -388,7 +388,8 @@ BASE_TEST_CS_SRC=           \
        bug-6148.cs     \
        assembly_append_ordering.cs     \
        bug-10127.cs    \
-       allow-synchronous-major.cs
+       allow-synchronous-major.cs      \
+       unload-appdomain-on-shutdown.cs
 
 TEST_CS_SRC_DIST=      \
        $(BASE_TEST_CS_SRC)     \
@@ -441,11 +442,96 @@ if MIPS
 PLATFORM_DISABLED_TESTS=filter-stack.exe monitor.exe
 endif
 
-if S390x
+if S390X
 PLATFORM_DISABLED_TESTS=dynamic-method-resurrection.exe
 #PLATFORM_DISABLED_TESTS=dynamic-method-resurrection.exe exception17.exe
 endif
 
+if NACL_CODEGEN
+# Tests that use Thread.Abort()
+PLATFORM_DISABLED_TESTS= abort-stress-1.exe \
+                         abort-stress-2.exe \
+                         abort-stress-3.exe \
+                         appdomain-thread-abort.exe \
+                         async-exc-compilation.exe \
+                         bug-561239.exe \
+                         bug-70561.exe \
+                         finalizer-abort.exe \
+                         finally_guard.exe \
+                         main-returns-abort-resetabort.exe \
+                         main-returns-background-abort-resetabort.exe \
+                         thread6.exe \
+                         threadpool-exceptions5.exe \
+                         threadpool-exceptions6.exe
+
+# Tests that rely on AppDomain.Unload
+PLATFORM_DISABLED_TESTS+= appdomain-async-invoke.exe \
+                          appdomain-exit.exe \
+                          appdomain-unload-callback.exe \
+                          appdomain-unload.exe \
+                          domain-stress.exe \
+                          generic-unloading.2.exe \
+                          monitor.exe \
+                          remoting4.exe \
+                          threadpool-exceptions7.exe \
+                          xdomain-threads.exe
+
+# pinvoke2 attaches a thread to the runtime, but
+# doesn't 'unattach' it and it hangs in GC on exit
+PLATFORM_DISABLED_TESTS+= pinvoke2.exe
+
+# Tests that currently hang waiting for non-main threads
+# to exit in NaCl, need to investigate.  Most are AppDomain
+# creation and Delegate tests.
+PLATFORM_DISABLED_TESTS+= appdomain1.exe \
+                          delegate9.exe \
+                          marshal-valuetypes.exe \
+                          cross-domain.exe \
+                          stackframes-async.2.exe \
+                          generic-marshalbyref.2.exe \
+                          generic-xdomain.2.exe \
+                          bug-415577.exe
+
+# Tests that fail trying to write files (appdomain create mostly)
+PLATFORM_DISABLED_TESTS+= bug-335131.2.exe \
+                          bug-349190.2.exe \
+                          bug-80307.exe \
+                          bug-462592.exe
+
+# FIXME: don't know why delegate2.exe fails, it shouldn't
+PLATFORM_DISABLED_TESTS+= delegate2.exe
+
+# These tests newly fail with the latest revision. pinvoke3 fails because
+# of a thread attach, the others have not been investigated.  TODO revisit.
+PLATFORM_DISABLED_TESTS+= pinvoke3.exe \
+                          async_read.exe \
+                          async-with-cb-throws.exe \
+                          appdomain-unload-doesnot-raise-pending-events.exe \
+                          gsharing-valuetype-layout.exe
+
+if X86
+# FIXME: There are problems with async callbacks and results on NaCl 32-bit
+PLATFORM_DISABLED_TESTS+= delegate1.exe \
+                          delegate3.exe \
+                          delegate5.exe \
+                          delegate8.exe \
+                          threadpool.exe \
+                          threadpool1.exe \
+                          threadpool-exceptions3.exe \
+                          bug-323114.exe \
+                          delegate-exit.exe \
+                          bug-80392.2.exe
+
+# FIXME: These tests hang/fail for unknown reasons, deal with exiting
+PLATFORM_DISABLED_TESTS+= main-returns-background-resetabort.exe \
+                          main-returns-background.exe \
+                          main-returns-background-change.exe
+endif
+
+endif
+
+# The two finalizer tests only work under sgen
+# gc-altstack.exe fails under boehm because it has no support for altstack
 # bug-459094.exe creates an extremely deep directory tree
 # delegate-invoke.exe depends on 929c6bc9b6d76a273f251e6f5dfacac36e9c38bd which was
 # reverted.
@@ -461,15 +547,11 @@ DISABLED_TESTS_WRENCH=    \
        $(PLATFORM_DISABLED_TESTS_WRENCH)       \
        main-returns-background-resetabort.exe \
        main-returns-background-abort-resetabort.exe    \
-       main-returns-background.exe     \
        thread6.exe     \
        assemblyresolve_event3.exe \
        delegate2.exe   \
-       finally_guard.exe       \
-       finalizer-abort.exe     \
-       finalizer-exit.exe      \
-       finalizer-thread.exe \
-       appdomain-async-invoke.exe
+       finally_guard.exe \
+       gc-altstack.exe
 
 AOT_DISABLED_TESTS=constraints-load.exe
 
@@ -599,17 +681,25 @@ tests: $(TESTSI_CS) $(TESTSI_IL) $(TESTBS) libtest.la $(PREREQSI_IL) $(PREREQSI_
 # Test that no symbols are missed in eglib-remap.h
 #
 OK_G_SYMBOLS='g_list\|g_slist\|g_concat_dir_and_file'
+if NACL_CODEGEN
+test-eglib-remap:
+else
 test-eglib-remap:
        @echo "Testing eglib remap..."
        @if which nm > /dev/null; then if nm $(top_builddir)/mono/mini/mono | grep -v $(OK_G_SYMBOLS) | grep 't g_'; then exit 1; else exit 0; fi; fi
+endif
 
 #
 # Tests that the internals in mono/io-layer/messages.c are ok by triggering the 
 # code that checks that the table is properly sorted
 #
+if NACL_CODEGEN
+test-messages:
+else
 test-messages: w32message.exe
        > test_messages.zero
        $(with_mono_path) $(JITTEST_PROG_RUN) w32message.exe >& w32message.allout && cmp test_messages.zero w32message.allout
+endif
 
 if MOONLIGHT
 test_2_1 : test-coreclr-security
@@ -626,14 +716,14 @@ else
 if ARM
 test-sgen : sgen-tests
 else
-if S390x
+if S390X
 test-sgen : sgen-regular-tests
 endif
 endif
 endif
 endif
 
-test: assemblyresolve/test/asm.dll testjit test-generic-sharing test-type-load test_platform test_2_1 test-process-exit test-sgen test-messages rm-empty-logs
+test: assemblyresolve/test/asm.dll testjit test-generic-sharing test-type-load test_platform test_2_1 test-process-exit test-messages rm-empty-logs
 test-wrench: assemblyresolve/test/asm.dll testjit-wrench test-generic-sharing test-type-load test_platform test_2_1 test-process-exit test-sgen test-messages rm-empty-logs
 
 # Remove empty .stdout and .stderr files for wrench
@@ -786,7 +876,7 @@ test-type-load: TestDriver.dll
        @$(RUNTIME) load-exceptions.exe > load-exceptions.exe.stdout 2> load-exceptions.exe.stderr
 
 
-EXTRA_DIST += sgen-bridge.cs sgen-descriptors.cs sgen-gshared-vtype.cs sgen-bridge-major-fragmentation.cs sgen-domain-unload.cs sgen-weakref-stress.cs sgen-cementing-stress.cs sgen-case-23400.cs     finalizer-wait.cs critical-finalizers.cs
+EXTRA_DIST += sgen-bridge.cs sgen-descriptors.cs sgen-gshared-vtype.cs sgen-bridge-major-fragmentation.cs sgen-domain-unload.cs sgen-weakref-stress.cs sgen-cementing-stress.cs sgen-case-23400.cs     finalizer-wait.cs critical-finalizers.cs sgen-domain-unload-2.cs sgen-suspend.cs
 
 
 #those are actually configurations, eg plain_sgen-descriptors.exe
@@ -1039,8 +1129,12 @@ test-generic-sharing-normal: $(GSHARED_TESTS)
 test-generic-sharing-managed: test-runner.exe $(GSHARED_TESTS)
        @$(RUNTIME) ./test-runner.exe -j a --opt-sets "gshared gshared,shared gshared,-inline gshared,-inline,shared" $(GSHARED_TESTS)
 
+if NACL_CODEGEN
+test-generic-sharing:
+else
 test-generic-sharing:
        @if test x$(M) != x; then $(MAKE) test-generic-sharing-managed; else $(MAKE) test-generic-sharing-normal; fi
+endif
 
 EXTRA_DIST += async-exceptions.cs
 async-exceptions.exe : async-exceptions.cs
@@ -1062,6 +1156,10 @@ patch-libtool:
        sed -e 's,LIBTOOL =,LIBTOOL2 =,g' Makefile > 2 && echo "LIBTOOL = bash ./libtool" > 1 && cat 1 2 > Makefile
        touch libtest.c
 
+
+if NACL_CODEGEN
+test-process-exit:
+else
 EXTRA_DIST += bug-438454.cs bug-438454.exe.stdout.expected threadpool-in-processexit.cs threadpool-in-processexit.exe.stdout.expected
 test-process-exit:
        @$(MCS) $(srcdir)/bug-438454.cs -out:bug-438454.exe
@@ -1072,6 +1170,7 @@ test-process-exit:
        @echo "Testing threadpool-in-processexit.exe..."
        @$(RUNTIME) threadpool-in-processexit.exe > threadpool-in-processexit.exe.stdout
        @diff -w threadpool-in-processexit.exe.stdout $(srcdir)/threadpool-in-processexit.exe.stdout.expected
+endif
 
 OOM_TESTS =    \
        gc-oom-handling.exe     \
index 08e9880f87716ca673fa4e96456c38241475f9f9..fbfdcbbb16b763ad02e9852402e36055c2c0e64a 100644 (file)
@@ -66,42 +66,81 @@ public class Tests
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_sbyte([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_sbyte_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_byte([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_byte_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_short([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_short_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_ushort([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_ushort_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_int([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_int_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_uint([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_uint_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_long([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_long_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_ulong([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_ulong_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_float([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_float_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_double([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_double_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_bstr ([MarshalAs (UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_bstr_byref ([MarshalAs (UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_bool_true ([MarshalAs (UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_bool_true_byref ([MarshalAs (UnmanagedType.Struct)]out object obj);
+
        [DllImport ("libtest")]
        public static extern int mono_test_marshal_variant_out_bool_false ([MarshalAs (UnmanagedType.Struct)]out object obj);
 
+       [DllImport ("libtest")]
+       public static extern int mono_test_marshal_variant_out_bool_false_byref ([MarshalAs (UnmanagedType.Struct)]out object obj);
+
 
        public delegate int VarFunc (VarEnum vt, [MarshalAs (UnmanagedType.Struct)] object obj);
 
@@ -389,6 +428,29 @@ public class Tests
                        if (mono_test_marshal_variant_out_bool_true_unmanaged (reffunc) != 0)
                                return 61;
 
+                       if (mono_test_marshal_variant_out_sbyte_byref (out obj) != 0 || (sbyte)obj != 100)
+                               return 97;
+                       if (mono_test_marshal_variant_out_byte_byref (out obj) != 0 || (byte)obj != 100)
+                               return 98;
+                       if (mono_test_marshal_variant_out_short_byref (out obj) != 0 || (short)obj != 314)
+                               return 99;
+                       if (mono_test_marshal_variant_out_ushort_byref (out obj) != 0 || (ushort)obj != 314)
+                               return 100;
+                       if (mono_test_marshal_variant_out_int_byref (out obj) != 0 || (int)obj != 314)
+                               return 101;
+                       if (mono_test_marshal_variant_out_uint_byref (out obj) != 0 || (uint)obj != 314)
+                               return 102;
+                       if (mono_test_marshal_variant_out_long_byref (out obj) != 0 || (long)obj != 314)
+                               return 103;
+                       if (mono_test_marshal_variant_out_ulong_byref (out obj) != 0 || (ulong)obj != 314)
+                               return 104;
+                       if (mono_test_marshal_variant_out_float_byref (out obj) != 0 || ((float)obj - 3.14) / 3.14 > .001)
+                               return 105;
+                       if (mono_test_marshal_variant_out_double_byref (out obj) != 0 || ((double)obj - 3.14) / 3.14 > .001)
+                               return 106;
+                       if (mono_test_marshal_variant_out_bstr_byref (out obj) != 0 || (string)obj != "PI")
+                               return 107;
+
                        #endregion // VARIANT Tests
 
                        #region Runtime Callable Wrapper Tests
index 5720bc1cd415731d1bbe826301f8cd0c2768b102..9b9bf2dc3df4f6d98f2759cf9e1b2f97dcd24fe9 100644 (file)
@@ -8,7 +8,7 @@ class P {
        ~P () {
                T.finalized = true;
                Thread.Sleep (1000);
-               //Console.WriteLine ("finalizer done");
+               // Console.WriteLine ("finalizer done");
                count++;
        }
 }
@@ -22,17 +22,10 @@ class T {
                p = null;
        }
 
-       static void callMakeP (int i) {
-               if (i <= 0)
-               {
-                       makeP ();
-                       return;
-               }
-               callMakeP (i - 1);
-       }
-
        static int Main () {
-               callMakeP (100);
+               var t = new Thread (makeP);
+               t.Start ();
+               t.Join ();
 
                GC.Collect ();
                while (!finalized) {
index 64fc73e2a5db61d6dcac3fdf071353a9cc2d5ab6..869850e94783e302f7fb3e74bf16f3e3c4c3e394 100644 (file)
@@ -10,6 +10,7 @@ descriptor-tests.exe : descriptor-tests.cs
        $(MCS) -Warn:0 descriptor-tests.cs
 
 descriptor-tests.cs : descriptor-tests-driver.cs descriptor-tests-prefix.cs gen-descriptor-tests.py
-       ./gen-descriptor-tests.py >descriptor-tests.cs
+       -cp $^ .
+       $(srcdir)/gen-descriptor-tests.py >descriptor-tests.cs
 
 EXTRA_DIST = descriptor-tests-driver.cs descriptor-tests-prefix.cs gen-descriptor-tests.py
index 643beff42d7f83fe80299c43e04e757329d9fe5a..dc1606e86c9bfe04901c634659e0601ade47cf4e 100644 (file)
@@ -2432,6 +2432,7 @@ typedef struct {
                guint16 uiVal;
                guint32 ulVal;
                guint64 ullVal;
+               gpointer byref;
                struct {
                        gpointer pvRecord;
                        gpointer pRecInfo;
@@ -2660,6 +2661,16 @@ mono_test_marshal_variant_out_sbyte(VARIANT* variant)
        return 0;
 }
 
+LIBTEST_API int STDCALL 
+mono_test_marshal_variant_out_sbyte_byref(VARIANT* variant)
+{
+       variant->vt = VT_I1|VT_BYREF;
+       variant->byref = marshal_alloc(1);
+       *((gint8*)variant->byref) = 100;
+
+       return 0;
+}
+
 LIBTEST_API int STDCALL 
 mono_test_marshal_variant_out_byte(VARIANT* variant)
 {      
@@ -2669,6 +2680,16 @@ mono_test_marshal_variant_out_byte(VARIANT* variant)
        return 0;
 }
 
+LIBTEST_API int STDCALL 
+mono_test_marshal_variant_out_byte_byref(VARIANT* variant)
+{      
+       variant->vt = VT_UI1|VT_BYREF;
+       variant->byref = marshal_alloc(1);
+       *((gint8*)variant->byref) = 100;
+
+       return 0;
+}
+
 LIBTEST_API int STDCALL 
 mono_test_marshal_variant_out_short(VARIANT* variant)
 {
@@ -2678,6 +2699,16 @@ mono_test_marshal_variant_out_short(VARIANT* variant)
        return 0;
 }
 
+LIBTEST_API int STDCALL 
+mono_test_marshal_variant_out_short_byref(VARIANT* variant)
+{
+       variant->vt = VT_I2|VT_BYREF;
+       variant->byref = marshal_alloc(2);
+       *((gint16*)variant->byref) = 314;
+
+       return 0;
+}
+
 LIBTEST_API int STDCALL 
 mono_test_marshal_variant_out_ushort(VARIANT* variant)
 {
@@ -2687,6 +2718,16 @@ mono_test_marshal_variant_out_ushort(VARIANT* variant)
        return 0;
 }
 
+LIBTEST_API int STDCALL 
+mono_test_marshal_variant_out_ushort_byref(VARIANT* variant)
+{
+       variant->vt = VT_UI2|VT_BYREF;
+       variant->byref = marshal_alloc(2);
+       *((guint16*)variant->byref) = 314;
+
+       return 0;
+}
+
 LIBTEST_API int STDCALL 
 mono_test_marshal_variant_out_int(VARIANT* variant)
 {
@@ -2696,6 +2737,16 @@ mono_test_marshal_variant_out_int(VARIANT* variant)
        return 0;
 }
 
+LIBTEST_API int STDCALL 
+mono_test_marshal_variant_out_int_byref(VARIANT* variant)
+{
+       variant->vt = VT_I4|VT_BYREF;
+       variant->byref = marshal_alloc(4);
+       *((gint32*)variant->byref) = 314;
+
+       return 0;
+}
+
 LIBTEST_API int STDCALL 
 mono_test_marshal_variant_out_uint(VARIANT* variant)
 {
@@ -2705,6 +2756,16 @@ mono_test_marshal_variant_out_uint(VARIANT* variant)
        return 0;
 }
 
+LIBTEST_API int STDCALL 
+mono_test_marshal_variant_out_uint_byref(VARIANT* variant)
+{
+       variant->vt = VT_UI4|VT_BYREF;
+       variant->byref = marshal_alloc(4);
+       *((guint32*)variant->byref) = 314;
+
+       return 0;
+}
+
 LIBTEST_API int STDCALL 
 mono_test_marshal_variant_out_long(VARIANT* variant)
 {
@@ -2714,6 +2775,16 @@ mono_test_marshal_variant_out_long(VARIANT* variant)
        return 0;
 }
 
+LIBTEST_API int STDCALL 
+mono_test_marshal_variant_out_long_byref(VARIANT* variant)
+{
+       variant->vt = VT_I8|VT_BYREF;
+       variant->byref = marshal_alloc(8);
+       *((gint64*)variant->byref) = 314;
+
+       return 0;
+}
+
 LIBTEST_API int STDCALL 
 mono_test_marshal_variant_out_ulong(VARIANT* variant)
 {
@@ -2723,6 +2794,16 @@ mono_test_marshal_variant_out_ulong(VARIANT* variant)
        return 0;
 }
 
+LIBTEST_API int STDCALL 
+mono_test_marshal_variant_out_ulong_byref(VARIANT* variant)
+{
+       variant->vt = VT_UI8|VT_BYREF;
+       variant->byref = marshal_alloc(8);
+       *((guint64*)variant->byref) = 314;
+
+       return 0;
+}
+
 LIBTEST_API int STDCALL 
 mono_test_marshal_variant_out_float(VARIANT* variant)
 {
@@ -2732,6 +2813,16 @@ mono_test_marshal_variant_out_float(VARIANT* variant)
        return 0;
 }
 
+LIBTEST_API int STDCALL 
+mono_test_marshal_variant_out_float_byref(VARIANT* variant)
+{
+       variant->vt = VT_R4|VT_BYREF;
+       variant->byref = marshal_alloc(4);
+       *((float*)variant->byref) = 3.14;
+
+       return 0;
+}
+
 LIBTEST_API int STDCALL 
 mono_test_marshal_variant_out_double(VARIANT* variant)
 {
@@ -2741,6 +2832,16 @@ mono_test_marshal_variant_out_double(VARIANT* variant)
        return 0;
 }
 
+LIBTEST_API int STDCALL 
+mono_test_marshal_variant_out_double_byref(VARIANT* variant)
+{
+       variant->vt = VT_R8|VT_BYREF;
+       variant->byref = marshal_alloc(8);
+       *((double*)variant->byref) = 3.14;
+
+       return 0;
+}
+
 LIBTEST_API int STDCALL 
 mono_test_marshal_variant_out_bstr(VARIANT* variant)
 {
@@ -2750,6 +2851,16 @@ mono_test_marshal_variant_out_bstr(VARIANT* variant)
        return 0;
 }
 
+LIBTEST_API int STDCALL 
+mono_test_marshal_variant_out_bstr_byref(VARIANT* variant)
+{
+       variant->vt = VT_BSTR|VT_BYREF;
+       variant->byref = marshal_alloc(sizeof(gpointer));
+       *((gunichar**)variant->byref) = marshal_bstr_alloc("PI");
+
+       return 0;
+}
+
 LIBTEST_API int STDCALL 
 mono_test_marshal_variant_out_bool_true (VARIANT* variant)
 {
@@ -2759,6 +2870,16 @@ mono_test_marshal_variant_out_bool_true (VARIANT* variant)
        return 0;
 }
 
+LIBTEST_API int STDCALL 
+mono_test_marshal_variant_out_bool_true_byref (VARIANT* variant)
+{
+       variant->vt = VT_BOOL|VT_BYREF;
+       variant->byref = marshal_alloc(2);
+       *((gint16*)variant->byref) = VARIANT_TRUE;
+
+       return 0;
+}
+
 LIBTEST_API int STDCALL 
 mono_test_marshal_variant_out_bool_false (VARIANT* variant)
 {
@@ -2768,6 +2889,16 @@ mono_test_marshal_variant_out_bool_false (VARIANT* variant)
        return 0;
 }
 
+LIBTEST_API int STDCALL 
+mono_test_marshal_variant_out_bool_false_byref (VARIANT* variant)
+{
+       variant->vt = VT_BOOL|VT_BYREF;
+       variant->byref = marshal_alloc(2);
+       *((gint16*)variant->byref) = VARIANT_FALSE;
+
+       return 0;
+}
+
 typedef int (STDCALL *VarFunc) (int vt, VARIANT variant);
 typedef int (STDCALL *VarRefFunc) (int vt, VARIANT* variant);
 
index 0c3f5146766f3f47cec68eb1df1f75017eb9b3cb..cb2fc0983757332593bf06f99e62f07cbdb0ed50 100644 (file)
@@ -325,6 +325,21 @@ public class Tests : LoadMissing {
                return 0;
        }
 
+       public static int test_0_reflection_on_field_with_missing_type () {
+               var t = typeof (BadOverridesDriver).Assembly.GetType ("FieldWithMissingType");
+               foreach (var f in t.GetFields (BindingFlags.Public | BindingFlags.Static)) {
+                       try {
+                               Console.WriteLine (f.Name);
+                               f.GetValue (null);
+                               return 1;
+                       } catch (TypeLoadException) {
+                               return 0;
+                       }
+               }
+               return 2;
+       }
+
+
        public static int Main () {
                return TestDriver.RunTests (typeof (Tests));
        }
index f85fea80e95e84a55dc81e2660d4a0098dcb19eb..e3b855ea6198eac86e091661cd38230298c1284c 100644 (file)
                ret\r
        }\r
 }\r
+\r
+.class public auto ansi beforefieldinit FieldWithMissingType\r
+{\r
+       .field  public [t]Missing BrokenField\r
+    .field  public static int32 WorkingField\r
+}\r
index 7ca7bb6275996f29f42a4881dcd2113aa591efe9..a4d02ab1431b7cf04c9fa9ef8aacc2532ea461f6 100644 (file)
@@ -42,6 +42,17 @@ public class Tests {
                [MarshalAs (UnmanagedType.ByValTStr, SizeConst=4)] public string s1;
                public int i;
        }
+
+       [StructLayout (LayoutKind.Sequential, Pack=1)]
+       public struct PackStruct1 {
+               float f;
+       }
+
+       [StructLayout (LayoutKind.Sequential)]
+       public struct PackStruct2 {
+               byte b;
+               PackStruct1 s;
+       }
        
        public unsafe static int Main (String[] args) {
                if (TestDriver.RunTests (typeof (Tests), args) != 0)
@@ -214,4 +225,11 @@ public class Tests {
                        return 3;
                return 0;
        }
+
+       // Check that the 'Pack' directive on a struct changes the min alignment of the struct as well (#12110)
+       public static int test_0_struct_pack () {
+               if (Marshal.OffsetOf (typeof (PackStruct2), "s") != new IntPtr (1))
+                       return 1;
+               return 0;
+       }
 }
index 493fc1e7756b937e938411d30a5aaf661ecebc70..b340cd13065c4eb7a00d1940f03a36a5d728d446 100644 (file)
@@ -178,4 +178,41 @@ class Tests
                //Console.WriteLine (new IntPtr (val));
         return val;
     }
+
+       public static bool pack_u2 (ushort us) {
+               return true;
+       }
+
+       public static bool pack_i2 (short value) {
+               int c = 0;
+               // Force 'value' to be register allocated
+               for (int i = 0; i < value; ++i)
+                       c += value;
+         return value < 0x80;
+       }
+
+       // #11750
+       public static int test_0_i2_u2 () {
+               typeof (Tests).GetMethod ("pack_u2").Invoke (null, new object [] { (ushort)0 });
+               var res = typeof (Tests).GetMethod ("pack_i2").Invoke (null, new object [] { (short)-1 });
+               return (bool)res ? 0 : 1;
+       }
+
+       public static bool pack_bool (bool b) {
+               return true;
+       }
+
+       public static bool pack_i1 (sbyte value) {
+               int c = 0;
+               // Force 'value' to be register allocated
+               for (int i = 0; i < value; ++i)
+                       c += value;
+               return value < -1;
+       }
+
+       public static int test_0_i1_bool () {
+               typeof (Tests).GetMethod ("pack_bool").Invoke (null, new object [] { true });
+               var res = typeof (Tests).GetMethod ("pack_i1").Invoke (null, new object [] { (sbyte)-0x40 });
+               return (bool)res ? 0 : 1;
+       }
 }
diff --git a/mono/tests/sgen-domain-unload-2.cs b/mono/tests/sgen-domain-unload-2.cs
new file mode 100644 (file)
index 0000000..6570842
--- /dev/null
@@ -0,0 +1,43 @@
+using System;
+using System.Threading;
+
+/*
+This test stresses what happens when root domain threads are allocating into the nursery
+while a domain is cleaned up.
+
+This is a regression test for a crash in the domain object cleaner code that did not
+stop-the-world before walking the heap.
+*/
+class Driver {
+
+       static void AllocStuff ()
+       {
+               var x = new object ();
+               for (int i = 0; i < 300; ++i)
+                       x = new byte [i];
+       }
+
+       static void BackgroundNoise ()
+       {
+               while (true)
+                       AllocStuff ();
+       }
+
+       static void Main () {
+               for (int i = 0; i < Math.Max (1, Environment.ProcessorCount / 2); ++i) {
+               // for (int i = 0; i < 4; ++i) {
+                       var t = new Thread (BackgroundNoise);
+                       t.IsBackground = true;
+                       t.Start ();
+               }
+               
+               for (int i = 0; i < 100; ++i) {
+                       var ad = AppDomain.CreateDomain ("domain_" + i);
+                       ad.DoCallBack (new CrossAppDomainDelegate (AllocStuff));
+                       AppDomain.Unload (ad);
+                       Console.Write (".");
+                       if (i > 0 && i % 20 == 0) Console.WriteLine ();
+               }
+               Console.WriteLine ("\ndone");
+       }
+}
\ No newline at end of file
diff --git a/mono/tests/sgen-suspend.cs b/mono/tests/sgen-suspend.cs
new file mode 100644 (file)
index 0000000..10581fe
--- /dev/null
@@ -0,0 +1,55 @@
+using System;
+using System.Threading;
+
+/*
+This test stresses the interaction of the multiple suspend sources and stop-the-world.
+
+Right now the current iteraction that we stresses is between the domain unloader and
+sgen STW. It's mighty hard to get this right on mach.
+*/
+
+class Driver {
+
+       static void AllocStuff ()
+       {
+               var x = new object ();
+               for (int i = 0; i < 300; ++i)
+                       x = new byte [i];
+       }
+
+       static void BackgroundNoise ()
+       {
+               int i = 0;
+               while (true) {
+                       AllocStuff ();
+                       ++i;
+               }
+       }
+
+       static void AppDomainBackgroundNoise ()
+       {
+               for (int i = 0; i < 3; ++i) {
+                       var t = new Thread (BackgroundNoise);
+                       t.IsBackground = true;
+                       t.Start ();
+               }
+       }
+
+       static void Main () {
+               for (int i = 0; i < 3; ++i) {
+                       var t = new Thread (BackgroundNoise);
+                       t.IsBackground = true;
+                       t.Start ();
+               }
+               
+               for (int i = 0; i < 100; ++i) {
+                       var ad = AppDomain.CreateDomain ("domain_" + i);
+                       ad.DoCallBack (new CrossAppDomainDelegate (AppDomainBackgroundNoise));
+                       Thread.Sleep (10);
+                       AppDomain.Unload (ad);
+                       Console.Write (".");
+                       if (i > 0 && i % 20 == 0) Console.WriteLine ();
+               }
+               Console.WriteLine ("\ndone");
+       }
+}
\ No newline at end of file
diff --git a/mono/tests/unload-appdomain-on-shutdown.cs b/mono/tests/unload-appdomain-on-shutdown.cs
new file mode 100644 (file)
index 0000000..9cb13a8
--- /dev/null
@@ -0,0 +1,39 @@
+using System;
+using System.Reflection;
+using System.Threading;
+
+
+class Driver {
+       public static void Bla ()
+       {
+               //DoDomainUnload is invoked as part of the unload sequence, so let's pre jit it here to increase the likehood
+               //of hanging
+               var m = typeof (AppDomain).GetMethod ("DoDomainUnload", BindingFlags.Instance | BindingFlags.NonPublic);
+               if (m != null)
+                       m.MethodHandle.GetFunctionPointer (); 
+       }
+
+       static AppDomain ad;
+       static ManualResetEvent evt = new ManualResetEvent (false);
+       
+       static void UnloadIt ()
+       {
+               //AppDomain.Unload calls AppDomain::getDomainId () before calling into the runtime, so let's pre jit 
+               //it here to increase the likehood of hanging
+               var x = ad.Id;
+               evt.Set ();
+               AppDomain.Unload (ad);
+       }
+       static int Main ()
+       {
+               AppDomain.Unload (AppDomain.CreateDomain ("Warmup unload code"));
+               Console.WriteLine (".");
+               ad = AppDomain.CreateDomain ("NewDomain");
+               ad.DoCallBack (Bla);
+               var t = new Thread (UnloadIt);
+               t.IsBackground = true;
+               t.Start ();
+               evt.WaitOne ();
+               return 0;
+       }
+}
diff --git a/mono/tests/verifier/badmd_constraint_must_be_visible.il b/mono/tests/verifier/badmd_constraint_must_be_visible.il
new file mode 100644 (file)
index 0000000..b580d10
--- /dev/null
@@ -0,0 +1,40 @@
+.assembly extern mscorlib
+{
+.ver 4:0:0:0
+.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
+.assembly 'test'
+{
+.custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() =  (
+01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
+63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01       ) // ceptionThrows.
+
+.hash algorithm 0x00008004
+.ver  0:0:0:0
+}
+.module test.exe // GUID = {EBF85B14-B518-4DFE-8A10-5BBC0D700C94}
+
+.class private auto ansi beforefieldinit Foo`1<(class [mscorlib]Mono.Interop.IUnknown) T> extends [mscorlib]System.Object
+{
+       .method public hidebysig specialname rtspecialname  instance default void '.ctor' ()  cil managed 
+       {
+               .maxstack 8
+               IL_0000:  ldarg.0 
+               IL_0001:  call instance void object::'.ctor'()
+               IL_0006:  ret 
+       }
+}
+
+.class public auto ansi beforefieldinit Driver extends [mscorlib]System.Object
+{
+       .method private static hidebysig default void Main ()  cil managed 
+       {
+               .entrypoint
+               .maxstack 8
+               ldtoken Foo`1
+               call class [mscorlib]System.Type class [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
+               call void class [mscorlib]System.Console::WriteLine(object)
+               IL_0000:  ret 
+       }
+}
+
diff --git a/mono/tests/verifier/invalid_bad_catch_clause_type.il b/mono/tests/verifier/invalid_bad_catch_clause_type.il
new file mode 100755 (executable)
index 0000000..44d5c2d
--- /dev/null
@@ -0,0 +1,152 @@
+
+//  Microsoft (R) .NET Framework IL Disassembler.  Version 4.0.30319.17929
+//  Copyright (c) Microsoft Corporation.  All rights reserved.
+
+
+
+// Metadata version: v4.0.30319
+.assembly extern mscorlib
+{
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
+  .ver 4:0:0:0
+}
+.assembly 'test-901'
+{
+  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
+                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.module 'test-901.exe'
+// MVID: {66ECA143-8B2A-47EB-A840-23ED00E2033E}
+.imagebase 0x00400000
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003       // WINDOWS_CUI
+.corflags 0x00000001    //  ILONLY
+// Image base: 0x00620000
+
+
+// =============== CLASS MEMBERS DECLARATION ===================
+
+.class public auto ansi beforefieldinit Application
+       extends [mscorlib]System.Object
+{
+  .class auto ansi sealed nested private beforefieldinit '<foo>c__async0`1'<.ctor ([mscorlib]System.Exception, [mscorlib]System.Runtime.Serialization.ISerializable, [mscorlib]System.Runtime.InteropServices._Exception) TException>
+         extends [mscorlib]System.ValueType
+         implements [mscorlib]System.Runtime.CompilerServices.IAsyncStateMachine
+  {
+    .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) 
+    .field assembly valuetype [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder $builder
+    .field assembly int32 $PC
+    .method public hidebysig newslot virtual final 
+            instance void  MoveNext() cil managed
+    {
+      // Code size       94 (0x5e)
+      .maxstack  3
+      .locals init (class [mscorlib]System.Exception V_0)
+      IL_0000:  ldarg.0
+      IL_0001:  ldfld      int32 valuetype Application/'<foo>c__async0`1'<!TException>::$PC
+      IL_0006:  ldarg.0
+      IL_0007:  ldc.i4.m1
+      IL_0008:  stfld      int32 valuetype Application/'<foo>c__async0`1'<!TException>::$PC
+      IL_000d:  brtrue     IL_005d
+
+      .try
+      {
+        IL_0012:  call       !!0 [mscorlib]System.Activator::CreateInstance<!TException>()
+        IL_0017:  box        !TException
+        IL_001c:  throw
+
+      }  // end .try
+      catch !!0
+      {
+        IL_001d:  pop
+        IL_001e:  ldstr      "caught in correct block"
+        IL_0023:  call       void [mscorlib]System.Console::WriteLine(string)
+        IL_0028:  leave      IL_0052
+
+      }  // end handler
+      catch [mscorlib]System.Exception 
+      {
+        IL_002d:  stloc.0
+        IL_002e:  ldstr      "caught in generic block"
+        IL_0033:  call       void [mscorlib]System.Console::WriteLine(string)
+        IL_0038:  ldstr      "type: "
+        IL_003d:  ldloc.0
+        IL_003e:  callvirt   instance class [mscorlib]System.Type [mscorlib]System.Exception::GetType()
+        IL_0043:  call       string [mscorlib]System.String::Concat(object,
+                                                                    object)
+        IL_0048:  call       void [mscorlib]System.Console::WriteLine(string)
+        IL_004d:  leave      IL_0052
+
+      }  // end handler
+      IL_0052:  ldarg.0
+      IL_0053:  ldflda     valuetype [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder valuetype Application/'<foo>c__async0`1'<!TException>::$builder
+      IL_0058:  call       instance void [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder::SetResult()
+      IL_005d:  ret
+    } // end of method '<foo>c__async0`1'::MoveNext
+
+    .method public hidebysig newslot virtual final 
+            instance void  SetStateMachine(class [mscorlib]System.Runtime.CompilerServices.IAsyncStateMachine stateMachine) cil managed
+    {
+      .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) 
+      // Code size       13 (0xd)
+      .maxstack  8
+      IL_0000:  ldarg.0
+      IL_0001:  ldflda     valuetype [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder valuetype Application/'<foo>c__async0`1'<!TException>::$builder
+      IL_0006:  ldarg.1
+      IL_0007:  call       instance void [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder::SetStateMachine(class [mscorlib]System.Runtime.CompilerServices.IAsyncStateMachine)
+      IL_000c:  ret
+    } // end of method '<foo>c__async0`1'::SetStateMachine
+
+  } // end of class '<foo>c__async0`1'
+
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    // Code size       7 (0x7)
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  } // end of method Application::.ctor
+
+  .method private hidebysig static class [mscorlib]System.Threading.Tasks.Task 
+          foo<.ctor ([mscorlib]System.Exception) TException>() cil managed
+  {
+    .custom instance void [mscorlib]System.Runtime.CompilerServices.AsyncStateMachineAttribute::.ctor(class [mscorlib]System.Type) = ( 01 00 1C 41 70 70 6C 69 63 61 74 69 6F 6E 2B 3C   // ...Application+<
+                                                                                                                                       66 6F 6F 3E 63 5F 5F 61 73 79 6E 63 30 60 31 00   // foo>c__async0`1.
+                                                                                                                                       00 ) 
+    .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) 
+    // Code size       33 (0x21)
+    .maxstack  3
+    .locals init (valuetype Application/'<foo>c__async0`1'<!!TException> V_0)
+    IL_0000:  ldloca.s   V_0
+    IL_0002:  call       valuetype [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder::Create()
+    IL_0007:  stfld      valuetype [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder valuetype Application/'<foo>c__async0`1'<!!TException>::$builder
+    IL_000c:  ldloca.s   V_0
+    IL_000e:  ldflda     valuetype [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder valuetype Application/'<foo>c__async0`1'<!!TException>::$builder
+    IL_0013:  dup
+    IL_0014:  ldloca.s   V_0
+    IL_0016:  call       instance void [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder::Start<valuetype Application/'<foo>c__async0`1'<!!0>>(!!0&)
+    IL_001b:  call       instance class [mscorlib]System.Threading.Tasks.Task [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder::get_Task()
+    IL_0020:  ret
+  } // end of method Application::foo
+
+  .method private hidebysig static void  Main(string[] args) cil managed
+  {
+    .entrypoint
+    // Code size       11 (0xb)
+    .maxstack  8
+    IL_0000:  call       class [mscorlib]System.Threading.Tasks.Task Application::foo<class [mscorlib]System.InvalidOperationException>()
+    IL_0005:  callvirt   instance void [mscorlib]System.Threading.Tasks.Task::Wait()
+    IL_000a:  ret
+  } // end of method Application::Main
+
+} // end of class Application
+
+
+// =============================================================
+
+// *********** DISASSEMBLY COMPLETE ***********************
diff --git a/mono/tests/verifier/unverifiable_merge_concrete_types_with_shared_iface.il b/mono/tests/verifier/unverifiable_merge_concrete_types_with_shared_iface.il
new file mode 100644 (file)
index 0000000..3682f48
--- /dev/null
@@ -0,0 +1,127 @@
+.assembly extern mscorlib
+{
+  .ver 4:0:0:0
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
+.assembly 'test-997'
+{
+  .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() =  (
+               01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
+               63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01       ) // ceptionThrows.
+
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+.module 'test-997.exe' // GUID = {AAE37F83-0848-454C-B66A-0AEEA55FFB63}
+
+
+  .class private auto ansi beforefieldinit C
+       extends [mscorlib]System.Object
+  {
+    .field  private  bool multiDomain
+
+    // method line 1
+    .method public static hidebysig 
+           default void Main ()  cil managed 
+    {
+        // Method begins at RVA 0x2050
+       .entrypoint
+       // Code size 1 (0x1)
+       .maxstack 8
+       IL_0000:  ret 
+    } // end of method C::Main
+
+    // method line 2
+    .method private hidebysig 
+           instance default class IA Create (bool arg)  cil managed 
+    {
+        // Method begins at RVA 0x2054
+       // Code size 24 (0x18)
+       .maxstack 1
+       .locals init (
+               class IA        V_0)
+       IL_0000:  ldarg.1 
+       IL_0001:  brfalse IL_0010
+
+       IL_0006:  newobj instance void class B2::'.ctor'()
+       IL_000b:  br IL_0015
+
+       IL_0010:  newobj instance void class B1::'.ctor'()
+       IL_0015:  stloc.0 
+       IL_0016:  ldloc.0 
+       IL_0017:  ret 
+    } // end of method C::Create
+
+    // method line 3
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x2078
+       // Code size 7 (0x7)
+       .maxstack 8
+       IL_0000:  ldarg.0 
+       IL_0001:  call instance void object::'.ctor'()
+       IL_0006:  ret 
+    } // end of method C::.ctor
+
+  } // end of class C
+
+  .class interface private auto ansi abstract IA
+  {
+
+  } // end of class IA
+
+  .class private auto ansi beforefieldinit B2
+       extends [mscorlib]System.Object
+       implements IA  {
+
+    // method line 4
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x2080
+       // Code size 7 (0x7)
+       .maxstack 8
+       IL_0000:  ldarg.0 
+       IL_0001:  call instance void object::'.ctor'()
+       IL_0006:  ret 
+    } // end of method B2::.ctor
+
+  } // end of class B2
+
+  .class private auto ansi beforefieldinit B1
+       extends [mscorlib]System.Object
+       implements IA  {
+
+    // method line 5
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x2088
+       // Code size 7 (0x7)
+       .maxstack 8
+       IL_0000:  ldarg.0 
+       IL_0001:  call instance void object::'.ctor'()
+       IL_0006:  ret 
+    } // end of method B1::.ctor
+
+  } // end of class B1
+
+  .class private auto ansi beforefieldinit B
+       extends [mscorlib]System.Object
+       implements IA  {
+
+    // method line 6
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x2090
+       // Code size 7 (0x7)
+       .maxstack 8
+       IL_0000:  ldarg.0 
+       IL_0001:  call instance void object::'.ctor'()
+       IL_0006:  ret 
+    } // end of method B::.ctor
+
+  } // end of class B
+
diff --git a/mono/tests/verifier/valid_delegate_return_variant_iface.cs b/mono/tests/verifier/valid_delegate_return_variant_iface.cs
new file mode 100644 (file)
index 0000000..ee4dfd2
--- /dev/null
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+
+interface IFoo {}
+class Foo : IFoo {}
+
+class Driver
+{
+       static IEnumerable <Foo> Dele (bool b)
+       {
+               return null;
+       }
+
+       static void Main ()
+       {
+               Func<bool, IEnumerable<IFoo>> dele = Dele;
+               dele (true);
+       }
+}
\ No newline at end of file
diff --git a/mono/tests/verifier/valid_merge_boxed_values.il b/mono/tests/verifier/valid_merge_boxed_values.il
new file mode 100644 (file)
index 0000000..fe173b7
--- /dev/null
@@ -0,0 +1,106 @@
+.assembly extern mscorlib
+{
+  .ver 4:0:0:0
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
+.assembly 'valid_merge_boxed_values'
+{
+  .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() =  (
+               01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
+               63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01       ) // ceptionThrows.
+
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+.module valid_merge_boxed_values.exe // GUID = {47C47D22-2F3F-4B04-AED9-2BC28A196BCF}
+
+.class private auto ansi sealed ThisDele extends [mscorlib]System.MulticastDelegate
+{
+       .method public hidebysig specialname rtspecialname  instance default void '.ctor' (object 'object', native int 'method')  runtime managed 
+       {
+       }
+
+       .method public virtual hidebysig newslot instance default bool Invoke (object obj)  runtime managed 
+       {
+       }
+
+       .method public virtual hidebysig newslot  instance default class [mscorlib]System.IAsyncResult BeginInvoke (object obj, class [mscorlib]System.AsyncCallback callback, object 'object')  runtime managed 
+       {
+       }
+
+       .method public virtual hidebysig newslot  instance default bool EndInvoke (class [mscorlib]System.IAsyncResult result)  runtime managed 
+       {
+       }
+}
+
+.class interface private auto ansi abstract IFace
+{
+       .method public virtual hidebysig newslot abstract instance default void Foo (class ThisDele b)  cil managed 
+       {
+       }
+}
+
+.class private sequential ansi sealed beforefieldinit MyList extends [mscorlib]System.ValueType implements IFace
+{
+       .pack 0
+       .size 1
+
+       .method public final virtual hidebysig newslot 
+       instance default void Foo (class ThisDele b)  cil managed 
+       {
+               .maxstack 8
+               IL_0000:  ret 
+       }
+}
+
+.class private auto ansi beforefieldinit Driver extends [mscorlib]System.Object
+{
+       .field private static  class ThisDele '<>f__mg$cache0'
+
+       .method public hidebysig specialname rtspecialname  instance default void '.ctor' ()  cil managed 
+       {
+               .maxstack 8
+               IL_0000:  ldarg.0 
+               IL_0001:  call instance void object::'.ctor'()
+               IL_0006:  ret 
+       }
+
+       .method private static hidebysig default bool Dele (object o)  cil managed 
+       {
+               .maxstack 8
+               IL_0000:  ldc.i4.0 
+               IL_0001:  ret 
+       }
+
+       .method private static hidebysig default void Foo (class IFace a, class [mscorlib]System.Action b)  cil managed 
+       {
+               .maxstack 8
+               IL_0000:  ret 
+       }
+
+       .method private static hidebysig default void Main ()  cil managed 
+       {
+               .entrypoint
+               .maxstack 3
+               .locals init (
+                       valuetype MyList        V_0,
+                       valuetype MyList        V_1)
+               IL_0000:  ldloca.s 1
+               IL_0002:  initobj MyList
+               IL_0008:  ldloc.1 
+               IL_0009:  stloc.0 
+               IL_000a:  ldloc.0 
+               IL_000b:  box MyList
+               IL_0010:  ldsfld class ThisDele Driver::'<>f__mg$cache0'
+               IL_0015:  brtrue.s IL_0028
+
+               IL_0017:  ldnull 
+               IL_0018:  ldftn bool class Driver::Dele(object)
+               IL_001e:  newobj instance void class ThisDele::'.ctor'(object, native int)
+               IL_0023:  stsfld class ThisDele Driver::'<>f__mg$cache0'
+               IL_0028:  ldsfld class ThisDele Driver::'<>f__mg$cache0'
+               IL_002d:  callvirt instance void class IFace::Foo(class ThisDele)
+               IL_0032:  ret 
+       }
+}
+
index 2745782762e3ed40947febce383f2dcf27761db4..9a8c7a1cbe1a240bf947520c3876b25c3cb5ecaf 100644 (file)
@@ -32,6 +32,8 @@ monoutils_sources = \
        mono-math.c             \
        mono-mmap.c             \
        mono-mmap.h             \
+       mono-mutex.c            \
+       mono-mutex.h            \
        mono-networkinterfaces.c                \
        mono-networkinterfaces.h                \
        mono-proclib.c          \
@@ -99,7 +101,11 @@ monoutils_sources = \
        mono-threads.h  \
        mono-tls.h      \
        linux_magic.h   \
-       mono-memory-model.h
+       mono-memory-model.h     \
+       atomic.h        \
+       atomic.c        \
+       mono-hwcap.h    \
+       mono-hwcap.c
 
 arch_sources = 
 
@@ -123,6 +129,54 @@ arch_sources += mach-support-unknown.c
 
 endif
 
+if !CROSS_COMPILE
+
+if X86
+arch_sources += mono-hwcap-x86.c mono-hwcap-x86.h
+endif
+
+if AMD64
+arch_sources += mono-hwcap-x86.c mono-hwcap-x86.h
+endif
+
+if ARM
+arch_sources += mono-hwcap-arm.c mono-hwcap-arm.h
+endif
+
+if MIPS
+arch_sources += mono-hwcap-mips.c mono-hwcap-mips.h
+endif
+
+if POWERPC
+arch_sources += mono-hwcap-ppc.c mono-hwcap-ppc.h
+endif
+
+if POWERPC64
+arch_sources += mono-hwcap-ppc.c mono-hwcap-ppc.h
+endif
+
+if SPARC
+arch_sources += mono-hwcap-sparc.c mono-hwcap-sparc.h
+endif
+
+if SPARC64
+arch_sources += mono-hwcap-sparc.c mono-hwcap-sparc.h
+endif
+
+if IA64
+arch_sources += mono-hwcap-ia64.c mono-hwcap-ia64.h
+endif
+
+if S390X
+arch_sources += mono-hwcap-s390x.c mono-hwcap-s390x.h
+endif
+
+else
+
+arch_sources += mono-hwcap-empty.c
+
+endif
+
 libmonoutils_la_SOURCES = $(monoutils_sources) $(arch_sources)
 libmonoutilsincludedir = $(includedir)/mono-$(API_VER)/mono/utils
 
diff --git a/mono/utils/atomic.c b/mono/utils/atomic.c
new file mode 100644 (file)
index 0000000..1b0745d
--- /dev/null
@@ -0,0 +1,195 @@
+/*
+ * atomic.c:  Workarounds for atomic operations for platforms that dont have
+ *           really atomic asm functions in atomic.h
+ *
+ * Author:
+ *     Dick Porter (dick@ximian.com)
+ *
+ * (C) 2002 Ximian, Inc.
+ */
+
+#include <config.h>
+#include <glib.h>
+
+#include <mono/utils/atomic.h>
+
+#ifdef WAPI_NO_ATOMIC_ASM
+
+#include <pthread.h>
+
+static pthread_mutex_t spin = PTHREAD_MUTEX_INITIALIZER;
+static mono_once_t spin_once=MONO_ONCE_INIT;
+
+static void spin_init(void)
+{
+       g_warning("Using non-atomic functions!  Expect race conditions when using process-shared handles!");
+}
+
+gint32 InterlockedCompareExchange(volatile gint32 *dest, gint32 exch,
+                                 gint32 comp)
+{
+       gint32 old;
+       int ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       ret = pthread_mutex_lock(&spin);
+       g_assert (ret == 0);
+       
+       old= *dest;
+       if(old==comp) {
+               *dest=exch;
+       }
+       
+       ret = pthread_mutex_unlock(&spin);
+       g_assert (ret == 0);
+       
+       pthread_cleanup_pop (0);
+
+       return(old);
+}
+
+gpointer InterlockedCompareExchangePointer(volatile gpointer *dest,
+                                          gpointer exch, gpointer comp)
+{
+       gpointer old;
+       int ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       ret = pthread_mutex_lock(&spin);
+       g_assert (ret == 0);
+       
+       old= *dest;
+       if(old==comp) {
+               *dest=exch;
+       }
+       
+       ret = pthread_mutex_unlock(&spin);
+       g_assert (ret == 0);
+       
+       pthread_cleanup_pop (0);
+
+       return(old);
+}
+
+gint32 InterlockedIncrement(volatile gint32 *dest)
+{
+       gint32 ret;
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       (*dest)++;
+       ret= *dest;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+       
+       pthread_cleanup_pop (0);
+       
+       return(ret);
+}
+
+gint32 InterlockedDecrement(volatile gint32 *dest)
+{
+       gint32 ret;
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+       
+       (*dest)--;
+       ret= *dest;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+       
+       pthread_cleanup_pop (0);
+       
+       return(ret);
+}
+
+gint32 InterlockedExchange(volatile gint32 *dest, gint32 exch)
+{
+       gint32 ret;
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       ret=*dest;
+       *dest=exch;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+       
+       pthread_cleanup_pop (0);
+       
+       return(ret);
+}
+
+gpointer InterlockedExchangePointer(volatile gpointer *dest, gpointer exch)
+{
+       gpointer ret;
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+       
+       ret=*dest;
+       *dest=exch;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+       
+       pthread_cleanup_pop (0);
+       
+       return(ret);
+}
+
+gint32 InterlockedExchangeAdd(volatile gint32 *dest, gint32 add)
+{
+       gint32 ret;
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       ret= *dest;
+       *dest+=add;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+
+       pthread_cleanup_pop (0);
+
+       return(ret);
+}
+
+#endif
diff --git a/mono/utils/atomic.h b/mono/utils/atomic.h
new file mode 100644 (file)
index 0000000..6f02f8f
--- /dev/null
@@ -0,0 +1,529 @@
+/*
+ * atomic.h:  Atomic operations
+ *
+ * Author:
+ *     Dick Porter (dick@ximian.com)
+ *
+ * (C) 2002 Ximian, Inc.
+ * Copyright 2012 Xamarin Inc
+ */
+
+#ifndef _WAPI_ATOMIC_H_
+#define _WAPI_ATOMIC_H_
+
+#if defined(__NetBSD__)
+#include <sys/param.h>
+
+#if __NetBSD_Version__ > 499004000
+#include <sys/atomic.h>
+#define HAVE_ATOMIC_OPS
+#endif
+
+#endif
+
+#include "config.h"
+#include <glib.h>
+
+/* On Windows, we always use the functions provided by the Windows API. */
+#if defined(__WIN32__) || defined(_WIN32)
+
+#include <windows.h>
+
+/* Prefer GCC atomic ops if the target supports it (see configure.in). */
+#elif defined(USE_GCC_ATOMIC_OPS)
+
+static inline gint32 InterlockedCompareExchange(volatile gint32 *dest,
+                                               gint32 exch, gint32 comp)
+{
+       return __sync_val_compare_and_swap (dest, comp, exch);
+}
+
+static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer exch, gpointer comp)
+{
+       return __sync_val_compare_and_swap (dest, comp, exch);
+}
+
+static inline gint32 InterlockedIncrement(volatile gint32 *val)
+{
+       return __sync_add_and_fetch (val, 1);
+}
+
+static inline gint32 InterlockedDecrement(volatile gint32 *val)
+{
+       return __sync_add_and_fetch (val, -1);
+}
+
+static inline gint32 InterlockedExchange(volatile gint32 *val, gint32 new_val)
+{
+       gint32 old_val;
+       do {
+               old_val = *val;
+       } while (__sync_val_compare_and_swap (val, old_val, new_val) != old_val);
+       return old_val;
+}
+
+static inline gpointer InterlockedExchangePointer(volatile gpointer *val,
+                                                 gpointer new_val)
+{
+       gpointer old_val;
+       do {
+               old_val = *val;
+       } while (__sync_val_compare_and_swap (val, old_val, new_val) != old_val);
+       return old_val;
+}
+
+static inline gint32 InterlockedExchangeAdd(volatile gint32 *val, gint32 add)
+{
+       return __sync_fetch_and_add (val, add);
+}
+
+#elif defined(__NetBSD__) && defined(HAVE_ATOMIC_OPS)
+
+static inline gint32 InterlockedCompareExchange(volatile gint32 *dest,
+       gint32 exch, gint32 comp)
+{
+       return atomic_cas_32((uint32_t*)dest, comp, exch);
+}
+
+static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer exch, gpointer comp)
+{
+       return atomic_cas_ptr(dest, comp, exch);
+}
+
+static inline gint32 InterlockedIncrement(volatile gint32 *val)
+{
+       return atomic_inc_32_nv((uint32_t*)val);
+}
+
+static inline gint32 InterlockedDecrement(volatile gint32 *val)
+{
+       return atomic_dec_32_nv((uint32_t*)val);
+}
+
+static inline gint32 InterlockedExchange(volatile gint32 *val, gint32 new_val)
+{
+       return atomic_swap_32((uint32_t*)val, new_val);
+}
+
+static inline gpointer InterlockedExchangePointer(volatile gpointer *val,
+               gpointer new_val)
+{
+       return atomic_swap_ptr(val, new_val);
+}
+
+static inline gint32 InterlockedExchangeAdd(volatile gint32 *val, gint32 add)
+{
+       return atomic_add_32_nv((uint32_t*)val, add) - add;
+}
+
+#elif (defined(sparc) || defined (__sparc__)) && defined(__GNUC__)
+
+G_GNUC_UNUSED 
+static inline gint32 InterlockedCompareExchange(volatile gint32 *_dest, gint32 _exch, gint32 _comp)
+{
+       register volatile gint32 *dest asm("g1") = _dest;
+       register gint32 comp asm("o4") = _comp;
+       register gint32 exch asm("o5") = _exch;
+
+       __asm__ __volatile__(
+               /* cas [%%g1], %%o4, %%o5 */
+               ".word 0xdbe0500c"
+               : "=r" (exch)
+               : "0" (exch), "r" (dest), "r" (comp)
+               : "memory");
+
+       return exch;
+}
+
+G_GNUC_UNUSED 
+static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *_dest, gpointer _exch, gpointer _comp)
+{
+       register volatile gpointer *dest asm("g1") = _dest;
+       register gpointer comp asm("o4") = _comp;
+       register gpointer exch asm("o5") = _exch;
+
+       __asm__ __volatile__(
+#ifdef SPARCV9
+               /* casx [%%g1], %%o4, %%o5 */
+               ".word 0xdbf0500c"
+#else
+               /* cas [%%g1], %%o4, %%o5 */
+               ".word 0xdbe0500c"
+#endif
+               : "=r" (exch)
+               : "0" (exch), "r" (dest), "r" (comp)
+               : "memory");
+
+       return exch;
+}
+
+G_GNUC_UNUSED 
+static inline gint32 InterlockedIncrement(volatile gint32 *_dest)
+{
+       register volatile gint32 *dest asm("g1") = _dest;
+       register gint32 tmp asm("o4");
+       register gint32 ret asm("o5");
+
+       __asm__ __volatile__(
+               "1:     ld      [%%g1], %%o4\n\t"
+               "       add     %%o4, 1, %%o5\n\t"
+               /*      cas     [%%g1], %%o4, %%o5 */
+               "       .word   0xdbe0500c\n\t"
+               "       cmp     %%o4, %%o5\n\t"
+               "       bne     1b\n\t"
+               "        add    %%o5, 1, %%o5"
+               : "=&r" (tmp), "=&r" (ret)
+               : "r" (dest)
+               : "memory", "cc");
+
+        return ret;
+}
+
+G_GNUC_UNUSED 
+static inline gint32 InterlockedDecrement(volatile gint32 *_dest)
+{
+       register volatile gint32 *dest asm("g1") = _dest;
+       register gint32 tmp asm("o4");
+       register gint32 ret asm("o5");
+
+       __asm__ __volatile__(
+               "1:     ld      [%%g1], %%o4\n\t"
+               "       sub     %%o4, 1, %%o5\n\t"
+               /*      cas     [%%g1], %%o4, %%o5 */
+               "       .word   0xdbe0500c\n\t"
+               "       cmp     %%o4, %%o5\n\t"
+               "       bne     1b\n\t"
+               "        sub    %%o5, 1, %%o5"
+               : "=&r" (tmp), "=&r" (ret)
+               : "r" (dest)
+               : "memory", "cc");
+
+        return ret;
+}
+
+G_GNUC_UNUSED
+static inline gint32 InterlockedExchange(volatile gint32 *_dest, gint32 exch)
+{
+       register volatile gint32 *dest asm("g1") = _dest;
+       register gint32 tmp asm("o4");
+       register gint32 ret asm("o5");
+
+       __asm__ __volatile__(
+               "1:     ld      [%%g1], %%o4\n\t"
+               "       mov     %3, %%o5\n\t"
+               /*      cas     [%%g1], %%o4, %%o5 */
+               "       .word   0xdbe0500c\n\t"
+               "       cmp     %%o4, %%o5\n\t"
+               "       bne     1b\n\t"
+               "        nop"
+               : "=&r" (tmp), "=&r" (ret)
+               : "r" (dest), "r" (exch)
+               : "memory", "cc");
+
+        return ret;
+}
+
+G_GNUC_UNUSED
+static inline gpointer InterlockedExchangePointer(volatile gpointer *_dest, gpointer exch)
+{
+       register volatile gpointer *dest asm("g1") = _dest;
+       register gpointer tmp asm("o4");
+       register gpointer ret asm("o5");
+
+       __asm__ __volatile__(
+#ifdef SPARCV9
+               "1:     ldx     [%%g1], %%o4\n\t"
+#else
+               "1:     ld      [%%g1], %%o4\n\t"
+#endif
+               "       mov     %3, %%o5\n\t"
+#ifdef SPARCV9
+               /*      casx    [%%g1], %%o4, %%o5 */
+               "       .word   0xdbf0500c\n\t"
+#else
+               /*      cas     [%%g1], %%o4, %%o5 */
+               "       .word   0xdbe0500c\n\t"
+#endif
+               "       cmp     %%o4, %%o5\n\t"
+               "       bne     1b\n\t"
+               "        nop"
+               : "=&r" (tmp), "=&r" (ret)
+               : "r" (dest), "r" (exch)
+               : "memory", "cc");
+
+        return ret;
+}
+
+G_GNUC_UNUSED
+static inline gint32 InterlockedExchangeAdd(volatile gint32 *_dest, gint32 add)
+{
+       register volatile gint32 *dest asm("g1") = _dest;
+       register gint32 tmp asm("o4");
+       register gint32 ret asm("o5");
+
+       __asm__ __volatile__(
+               "1:     ld      [%%g1], %%o4\n\t"
+               "       add     %%o4, %3, %%o5\n\t"
+               /*      cas     [%%g1], %%o4, %%o5 */
+               "       .word   0xdbe0500c\n\t"
+               "       cmp     %%o4, %%o5\n\t"
+               "       bne     1b\n\t"
+               "        add    %%o5, %3, %%o5"
+               : "=&r" (tmp), "=&r" (ret)
+               : "r" (dest), "r" (add)
+               : "memory", "cc");
+
+        return ret;
+}
+
+#elif __s390x__
+
+static inline gint32 
+InterlockedCompareExchange(volatile gint32 *dest,
+                          gint32 exch, gint32 comp)
+{
+       gint32 old;
+
+       __asm__ __volatile__ ("\tLA\t1,%0\n"
+                             "\tLR\t%1,%3\n"
+                             "\tCS\t%1,%2,0(1)\n"
+                             : "+m" (*dest), "=&r" (old)
+                             : "r" (exch), "r" (comp)
+                             : "1", "cc");     
+       return(old);
+}
+
+static inline gpointer 
+InterlockedCompareExchangePointer(volatile gpointer *dest, 
+                                 gpointer exch, 
+                                 gpointer comp)
+{
+       gpointer old;
+
+       __asm__ __volatile__ ("\tLA\t1,%0\n"
+                             "\tLGR\t%1,%3\n"
+                             "\tCSG\t%1,%2,0(1)\n"
+                             : "+m" (*dest), "=&r" (old)
+                             : "r" (exch), "r" (comp)
+                             : "1", "cc");
+
+       return(old);
+}
+
+static inline gint32 
+InterlockedIncrement(volatile gint32 *val)
+{
+       gint32 tmp;
+       
+       __asm__ __volatile__ ("\tLA\t2,%1\n"
+                             "0:\tLGF\t%0,%1\n"
+                             "\tLGFR\t1,%0\n"
+                             "\tAGHI\t1,1\n"
+                             "\tCS\t%0,1,0(2)\n"
+                             "\tJNZ\t0b\n"
+                             "\tLGFR\t%0,1"
+                             : "=r" (tmp), "+m" (*val)
+                             : : "1", "2", "cc");
+
+       return(tmp);
+}
+
+static inline gint32 
+InterlockedDecrement(volatile gint32 *val)
+{
+       gint32 tmp;
+       
+       __asm__ __volatile__ ("\tLA\t2,%1\n"
+                             "0:\tLGF\t%0,%1\n"
+                             "\tLGFR\t1,%0\n"
+                             "\tAGHI\t1,-1\n"
+                             "\tCS\t%0,1,0(2)\n"
+                             "\tJNZ\t0b\n"
+                             "\tLGFR\t%0,1"
+                             : "=r" (tmp), "+m" (*val)
+                             : : "1", "2", "cc");
+
+       return(tmp);
+}
+
+static inline gint32 
+InterlockedExchange(volatile gint32 *val, gint32 new_val)
+{
+       gint32 ret;
+       
+       __asm__ __volatile__ ("\tLA\t1,%0\n"
+                             "0:\tL\t%1,%0\n"
+                             "\tCS\t%1,%2,0(1)\n"
+                             "\tJNZ\t0b"
+                             : "+m" (*val), "=&r" (ret)
+                             : "r" (new_val)
+                             : "1", "cc");
+
+       return(ret);
+}
+
+static inline gpointer
+InterlockedExchangePointer(volatile gpointer *val, gpointer new_val)
+{
+       gpointer ret;
+       
+       __asm__ __volatile__ ("\tLA\t1,%0\n"
+                             "0:\tLG\t%1,%0\n"
+                             "\tCSG\t%1,%2,0(1)\n"
+                             "\tJNZ\t0b"
+                             : "+m" (*val), "=&r" (ret)
+                             : "r" (new_val)
+                             : "1", "cc");
+
+       return(ret);
+}
+
+static inline gint32 
+InterlockedExchangeAdd(volatile gint32 *val, gint32 add)
+{
+       gint32 ret;
+
+       __asm__ __volatile__ ("\tLA\t2,%1\n"
+                             "0:\tLGF\t%0,%1\n"
+                             "\tLGFR\t1,%0\n"
+                             "\tAGR\t1,%2\n"
+                             "\tCS\t%0,1,0(2)\n"
+                             "\tJNZ\t0b"
+                             : "=&r" (ret), "+m" (*val)
+                             : "r" (add) 
+                             : "1", "2", "cc");
+       
+       return(ret);
+}
+
+#elif defined(__ia64__)
+
+#ifdef __INTEL_COMPILER
+#include <ia64intrin.h>
+#endif
+
+static inline gint32 InterlockedCompareExchange(gint32 volatile *dest,
+                                               gint32 exch, gint32 comp)
+{
+       gint32 old;
+       guint64 real_comp;
+
+#ifdef __INTEL_COMPILER
+       old = _InterlockedCompareExchange (dest, exch, comp);
+#else
+       /* cmpxchg4 zero extends the value read from memory */
+       real_comp = (guint64)(guint32)comp;
+       asm volatile ("mov ar.ccv = %2 ;;\n\t"
+                                 "cmpxchg4.acq %0 = [%1], %3, ar.ccv\n\t"
+                                 : "=r" (old) : "r" (dest), "r" (real_comp), "r" (exch));
+#endif
+
+       return(old);
+}
+
+static inline gpointer InterlockedCompareExchangePointer(gpointer volatile *dest,
+                                               gpointer exch, gpointer comp)
+{
+       gpointer old;
+
+#ifdef __INTEL_COMPILER
+       old = _InterlockedCompareExchangePointer (dest, exch, comp);
+#else
+       asm volatile ("mov ar.ccv = %2 ;;\n\t"
+                                 "cmpxchg8.acq %0 = [%1], %3, ar.ccv\n\t"
+                                 : "=r" (old) : "r" (dest), "r" (comp), "r" (exch));
+#endif
+
+       return(old);
+}
+
+static inline gint32 InterlockedIncrement(gint32 volatile *val)
+{
+#ifdef __INTEL_COMPILER
+       return _InterlockedIncrement (val);
+#else
+       gint32 old;
+
+       do {
+               old = *val;
+       } while (InterlockedCompareExchange (val, old + 1, old) != old);
+
+       return old + 1;
+#endif
+}
+
+static inline gint32 InterlockedDecrement(gint32 volatile *val)
+{
+#ifdef __INTEL_COMPILER
+       return _InterlockedDecrement (val);
+#else
+       gint32 old;
+
+       do {
+               old = *val;
+       } while (InterlockedCompareExchange (val, old - 1, old) != old);
+
+       return old - 1;
+#endif
+}
+
+static inline gint32 InterlockedExchange(gint32 volatile *dest, gint32 new_val)
+{
+#ifdef __INTEL_COMPILER
+       return _InterlockedExchange (dest, new_val);
+#else
+       gint32 res;
+
+       do {
+               res = *dest;
+       } while (InterlockedCompareExchange (dest, new_val, res) != res);
+
+       return res;
+#endif
+}
+
+static inline gpointer InterlockedExchangePointer(gpointer volatile *dest, gpointer new_val)
+{
+#ifdef __INTEL_COMPILER
+       return (gpointer)_InterlockedExchange64 ((gint64*)dest, (gint64)new_val);
+#else
+       gpointer res;
+
+       do {
+               res = *dest;
+       } while (InterlockedCompareExchangePointer (dest, new_val, res) != res);
+
+       return res;
+#endif
+}
+
+static inline gint32 InterlockedExchangeAdd(gint32 volatile *val, gint32 add)
+{
+       gint32 old;
+
+#ifdef __INTEL_COMPILER
+       old = _InterlockedExchangeAdd (val, add);
+#else
+       do {
+               old = *val;
+       } while (InterlockedCompareExchange (val, old + add, old) != old);
+
+       return old;
+#endif
+}
+
+#else
+
+#define WAPI_NO_ATOMIC_ASM
+
+extern gint32 InterlockedCompareExchange(volatile gint32 *dest, gint32 exch, gint32 comp);
+extern gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer exch, gpointer comp);
+extern gint32 InterlockedIncrement(volatile gint32 *dest);
+extern gint32 InterlockedDecrement(volatile gint32 *dest);
+extern gint32 InterlockedExchange(volatile gint32 *dest, gint32 exch);
+extern gpointer InterlockedExchangePointer(volatile gpointer *dest, gpointer exch);
+extern gint32 InterlockedExchangeAdd(volatile gint32 *dest, gint32 add);
+
+#endif
+
+#endif /* _WAPI_ATOMIC_H_ */
index 916a1aac0886a4e0f17c18a82c2bc8dcba4edb95..1e5cad6498ea236a582ad51a272c4b0e39a31d30 100644 (file)
@@ -82,7 +82,7 @@
 #include <glib.h>
 #include <stdlib.h>
 
-#include <mono/io-layer/io-layer.h>
+#include <mono/utils/atomic.h>
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/mono-membar.h>
 #include <mono/utils/hazard-pointer.h>
index 6f692f976e8f169f54c51ca5057fb2aeec2044f9..be343caeb3e1b0246260f86a4680cdb47facd351 100644 (file)
@@ -16,7 +16,7 @@
  * entry data, and then sets the state to USED or FREE.
  */
 
-#include <mono/io-layer/io-layer.h>
+#include <mono/utils/atomic.h>
 #include <mono/utils/mono-membar.h>
 #include <mono/utils/mono-mmap.h>
 
index 0053304e930a6210bd7eeef284fd35ebf635dde0..9a84edfedf8809c442d1562a6ee3a9bfe46e4441 100644 (file)
@@ -53,7 +53,7 @@
 
 #include <mono/utils/mono-membar.h>
 #include <mono/utils/hazard-pointer.h>
-#include <mono/io-layer/io-layer.h>
+#include <mono/utils/atomic.h>
 
 #include <mono/utils/lock-free-queue.h>
 
index e889a522c496690f3d89fc9dd8932775085deb4d..19040885da612aaf9908a3dedec6831aab1b491e 100644 (file)
@@ -3,8 +3,10 @@
  *
  * Authors:
  *   Geoff Norton (gnorton@novell.com)
+ *   Rodrigo Kumpera (kumpera@gmail.com)
  *
  * (C) 2010 Novell, Inc.
+ * (C) 2013 Xamarin, Inc.
  */
 
 #include <config.h>
 #include "utils/mono-sigcontext.h"
 #include "mach-support.h"
 
+/* Known offsets used for TLS storage*/
+
+/* All OSX versions up to 10.8 */
+#define TLS_VECTOR_OFFSET_CATS 0x60
+#define TLS_VECTOR_OFFSET_10_9 0xe0
+
+static int tls_vector_offset;
+
 void *
 mono_mach_arch_get_ip (thread_state_t state)
 {
@@ -85,11 +95,11 @@ void *
 mono_mach_get_tls_address_from_thread (pthread_t thread, pthread_key_t key)
 {
        /* OSX stores TLS values in a hidden array inside the pthread_t structure
-        * They are keyed off a giant array offset 0x60 into the pointer.  This value
+        * They are keyed off a giant array from a known offset into the pointer.  This value
         * is baked into their pthread_getspecific implementation
         */
        intptr_t *p = (intptr_t *)thread;
-       intptr_t **tsd = (intptr_t **) ((char*)p + 0x60);
+       intptr_t **tsd = (intptr_t **) ((char*)p + tls_vector_offset);
 
        return (void *) &tsd [key];
 }
@@ -100,4 +110,29 @@ mono_mach_arch_get_tls_value_from_thread (pthread_t thread, guint32 key)
        return *(void**)mono_mach_get_tls_address_from_thread (thread, key);
 }
 
+void
+mono_mach_init (pthread_key_t key)
+{
+       void *old_value = pthread_getspecific (key);
+       void *canary = (void*)0xDEADBEEFu;
+
+       pthread_key_create (&key, NULL);
+       g_assert (old_value != canary);
+
+       pthread_setspecific (key, canary);
+
+       /*First we probe for cats*/
+       tls_vector_offset = TLS_VECTOR_OFFSET_CATS;
+       if (mono_mach_arch_get_tls_value_from_thread (pthread_self (), key) == canary)
+               goto ok;
+
+       tls_vector_offset = TLS_VECTOR_OFFSET_10_9;
+       if (mono_mach_arch_get_tls_value_from_thread (pthread_self (), key) == canary)
+               goto ok;
+
+       g_error ("could not discover the mach TLS offset");
+ok:
+       pthread_setspecific (key, old_value);
+}
+
 #endif
index bd1c79de85581c155ef8eb32f4c87861cf0293e2..eb5fd603514ef8a6d9c716858ad6d3dc9255d58c 100644 (file)
 #include <glib.h>
 #include <pthread.h>
 #include "utils/mono-sigcontext.h"
+#include "utils/mono-compiler.h"
 #include "mach-support.h"
 
+/* Known offsets used for TLS storage*/
+
+
+static const int known_tls_offsets[] = {
+       0x48, /*Found on iOS 6 */
+       0xA4,
+       0xA8,
+};
+
+#define TLS_PROBE_COUNT (sizeof (known_tls_offsets) / sizeof (int))
+
+/* This is 2 slots less than the known low */
+#define TLS_PROBE_LOW_WATERMARK 0x40
+/* This is 24 slots above the know high, which is the same diff as the knowns high-low*/
+#define TLS_PROBE_HIGH_WATERMARK 0x108
+
+static int tls_vector_offset;
+
 void *
 mono_mach_arch_get_ip (thread_state_t state)
 {
@@ -86,14 +105,14 @@ mono_mach_arch_set_thread_state (thread_port_t thread, thread_state_t state, mac
 void *
 mono_mach_get_tls_address_from_thread (pthread_t thread, pthread_key_t key)
 {
-       /* OSX stores TLS values in a hidden array inside the pthread_t structure
-        * They are keyed off a giant array offset 0x48 into the pointer.  This value
+       /* Mach stores TLS values in a hidden array inside the pthread_t structure
+        * They are keyed off a giant array from a known offset into the pointer. This value
         * is baked into their pthread_getspecific implementation
         */
        intptr_t *p = (intptr_t *) thread;
-       intptr_t **tsd = (intptr_t **) ((char*)p + 0x48 + (key << 2));
+       intptr_t **tsd = (intptr_t **) ((char*)p + tls_vector_offset);
 
-       return (void *)tsd;
+       return (void *) &tsd [key];
 }
 
 void *
@@ -102,4 +121,37 @@ mono_mach_arch_get_tls_value_from_thread (pthread_t thread, guint32 key)
        return *(void**)mono_mach_get_tls_address_from_thread (thread, key);
 }
 
+void
+mono_mach_init (pthread_key_t key)
+{
+       int i;
+       void *old_value = pthread_getspecific (key);
+       void *canary = (void*)0xDEADBEEFu;
+
+       pthread_key_create (&key, NULL);
+       g_assert (old_value != canary);
+
+       pthread_setspecific (key, canary);
+
+       /*First we probe for cats*/
+       for (i = 0; i < TLS_PROBE_COUNT; ++i) {
+               tls_vector_offset = known_tls_offsets [i];
+               if (mono_mach_arch_get_tls_value_from_thread (pthread_self (), key) == canary)
+                       goto ok;
+       }
+
+       /*Fallback to scanning a large range of offsets*/
+       for (i = TLS_PROBE_LOW_WATERMARK; i <= TLS_PROBE_HIGH_WATERMARK; i += 4) {
+               tls_vector_offset = i;
+               if (mono_mach_arch_get_tls_value_from_thread (pthread_self (), key) == canary) {
+                       g_warning ("Found new TLS offset at %d", i);
+                       goto ok;
+               }
+       }
+
+       g_error ("could not discover the mach TLS offset");
+ok:
+       pthread_setspecific (key, old_value);
+}
+
 #endif
index fbba8dc882e8c6b4cfa5f61fd013ce65a05f4d16..9fece2272160425161aa10e057a593e3183ab9e8 100644 (file)
@@ -70,4 +70,10 @@ mono_mach_arch_get_tls_value_from_thread (pthread_t thread, guint32 key)
 {
        g_assert_not_reached ();
 }
+
+void
+mono_mach_init (pthread_key_t key)
+{
+}
+
 #endif
index e65fe6bdeefe05a40f603c9d482fedbb2baa8b04..76d2b06beef149fdee73ddc7c1977bc6c2f40d42 100644 (file)
 #include "utils/mono-sigcontext.h"
 #include "mach-support.h"
 
+/* Known offsets used for TLS storage*/
+
+/* All OSX versions up to 10.8 */
+#define TLS_VECTOR_OFFSET_CATS 0x48
+#define TLS_VECTOR_OFFSET_10_9 0xb0
+
+static int tls_vector_offset;
+
 void *
 mono_mach_arch_get_ip (thread_state_t state)
 {
@@ -85,11 +93,11 @@ void *
 mono_mach_get_tls_address_from_thread (pthread_t thread, pthread_key_t key)
 {
        /* OSX stores TLS values in a hidden array inside the pthread_t structure
-        * They are keyed off a giant array offset 0x48 into the pointer.  This value
+        * They are keyed off a giant array from a known offset into the pointer.  This value
         * is baked into their pthread_getspecific implementation
         */
        intptr_t *p = (intptr_t *) thread;
-       intptr_t **tsd = (intptr_t **) ((char*)p + 0x48);
+       intptr_t **tsd = (intptr_t **) ((char*)p + tls_vector_offset);
 
        return (void *) &tsd [key];     
 }
@@ -100,5 +108,29 @@ mono_mach_arch_get_tls_value_from_thread (pthread_t thread, guint32 key)
        return *(void**)mono_mach_get_tls_address_from_thread (thread, key);
 }
 
+void
+mono_mach_init (pthread_key_t key)
+{
+       void *old_value = pthread_getspecific (key);
+       void *canary = (void*)0xDEADBEEFu;
+
+       pthread_key_create (&key, NULL);
+       g_assert (old_value != canary);
+
+       pthread_setspecific (key, canary);
+
+       /*First we probe for cats*/
+       tls_vector_offset = TLS_VECTOR_OFFSET_CATS;
+       if (mono_mach_arch_get_tls_value_from_thread (pthread_self (), key) == canary)
+               goto ok;
+
+       tls_vector_offset = TLS_VECTOR_OFFSET_10_9;
+       if (mono_mach_arch_get_tls_value_from_thread (pthread_self (), key) == canary)
+               goto ok;
+
+       g_error ("could not discover the mach TLS offset");
+ok:
+       pthread_setspecific (key, old_value);
+}
 
 #endif
index ffed22f53c994741b4cad802c8340ce62c39e6f8..55fd9850fc27e64d3ccbc43a4f96cb697cccbf40 100644 (file)
@@ -23,6 +23,7 @@ extern pthread_t pthread_from_mach_thread_np(mach_port_t);
 
 void *mono_mach_arch_get_ip (thread_state_t state) MONO_INTERNAL;
 void *mono_mach_arch_get_sp (thread_state_t state) MONO_INTERNAL;
+void mono_mach_init (pthread_key_t key) MONO_INTERNAL;
 
 int mono_mach_arch_get_mcontext_size (void) MONO_INTERNAL;
 void mono_mach_arch_thread_state_to_mcontext (thread_state_t state, void *context) MONO_INTERNAL;
index 4efcea0ae25500addaca763aaa9bb3721d495734..4a011d2361b1e086664fcc1ddc052d20521213ea 100644 (file)
@@ -24,6 +24,7 @@
 #if defined(__native_client_codegen__) && defined(__native_client__)
 #include <malloc.h>
 #include <nacl/nacl_dyncode.h>
+#include <mono/mini/mini.h>
 #endif
 
 static uintptr_t code_memory_used = 0;
@@ -49,11 +50,13 @@ static uintptr_t code_memory_used = 0;
 #endif
 #ifdef __native_client_codegen__
 /* For Google Native Client, all targets of indirect control flow need to    */
-/* be aligned to a 32-byte boundary. MIN_ALIGN was updated to 32 to force    */
-/* alignment for calls from tramp-x86.c to mono_global_codeman_reserve()     */
+/* be aligned to bundle boundary. 16 bytes on ARM, 32 bytes on x86.
+ * MIN_ALIGN was updated to force alignment for calls from
+ * tramp-<arch>.c to mono_global_codeman_reserve()     */
 /* and mono_domain_code_reserve().                                           */
 #undef MIN_ALIGN
-#define MIN_ALIGN 32
+#define MIN_ALIGN kNaClBundleSize
+
 #endif
 
 /* if a chunk has less than this amount of free space it's considered full */
@@ -91,7 +94,7 @@ struct _MonoCodeManager {
        CodeChunk *current;
        CodeChunk *full;
 #if defined(__native_client_codegen__) && defined(__native_client__)
-       MonoGHashTable *hash;
+       GHashTable *hash;
 #endif
 };
 
@@ -127,6 +130,11 @@ nacl_is_code_address (void *target)
        return (char *)target < next_dynamic_code_addr;
 }
 
+/* Fill code buffer with arch-specific NOPs. */
+void
+mono_nacl_fill_code_buffer (guint8 *data, int size);
+
+#ifndef USE_JUMP_TABLES
 const int kMaxPatchDepth = 32;
 __thread unsigned char **patch_source_base = NULL;
 __thread unsigned char **patch_dest_base = NULL;
@@ -134,12 +142,6 @@ __thread int *patch_alloc_size = NULL;
 __thread int patch_current_depth = -1;
 __thread int allow_target_modification = 1;
 
-void
-nacl_allow_target_modification (int val)
-{
-       allow_target_modification = val;
-}
-
 static void
 nacl_jit_check_init ()
 {
@@ -149,7 +151,15 @@ nacl_jit_check_init ()
                patch_alloc_size = g_malloc (kMaxPatchDepth * sizeof(int));
        }
 }
+#endif
 
+void
+nacl_allow_target_modification (int val)
+{
+#ifndef USE_JUMP_TABLES
+        allow_target_modification = val;
+#endif /* USE_JUMP_TABLES */
+}
 
 /* Given a patch target, modify the target such that patching will work when
  * the code is copied to the data section.
@@ -157,6 +167,11 @@ nacl_jit_check_init ()
 void*
 nacl_modify_patch_target (unsigned char *target)
 {
+       /*
+        * There's no need in patch tricks for jumptables,
+        * as we always patch same jumptable.
+        */
+#ifndef USE_JUMP_TABLES
        /* This seems like a bit of an ugly way to do this but the advantage
         * is we don't have to worry about all the conditions in
         * mono_resolve_patch_target, and it can be used by all the bare uses
@@ -179,12 +194,18 @@ nacl_modify_patch_target (unsigned char *target)
                int target_offset = target - db;
                target = sb + target_offset;
        }
+#endif
        return target;
 }
 
 void*
 nacl_inverse_modify_patch_target (unsigned char *target)
 {
+       /*
+        * There's no need in patch tricks for jumptables,
+        * as we always patch same jumptable.
+        */
+#ifndef USE_JUMP_TABLES
        unsigned char *sb;
        unsigned char *db;
        int target_offset;
@@ -197,12 +218,94 @@ nacl_inverse_modify_patch_target (unsigned char *target)
 
        target_offset = target - sb;
        target = db + target_offset;
+#endif
        return target;
 }
 
 
 #endif /* __native_client_codegen && __native_client__ */
 
+#define VALLOC_FREELIST_SIZE 16
+
+static CRITICAL_SECTION valloc_mutex;
+static GHashTable *valloc_freelists;
+
+static void*
+codechunk_valloc (guint32 size)
+{
+       void *ptr;
+       GSList *freelist;
+
+       if (!valloc_freelists) {
+               InitializeCriticalSection (&valloc_mutex);
+               valloc_freelists = g_hash_table_new (NULL, NULL);
+       }
+
+       /*
+        * Keep a small freelist of memory blocks to decrease pressure on the kernel memory subsystem to avoid #3321.
+        */
+       EnterCriticalSection (&valloc_mutex);
+       freelist = g_hash_table_lookup (valloc_freelists, GUINT_TO_POINTER (size));
+       if (freelist) {
+               ptr = freelist->data;
+               memset (ptr, 0, size);
+               freelist = g_slist_remove_link (freelist, freelist);
+               g_hash_table_insert (valloc_freelists, GUINT_TO_POINTER (size), freelist);
+       } else {
+               ptr = mono_valloc (NULL, size + MIN_ALIGN - 1, MONO_PROT_RWX | ARCH_MAP_FLAGS);
+       }
+       LeaveCriticalSection (&valloc_mutex);
+       return ptr;
+}
+
+static void
+codechunk_vfree (void *ptr, guint32 size)
+{
+       GSList *freelist;
+
+       EnterCriticalSection (&valloc_mutex);
+       freelist = g_hash_table_lookup (valloc_freelists, GUINT_TO_POINTER (size));
+       if (!freelist || g_slist_length (freelist) < VALLOC_FREELIST_SIZE) {
+               freelist = g_slist_prepend (freelist, ptr);
+               g_hash_table_insert (valloc_freelists, GUINT_TO_POINTER (size), freelist);
+       } else {
+               mono_vfree (ptr, size);
+       }
+       LeaveCriticalSection (&valloc_mutex);
+}              
+
+static void
+codechunk_cleanup (void)
+{
+       GHashTableIter iter;
+       gpointer key, value;
+
+       if (!valloc_freelists)
+               return;
+       g_hash_table_iter_init (&iter, valloc_freelists);
+       while (g_hash_table_iter_next (&iter, &key, &value)) {
+               GSList *freelist = value;
+               GSList *l;
+
+               for (l = freelist; l; l = l->next) {
+                       mono_vfree (l->data, GPOINTER_TO_UINT (key));
+               }
+               g_slist_free (freelist);
+       }
+       g_hash_table_destroy (valloc_freelists);
+}
+
+void
+mono_code_manager_init (void)
+{
+}
+
+void
+mono_code_manager_cleanup (void)
+{
+       codechunk_cleanup ();
+}
+
 /**
  * mono_code_manager_new:
  *
@@ -228,19 +331,23 @@ mono_code_manager_new (void)
        if (next_dynamic_code_addr == NULL) {
                const guint kPageMask = 0xFFFF; /* 64K pages */
                next_dynamic_code_addr = (uintptr_t)(etext + kPageMask) & ~kPageMask;
+#if defined (__GLIBC__)
+               /* TODO: For now, just jump 64MB ahead to avoid dynamic libraries. */
+               next_dynamic_code_addr += (uintptr_t)0x4000000;
+#else
                /* Workaround bug in service runtime, unable to allocate */
                /* from the first page in the dynamic code section.    */
-               /* TODO: remove */
                next_dynamic_code_addr += (uintptr_t)0x10000;
+#endif
        }
-       cman->hash =  mono_g_hash_table_new (NULL, NULL);
-       /* Keep the hash table from being collected */
-       mono_gc_register_root (&cman->hash, sizeof (void*), NULL);
+       cman->hash =  g_hash_table_new (NULL, NULL);
+# ifndef USE_JUMP_TABLES
        if (patch_source_base == NULL) {
                patch_source_base = g_malloc (kMaxPatchDepth * sizeof(unsigned char *));
                patch_dest_base = g_malloc (kMaxPatchDepth * sizeof(unsigned char *));
                patch_alloc_size = g_malloc (kMaxPatchDepth * sizeof(int));
        }
+# endif
 #endif
        return cman;
 }
@@ -282,7 +389,7 @@ free_chunklist (CodeChunk *chunk)
                mono_profiler_code_chunk_destroy ((gpointer) dead->data);
                chunk = chunk->next;
                if (dead->flags == CODE_FLAG_MMAP) {
-                       mono_vfree (dead->data, dead->size);
+                       codechunk_vfree (dead->data, dead->size);
                        /* valgrind_unregister(dead->data); */
                } else if (dead->flags == CODE_FLAG_MALLOC) {
                        dlfree (dead->data);
@@ -427,7 +534,7 @@ new_codechunk (int dynamic, int size)
                /* Allocate MIN_ALIGN-1 more than we need so we can still */
                /* guarantee MIN_ALIGN alignment for individual allocs    */
                /* from mono_code_manager_reserve_align.                  */
-               ptr = mono_valloc (NULL, chunk_size + MIN_ALIGN - 1, MONO_PROT_RWX | ARCH_MAP_FLAGS);
+               ptr = codechunk_valloc (chunk_size);
                if (!ptr)
                        return NULL;
        }
@@ -546,8 +653,9 @@ mono_code_manager_reserve_align (MonoCodeManager *cman, int size, int alignment)
        /* Allocate code space from the service runtime */
        code_ptr = allocate_code (size);
        /* Insert pointer to code space in hash, keyed by buffer ptr */
-       mono_g_hash_table_insert (cman->hash, temp_ptr, code_ptr);
+       g_hash_table_insert (cman->hash, temp_ptr, code_ptr);
 
+#ifndef USE_JUMP_TABLES
        nacl_jit_check_init ();
 
        patch_current_depth++;
@@ -555,6 +663,8 @@ mono_code_manager_reserve_align (MonoCodeManager *cman, int size, int alignment)
        patch_dest_base[patch_current_depth] = code_ptr;
        patch_alloc_size[patch_current_depth] = size;
        g_assert (patch_current_depth < kMaxPatchDepth);
+#endif
+
        return temp_ptr;
 #endif
 }
@@ -597,24 +707,30 @@ mono_code_manager_commit (MonoCodeManager *cman, void *data, int size, int newsi
 #else
        unsigned char *code;
        int status;
-       g_assert (newsize <= size);
-       code = mono_g_hash_table_lookup (cman->hash, data);
+       g_assert (NACL_BUNDLE_ALIGN_UP(newsize) <= size);
+       code = g_hash_table_lookup (cman->hash, data);
        g_assert (code != NULL);
-       /* Pad space after code with HLTs */
-       /* TODO: this is x86/amd64 specific */
-       while (newsize & kNaClBundleMask) {
-               *((char *)data + newsize) = 0xf4;
-               newsize++;
-       }
+       mono_nacl_fill_code_buffer ((uint8_t*)data + newsize, size - newsize);
+       newsize = NACL_BUNDLE_ALIGN_UP(newsize);
+       g_assert ((GPOINTER_TO_UINT (data) & kNaClBundleMask) == 0);
+       g_assert ((newsize & kNaClBundleMask) == 0);
        status = nacl_dyncode_create (code, data, newsize);
        if (status != 0) {
+               unsigned char *codep;
+               fprintf(stderr, "Error creating Native Client dynamic code section attempted to be\n"
+                               "emitted at %p (hex dissasembly of code follows):\n", code);
+               for (codep = data; codep < data + newsize; codep++)
+                       fprintf(stderr, "%02x ", *codep);
+               fprintf(stderr, "\n");
                g_assert_not_reached ();
        }
-       mono_g_hash_table_remove (cman->hash, data);
+       g_hash_table_remove (cman->hash, data);
+# ifndef USE_JUMP_TABLES
        g_assert (data == patch_source_base[patch_current_depth]);
        g_assert (code == patch_dest_base[patch_current_depth]);
        patch_current_depth--;
        g_assert (patch_current_depth >= -1);
+# endif
        free (data);
 #endif
 }
@@ -623,7 +739,7 @@ mono_code_manager_commit (MonoCodeManager *cman, void *data, int size, int newsi
 void *
 nacl_code_manager_get_code_dest (MonoCodeManager *cman, void *data)
 {
-       return mono_g_hash_table_lookup (cman->hash, data);
+       return g_hash_table_lookup (cman->hash, data);
 }
 #endif
 
@@ -657,3 +773,26 @@ mono_code_manager_size (MonoCodeManager *cman, int *used_size)
        return size;
 }
 
+#ifdef __native_client_codegen__
+# if defined(TARGET_ARM)
+/* Fill empty space with UDF instruction used as halt on ARM. */
+void
+mono_nacl_fill_code_buffer (guint8 *data, int size)
+{
+        guint32* data32 = (guint32*)data;
+        int i;
+        g_assert(size % 4 == 0);
+        for (i = 0; i < size / 4; i++)
+                data32[i] = 0xE7FEDEFF;
+}
+# elif (defined(TARGET_X86) || defined(TARGET_AMD64))
+/* Fill empty space with HLT instruction */
+void
+mono_nacl_fill_code_buffer(guint8 *data, int size)
+{
+        memset (data, 0xf4, size);
+}
+# else
+#  error "Not ported"
+# endif
+#endif
index 1507348b0b5c957ce149510a28465cf2b9b0d9a5..2c3c7e2809d795c0f00e2dcfa4f2a8cf84b78718 100644 (file)
@@ -14,6 +14,8 @@ void*            mono_code_manager_reserve_align (MonoCodeManager *cman, int siz
 void*            mono_code_manager_reserve (MonoCodeManager *cman, int size);
 void             mono_code_manager_commit  (MonoCodeManager *cman, void *data, int size, int newsize);
 int              mono_code_manager_size    (MonoCodeManager *cman, int *used_size);
+void             mono_code_manager_init (void);
+void             mono_code_manager_cleanup (void);
 
 /* find the extra block allocated to resolve branches close to code */
 typedef int    (*MonoCodeManagerFunc)      (void *data, int csize, int size, void *user_data);
@@ -21,12 +23,18 @@ void            mono_code_manager_foreach  (MonoCodeManager *cman, MonoCodeManag
 
 #if defined( __native_client_codegen__ ) && defined( __native_client__ )
 
+#ifdef __arm__
+#define kNaClBundleSize 16
+#else
 #define kNaClBundleSize 32
+#endif
 #define kNaClBundleMask (kNaClBundleSize-1)
 
+#ifndef USE_JUMP_TABLES
 extern __thread unsigned char **patch_source_base;
 extern __thread unsigned char **patch_dest_base;
 extern __thread int patch_current_depth;
+#endif
 
 int              nacl_is_code_address             (void *target);
 void*            nacl_code_manager_get_code_dest  (MonoCodeManager *cman, void *data);
index cc3d00cc50e27a764e002e3ae6a1bc6ce2564dec..56f5ea90addbdf83bfe8f6a4440d71a568b23b8e 100644 (file)
 
 #endif /* _MSC_VER */
 
-#if !defined(_MSC_VER) && !defined(PLATFORM_SOLARIS) && !defined(_WIN32) && !defined(__CYGWIN__) && HAVE_VISIBILITY_HIDDEN
+#if !defined(_MSC_VER) && !defined(PLATFORM_SOLARIS) && !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MONOTOUCH) && HAVE_VISIBILITY_HIDDEN
 #define MONO_INTERNAL __attribute__ ((visibility ("hidden")))
 #if MONO_LLVM_LOADED
 #define MONO_LLVM_INTERNAL 
 
 #ifdef __GNUC__
 #define MONO_ALWAYS_INLINE __attribute__((always_inline))
+#elif defined(_MSC_VER)
+#define MONO_ALWAYS_INLINE __forceinline
 #else
 #define MONO_ALWAYS_INLINE
 #endif
index 81e2fe69b353d55e41be11e2874a025cb9006575..81f3ca84ec30ae4da29072e8b9db66d8beb0a4d4 100644 (file)
@@ -252,6 +252,8 @@ mono_sigctx_to_monoctx (void *sigctx, MonoContext *mctx)
 {
 #ifdef MONO_CROSS_COMPILE
        g_assert_not_reached ();
+#elif defined(__native_client__)
+       g_assert_not_reached ();
 #else
        arm_ucontext *my_uc = sigctx;
 
@@ -270,6 +272,8 @@ mono_monoctx_to_sigctx (MonoContext *mctx, void *ctx)
 {
 #ifdef MONO_CROSS_COMPILE
        g_assert_not_reached ();
+#elif defined(__native_client__)
+       g_assert_not_reached ();
 #else
        arm_ucontext *my_uc = ctx;
 
index 819fcf625b9f8a1262b43cd07ead5070e901db54..e4aa50345e3ef0607d2ba1edcb7e81b8d35ca46a 100644 (file)
@@ -6,8 +6,8 @@
 
 typedef struct _MonoDl MonoDl;
 
-MonoDl*     mono_dl_open       (const char *name, int flags, char **error_msg) MONO_INTERNAL;
-char*       mono_dl_symbol     (MonoDl *module, const char *name, void **symbol) MONO_INTERNAL;
+MonoDl*     mono_dl_open       (const char *name, int flags, char **error_msg) MONO_LLVM_INTERNAL;
+char*       mono_dl_symbol     (MonoDl *module, const char *name, void **symbol) MONO_LLVM_INTERNAL;
 void        mono_dl_close      (MonoDl *module) MONO_INTERNAL;
 
 char*       mono_dl_build_path (const char *directory, const char *name, void **iter) MONO_INTERNAL;
index 0950e96098ed758f7cdb9a86a74414c322eb8f53..8067240308997df026b0da010afd58a42157af1d 100644 (file)
@@ -71,4 +71,7 @@ mono_error_prepare_exception (MonoError *error, MonoError *error_out) MONO_INTER
 void
 mono_error_raise_exception (MonoError *error) MONO_INTERNAL;
 
+void
+mono_loader_set_error_from_mono_error (MonoError *oerror) MONO_INTERNAL;
+
 #endif
index d489475f7ec1bde58ca1035a030cb3530d286cd3..25bc906ba51f94bb6e585b19fa55a429996ea07b 100644 (file)
@@ -351,6 +351,53 @@ mono_error_set_from_loader_error (MonoError *oerror)
        mono_loader_clear_error ();
 }
 
+static const char*
+get_type_name (MonoErrorInternal *error)
+{
+       if (error->type_name)
+               return error->type_name;
+       if (error->klass)
+               return error->klass->name;
+       return "<unknown type>";
+}
+
+static const char*
+get_assembly_name (MonoErrorInternal *error)
+{
+       if (error->assembly_name)
+               return error->assembly_name;
+       if (error->klass && error->klass->image)
+               return error->klass->image->name;
+       return "<unknown assembly>";
+}
+
+void
+mono_loader_set_error_from_mono_error (MonoError *oerror)
+{
+       MonoErrorInternal *error = (MonoErrorInternal*)oerror;
+
+       switch (error->error_code) {
+       case MONO_ERROR_MISSING_METHOD:
+               mono_loader_set_error_method_load (get_type_name (error), error->member_name);
+               break;
+       case MONO_ERROR_MISSING_FIELD:
+               mono_loader_set_error_field_load (error->klass, error->member_name);
+               break;
+       case MONO_ERROR_TYPE_LOAD:
+               mono_loader_set_error_type_load (get_type_name (error), get_assembly_name (error));
+               break;
+       case MONO_ERROR_FILE_NOT_FOUND:
+               /* XXX can't recover if it's ref only or not */
+               mono_loader_set_error_assembly_load (get_assembly_name (error), FALSE);
+               break;
+       case MONO_ERROR_BAD_IMAGE:
+               mono_loader_set_error_bad_image (g_strdup (mono_internal_error_get_message (error)));
+               break;
+       default:
+               mono_loader_set_error_bad_image (g_strdup_printf ("Non translatable error: %s", mono_internal_error_get_message (error)));
+       }
+}
+
 void
 mono_error_set_out_of_memory (MonoError *oerror, const char *msg_format, ...)
 {
diff --git a/mono/utils/mono-hwcap-arm.c b/mono/utils/mono-hwcap-arm.c
new file mode 100644 (file)
index 0000000..9812aa9
--- /dev/null
@@ -0,0 +1,151 @@
+/*
+ * mono-hwcap-arm.c: ARM hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include "mono/utils/mono-hwcap-arm.h"
+
+#if defined(PLATFORM_ANDROID)
+#include <stdio.h>
+#elif defined(__linux__) && defined(HAVE_SYS_AUXV_H)
+#include <sys/auxv.h>
+#elif defined(__APPLE__)
+#include <mach/machine.h>
+#include <sys/sysctl.h>
+#include <sys/types.h>
+#endif
+
+gboolean mono_hwcap_arm_is_v5 = FALSE;
+gboolean mono_hwcap_arm_is_v6 = FALSE;
+gboolean mono_hwcap_arm_is_v7 = FALSE;
+gboolean mono_hwcap_arm_is_v7s = FALSE;
+gboolean mono_hwcap_arm_has_vfp = FALSE;
+gboolean mono_hwcap_arm_has_thumb = FALSE;
+gboolean mono_hwcap_arm_has_thumb2 = FALSE;
+
+void
+mono_hwcap_arch_init (void)
+{
+#if defined(PLATFORM_ANDROID)
+       /* We can't use the auxiliary vector on Android due to
+        * permissions, so fall back to /proc/cpuinfo.
+        */
+
+       char buf [512];
+       char *line;
+
+       FILE *file = fopen ("/proc/cpuinfo", "r");
+
+       if (file) {
+               while ((line = fgets (buf, 512, file))) {
+                       if (!strncmp (line, "Processor", 9)) {
+                               char *ver = strstr (line, "(v");
+
+                               if (ver) {
+                                       if (ver [2] >= '5')
+                                               mono_hwcap_arm_is_v5 = TRUE;
+
+                                       if (ver [2] >= '6')
+                                               mono_hwcap_arm_is_v6 = TRUE;
+
+                                       if (ver [2] >= '7')
+                                               mono_hwcap_arm_is_v7 = TRUE;
+
+                                       /* TODO: Find a way to detect v7s. */
+                               }
+
+                               continue;
+                       }
+
+                       if (!strncmp (line, "Features", 8)) {
+                               if (strstr (line, "thumb"))
+                                       mono_hwcap_arm_has_thumb = TRUE;
+
+                               /* TODO: Find a way to detect Thumb 2. */
+
+                               if (strstr (line, "vfp"))
+                                       mono_hwcap_arm_has_vfp = TRUE;
+
+                               continue;
+                       }
+               }
+
+               fclose (file);
+       }
+#elif defined(__linux__) && defined(HAVE_SYS_AUXV_H)
+       unsigned long hwcap;
+       unsigned long platform;
+
+       if ((hwcap = getauxval(AT_HWCAP))) {
+               /* HWCAP_ARM_THUMB */
+               if (hwcap & 0x00000004)
+                       mono_hwcap_arm_has_thumb = TRUE;
+
+               /* HWCAP_ARM_VFP */
+               if (hwcap & 0x00000064)
+                       mono_hwcap_arm_has_vfp = TRUE;
+
+               /* TODO: Find a way to detect Thumb 2. */
+       }
+
+       if ((platform = getauxval(AT_PLATFORM))) {
+               const char *str = (const char *) platform;
+
+               if (str [1] >= '5')
+                       mono_hwcap_arm_is_v5 = TRUE;
+
+               if (str [1] >= '6')
+                       mono_hwcap_arm_is_v6 = TRUE;
+
+               if (str [1] >= '7')
+                       mono_hwcap_arm_is_v7 = TRUE;
+
+               /* TODO: Find a way to detect v7s. */
+       }
+#elif defined(__APPLE__)
+       cpu_subtype_t sub_type;
+       size_t length = sizeof (sub_type);
+
+       sysctlbyname ("hw.cpusubtype", &sub_type, &length, NULL, 0);
+
+       if (sub_type == CPU_SUBTYPE_ARM_V5TEJ || sub_type == CPU_SUBTYPE_ARM_XSCALE) {
+               mono_hwcap_arm_is_v5 = TRUE;
+       } else if (sub_type == CPU_SUBTYPE_ARM_V6) {
+               mono_hwcap_arm_is_v5 = TRUE;
+               mono_hwcap_arm_is_v6 = TRUE;
+       } else if (sub_type == CPU_SUBTYPE_ARM_V7 || sub_type == CPU_SUBTYPE_ARM_V7F || sub_type == CPU_SUBTYPE_ARM_V7K) {
+               mono_hwcap_arm_is_v5 = TRUE;
+               mono_hwcap_arm_is_v6 = TRUE;
+               mono_hwcap_arm_is_v7 = TRUE;
+       }
+
+       /* TODO: Find a way to detect features like Thumb and VFP. */
+#endif
+}
+
+void
+mono_hwcap_print(FILE *f)
+{
+       g_fprintf (f, "mono_hwcap_arm_is_v5 = %i\n", mono_hwcap_arm_is_v5);
+       g_fprintf (f, "mono_hwcap_arm_is_v6 = %i\n", mono_hwcap_arm_is_v6);
+       g_fprintf (f, "mono_hwcap_arm_is_v7 = %i\n", mono_hwcap_arm_is_v7);
+       g_fprintf (f, "mono_hwcap_arm_is_v7s = %i\n", mono_hwcap_arm_is_v7s);
+       g_fprintf (f, "mono_hwcap_arm_has_vfp = %i\n", mono_hwcap_arm_has_vfp);
+       g_fprintf (f, "mono_hwcap_arm_has_thumb = %i\n", mono_hwcap_arm_has_thumb);
+       g_fprintf (f, "mono_hwcap_arm_has_thumb2 = %i\n", mono_hwcap_arm_has_thumb2);
+}
diff --git a/mono/utils/mono-hwcap-arm.h b/mono/utils/mono-hwcap-arm.h
new file mode 100644 (file)
index 0000000..6bc9c3b
--- /dev/null
@@ -0,0 +1,14 @@
+#ifndef __MONO_UTILS_HWCAP_ARM_H__
+#define __MONO_UTILS_HWCAP_ARM_H__
+
+#include "mono/utils/mono-hwcap.h"
+
+extern gboolean mono_hwcap_arm_is_v5;
+extern gboolean mono_hwcap_arm_is_v6;
+extern gboolean mono_hwcap_arm_is_v7;
+extern gboolean mono_hwcap_arm_is_v7s;
+extern gboolean mono_hwcap_arm_has_vfp;
+extern gboolean mono_hwcap_arm_has_thumb;
+extern gboolean mono_hwcap_arm_has_thumb2;
+
+#endif /* __MONO_UTILS_HWCAP_ARM_H__ */
diff --git a/mono/utils/mono-hwcap-empty.c b/mono/utils/mono-hwcap-empty.c
new file mode 100644 (file)
index 0000000..9e444f3
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * mono-hwcap-empty.c: Dummy file with no feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include "mono/utils/mono-hwcap.h"
+
+void
+mono_hwcap_arch_init (void)
+{
+       /* When the runtime is built as a cross compiler, we don't want to do
+        * any CPU feature detection since we're most likely not running on the
+        * same kind of CPU as the one the resulting code will run on.
+        *
+        * This file is also used for architectures that haven't specified a
+        * mono-hwcap-$TARGET.c file in Makefile.am.
+        */
+}
+
+void
+mono_hwcap_print (FILE *f)
+{
+}
diff --git a/mono/utils/mono-hwcap-ia64.c b/mono/utils/mono-hwcap-ia64.c
new file mode 100644 (file)
index 0000000..226ab0d
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * mono-hwcap-ia64.c: Itanium hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include "mono/utils/mono-hwcap-ia64.h"
+
+void
+mono_hwcap_arch_init (void)
+{
+       /* Nothing needed here yet. */
+}
+
+void
+mono_hwcap_print (FILE *f)
+{
+}
diff --git a/mono/utils/mono-hwcap-ia64.h b/mono/utils/mono-hwcap-ia64.h
new file mode 100644 (file)
index 0000000..15b64a8
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef __MONO_UTILS_HWCAP_IA64_H__
+#define __MONO_UTILS_HWCAP_IA64_H__
+
+#include "mono/utils/mono-hwcap.h"
+
+/* Nothing needed here yet. */
+
+#endif /* __MONO_UTILS_HWCAP_IA64_H__ */
diff --git a/mono/utils/mono-hwcap-mips.c b/mono/utils/mono-hwcap-mips.c
new file mode 100644 (file)
index 0000000..a768257
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * mono-hwcap-mips.c: MIPS hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include "mono/utils/mono-hwcap-mips.h"
+
+void
+mono_hwcap_arch_init (void)
+{
+       /* Nothing needed here yet. */
+}
+
+void
+mono_hwcap_print (FILE *f)
+{
+}
diff --git a/mono/utils/mono-hwcap-mips.h b/mono/utils/mono-hwcap-mips.h
new file mode 100644 (file)
index 0000000..dd0622a
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef __MONO_UTILS_HWCAP_MIPS_H__
+#define __MONO_UTILS_HWCAP_MIPS_H__
+
+#include "mono/utils/mono-hwcap.h"
+
+/* Nothing needed here yet. */
+
+#endif /* __MONO_UTILS_HWCAP_MIPS_H__ */
diff --git a/mono/utils/mono-hwcap-ppc.c b/mono/utils/mono-hwcap-ppc.c
new file mode 100644 (file)
index 0000000..c88b95f
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * mono-hwcap-ppc.c: PowerPC hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include "mono/utils/mono-hwcap-ppc.h"
+
+#if defined(__linux__) && defined(HAVE_SYS_AUXV_H)
+#include <string.h>
+#include <sys/auxv.h>
+#endif
+
+gboolean mono_hwcap_ppc_has_icache_snoop = FALSE;
+gboolean mono_hwcap_ppc_is_isa_2x = FALSE;
+gboolean mono_hwcap_ppc_is_isa_64 = FALSE;
+gboolean mono_hwcap_ppc_has_move_fpr_gpr = FALSE;
+gboolean mono_hwcap_ppc_has_multiple_ls_units = FALSE;
+
+void
+mono_hwcap_arch_init (void)
+{
+#if defined(__linux__) && defined(HAVE_SYS_AUXV_H)
+       unsigned long hwcap;
+       unsigned long platform;
+
+       if ((hwcap = getauxval(AT_HWCAP))) {
+               /* PPC_FEATURE_ICACHE_SNOOP */
+               if (hwcap & 0x00002000)
+                       mono_hwcap_ppc_has_icache_snoop = TRUE;
+
+               /* PPC_FEATURE_POWER4, PPC_FEATURE_POWER5, PPC_FEATURE_POWER5_PLUS,
+                  PPC_FEATURE_CELL_BE, PPC_FEATURE_PA6T, PPC_FEATURE_ARCH_2_05 */
+               if (hwcap & (0x00080000 | 0x00040000 | 0x00020000 | 0x00010000 | 0x00000800 | 0x00001000))
+                       mono_hwcap_ppc_is_isa_2x = TRUE;
+
+               /* PPC_FEATURE_64 */
+               if (hwcap & 0x40000000)
+                       mono_hwcap_ppc_is_isa_64 = TRUE;
+
+               /* PPC_FEATURE_POWER6_EXT */
+               if (hwcap & 0x00000200)
+                       mono_hwcap_ppc_has_move_fpr_gpr = TRUE;
+       }
+
+       if ((platform = getauxval(AT_PLATFORM))) {
+               const char *str = (const char *) platform;
+
+               if (!strcmp (str, "ppc970") || (!strncmp (str, "power", 5) && str [5] >= '4' && str [5] <= '7'))
+                       mono_hwcap_ppc_has_multiple_ls_units = TRUE;
+       }
+#endif
+}
+
+void
+mono_hwcap_print (FILE* f)
+{
+       g_fprintf (f, "mono_hwcap_ppc_has_icache_snoop = %i\n", mono_hwcap_ppc_has_icache_snoop);
+       g_fprintf (f, "mono_hwcap_ppc_is_isa_2x = %i\n", mono_hwcap_ppc_is_isa_2x);
+       g_fprintf (f, "mono_hwcap_ppc_is_isa_64 = %i\n", mono_hwcap_ppc_is_isa_64);
+       g_fprintf (f, "mono_hwcap_ppc_has_move_fpr_gpr = %i\n", mono_hwcap_ppc_has_move_fpr_gpr);
+       g_fprintf (f, "mono_hwcap_ppc_has_multiple_ls_units = %i\n", mono_hwcap_ppc_has_multiple_ls_units);
+}
diff --git a/mono/utils/mono-hwcap-ppc.h b/mono/utils/mono-hwcap-ppc.h
new file mode 100644 (file)
index 0000000..0ae2578
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef __MONO_UTILS_HWCAP_PPC_H__
+#define __MONO_UTILS_HWCAP_PPC_H__
+
+#include "mono/utils/mono-hwcap.h"
+
+extern gboolean mono_hwcap_ppc_has_icache_snoop;
+extern gboolean mono_hwcap_ppc_is_isa_2x;
+extern gboolean mono_hwcap_ppc_is_isa_64;
+extern gboolean mono_hwcap_ppc_has_move_fpr_gpr;
+extern gboolean mono_hwcap_ppc_has_multiple_ls_units;
+
+#endif /* __MONO_UTILS_HWCAP_PPC_H__ */
diff --git a/mono/utils/mono-hwcap-s390x.c b/mono/utils/mono-hwcap-s390x.c
new file mode 100644 (file)
index 0000000..5974649
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * mono-hwcap-s390x.c: S/390x hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include "mono/utils/mono-hwcap-s390x.h"
+
+#include <signal.h>
+
+gboolean mono_hwcap_s390x_has_ld = FALSE;
+
+static void
+catch_sigill (int sig_no, siginfo_t *info, gpointer act)
+{
+       mono_hwcap_s390x_has_ld = FALSE;
+}
+
+void
+mono_hwcap_arch_init (void)
+{
+       mono_hwcap_s390x_has_ld = TRUE;
+
+       struct sigaction sa, *old_sa;
+
+       /* Determine if we have a long displacement facility
+        * by executing the STY instruction. If it fails, we
+        * catch the SIGILL and assume the answer is no.
+        */
+       sa.sa_sigaction = catch_sigill;
+       sigemptyset (&sa.sa_mask);
+       sa.sa_flags = SA_SIGINFO;
+
+       sigaction (SIGILL, &sa, old_sa);
+
+       __asm__ (
+               "LGHI\t0,1\n\t"
+               "LA\t1,%0\n\t"
+               ".byte\t0xe3,0x00,0x10,0x00,0x00,0x50\n\t"
+               : "=m" (mono_hwcap_s390x_has_ld)
+               :
+               : "0", "1"
+       );
+
+       sigaction (SIGILL, old_sa, NULL);
+}
+
+void
+mono_hwcap_print (FILE *f)
+{
+       g_fprintf (f, "mono_hwcap_s390x_has_ld = %i\n", mono_hwcap_s390x_has_ld);
+}
diff --git a/mono/utils/mono-hwcap-s390x.h b/mono/utils/mono-hwcap-s390x.h
new file mode 100644 (file)
index 0000000..24c76a2
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef __MONO_UTILS_HWCAP_S390X_H__
+#define __MONO_UTILS_HWCAP_S390X_H__
+
+#include "mono/utils/mono-hwcap.h"
+
+extern gboolean mono_hwcap_s390x_has_ld;
+
+#endif /* __MONO_UTILS_HWCAP_S390X_H__ */
diff --git a/mono/utils/mono-hwcap-sparc.c b/mono/utils/mono-hwcap-sparc.c
new file mode 100644 (file)
index 0000000..e3cc238
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * mono-hwcap-sparc.c: SPARC hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include "mono/utils/mono-hwcap-sparc.h"
+
+#include <string.h>
+
+#if !defined(__linux__)
+#include <sys/systeminfo.h>
+#else
+#include <unistd.h>
+#endif
+
+gboolean mono_hwcap_sparc_is_v9 = FALSE;
+
+void
+mono_hwcap_arch_init (void)
+{
+       char buf [1024];
+
+#if !defined(__linux__)
+       if (!sysinfo (SI_ISALIST, buf, 1024))
+               g_assert_not_reached ();
+#else
+       /* If the page size is 8192, we're on a 64-bit SPARC, which
+        * in turn means a v9 or better.
+        */
+       if (getpagesize () == 8192)
+               strcpy (buf, "sparcv9")
+       else
+               strcpy (buf, "sparcv8")
+#endif
+
+       mono_hwcap_sparc_is_v9 = strstr (buf, "sparcv9");
+}
+
+void
+mono_hwcap_print (FILE *f)
+{
+       g_fprintf (f, "mono_hwcap_sparc_is_v9 = %i\n", mono_hwcap_sparc_is_v9);
+}
diff --git a/mono/utils/mono-hwcap-sparc.h b/mono/utils/mono-hwcap-sparc.h
new file mode 100644 (file)
index 0000000..98bcf8e
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef __MONO_UTILS_HWCAP_SPARC_H__
+#define __MONO_UTILS_HWCAP_SPARC_H__
+
+#include "mono/utils/mono-hwcap.h"
+
+extern gboolean mono_hwcap_sparc_is_v9;
+
+#endif /* __MONO_UTILS_HWCAP_SPARC_H__ */
diff --git a/mono/utils/mono-hwcap-x86.c b/mono/utils/mono-hwcap-x86.c
new file mode 100644 (file)
index 0000000..57fff00
--- /dev/null
@@ -0,0 +1,178 @@
+/*
+ * mono-hwcap-x86.c: x86 hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include "mono/utils/mono-hwcap-x86.h"
+
+#if defined(HAVE_UNISTD_H)
+#include <unistd.h>
+#endif
+
+#if defined(_MSC_VER)
+#include <intrin.h>
+#endif
+
+gboolean mono_hwcap_x86_is_xen = FALSE;
+gboolean mono_hwcap_x86_has_cmov = FALSE;
+gboolean mono_hwcap_x86_has_fcmov = FALSE;
+gboolean mono_hwcap_x86_has_sse1 = FALSE;
+gboolean mono_hwcap_x86_has_sse2 = FALSE;
+gboolean mono_hwcap_x86_has_sse3 = FALSE;
+gboolean mono_hwcap_x86_has_ssse3 = FALSE;
+gboolean mono_hwcap_x86_has_sse41 = FALSE;
+gboolean mono_hwcap_x86_has_sse42 = FALSE;
+gboolean mono_hwcap_x86_has_sse4a = FALSE;
+
+static gboolean
+cpuid (int id, int *p_eax, int *p_ebx, int *p_ecx, int *p_edx)
+{
+#if defined(_MSC_VER)
+       int info [4];
+#endif
+
+       /* First, make sure we can use cpuid if we're on 32-bit. */
+#if defined(TARGET_X86)
+       gboolean have_cpuid = FALSE;
+
+#if defined(_MSC_VER)
+       __asm {
+               pushfd
+               pop eax
+               mov edx, eax
+               xor eax, 0x200000
+               push eax
+               popfd
+               pushfd
+               pop eax
+               xor eax, edx
+               and eax, 0x200000
+               mov have_cpuid, eax
+       }
+#else
+       __asm__ __volatile__ (
+               "pushfl\n\t"
+               "popl\t%%eax\n\t"
+               "movl\t%%eax, %%edx\n\t"
+               "xorl\t$0x200000, %%eax\n\t"
+               "pushl\t%%eax\n\t"
+               "popfl\n\t"
+               "pushfl\n\t"
+               "popl\t%%eax\n\t"
+               "xorl\t%%edx, %%eax\n\t"
+               "andl\t$0x200000, %%eax\n\t"
+               "movl\t%%eax, %0\n\t"
+               : "=r" (have_cpuid)
+               :
+               : "%eax", "%edx"
+       );
+#endif
+
+       if (!have_cpuid)
+               return FALSE;
+#endif
+
+       /* Now issue the actual cpuid instruction. We can use
+          MSVC's __cpuid on both 32-bit and 64-bit. */
+#if defined(_MSC_VER)
+       __cpuid (info, id);
+       *p_eax = info [0];
+       *p_ebx = info [1];
+       *p_ecx = info [2];
+       *p_edx = info [3];
+#elif defined(TARGET_X86)
+       /* This complicated stuff is necessary because EBX
+          may be used by the compiler in PIC mode. */
+       __asm__ __volatile__ (
+               "xchgl\t%%ebx, %k1\n\t"
+               "cpuid\n\t"
+               "xchgl\t%%ebx, %k1\n\t"
+               : "=a" (*p_eax), "=&r" (*p_ebx), "=c" (*p_ecx), "=d" (*p_edx)
+               : "0" (id)
+       );
+#else
+       __asm__ __volatile__ (
+               "cpuid\n\t"
+               : "=a" (*p_eax), "=b" (*p_ebx), "=c" (*p_ecx), "=d" (*p_edx)
+               : "a" (id)
+       );
+#endif
+
+       return TRUE;
+}
+
+void
+mono_hwcap_arch_init (void)
+{
+       int eax, ebx, ecx, edx;
+
+       if (cpuid (1, &eax, &ebx, &ecx, &edx)) {
+               if (edx & (1 << 15)) {
+                       mono_hwcap_x86_has_cmov = TRUE;
+
+                       if (edx & 1)
+                               mono_hwcap_x86_has_fcmov = TRUE;
+               }
+
+               if (edx & (1 << 25))
+                       mono_hwcap_x86_has_sse1 = TRUE;
+
+               if (edx & (1 << 26))
+                       mono_hwcap_x86_has_sse2 = TRUE;
+
+               if (ecx & (1 << 0))
+                       mono_hwcap_x86_has_sse3 = TRUE;
+
+               if (ecx & (1 << 9))
+                       mono_hwcap_x86_has_ssse3 = TRUE;
+
+               if (ecx & (1 << 19))
+                       mono_hwcap_x86_has_sse41 = TRUE;
+
+               if (ecx & (1 << 20))
+                       mono_hwcap_x86_has_sse42 = TRUE;
+       }
+
+       if (cpuid (0x80000000, &eax, &ebx, &ecx, &edx)) {
+               if ((unsigned int) eax >= 0x80000001 && ebx == 0x68747541 && ecx == 0x444D4163 && edx == 0x69746E65) {
+                       if (cpuid (0x80000001, &eax, &ebx, &ecx, &edx)) {
+                               if (ecx & (1 << 6))
+                                       mono_hwcap_x86_has_sse4a = TRUE;
+                       }
+               }
+       }
+
+#if defined(HAVE_UNISTD_H)
+       mono_hwcap_x86_is_xen = !access ("/proc/xen", F_OK);
+#endif
+}
+
+void
+mono_hwcap_print (FILE *f)
+{
+       g_fprintf (f, "mono_hwcap_x86_is_xen = %i\n", mono_hwcap_x86_is_xen);
+       g_fprintf (f, "mono_hwcap_x86_has_cmov = %i\n", mono_hwcap_x86_has_cmov);
+       g_fprintf (f, "mono_hwcap_x86_has_fcmov = %i\n", mono_hwcap_x86_has_fcmov);
+       g_fprintf (f, "mono_hwcap_x86_has_sse1 = %i\n", mono_hwcap_x86_has_sse1);
+       g_fprintf (f, "mono_hwcap_x86_has_sse2 = %i\n", mono_hwcap_x86_has_sse2);
+       g_fprintf (f, "mono_hwcap_x86_has_sse3 = %i\n", mono_hwcap_x86_has_sse3);
+       g_fprintf (f, "mono_hwcap_x86_has_ssse3 = %i\n", mono_hwcap_x86_has_ssse3);
+       g_fprintf (f, "mono_hwcap_x86_has_sse41 = %i\n", mono_hwcap_x86_has_sse41);
+       g_fprintf (f, "mono_hwcap_x86_has_sse42 = %i\n", mono_hwcap_x86_has_sse42);
+       g_fprintf (f, "mono_hwcap_x86_has_sse4a = %i\n", mono_hwcap_x86_has_sse4a);
+}
diff --git a/mono/utils/mono-hwcap-x86.h b/mono/utils/mono-hwcap-x86.h
new file mode 100644 (file)
index 0000000..5e1f4f7
--- /dev/null
@@ -0,0 +1,17 @@
+#ifndef __MONO_UTILS_HWCAP_X86_H__
+#define __MONO_UTILS_HWCAP_X86_H__
+
+#include "mono/utils/mono-hwcap.h"
+
+extern gboolean mono_hwcap_x86_is_xen;
+extern gboolean mono_hwcap_x86_has_cmov;
+extern gboolean mono_hwcap_x86_has_fcmov;
+extern gboolean mono_hwcap_x86_has_sse1;
+extern gboolean mono_hwcap_x86_has_sse2;
+extern gboolean mono_hwcap_x86_has_sse3;
+extern gboolean mono_hwcap_x86_has_ssse3;
+extern gboolean mono_hwcap_x86_has_sse41;
+extern gboolean mono_hwcap_x86_has_sse42;
+extern gboolean mono_hwcap_x86_has_sse4a;
+
+#endif /* __MONO_UTILS_HWCAP_X86_H__ */
diff --git a/mono/utils/mono-hwcap.c b/mono/utils/mono-hwcap.c
new file mode 100644 (file)
index 0000000..67787af
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * mono-hwcap.c: Hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include <stdlib.h>
+
+#include "mono/utils/mono-hwcap.h"
+
+static gboolean hwcap_inited = FALSE;
+
+void
+mono_hwcap_init (void)
+{
+       const char *verbose = getenv ("MONO_VERBOSE_HWCAP");
+
+       if (hwcap_inited)
+               return;
+
+       mono_hwcap_arch_init ();
+
+       if (verbose)
+               mono_hwcap_print (stdout);
+}
diff --git a/mono/utils/mono-hwcap.h b/mono/utils/mono-hwcap.h
new file mode 100644 (file)
index 0000000..159701b
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef __MONO_UTILS_HWCAP_H__
+#define __MONO_UTILS_HWCAP_H__
+
+#include <stdio.h>
+#include <glib.h>
+
+#include "config.h"
+
+#include "mono/utils/mono-compiler.h"
+
+/* Call this function to perform hardware feature detection. Until
+ * this function has been called, all feature variables will be
+ * FALSE as a default.
+ *
+ * While this function can be called multiple times, doing so from
+ * several threads at the same time is not supported as it will
+ * result in an inconsistent state of the variables. Further,
+ * feature variables should not be read *while* this function is
+ * executing.
+ *
+ * To get at feature variables, include the appropriate header,
+ * e.g. mono-hwcap-x86.h for x86(-64).
+ */
+void mono_hwcap_init (void) MONO_INTERNAL;
+
+/* Implemented in mono-hwcap-$TARGET.c. Do not call. */
+void mono_hwcap_arch_init (void) MONO_INTERNAL;
+
+/* Print detected features to the given file. */
+void mono_hwcap_print (FILE *f) MONO_INTERNAL;
+
+/* Please note: If you're going to use the Linux auxiliary vector
+ * to detect CPU features, don't use any of the constant names in
+ * the hwcap.h header. This ties us to a particular version of the
+ * header, and since the values are guaranteed to be stable, hard-
+ * coding them is not that terrible.
+ *
+ * Also, please do not add assumptions to mono-hwcap. The code here
+ * is meant to *discover* facts about the hardware, not assume that
+ * some feature exists because of $arbitrary_preprocessor_define.
+ * If you have to make assumptions, do so elsewhere, e.g. in the
+ * Mini back end you're modifying.
+ *
+ * Finally, be conservative. If you can't determine precisely if a
+ * feature is present, assume that it isn't. In the rare cases where
+ * the hardware or operating system are lying, work around that in
+ * a different place, as with the rule above.
+ */
+
+#endif /* __MONO_UTILS_HWCAP_H__ */
index cc9c235b70fe5270d01cc9be982a326398037d42..3536d25d8445900a99b12dd7b1c67851899b809d 100644 (file)
@@ -16,8 +16,7 @@
 
 #include <mono/utils/mono-linked-list-set.h>
 
-/*atomics.*/
-#include <mono/io-layer/io-layer.h>
+#include <mono/utils/atomic.h>
 
 static inline gpointer
 mask (gpointer n, uintptr_t bit)
index dd37c80660f11f04c43e5a67ac14952a5829fdeb..7b21bb6158d047fb5fd16c3046380c1d50c7f95a 100644 (file)
 
 #include <glib.h>
 
-#if defined(__x86_64__) || defined(TARGET_AMD64)
-#ifndef _MSC_VER
-static inline void mono_memory_barrier (void)
-{
-       __asm__ __volatile__ ("mfence" : : : "memory");
-}
-
-static inline void mono_memory_read_barrier (void)
-{
-       __asm__ __volatile__ ("lfence" : : : "memory");
-}
-
-static inline void mono_memory_write_barrier (void)
-{
-       __asm__ __volatile__ ("sfence" : : : "memory");
-}
-#else
+#ifdef _MSC_VER
 #include <intrin.h>
 
 static inline void mono_memory_barrier (void)
@@ -47,12 +31,10 @@ static inline void mono_memory_write_barrier (void)
 {
        _WriteBarrier ();
 }
-#endif
-#elif defined(__i386__) || defined(TARGET_X86)
-#ifndef _MSC_VER
+#elif defined(USE_GCC_ATOMIC_OPS)
 static inline void mono_memory_barrier (void)
 {
-       __asm__ __volatile__ ("lock; addl $0,0(%%esp)" : : : "memory");
+       __sync_synchronize ();
 }
 
 static inline void mono_memory_read_barrier (void)
@@ -64,24 +46,6 @@ static inline void mono_memory_write_barrier (void)
 {
        mono_memory_barrier ();
 }
-#else
-#include <intrin.h>
-
-static inline void mono_memory_barrier (void)
-{
-       _ReadWriteBarrier ();
-}
-
-static inline void mono_memory_read_barrier (void)
-{
-       _ReadBarrier ();
-}
-
-static inline void mono_memory_write_barrier (void)
-{
-       _WriteBarrier ();
-}
-#endif
 #elif defined(sparc) || defined(__sparc__)
 static inline void mono_memory_barrier (void)
 {
@@ -108,39 +72,6 @@ static inline void mono_memory_read_barrier (void)
        mono_memory_barrier ();
 }
 
-static inline void mono_memory_write_barrier (void)
-{
-       mono_memory_barrier ();
-}
-#elif defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__)
-static inline void mono_memory_barrier (void)
-{
-       __asm__ __volatile__ ("sync" : : : "memory");
-}
-
-static inline void mono_memory_read_barrier (void)
-{
-       mono_memory_barrier ();
-}
-
-static inline void mono_memory_write_barrier (void)
-{
-       __asm__ __volatile__ ("eieio" : : : "memory");
-}
-
-#elif defined(__arm__)
-static inline void mono_memory_barrier (void)
-{
-#ifdef HAVE_ARMV6
-       __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r" (0) : "memory");
-#endif
-}
-
-static inline void mono_memory_read_barrier (void)
-{
-       mono_memory_barrier ();
-}
-
 static inline void mono_memory_write_barrier (void)
 {
        mono_memory_barrier ();
@@ -160,21 +91,6 @@ static inline void mono_memory_write_barrier (void)
 {
        mono_memory_barrier ();
 }
-#elif defined(__mips__)
-static inline void mono_memory_barrier (void)
-{
-        __asm__ __volatile__ ("" : : : "memory");
-}
-
-static inline void mono_memory_read_barrier (void)
-{
-        mono_memory_barrier ();
-}
-
-static inline void mono_memory_write_barrier (void)
-{
-        mono_memory_barrier ();
-}
 #elif defined(MONO_CROSS_COMPILE)
 static inline void mono_memory_barrier (void)
 {
index 3fd7bc4c75c839339ff334b4ddc63e4503c4ead3..a97a7cc16b213dcd170ee94ab7032a69450d5aad 100644 (file)
@@ -152,16 +152,17 @@ Acquire/release semantics macros.
        *(target) = (value);    \
 } while (0)
 
-#define mono_atomic_load_release(target) ({    \
-       typeof (*target) __tmp; \
+#define mono_atomic_load_release(_type,target) ({      \
+       _type __tmp;    \
        LOAD_RELEASE_FENCE;     \
        __tmp = *target;        \
        __tmp; })
 
-#define mono_atomic_load_acquire(target) ({    \
-       typeof (*target) __tmp = *target;       \
+#define mono_atomic_load_acquire(var,_type,target) do {        \
+       _type __tmp = *target;  \
        LOAD_ACQUIRE_FENCE;     \
-       __tmp; })
+       (var) = __tmp; \
+} while (0)
 
 #define mono_atomic_store_acquire(target,value) {      \
        *target = value;        \
index 412a23b3fff33713e20a6b18489384fc19d1a32b..b2e245164f083f3c982837a2c81292e43334c73e 100644 (file)
@@ -405,6 +405,20 @@ mono_file_unmap (void *addr, void *handle)
  *
  * Returns: 0 on success.
  */
+#if defined(__native_client__)
+int
+mono_mprotect (void *addr, size_t length, int flags)
+{
+       int prot = prot_from_flags (flags);
+       void *new_addr;
+
+       if (flags & MONO_MMAP_DISCARD) memset (addr, 0, length);
+
+       new_addr = mmap(addr, length, prot, MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS, -1, 0);
+       if (new_addr == addr) return 0;
+        return -1;
+}
+#else
 int
 mono_mprotect (void *addr, size_t length, int flags)
 {
@@ -427,6 +441,7 @@ mono_mprotect (void *addr, size_t length, int flags)
        }
        return mprotect (addr, length, prot);
 }
+#endif // __native_client__
 
 #else
 
@@ -476,7 +491,8 @@ shared_area_disabled (void)
        if (!use_shared_area) {
                if (g_getenv ("MONO_DISABLE_SHARED_AREA"))
                        use_shared_area = -1;
-               use_shared_area = 1;
+               else
+                       use_shared_area = 1;
        }
        return use_shared_area == -1;
 }
diff --git a/mono/utils/mono-mutex.c b/mono/utils/mono-mutex.c
new file mode 100644 (file)
index 0000000..6abad57
--- /dev/null
@@ -0,0 +1,158 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * mono-mutex.h: Portability wrappers around POSIX Mutexes
+ *
+ * Authors: Jeffrey Stedfast <fejj@ximian.com>
+ *
+ * Copyright 2002 Ximian, Inc. (www.ximian.com)
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <assert.h>
+#include <mono/utils/mono-memory-model.h>
+
+#ifndef HOST_WIN32
+#include <sys/time.h>
+#endif
+
+#include "mono-mutex.h"
+
+#ifndef HOST_WIN32
+
+#if defined(__APPLE__)
+#define _DARWIN_C_SOURCE
+#include <pthread_spis.h>
+#include <dlfcn.h>
+#endif
+
+#ifndef HAVE_PTHREAD_MUTEX_TIMEDLOCK
+/* Android does not implement pthread_mutex_timedlock(), but does provide an
+ * unusual declaration: http://code.google.com/p/android/issues/detail?id=7807
+ */
+#ifdef PLATFORM_ANDROID
+#define CONST_NEEDED
+#else
+#define CONST_NEEDED const
+#endif
+
+int pthread_mutex_timedlock (pthread_mutex_t *mutex,
+                           CONST_NEEDED struct timespec *timeout);
+int
+pthread_mutex_timedlock (pthread_mutex_t *mutex, CONST_NEEDED struct timespec *timeout)
+{
+       struct timeval timenow;
+       struct timespec sleepytime;
+       int retcode;
+       
+       /* This is just to avoid a completely busy wait */
+       sleepytime.tv_sec = 0;
+       sleepytime.tv_nsec = 10000000;  /* 10ms */
+       
+       while ((retcode = pthread_mutex_trylock (mutex)) == EBUSY) {
+               gettimeofday (&timenow, NULL);
+               
+               if (timenow.tv_sec >= timeout->tv_sec &&
+                   (timenow.tv_usec * 1000) >= timeout->tv_nsec) {
+                       return ETIMEDOUT;
+               }
+               
+               nanosleep (&sleepytime, NULL);
+       }
+       
+       return retcode;
+}
+#endif /* HAVE_PTHREAD_MUTEX_TIMEDLOCK */
+
+
+int
+mono_once (mono_once_t *once, void (*once_init) (void))
+{
+       int thr_ret;
+       
+       if (!once->complete) {
+               pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                                     (void *)&once->mutex);
+               thr_ret = pthread_mutex_lock (&once->mutex);
+               g_assert (thr_ret == 0);
+               
+               if (!once->complete) {
+                       once_init ();
+                       once->complete = TRUE;
+               }
+               thr_ret = pthread_mutex_unlock (&once->mutex);
+               g_assert (thr_ret == 0);
+               
+               pthread_cleanup_pop (0);
+       }
+       
+       return 0;
+}
+
+#endif
+
+/*
+Returns a recursive mutex that is safe under suspension.
+
+A suspension safe mutex means one that can handle this scenario:
+
+mutex M
+
+thread 1:
+1)lock M
+2)suspend thread 2
+3)unlock M
+4)lock M
+
+thread 2:
+5)lock M
+
+Say (1) happens before (5) and (5) happens before (2).
+This means that thread 2 was suspended by the kernel because
+it's waiting on mutext M.
+
+Thread 1 then proceed to suspend thread 2 and unlock/lock the
+mutex.
+
+If the kernel implements mutexes with FIFO wait lists, this means
+that thread 1 will be blocked waiting for thread 2 acquire the lock.
+Since thread 2 is suspended, we have a deadlock.
+
+A suspend safe mutex is an unfair lock but will schedule any runable
+thread that is waiting for a the lock.
+
+This problem was witnessed on OSX in mono/tests/thread-exit.cs.
+
+*/
+int
+mono_mutex_init_suspend_safe (mono_mutex_t *mutex)
+{
+#if defined(__APPLE__)
+       int res;
+       pthread_mutexattr_t attr;
+       static gboolean inited;
+       static int (*setpolicy_np) (pthread_mutexattr_t *, int);
+
+       if (!inited) {
+               setpolicy_np = dlsym (RTLD_NEXT, "pthread_mutexattr_setpolicy_np");
+               mono_atomic_store_release (&inited, TRUE);
+       }
+
+       pthread_mutexattr_init (&attr);
+       pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
+       if (setpolicy_np)
+               setpolicy_np (&attr, _PTHREAD_MUTEX_POLICY_FIRSTFIT);
+       res = pthread_mutex_init (mutex, &attr);
+       pthread_mutexattr_destroy (&attr);
+
+       return res;
+#else
+       return mono_mutex_init (mutex);
+#endif
+}
diff --git a/mono/utils/mono-mutex.h b/mono/utils/mono-mutex.h
new file mode 100644 (file)
index 0000000..01a5c83
--- /dev/null
@@ -0,0 +1,104 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * mono-mutex.h: Portability wrappers around POSIX Mutexes
+ *
+ * Authors: Jeffrey Stedfast <fejj@ximian.com>
+ *
+ * Copyright 2002 Ximian, Inc. (www.ximian.com)
+ */
+
+
+#ifndef __MONO_MUTEX_H__
+#define __MONO_MUTEX_H__
+
+#include <glib.h>
+#ifdef HAVE_PTHREAD_H
+#include <pthread.h>
+#endif
+#include <time.h>
+
+#ifdef HOST_WIN32
+#include <windows.h>
+#endif
+
+G_BEGIN_DECLS
+
+#ifndef HOST_WIN32
+
+typedef struct {
+       pthread_mutex_t mutex;
+       gboolean complete;
+} mono_once_t;
+
+#define MONO_ONCE_INIT { PTHREAD_MUTEX_INITIALIZER, FALSE }
+
+int mono_once (mono_once_t *once, void (*once_init) (void));
+
+typedef pthread_mutex_t mono_mutex_t;
+typedef pthread_cond_t mono_cond_t;
+
+#define mono_mutex_init(mutex) pthread_mutex_init (mutex, NULL)
+#define mono_mutex_lock(mutex) pthread_mutex_lock (mutex)
+#define mono_mutex_trylock(mutex) pthread_mutex_trylock (mutex)
+#define mono_mutex_timedlock(mutex,timeout) pthread_mutex_timedlock (mutex, timeout)
+#define mono_mutex_unlock(mutex) pthread_mutex_unlock (mutex)
+#define mono_mutex_destroy(mutex) pthread_mutex_destroy (mutex)
+
+#define mono_cond_init(cond,attr) pthread_cond_init (cond,attr)
+#define mono_cond_wait(cond,mutex) pthread_cond_wait (cond, mutex)
+#define mono_cond_timedwait(cond,mutex,timeout) pthread_cond_timedwait (cond, mutex, timeout)
+#define mono_cond_signal(cond) pthread_cond_signal (cond)
+#define mono_cond_broadcast(cond) pthread_cond_broadcast (cond)
+#define mono_cond_destroy(cond)
+
+/* This is a function so it can be passed to pthread_cleanup_push -
+ * that is a macro and giving it a macro as a parameter breaks.
+ */
+G_GNUC_UNUSED
+static inline int mono_mutex_unlock_in_cleanup (mono_mutex_t *mutex)
+{
+       return(mono_mutex_unlock (mutex));
+}
+
+/* Returns zero on success. */
+static inline int
+mono_mutex_init_recursive (mono_mutex_t *mutex)
+{
+       int res;
+       pthread_mutexattr_t attr;
+
+       pthread_mutexattr_init (&attr);
+       pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
+       res = pthread_mutex_init (mutex, &attr);
+       pthread_mutexattr_destroy (&attr);
+
+       return res;
+}
+
+#else
+
+typedef CRITICAL_SECTION mono_mutex_t;
+typedef HANDLE mono_cond_t;
+
+#define mono_mutex_init(mutex) (InitializeCriticalSection((mutex)), 0)
+#define mono_mutex_init_recursive(mutex) (InitializeCriticalSection((mutex)), 0)
+#define mono_mutex_lock(mutex) EnterCriticalSection((mutex))
+#define mono_mutex_trylock(mutex) TryEnterCriticalSection((mutex))
+#define mono_mutex_unlock(mutex)  LeaveCriticalSection((mutex))
+#define mono_mutex_destroy(mutex) DeleteCriticalSection((mutex))
+
+
+#define mono_cond_init(cond,attr) do{*(cond) = CreateEvent(NULL,FALSE,FALSE,NULL); } while (0)
+#define mono_cond_wait(cond,mutex) WaitForSingleObject(*(cond),INFINITE)
+#define mono_cond_timedwait(cond,mutex,timeout) WaitForSingleObject(*(cond),timeout)
+#define mono_cond_signal(cond) SetEvent(*(cond))
+#define mono_cond_broadcast(cond) (!SetEvent(*(cond)))
+#define mono_cond_destroy(cond) CloseHandle(*(cond))
+
+#endif
+
+int mono_mutex_init_suspend_safe (mono_mutex_t *mutex);
+
+G_END_DECLS
+
+#endif /* __MONO_MUTEX_H__ */
index 88b5d25a71904ff89e0923b1b7f967034f0b3c34..0a443aa41f76c1a977ac108b5e0a4a635651ae6e 100644 (file)
@@ -44,14 +44,9 @@ mono_path_canonicalize (const char *path)
        if (g_path_is_absolute (path)) {
                abspath = g_strdup (path);
        } else {
-#ifdef __native_client__
-               gchar *tmpdir = ".";
-               abspath = g_build_filename (tmpdir, path, NULL);
-#else
                gchar *tmpdir = g_get_current_dir ();
                abspath = g_build_filename (tmpdir, path, NULL);
                g_free (tmpdir);
-#endif
        }
 
 #ifdef HOST_WIN32
index f353fc53af4de7011b548af2edfcd3a91d82824b..7326254c35b100611a2bf1eee27c80e57a736ac4 100644 (file)
@@ -1,6 +1,17 @@
 #include "mono-poll.h"
 #include <errno.h>
 
+#ifdef DISABLE_SOCKETS
+#include <glib.h>
+
+int
+mono_poll (mono_pollfd *ufds, unsigned int nfds, int timeout)
+{
+       g_assert_not_reached ();
+       return -1;
+}
+#else
+
 #if defined(HAVE_POLL) && !defined(__APPLE__)
 int
 mono_poll (mono_pollfd *ufds, unsigned int nfds, int timeout)
@@ -114,3 +125,4 @@ mono_poll (mono_pollfd *ufds, unsigned int nfds, int timeout)
 
 #endif
 
+#endif /* #ifndef DISABLE_SOCKETS */
index 250bdb9f4816dde3f40b140d8abd9d6afdc562de..8e0fe36136d153e481c9ca52ef9977200c2f0a9a 100644 (file)
@@ -421,6 +421,8 @@ get_pid_status_item (int pid, const char *item, MonoProcessError *error, int mul
                ret = t_info.virtual_size;
        else if (strcmp (item, "Threads") == 0)
                ret = th_count;
+       else
+               ret = 0;
 
        mach_port_deallocate (mach_task_self (), task);
        
index 6b9fa046bc344bb19a5543621930fb55f7933c81..0af2dd3a2995b8b2788baadab9bd17d7bfdf6790 100644 (file)
@@ -22,6 +22,9 @@
 #  ifdef USE_MACH_SEMA
 #    define TIMESPEC mach_timespec_t
 #    define WAIT_BLOCK(a,b) semaphore_timedwait (*(a), *(b))
+#  elif defined(__native_client__) && defined(USE_NEWLIB)
+#    define TIMESPEC struct timespec
+#    define WAIT_BLOCK(a, b) sem_trywait(a)
 #  elif defined(__OpenBSD__)
 #    define TIMESPEC struct timespec
 #    define WAIT_BLOCK(a) sem_trywait(a)
index bde196a10a21c2fb7ae8f9d955ab1f93d59f6451..07e65bc1abc2c05ad54ce3ba6614698e436f47ea 100644 (file)
@@ -46,6 +46,12 @@ typedef HANDLE MonoSemType;
 #define MONO_SEM_TIMEDWAIT(sem, timeout_ms) MONO_SEM_TIMEDWAIT_ALERTABLE(sem, timeout_ms, FALSE)
 #define MONO_SEM_TIMEDWAIT_ALERTABLE(sem, timeout_ms, alertable) mono_sem_timedwait ((sem), (timeout_ms), alertable) 
 
+#define MONO_SEM_WAIT_UNITERRUPTIBLE(sem) do { \
+       while (MONO_SEM_WAIT ((sem)) != 0) {    \
+               /*if (EINTR != errno) ABORT("sem_wait failed"); */      \
+       }       \
+} while (0)
+
 G_BEGIN_DECLS
 
 int mono_sem_wait (MonoSemType *sem, gboolean alertable);
index fabef2849219ef9819445c9165d2cfb47c12075d..5674a7a918540b8b359f8a5fc9a15bad65a139ee 100644 (file)
@@ -49,13 +49,18 @@ gboolean
 mono_threads_core_suspend (MonoThreadInfo *info)
 {
        kern_return_t ret;
+       gboolean res;
+
        g_assert (info);
 
        ret = thread_suspend (info->native_handle);
        if (ret != KERN_SUCCESS)
                return FALSE;
-       return mono_threads_get_runtime_callbacks ()->
+       res = mono_threads_get_runtime_callbacks ()->
                thread_state_init_from_handle (&info->suspend_state, mono_thread_info_get_tid (info), info->native_handle);
+       if (!res)
+               thread_resume (info->native_handle);
+       return res;
 }
 
 gboolean
index cc8b61d9d9c5afedff24cffab6e522d5d8ed6d9e..8dba68fe7fba6b44855283f4fedaa16d2d49e013 100644 (file)
@@ -41,7 +41,7 @@ inner_start_thread (void *arg)
        void *(*start_func)(void*) = start_info->start_routine;
        void *result;
 
-       mono_thread_info_attach (&result);
+       mono_thread_info_attach (&result)->runtime_thread = TRUE;
 
        post_result = MONO_SEM_POST (&(start_info->registered));
        g_assert (!post_result);
@@ -49,6 +49,7 @@ inner_start_thread (void *arg)
        result = start_func (t_arg);
        g_assert (!mono_domain_get ());
 
+       mono_thread_info_dettach ();
 
        return result;
 }
@@ -96,7 +97,7 @@ suspend_signal_handler (int _dummy, siginfo_t *info, void *context)
        /* thread_state_init_from_sigctx return FALSE if the current thread is detaching and suspend can't continue. */
        current->suspend_can_continue = ret;
 
-       MONO_SEM_POST (&current->suspend_semaphore);
+       MONO_SEM_POST (&current->begin_suspend_semaphore);
 
        /* This thread is doomed, all we can do is give up and let the suspender recover. */
        if (!ret)
@@ -169,6 +170,9 @@ mono_threads_pthread_kill (MonoThreadInfo *info, int signum)
                errno = old_errno;
        }
        return result;
+#elif defined(__native_client__)
+       /* Workaround pthread_kill abort() in NaCl glibc. */
+       return 0;
 #else
        return pthread_kill (mono_thread_info_get_tid (info), signum);
 #endif
@@ -197,7 +201,7 @@ mono_threads_core_suspend (MonoThreadInfo *info)
 {
        /*FIXME, check return value*/
        mono_threads_pthread_kill (info, mono_thread_get_abort_signal ());
-       while (MONO_SEM_WAIT (&info->suspend_semaphore) != 0) {
+       while (MONO_SEM_WAIT (&info->begin_suspend_semaphore) != 0) {
                /* g_assert (errno == EINTR); */
        }
        return info->suspend_can_continue;
@@ -217,7 +221,7 @@ mono_threads_core_resume (MonoThreadInfo *info)
 void
 mono_threads_platform_register (MonoThreadInfo *info)
 {
-       MONO_SEM_INIT (&info->suspend_semaphore, 0);
+       MONO_SEM_INIT (&info->begin_suspend_semaphore, 0);
 
 #if defined (PLATFORM_ANDROID)
        info->native_handle = (gpointer) gettid ();
@@ -227,7 +231,7 @@ mono_threads_platform_register (MonoThreadInfo *info)
 void
 mono_threads_platform_free (MonoThreadInfo *info)
 {
-       MONO_SEM_DESTROY (&info->suspend_semaphore);
+       MONO_SEM_DESTROY (&info->begin_suspend_semaphore);
 }
 
 MonoNativeThreadId
index ae039da39425c3fe1b94e09110738b8d30526f8e..4ed9dd13f99b4944e2791c1ad0abf48937640f0c 100644 (file)
@@ -83,7 +83,7 @@ inner_start_thread (LPVOID arg)
        gboolean suspend = start_info->suspend;
        HANDLE suspend_event = start_info->suspend_event;
 
-       mono_thread_info_attach (&result);
+       mono_thread_info_attach (&result)->runtime_thread = TRUE;
 
        post_result = MONO_SEM_POST (&(start_info->registered));
        g_assert (!post_result);
@@ -98,6 +98,8 @@ inner_start_thread (LPVOID arg)
 
        g_assert (!mono_domain_get ());
 
+       mono_thread_info_dettach ();
+
        return result;
 }
 
index b2e00b678924a7d30b3dba7c43340860e5dbe506..b1202bdcde07139a2303854105053240bf218023 100644 (file)
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/mono-tls.h>
 #include <mono/utils/hazard-pointer.h>
+#include <mono/utils/mono-memory-model.h>
 #include <mono/metadata/appdomain.h>
 #include <mono/metadata/domain-internals.h>
 
 #include <errno.h>
 
+#if defined(__MACH__)
+#include <mono/utils/mach-support.h>
+#endif
+
 #define THREADS_DEBUG(...)
 //#define THREADS_DEBUG(...) g_message(__VA_ARGS__)
 
@@ -33,8 +38,7 @@ The GC has to acquire this lock before starting a STW to make sure
 a runtime suspend won't make it wronly see a thread in a safepoint
 when it is in fact not.
 */
-static CRITICAL_SECTION global_suspend_lock;
-
+static MonoSemType global_suspend_semaphore;
 
 static int thread_info_size;
 static MonoThreadInfoCallbacks threads_callbacks;
@@ -103,7 +107,7 @@ free_thread_info (gpointer mem)
 {
        MonoThreadInfo *info = mem;
 
-       DeleteCriticalSection (&info->suspend_lock);
+       MONO_SEM_DESTROY (&info->suspend_semaphore);
        MONO_SEM_DESTROY (&info->resume_semaphore);
        MONO_SEM_DESTROY (&info->finish_resume_semaphore);
        mono_threads_platform_free (info);
@@ -127,7 +131,7 @@ register_thread (MonoThreadInfo *info, gpointer baseptr)
        mono_thread_info_set_tid (info, mono_native_thread_id_get ());
        info->small_id = small_id;
 
-       InitializeCriticalSection (&info->suspend_lock);
+       MONO_SEM_INIT (&info->suspend_semaphore, 1);
        MONO_SEM_INIT (&info->resume_semaphore, 0);
        MONO_SEM_INIT (&info->finish_resume_semaphore, 0);
 
@@ -255,6 +259,7 @@ mono_thread_info_dettach (void)
        if (info) {
                THREADS_DEBUG ("detaching %p\n", info);
                unregister_thread (info);
+               mono_native_tls_set_value (thread_info_key, NULL);
        }
 }
 
@@ -274,12 +279,16 @@ mono_threads_init (MonoThreadInfoCallbacks *callbacks, size_t info_size)
        res = mono_native_tls_alloc (&small_id_key, NULL);
        g_assert (res);
 
-       InitializeCriticalSection (&global_suspend_lock);
+       MONO_SEM_INIT (&global_suspend_semaphore, 1);
 
        mono_lls_init (&thread_list, NULL);
        mono_thread_smr_init ();
        mono_threads_init_platform ();
 
+#if defined(__MACH__)
+       mono_mach_init (thread_info_key);
+#endif
+
        mono_threads_inited = TRUE;
 
        g_assert (sizeof (MonoNativeThreadId) <= sizeof (uintptr_t));
@@ -314,7 +323,7 @@ mono_thread_info_suspend_sync (MonoNativeThreadId tid, gboolean interrupt_kernel
        if (!info)
                return NULL;
 
-       EnterCriticalSection (&info->suspend_lock);
+       MONO_SEM_WAIT_UNITERRUPTIBLE (&info->suspend_semaphore);
 
        /*thread is on the process of detaching*/
        if (mono_thread_info_run_state (info) > STATE_RUNNING) {
@@ -327,12 +336,12 @@ mono_thread_info_suspend_sync (MonoNativeThreadId tid, gboolean interrupt_kernel
        if (info->suspend_count) {
                ++info->suspend_count;
                mono_hazard_pointer_clear (hp, 1);
-               LeaveCriticalSection (&info->suspend_lock);
+               MONO_SEM_POST (&info->suspend_semaphore);
                return info;
        }
 
        if (!mono_threads_core_suspend (info)) {
-               LeaveCriticalSection (&info->suspend_lock);
+               MONO_SEM_POST (&info->suspend_semaphore);
                mono_hazard_pointer_clear (hp, 1);
                return NULL;
        }
@@ -342,7 +351,7 @@ mono_thread_info_suspend_sync (MonoNativeThreadId tid, gboolean interrupt_kernel
 
        ++info->suspend_count;
        info->thread_state |= STATE_SUSPENDED;
-       LeaveCriticalSection (&info->suspend_lock);
+       MONO_SEM_POST (&info->suspend_semaphore);
        mono_hazard_pointer_clear (hp, 1);
 
        return info;
@@ -356,7 +365,7 @@ mono_thread_info_self_suspend (void)
        if (!info)
                return;
 
-       EnterCriticalSection (&info->suspend_lock);
+       MONO_SEM_WAIT_UNITERRUPTIBLE (&info->suspend_semaphore);
 
        THREADS_DEBUG ("self suspend IN COUNT %d\n", info->suspend_count);
 
@@ -368,11 +377,9 @@ mono_thread_info_self_suspend (void)
        ret = mono_threads_get_runtime_callbacks ()->thread_state_init_from_sigctx (&info->suspend_state, NULL);
        g_assert (ret);
 
-       LeaveCriticalSection (&info->suspend_lock);
+       MONO_SEM_POST (&info->suspend_semaphore);
 
-       while (MONO_SEM_WAIT (&info->resume_semaphore) != 0) {
-               /*if (EINTR != errno) ABORT("sem_wait failed"); */
-       }
+       MONO_SEM_WAIT_UNITERRUPTIBLE (&info->resume_semaphore);
 
        g_assert (!info->async_target); /*FIXME this should happen normally for suspend. */
        MONO_SEM_POST (&info->finish_resume_semaphore);
@@ -384,9 +391,7 @@ mono_thread_info_resume_internal (MonoThreadInfo *info)
        gboolean result;
        if (mono_thread_info_suspend_state (info) == STATE_SELF_SUSPENDED) {
                MONO_SEM_POST (&info->resume_semaphore);
-               while (MONO_SEM_WAIT (&info->finish_resume_semaphore) != 0) {
-                       /* g_assert (errno == EINTR); */
-               }
+               MONO_SEM_WAIT_UNITERRUPTIBLE (&info->finish_resume_semaphore);
                result = TRUE;
        } else {
                result = mono_threads_core_resume (info);
@@ -404,12 +409,12 @@ mono_thread_info_resume (MonoNativeThreadId tid)
        if (!info)
                return FALSE;
 
-       EnterCriticalSection (&info->suspend_lock);
+       MONO_SEM_WAIT_UNITERRUPTIBLE (&info->suspend_semaphore);
 
        THREADS_DEBUG ("resume %x IN COUNT %d\n",tid, info->suspend_count);
 
        if (info->suspend_count <= 0) {
-               LeaveCriticalSection (&info->suspend_lock);
+               MONO_SEM_POST (&info->suspend_semaphore);
                mono_hazard_pointer_clear (hp, 1);
                return FALSE;
        }
@@ -423,12 +428,19 @@ mono_thread_info_resume (MonoNativeThreadId tid)
        if (--info->suspend_count == 0)
                result = mono_thread_info_resume_internal (info);
 
-       LeaveCriticalSection (&info->suspend_lock);
+       MONO_SEM_POST (&info->suspend_semaphore);
        mono_hazard_pointer_clear (hp, 1);
+       mono_atomic_store_release (&mono_thread_info_current ()->inside_critical_region, FALSE);
 
        return result;
 }
 
+void
+mono_thread_info_finish_suspend (void)
+{
+       mono_atomic_store_release (&mono_thread_info_current ()->inside_critical_region, FALSE);
+}
+
 /*
 FIXME fix cardtable WB to be out of line and check with the runtime if the target is not the
 WB trampoline. Another option is to encode wb ranges in MonoJitInfo, but that is somewhat hard.
@@ -437,7 +449,12 @@ static gboolean
 is_thread_in_critical_region (MonoThreadInfo *info)
 {
        MonoMethod *method;
-       MonoJitInfo *ji = mono_jit_info_table_find (
+       MonoJitInfo *ji;
+
+       if (info->inside_critical_region)
+               return TRUE;
+
+       ji = mono_jit_info_table_find (
                info->suspend_state.unwind_data [MONO_UNWIND_DATA_DOMAIN],
                MONO_CONTEXT_GET_IP (&info->suspend_state.ctx));
 
@@ -496,6 +513,8 @@ mono_thread_info_safe_suspend_sync (MonoNativeThreadId id, gboolean interrupt_ke
                sleep_duration += 10;
        }
 
+       mono_atomic_store_release (&mono_thread_info_current ()->inside_critical_region, TRUE);
+
        mono_thread_info_suspend_unlock ();
        return info;
 }
@@ -526,13 +545,13 @@ STW to make sure no unsafe pending suspend is in progress.
 void
 mono_thread_info_suspend_lock (void)
 {
-       EnterCriticalSection (&global_suspend_lock);
+       MONO_SEM_WAIT_UNITERRUPTIBLE (&global_suspend_semaphore);
 }
 
 void
 mono_thread_info_suspend_unlock (void)
 {
-       LeaveCriticalSection (&global_suspend_lock);
+       MONO_SEM_POST (&global_suspend_semaphore);
 }
 
 void
index 43dd376fe8b77ae70c2245222c472ff8d6a83325..0004e55c967954e437d6fcda1ec5e020bee49212 100644 (file)
@@ -13,9 +13,7 @@
 #include <mono/utils/mono-semaphore.h>
 #include <mono/utils/mono-stack-unwinding.h>
 #include <mono/utils/mono-linked-list-set.h>
-
-/* FIXME used for CRITICAL_SECTION replace with mono-mutex  */
-#include <mono/io-layer/io-layer.h>
+#include <mono/utils/mono-mutex.h>
 
 #include <glib.h>
 
@@ -98,8 +96,11 @@ typedef struct {
        MonoNativeThreadHandle native_handle; /* Valid on mach and android */
        int thread_state;
 
-       /* suspend machinery, fields protected by the suspend_lock */
-       CRITICAL_SECTION suspend_lock;
+       /*Tells if this thread was created by the runtime or not.*/
+       gboolean runtime_thread;
+
+       /* suspend machinery, fields protected by suspend_semaphore */
+       MonoSemType suspend_semaphore;
        int suspend_count;
 
        MonoSemType finish_resume_semaphore;
@@ -107,7 +108,7 @@ typedef struct {
 
        /* only needed by the posix backend */ 
 #if (defined(_POSIX_VERSION) || defined(__native_client__)) && !defined (__MACH__)
-       MonoSemType suspend_semaphore;
+       MonoSemType begin_suspend_semaphore;
        gboolean syscall_break_signal;
        gboolean suspend_can_continue;
 #endif
@@ -118,6 +119,13 @@ typedef struct {
        /*async call machinery, thread MUST be suspended before accessing those fields*/
        void (*async_target)(void*);
        void *user_data;
+
+       /*
+       If true, this thread is running a critical region of code and cannot be suspended.
+       A critical session is implicitly started when you call mono_thread_info_safe_suspend_sync
+       and is ended when you call either mono_thread_info_resume or mono_thread_info_finish_suspend.
+       */
+       gboolean inside_critical_region;
 } MonoThreadInfo;
 
 typedef struct {
@@ -198,6 +206,9 @@ mono_thread_info_safe_suspend_sync (MonoNativeThreadId tid, gboolean interrupt_k
 gboolean
 mono_thread_info_resume (MonoNativeThreadId tid) MONO_INTERNAL;
 
+void
+mono_thread_info_finish_suspend (void) MONO_INTERNAL;
+
 void
 mono_thread_info_self_suspend (void) MONO_INTERNAL;
 
index c71da25ba5c931129e5c7b0ca1e79cdec6c21220..5ff68938f6d94ed70392744cc0e429be1c00278c 100644 (file)
@@ -285,7 +285,11 @@ my_g_bit_nth_lsf (gsize mask, gint nth_bit)
        if ((mask == 0) || (nth_bit == BITS_PER_CHUNK))
                return -1;
 
-#if defined(__i386__) && defined(__GNUC__)
+#if defined(__native_client__) && (defined(__i386__) || defined(__x86_64))
+#define USE_X86_32BIT_INSTRUCTIONS 1
+#endif
+
+#if (defined(__i386__) && defined(__GNUC__)) || defined(USE_X86_32BIT_INSTRUCTIONS)
  {
         int r;
         /* This depends on mask != 0 */
@@ -315,7 +319,7 @@ static inline gint
 my_g_bit_nth_lsf_nomask (gsize mask)
 {
        /* Mask is expected to be != 0 */
-#if defined(__i386__) && defined(__GNUC__)
+#if (defined(__i386__) && defined(__GNUC__)) || defined(USE_X86_32BIT_INSTRUCTIONS)
        int r;
 
        __asm__("bsfl %1,%0\n\t"
@@ -817,4 +821,3 @@ main() {
 }
 
 #endif
-
index 8f55ad205eaabf92716643d26d40581b3e903019..3965534b31db930f13e72c210bdf359fb9058c62 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>\r
+<?xml version="1.0" encoding="utf-8"?>\r
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug_SGen|Win32">\r
@@ -96,7 +96,6 @@
     <ClCompile Include="..\mono\metadata\sgen-hash-table.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-internal.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-los.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-major-copying.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-marksweep-fixed-par.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-marksweep-fixed.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-marksweep-par.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-os-mach.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-os-posix.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-os-win32.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-pinned-allocator.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-pinning-stats.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-pinning.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-protocol.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-simple-nursery.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-split-nursery.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-ssb.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-toggleref.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-workers.c" />\r
     <ClCompile Include="..\mono\metadata\socket-io.c" />\r
     <ClInclude Include="..\mono\metadata\sgen-pinning.h" />\r
     <ClInclude Include="..\mono\metadata\sgen-protocol.h" />\r
     <ClInclude Include="..\mono\metadata\sgen-scan-object.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-ssb.h" />\r
     <ClInclude Include="..\mono\metadata\sgen-toggleref.h" />\r
     <ClInclude Include="..\mono\metadata\sgen-workers.h" />\r
     <ClInclude Include="..\mono\metadata\socket-io.h" />\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
   </ImportGroup>\r
-</Project>
\ No newline at end of file
+</Project>\r
index 7fd05c936bd43cfe4d622aa458333a4211dc5096..7511509ac8a43bc91a5cf24e5d64165af21b2fe0 100644 (file)
@@ -42,6 +42,7 @@
     <ClCompile Include="..\mono\utils\mono-math.c" />\r
     <ClCompile Include="..\mono\utils\mono-md5.c" />\r
     <ClCompile Include="..\mono\utils\mono-mmap.c" />\r
+    <ClCompile Include="..\mono\utils\mono-mutex.c" />\r
     <ClCompile Include="..\mono\utils\mono-networkinterfaces.c" />\r
     <ClCompile Include="..\mono\utils\mono-path.c" />\r
     <ClCompile Include="..\mono\utils\mono-poll.c" />\r
@@ -61,6 +62,9 @@
     <ClCompile Include="..\mono\utils\monobitset.c" />\r
     <ClCompile Include="..\mono\utils\strenc.c" />\r
     <ClCompile Include="..\mono\utils\strtod.c" />\r
+    <ClCompile Include="..\mono\utils\atomic.c" />\r
+    <ClCompile Include="..\mono\utils\mono-hwcap.c" />\r
+    <ClCompile Include="..\mono\utils\mono-hwcap-x86.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\mono\utils\dlmalloc.h" />\r
     <ClInclude Include="..\mono\utils\mono-membar.h" />\r
     <ClInclude Include="..\mono\utils\mono-memory-model.h" />\r
     <ClInclude Include="..\mono\utils\mono-mmap.h" />\r
+    <ClInclude Include="..\mono\utils\mono-mutex.h" />\r
     <ClInclude Include="..\mono\utils\mono-networkinterfaces.h" />\r
     <ClInclude Include="..\mono\utils\mono-path.h" />\r
     <ClInclude Include="..\mono\utils\mono-poll.h" />\r
     <ClInclude Include="..\mono\utils\strenc.h" />\r
     <ClInclude Include="..\mono\utils\strtod.h" />\r
     <ClInclude Include="..\mono\utils\valgrind.h" />\r
+    <ClInclude Include="..\mono\utils\atomic.h" />\r
+    <ClInclude Include="..\mono\utils\mono-hwcap.h" />\r
+    <ClInclude Include="..\mono\utils\mono-hwcap-x86.h" />\r
   </ItemGroup>\r
   <PropertyGroup Label="Globals">\r
     <ProjectGuid>{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}</ProjectGuid>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
   </ImportGroup>\r
-</Project>
\ No newline at end of file
+</Project>\r
index 9c851c17164ef80eb23e872330d14b32ef49af7c..4f59de42901f35aab2c2f97fef345c84ea5f96fb 100644 (file)
 
 Microsoft Visual Studio Solution File, Format Version 12.00\r
 # Visual Studio 2012
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mcs-net_4_5", "..\..\mcs\mcs\mcs-net_4_5.csproj", "{AD97431A-3538-4597-9C5C-97137A9ECCA1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mcs-net_4_5", "..\..\mcs\mcs\mcs-net_4_5.csproj", "{C43E1948-715C-4711-9442-13652674CE49}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-net_4_0", "..\..\mcs\class/corlib\corlib-net_4_0.csproj", "{7B7210E5-3B98-492F-B57E-BD53A99C39B0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-net_4_0", "..\..\mcs\class/corlib\corlib-net_4_0.csproj", "{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-net_4_5", "..\..\mcs\class/corlib\corlib-net_4_5.csproj", "{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-net_4_5", "..\..\mcs\class/corlib\corlib-net_4_5.csproj", "{07C1F58B-9E99-47F8-A847-79EDA5157DA8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-tests-net_4_5", "..\..\mcs\class/corlib\corlib-tests-net_4_5.csproj", "{50D0CA30-64AF-4136-B43D-C43EDDE136C7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-tests-net_4_5", "..\..\mcs\class/corlib\corlib-tests-net_4_5.csproj", "{93EE601C-8B43-4AE1-B417-7BDCD0FE4C95}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_4_0", "..\..\mcs\class/Mono.Posix\Mono.Posix-net_4_0.csproj", "{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_4_0", "..\..\mcs\class/Mono.Posix\Mono.Posix-net_4_0.csproj", "{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_0", "..\..\mcs\class/System\System-net_4_0.csproj", "{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_0", "..\..\mcs\class/System\System-net_4_0.csproj", "{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_2_0-1", "..\..\mcs\class/System.XML\System.Xml-net_2_0-1.csproj", "{205A8E90-88CC-4B46-8151-87FA90B666A5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_2_0-1", "..\..\mcs\class/System.XML\System.Xml-net_2_0-1.csproj", "{D9776E38-7673-45F6-BF19-7B77830DF9CA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-net_2_0", "..\..\mcs\class/corlib\corlib-net_2_0.csproj", "{928D664D-8277-47B3-AB06-538D932143FE}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-net_2_0", "..\..\mcs\class/corlib\corlib-net_2_0.csproj", "{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_2_0-2", "..\..\mcs\class/System\System-net_2_0-2.csproj", "{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_2_0-2", "..\..\mcs\class/System\System-net_2_0-2.csproj", "{79F25FD7-0D76-4526-AF39-1A648649A827}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_2_0", "..\..\mcs\class/System.XML\System.Xml-net_2_0.csproj", "{67A04408-CBEF-4B63-B975-29D827B0DBED}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_2_0", "..\..\mcs\class/System.XML\System.Xml-net_2_0.csproj", "{2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_2_0", "..\..\mcs\class/System\System-net_2_0.csproj", "{0F9C68C1-0695-4DC0-8064-B0749F54DF34}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_2_0", "..\..\mcs\class/System\System-net_2_0.csproj", "{245C754C-D6DE-4434-BA78-37A93E196236}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-build", "..\..\mcs\class/System.XML\System.Xml-build.csproj", "{A2433930-2BB3-4818-97D2-45A907CB7B3B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-build", "..\..\mcs\class/System.XML\System.Xml-build.csproj", "{D513888C-71DC-4A65-B753-668FF8FB2CAA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-build", "..\..\mcs\class/corlib\corlib-build.csproj", "{B8B2866D-592F-4888-A1CB-697AD0F3CADE}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-build", "..\..\mcs\class/corlib\corlib-build.csproj", "{2BD930A2-88A9-4AD0-ADE7-1531552DF896}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-build", "..\..\mcs\class/System\System-build.csproj", "{4C8FFAF4-4FE9-4377-821B-AFD255791495}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-build", "..\..\mcs\class/System\System-build.csproj", "{DC4EE47D-CEB6-4592-994A-92C6B1D746FA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-basic", "..\..\mcs\class/System.XML\System.Xml-basic.csproj", "{E9DD3F8E-CFA0-4B07-885F-B37A3932A81D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-basic", "..\..\mcs\class/System.XML\System.Xml-basic.csproj", "{347CC78E-794E-4BEF-BDAB-A0437E367442}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-basic", "..\..\mcs\class/corlib\corlib-basic.csproj", "{B7BE46BA-4D0D-4CDB-A31D-772BDCFCFC8A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-basic", "..\..\mcs\class/corlib\corlib-basic.csproj", "{D9D617A3-31C7-4B72-A905-9E4274FC853B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-basic", "..\..\mcs\class/System\System-basic.csproj", "{EF086B78-3330-427F-86A2-B87B1AB095A0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-basic", "..\..\mcs\class/System\System-basic.csproj", "{269CBEEC-489D-4169-A4D8-CEAE9DB7E404}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-build", "..\..\mcs\class/Mono.Security\Mono.Security-build.csproj", "{4D1ABD9E-B23B-4C1F-9DF1-7E3407EC3914}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-build-1", "..\..\mcs\class/System\System-build-1.csproj", "{83D197B9-A796-4A0D-B8F9-930DD9415615}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-build-1", "..\..\mcs\class/System\System-build-1.csproj", "{C3638457-A40E-4E70-81B4-54ACB31DD76D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-build", "..\..\mcs\class/Mono.Security\Mono.Security-build.csproj", "{FC2EF2C1-8774-4DFE-AE47-9574374D3591}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-net_2_0", "..\..\mcs\class/Mono.Security\Mono.Security-net_2_0.csproj", "{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-net_2_0", "..\..\mcs\class/System.Configuration\System.Configuration-net_2_0.csproj", "{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-net_2_0", "..\..\mcs\class/System.Configuration\System.Configuration-net_2_0.csproj", "{725170B0-51F0-46E2-A74D-F764B68553D6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_2_0-1", "..\..\mcs\class/System\System-net_2_0-1.csproj", "{FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_2_0-1", "..\..\mcs\class/System\System-net_2_0-1.csproj", "{980C299E-664F-4905-B01C-19599BBE78FF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-net_2_0", "..\..\mcs\class/Mono.Security\Mono.Security-net_2_0.csproj", "{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-net_2_0", "..\..\mcs\class/System.Security\System.Security-net_2_0.csproj", "{C596FD9E-2AC3-48E2-9661-F6F40C84F044}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-net_2_0", "..\..\mcs\class/System.Security\System.Security-net_2_0.csproj", "{1A468E0B-8690-4595-BBD7-D9A5002DFF26}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-net_4_0", "..\..\mcs\class/System.Core\System.Core-net_4_0.csproj", "{2590BECB-2660-49C6-93B1-B9E7D0796214}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-net_4_0", "..\..\mcs\class/System.Core\System.Core-net_4_0.csproj", "{D121EB80-19C6-4313-9BBE-6F66556CE8B7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_5", "..\..\mcs\class/System\System-net_4_5.csproj", "{443B892C-060C-4829-839D-FE539CDEC5D9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_5", "..\..\mcs\class/System\System-net_4_5.csproj", "{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_0-1", "..\..\mcs\class/System.XML\System.Xml-net_4_0-1.csproj", "{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_0-1", "..\..\mcs\class/System.XML\System.Xml-net_4_0-1.csproj", "{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_0-2", "..\..\mcs\class/System\System-net_4_0-2.csproj", "{1A075F2A-40CF-48B5-B817-8B03444DB7C6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_0-2", "..\..\mcs\class/System\System-net_4_0-2.csproj", "{8260E24F-1471-4320-AB5B-7CC7B68521E3}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_0", "..\..\mcs\class/System.XML\System.Xml-net_4_0.csproj", "{18CD7C68-EF7C-4C7A-B8D6-FE9834145437}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_0", "..\..\mcs\class/System.XML\System.Xml-net_4_0.csproj", "{8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-net_4_0", "..\..\mcs\class/Mono.Security\Mono.Security-net_4_0.csproj", "{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-net_4_0", "..\..\mcs\class/System.Configuration\System.Configuration-net_4_0.csproj", "{CA49630B-FD24-411F-9651-B15CA72CE5B8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-net_4_0", "..\..\mcs\class/System.Configuration\System.Configuration-net_4_0.csproj", "{610C7C77-5851-4B95-A3FE-B04E1B011E6A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_0-1", "..\..\mcs\class/System\System-net_4_0-1.csproj", "{FCBCCC55-006E-41B2-A649-CF9A843E34BD}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_0-1", "..\..\mcs\class/System\System-net_4_0-1.csproj", "{C57BB644-EEFC-475A-AF6F-43EF29C75933}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-net_4_0", "..\..\mcs\class/Mono.Security\Mono.Security-net_4_0.csproj", "{5E680987-7C43-48A0-9BF1-86124ACA78BD}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-net_4_0", "..\..\mcs\class/System.Security\System.Security-net_4_0.csproj", "{BC281223-A7A5-415D-B4AA-59417DBFFBBB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-net_4_0", "..\..\mcs\class/System.Security\System.Security-net_4_0.csproj", "{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-tests-net_4_5", "..\..\mcs\class/System\System-tests-net_4_5.csproj", "{977F7A36-972C-4139-81B6-1EF6A8F44857}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-tests-net_4_5", "..\..\mcs\class/System\System-tests-net_4_5.csproj", "{AF08418D-2ADF-47E1-9D2F-8A9A2FEBF4B1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-net_4_0", "..\..\mcs\class/System.Drawing\System.Drawing-net_4_0.csproj", "{0005126E-C0D0-4DA3-A2E2-E49592D3E164}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-net_4_0", "..\..\mcs\class/System.Drawing\System.Drawing-net_4_0.csproj", "{DE98E72C-2727-4737-AAFC-CC1228F4812C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-net_4_0", "..\..\mcs\class/System.Data\System.Data-net_4_0.csproj", "{6865A6A5-DF93-45C7-BE83-F06907EC81F8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-net_4_0", "..\..\mcs\class/System.Data\System.Data-net_4_0.csproj", "{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.EnterpriseServices-net_4_0", "..\..\mcs\class/System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj", "{801DF65A-F6B4-4D66-B415-9E8832E66F48}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.EnterpriseServices-net_4_0", "..\..\mcs\class/System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj", "{31465E05-7B4F-4209-8B9B-5F596A032D27}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-net_4_0", "..\..\mcs\class/System.Transactions\System.Transactions-net_4_0.csproj", "{46371E88-F274-4BE7-8587-444F4E6F7247}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-net_4_0", "..\..\mcs\class/System.Transactions\System.Transactions-net_4_0.csproj", "{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-net_4_0", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-net_4_0.csproj", "{2038AFC9-B4E4-4A05-B57B-11B698CA67DF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-net_4_0", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-net_4_0.csproj", "{4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_5", "..\..\mcs\class/System.XML\System.Xml-net_4_5.csproj", "{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_5", "..\..\mcs\class/System.XML\System.Xml-net_4_5.csproj", "{F96F7491-66DB-4291-8803-F2F165B33B55}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-tests-net_4_5", "..\..\mcs\class/System.XML\System.Xml-tests-net_4_5.csproj", "{C3A02669-DEEA-469D-930F-926DED9B53C6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-tests-net_4_5", "..\..\mcs\class/System.XML\System.Xml-tests-net_4_5.csproj", "{A2A5BBDB-A278-484E-811D-8FC5BA18444B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CompilerServices.SymbolWriter-net_4_5", "..\..\mcs\class/Mono.CompilerServices.SymbolWriter\Mono.CompilerServices.SymbolWriter-net_4_5.csproj", "{5C0B6042-9C59-4D58-A7C1-A912A0689066}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CompilerServices.SymbolWriter-net_4_5", "..\..\mcs\class/Mono.CompilerServices.SymbolWriter\Mono.CompilerServices.SymbolWriter-net_4_5.csproj", "{CBA2EEEA-4D6F-45B5-ADE2-7C86D3B2A449}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_4_5", "..\..\mcs\class/Mono.Posix\Mono.Posix-net_4_5.csproj", "{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_4_5", "..\..\mcs\class/Mono.Posix\Mono.Posix-net_4_5.csproj", "{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-tests-net_4_5", "..\..\mcs\class/Mono.Posix\Mono.Posix-tests-net_4_5.csproj", "{8A11FD7A-D62F-4130-9870-49486379AB1C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-tests-net_4_5", "..\..\mcs\class/Mono.Posix\Mono.Posix-tests-net_4_5.csproj", "{B915D688-A61F-4B8E-9110-16B76DB4446D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-net_4_5", "..\..\mcs\class/System.Core\System.Core-net_4_5.csproj", "{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-net_4_5", "..\..\mcs\class/System.Core\System.Core-net_4_5.csproj", "{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-tests-net_4_5", "..\..\mcs\class/System.Core\System.Core-tests-net_4_5.csproj", "{E52212C3-8609-434F-A1B3-5A63C057C119}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-tests-net_4_5", "..\..\mcs\class/System.Core\System.Core-tests-net_4_5.csproj", "{9837CA8F-8FA7-4CE9-8BE8-BE4D5A236CDE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-net_4_5", "..\..\mcs\class/Mono.Security\Mono.Security-net_4_5.csproj", "{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-net_4_5", "..\..\mcs\class/Mono.Security\Mono.Security-net_4_5.csproj", "{99D172A2-7914-496C-9005-AA69F51195AF}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-tests-net_4_5", "..\..\mcs\class/Mono.Security\Mono.Security-tests-net_4_5.csproj", "{D5968AB0-8856-49DC-9547-63530241BC22}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-tests-net_4_5", "..\..\mcs\class/Mono.Security\Mono.Security-tests-net_4_5.csproj", "{2D07BA52-8035-4434-B4FD-9B87789B8286}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_5-1", "..\..\mcs\class/System\System-net_4_5-1.csproj", "{B53B8417-E392-4660-86F0-54E7B7FAD4BA}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_5-1", "..\..\mcs\class/System\System-net_4_5-1.csproj", "{B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-net_4_5", "..\..\mcs\class/System.Security\System.Security-net_4_5.csproj", "{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-net_4_5", "..\..\mcs\class/System.Security\System.Security-net_4_5.csproj", "{C7510E1F-66A4-4076-B87B-889E219AAB3F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-tests-net_4_5", "..\..\mcs\class/System.Security\System.Security-tests-net_4_5.csproj", "{5AF47E2F-C295-4410-BB78-F08FE99C0E76}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-tests-net_4_5", "..\..\mcs\class/System.Security\System.Security-tests-net_4_5.csproj", "{65F07468-96FC-4A71-8565-2CD7A50728CC}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-net_4_5", "..\..\mcs\class/System.Configuration\System.Configuration-net_4_5.csproj", "{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-net_4_5", "..\..\mcs\class/System.Configuration\System.Configuration-net_4_5.csproj", "{CA2CD67B-1308-460D-BDBA-498F63DEAA31}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-tests-net_4_5", "..\..\mcs\class/System.Configuration\System.Configuration-tests-net_4_5.csproj", "{5592C0B6-11CF-43FB-A673-8386BBFEA147}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-tests-net_4_5", "..\..\mcs\class/System.Configuration\System.Configuration-tests-net_4_5.csproj", "{A1C102BA-BFA1-4242-A44D-E041A6E37161}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_5-2", "..\..\mcs\class/System\System-net_4_5-2.csproj", "{34966210-D64D-419C-94A4-9A6093CE5882}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_5-2", "..\..\mcs\class/System\System-net_4_5-2.csproj", "{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_5-1", "..\..\mcs\class/System.XML\System.Xml-net_4_5-1.csproj", "{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_5-1", "..\..\mcs\class/System.XML\System.Xml-net_4_5-1.csproj", "{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N-net_4_5", "..\..\mcs\class/I18N/Common\I18N-net_4_5.csproj", "{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N-net_4_5", "..\..\mcs\class/I18N/Common\I18N-net_4_5.csproj", "{8A8D5677-ACBD-40B4-916D-B9B5451F713D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.West-net_4_5", "..\..\mcs\class/I18N/West\I18N.West-net_4_5.csproj", "{03E8A999-E329-44BB-8ED7-D60412068646}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.West-net_4_5", "..\..\mcs\class/I18N/West\I18N.West-net_4_5.csproj", "{5532F6F2-B136-4D85-9500-5D1C9E1D9335}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.West-tests-net_4_5", "..\..\mcs\class/I18N/West\I18N.West-tests-net_4_5.csproj", "{8F7F90F0-97DB-4E98-83AE-C2E28E9B512A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.West-tests-net_4_5", "..\..\mcs\class/I18N/West\I18N.West-tests-net_4_5.csproj", "{6977FA25-AB73-4DE7-B535-19C04DB9C29A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.MidEast-net_4_5", "..\..\mcs\class/I18N/MidEast\I18N.MidEast-net_4_5.csproj", "{2616FDAC-EC98-417B-A95C-C2E2D1ECB3F2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.MidEast-net_4_5", "..\..\mcs\class/I18N/MidEast\I18N.MidEast-net_4_5.csproj", "{475537C3-F2C7-42FD-8AF9-871BC6266BAA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.MidEast-tests-net_4_5", "..\..\mcs\class/I18N/MidEast\I18N.MidEast-tests-net_4_5.csproj", "{ECF02624-8EE8-4466-8925-3EE595034B4D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.MidEast-tests-net_4_5", "..\..\mcs\class/I18N/MidEast\I18N.MidEast-tests-net_4_5.csproj", "{CF521447-730D-46F7-911F-0A1CFFB9B5CB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.Other-net_4_5", "..\..\mcs\class/I18N/Other\I18N.Other-net_4_5.csproj", "{9BBEC512-8833-4124-B826-777E45579059}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.Other-net_4_5", "..\..\mcs\class/I18N/Other\I18N.Other-net_4_5.csproj", "{7C1E1624-DAC7-4819-880B-852644622BF2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.Rare-net_4_5", "..\..\mcs\class/I18N/Rare\I18N.Rare-net_4_5.csproj", "{3C6256A3-3B1F-4CF8-9D91-016C855930DC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.Rare-net_4_5", "..\..\mcs\class/I18N/Rare\I18N.Rare-net_4_5.csproj", "{84879866-2AFD-4318-8C53-8951471B7369}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.CJK-net_4_5", "..\..\mcs\class/I18N/CJK\I18N.CJK-net_4_5.csproj", "{EF5108EC-6916-4ADE-AB7D-919F89F1FEE1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.CJK-net_4_5", "..\..\mcs\class/I18N/CJK\I18N.CJK-net_4_5.csproj", "{0CE11B15-9B31-4AD1-857C-55B69C027130}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.CJK-tests-net_4_5", "..\..\mcs\class/I18N/CJK\I18N.CJK-tests-net_4_5.csproj", "{D70CC755-05BF-4148-8A19-3F28EA6CA21D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.CJK-tests-net_4_5", "..\..\mcs\class/I18N/CJK\I18N.CJK-tests-net_4_5.csproj", "{9F1843D9-A9D4-4D87-8CC9-B4AF53DE0196}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-net_4_5", "..\..\mcs\class/System.Drawing\System.Drawing-net_4_5.csproj", "{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-net_4_5", "..\..\mcs\class/System.Drawing\System.Drawing-net_4_5.csproj", "{945A4FD5-2184-44CC-9519-13AFC37ED81A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-tests-net_4_5", "..\..\mcs\class/System.Drawing\System.Drawing-tests-net_4_5.csproj", "{3F01DF0A-D726-4D86-8E47-DADB8EA4D994}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-tests-net_4_5", "..\..\mcs\class/System.Drawing\System.Drawing-tests-net_4_5.csproj", "{1DFD7DE0-7771-4EE5-93B7-60551C6D3C6F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-net_4_0", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj", "{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-net_4_0", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj", "{562FC450-E53A-4CF5-AE5A-91973EBE5A28}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-net_4_5", "..\..\mcs\class/System.Transactions\System.Transactions-net_4_5.csproj", "{BED431C4-56B5-4990-A8E6-DCD02A331BC9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-net_4_5", "..\..\mcs\class/System.Transactions\System.Transactions-net_4_5.csproj", "{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-tests-net_4_5", "..\..\mcs\class/System.Transactions\System.Transactions-tests-net_4_5.csproj", "{801B7F88-6DE4-48B9-A830-450BF14DBBA1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-tests-net_4_5", "..\..\mcs\class/System.Transactions\System.Transactions-tests-net_4_5.csproj", "{D1129EE6-1E08-4393-8EF2-EA2EA6C1D5A9}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.EnterpriseServices-net_4_5", "..\..\mcs\class/System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj", "{2B2808F7-930A-4416-A060-57D9F8DC879C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.EnterpriseServices-net_4_5", "..\..\mcs\class/System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj", "{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-net_4_5", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-net_4_5.csproj", "{2BB65926-A803-484F-A2D2-05CED0254A28}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-net_4_5", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-net_4_5.csproj", "{9B26C34E-8E81-4857-A1CB-B50F407EE7E1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-tests-net_4_5", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-tests-net_4_5.csproj", "{48172E97-369D-408A-A5CB-DC3B34706C0B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-tests-net_4_5", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-tests-net_4_5.csproj", "{21E94E1F-226D-4BD3-9368-594C0553CE91}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net-net_4_0", "..\..\mcs\class/System.Net\System.Net-net_4_0.csproj", "{26480A1B-A6B9-4865-8492-C18019094CE4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net-net_4_0", "..\..\mcs\class/System.Net\System.Net-net_4_0.csproj", "{0653CFE2-4A19-4B91-A51F-793F8D516790}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-net_4_5", "..\..\mcs\class/System.Data\System.Data-net_4_5.csproj", "{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-net_4_5", "..\..\mcs\class/System.Data\System.Data-net_4_5.csproj", "{663D8C81-B74E-4D44-8C59-2264C6942B30}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-tests-net_4_5", "..\..\mcs\class/System.Data\System.Data-tests-net_4_5.csproj", "{E763AC5D-E03A-4D54-8B0A-5F904B56FA69}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-tests-net_4_5", "..\..\mcs\class/System.Data\System.Data-tests-net_4_5.csproj", "{4C5A0721-050A-4457-8D1C-8FB58DA895DE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-net_4_0", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0.csproj", "{BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-net_4_0", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0.csproj", "{F26434C1-BA3D-41FB-B560-C009CB72B1B6}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Accessibility-net_4_5", "..\..\mcs\class/Accessibility\Accessibility-net_4_5.csproj", "{7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Accessibility-net_4_5", "..\..\mcs\class/Accessibility\Accessibility-net_4_5.csproj", "{121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.WebBrowser-net_4_5", "..\..\mcs\class/Mono.WebBrowser\Mono.WebBrowser-net_4_5.csproj", "{4F8F4004-E655-463C-8A0F-4F7C99AB85B5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.WebBrowser-net_4_5", "..\..\mcs\class/Mono.WebBrowser\Mono.WebBrowser-net_4_5.csproj", "{7D94F9AC-9F7A-4639-9E89-85083D77101D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-net_4_5", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj", "{E9E47642-19D3-48A0-81C4-D51810976A70}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-net_4_5", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj", "{95593889-8509-4FFC-8EDE-C673FDA39FC8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-tests-net_4_5", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-tests-net_4_5.csproj", "{86595D30-C24E-4A0F-9419-499980DE4B79}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-tests-net_4_5", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-tests-net_4_5.csproj", "{287E4CA2-E854-4E18-AFEE-B71E893A30EA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms-net_4_5", "..\..\mcs\class/Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj", "{ABF6A466-1744-4C43-8B68-C89EA10FBB67}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms-net_4_5", "..\..\mcs\class/Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj", "{409FF748-B765-4AB3-BCB1-72199B9E341C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms-tests-net_4_5", "..\..\mcs\class/Managed.Windows.Forms\System.Windows.Forms-tests-net_4_5.csproj", "{FCA901B7-B01E-4578-8C93-9BACB907AD22}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms-tests-net_4_5", "..\..\mcs\class/Managed.Windows.Forms\System.Windows.Forms-tests-net_4_5.csproj", "{16740D76-23DD-4BEC-87C6-948A8D766030}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-net_4_5", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj", "{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-net_4_5", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj", "{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-tests-net_4_5", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-tests-net_4_5.csproj", "{F321F0E8-4A6A-4BF7-AF40-0EDD9A914066}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-tests-net_4_5", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-tests-net_4_5.csproj", "{C044B1E6-B892-49DC-BD71-4C796BD8964A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.ApplicationServices-net_4_5", "..\..\mcs\class/System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj", "{AD80D595-2812-412E-9F06-2A91C7283A48}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.ApplicationServices-net_4_5", "..\..\mcs\class/System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj", "{394BAC94-3126-4DAE-8C55-5547372BAB46}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_5", "..\..\mcs\class/System.Web\System.Web-net_4_5.csproj", "{3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_5", "..\..\mcs\class/System.Web\System.Web-net_4_5.csproj", "{0B03F192-EC11-49E5-A7F6-E97C0D559E51}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-net_4_0", "..\..\mcs\class/System.Web.Services\System.Web.Services-net_4_0.csproj", "{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-net_4_0", "..\..\mcs\class/System.Web.Services\System.Web.Services-net_4_0.csproj", "{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_0", "..\..\mcs\class/System.Web\System.Web-net_4_0.csproj", "{39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_0", "..\..\mcs\class/System.Web\System.Web-net_4_0.csproj", "{BAC369E3-E94E-4E5A-97FF-0CF696D07814}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.ApplicationServices-net_4_0", "..\..\mcs\class/System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj", "{5D580843-B172-4BF3-AABD-116A64020C1C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.ApplicationServices-net_4_0", "..\..\mcs\class/System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj", "{8EF189A4-B862-4825-9938-00658C43B534}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-net_2_0", "..\..\mcs\class/System.Web.Services\System.Web.Services-net_2_0.csproj", "{517B1616-9AF6-4C66-9BB9-73369E8A4222}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-net_2_0", "..\..\mcs\class/System.Web.Services\System.Web.Services-net_2_0.csproj", "{71444193-6B64-4C1B-A87D-580CCB548952}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.EnterpriseServices-net_2_0", "..\..\mcs\class/System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj", "{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.EnterpriseServices-net_2_0", "..\..\mcs\class/System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj", "{92E7A483-839B-4EFA-A77D-16C68F051941}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-net_2_0", "..\..\mcs\class/System.Transactions\System.Transactions-net_2_0.csproj", "{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-net_2_0", "..\..\mcs\class/System.Transactions\System.Transactions-net_2_0.csproj", "{DD1B3195-5FEA-46A2-99B5-9839CA60485C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_2_0", "..\..\mcs\class/System.Web\System.Web-net_2_0.csproj", "{F30781EC-D410-4A00-BD91-0971E37DE140}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_2_0", "..\..\mcs\class/System.Web\System.Web-net_2_0.csproj", "{4796A339-E32F-476E-9D7D-69C771CD618C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-net_2_0", "..\..\mcs\class/System.Drawing\System.Drawing-net_2_0.csproj", "{0877A48B-2DF5-40A2-8714-ABBF2BD48987}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-net_2_0", "..\..\mcs\class/System.Drawing\System.Drawing-net_2_0.csproj", "{CA7E5301-90D2-4C07-87B7-851AA216D4C9}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-net_2_0", "..\..\mcs\class/System.Data\System.Data-net_2_0.csproj", "{B8CA1780-FF35-49B9-B385-C24BD0558109}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-net_2_0", "..\..\mcs\class/System.Data\System.Data-net_2_0.csproj", "{49220562-83E1-49A2-971F-5D31C4AB0258}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-net_2_0", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-net_2_0.csproj", "{FDB86B5C-19F4-49DB-807F-CB0466C121A1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-net_2_0", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-net_2_0.csproj", "{99315C7A-EEDA-4247-96F4-14924760DB8B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-net_2_0", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj", "{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-net_2_0", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj", "{85526C39-79CA-40DB-940A-3C83DF30DF85}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-net_2_0", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0.csproj", "{60E307F3-5E95-42FF-9B41-3FB8AD664AB6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-net_2_0", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0.csproj", "{991C45A8-3B22-45BB-B688-DBF8BA835992}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-net_2_0", "..\..\mcs\class/System.Core\System.Core-net_2_0.csproj", "{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-net_2_0", "..\..\mcs\class/System.Core\System.Core-net_2_0.csproj", "{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_2_0", "..\..\mcs\class/Mono.Posix\Mono.Posix-net_2_0.csproj", "{BFC160FF-5B62-41D2-B039-52C469077AE0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_2_0", "..\..\mcs\class/Mono.Posix\Mono.Posix-net_2_0.csproj", "{F83F663F-89F7-481C-941E-E4FE67867254}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Web-net_2_0", "..\..\mcs\class/Mono.Web\Mono.Web-net_2_0.csproj", "{4E0AB773-6BB3-4866-881F-B362A573C8DD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Web-net_2_0", "..\..\mcs\class/Mono.Web\Mono.Web-net_2_0.csproj", "{D0D311A2-725A-4413-B7FA-EF61E2A4C0C0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Web-net_4_0", "..\..\mcs\class/Mono.Web\Mono.Web-net_4_0.csproj", "{2C2BA4BC-CDE5-46D0-A225-9E84EE42997F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Web-net_4_0", "..\..\mcs\class/Mono.Web\Mono.Web-net_4_0.csproj", "{AA8CFAB1-B81C-434E-AA60-C2373B27EB56}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-tests-net_4_5", "..\..\mcs\class/System.Web\System.Web-tests-net_4_5.csproj", "{E63734B6-D4FC-4016-A3E3-4C98E408E559}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-tests-net_4_5", "..\..\mcs\class/System.Web\System.Web-tests-net_4_5.csproj", "{CEE0A26D-0700-446F-B515-5AFF610ACF5E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SystemWebTestShim-net_4_0", "..\..\mcs\class/SystemWebTestShim\SystemWebTestShim-net_4_0.csproj", "{2CA35670-6F91-4423-A36A-12560A182E0D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SystemWebTestShim-net_4_0", "..\..\mcs\class/SystemWebTestShim\SystemWebTestShim-net_4_0.csproj", "{08486D58-12AA-4B53-82F7-1B2C62EAE9D5}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_0-1", "..\..\mcs\class/System.Web\System.Web-net_4_0-1.csproj", "{D9409D43-8919-4A4C-A7B5-77383840CD35}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_0-1", "..\..\mcs\class/System.Web\System.Web-net_4_0-1.csproj", "{77D30907-035D-4382-AA43-5A8EE294EA33}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Web-net_4_5", "..\..\mcs\class/Mono.Web\Mono.Web-net_4_5.csproj", "{ABD934FF-6F3A-40CB-85DB-98316F708226}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Web-net_4_5", "..\..\mcs\class/Mono.Web\Mono.Web-net_4_5.csproj", "{82BD591A-1377-41BD-9B2C-1037574BB935}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-net_4_5", "..\..\mcs\class/System.Web.Services\System.Web.Services-net_4_5.csproj", "{5A9673B6-FC36-4B40-92F6-A9586B75EC57}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-net_4_5", "..\..\mcs\class/System.Web.Services\System.Web.Services-net_4_5.csproj", "{1CD96FCF-0288-4FA4-9451-47B0C2206186}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-tests-net_4_5", "..\..\mcs\class/System.Web.Services\System.Web.Services-tests-net_4_5.csproj", "{10182EEF-2616-46BB-894E-6820BFA07D45}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-tests-net_4_5", "..\..\mcs\class/System.Web.Services\System.Web.Services-tests-net_4_5.csproj", "{7DA0BC53-8555-4547-BAE6-BD72EF93B109}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_5-1", "..\..\mcs\class/System.Web\System.Web-net_4_5-1.csproj", "{A945645C-6DF3-414E-B5F1-25DC35C95136}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_5-1", "..\..\mcs\class/System.Web\System.Web-net_4_5-1.csproj", "{6CC04C44-1378-4502-B134-FE6D46B1A4B4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Remoting-net_4_5", "..\..\mcs\class/System.Runtime.Remoting\System.Runtime.Remoting-net_4_5.csproj", "{4DB64CBC-A1A0-4EF6-9AC8-EABD847E9553}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Remoting-net_4_5", "..\..\mcs\class/System.Runtime.Remoting\System.Runtime.Remoting-net_4_5.csproj", "{7E62A1A2-DEED-44AD-9FF2-178065ED8A44}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Remoting-tests-net_4_5", "..\..\mcs\class/System.Runtime.Remoting\System.Runtime.Remoting-tests-net_4_5.csproj", "{7F9CCA1F-1778-4BB6-A8B6-D761429B4B8C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Remoting-tests-net_4_5", "..\..\mcs\class/System.Runtime.Remoting\System.Runtime.Remoting-tests-net_4_5.csproj", "{E19661F8-3BCE-48C0-A408-8F712F87A396}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration.Install-net_4_5", "..\..\mcs\class/System.Configuration.Install\System.Configuration.Install-net_4_5.csproj", "{348A36EC-8291-460B-9CC2-8CA8AD1759A2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration.Install-net_4_5", "..\..\mcs\class/System.Configuration.Install\System.Configuration.Install-net_4_5.csproj", "{D413E89D-CE81-4766-BBC1-AC17A3FD5C95}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Management-net_4_5", "..\..\mcs\class/System.Management\System.Management-net_4_5.csproj", "{A99FD368-6E3E-448C-83C5-A7D64762924E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Management-net_4_5", "..\..\mcs\class/System.Management\System.Management-net_4_5.csproj", "{07BD11C9-C562-4EC3-8B7E-26EA909393C0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.OracleClient-net_4_5", "..\..\mcs\class/System.Data.OracleClient\System.Data.OracleClient-net_4_5.csproj", "{7443D41A-D078-49E1-9A88-87902B6EDFFC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.OracleClient-net_4_5", "..\..\mcs\class/System.Data.OracleClient\System.Data.OracleClient-net_4_5.csproj", "{7EB08776-A0D3-415F-960A-58869EDFDA02}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.OracleClient-tests-net_4_5", "..\..\mcs\class/System.Data.OracleClient\System.Data.OracleClient-tests-net_4_5.csproj", "{93ABF627-F02A-4409-9BAE-0E564A43FC9A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.OracleClient-tests-net_4_5", "..\..\mcs\class/System.Data.OracleClient\System.Data.OracleClient-tests-net_4_5.csproj", "{228F1876-102C-4817-875C-1D80F17BADF9}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.VisualC-net_4_5", "..\..\mcs\class/Microsoft.VisualC\Microsoft.VisualC-net_4_5.csproj", "{ED516751-8649-48D5-B1F3-2C450B2E45D1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.VisualC-net_4_5", "..\..\mcs\class/Microsoft.VisualC\Microsoft.VisualC-net_4_5.csproj", "{923568BE-5A8D-44A1-AA33-348679E6AAD7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cscompmgd-net_4_5", "..\..\mcs\class/Cscompmgd\Cscompmgd-net_4_5.csproj", "{AD666708-4CC0-4822-B670-26D59A2D32AF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cscompmgd-net_4_5", "..\..\mcs\class/Cscompmgd\Cscompmgd-net_4_5.csproj", "{C67F17EE-7E1C-4B87-B58B-11458749DD70}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cscompmgd-tests-net_4_5", "..\..\mcs\class/Cscompmgd\Cscompmgd-tests-net_4_5.csproj", "{C5D5DEB9-74DC-42FF-93C7-3316E4567B0E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cscompmgd-tests-net_4_5", "..\..\mcs\class/Cscompmgd\Cscompmgd-tests-net_4_5.csproj", "{C7D8B744-96E6-42A0-82C0-C191C686D485}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Design-net_4_5", "..\..\mcs\class/System.Design\System.Design-net_4_5.csproj", "{C0EEF402-0A7C-4FF1-8AE8-0D53850AB70E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Design-net_4_5", "..\..\mcs\class/System.Design\System.Design-net_4_5.csproj", "{2ABC2A54-EF46-42A3-BCCD-A58070E5D2F0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing.Design-net_4_0", "..\..\mcs\class/System.Drawing.Design\System.Drawing.Design-net_4_0.csproj", "{6BFAB010-392A-4F3D-861D-19B5BEC476D5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing.Design-net_4_0", "..\..\mcs\class/System.Drawing.Design\System.Drawing.Design-net_4_0.csproj", "{8C367062-EFEF-4765-B1B1-5553608F6A60}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms-net_4_0", "..\..\mcs\class/Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj", "{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms-net_4_0", "..\..\mcs\class/Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj", "{41B3B369-328C-45B8-9F14-224641427A35}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Accessibility-net_4_0", "..\..\mcs\class/Accessibility\Accessibility-net_4_0.csproj", "{B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Accessibility-net_4_0", "..\..\mcs\class/Accessibility\Accessibility-net_4_0.csproj", "{3C0E9135-1458-47F6-9076-17FFB1E3E32F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.WebBrowser-net_4_0", "..\..\mcs\class/Mono.WebBrowser\Mono.WebBrowser-net_4_0.csproj", "{48C35A26-B26A-4084-9A9A-7729D345B3B5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.WebBrowser-net_4_0", "..\..\mcs\class/Mono.WebBrowser\Mono.WebBrowser-net_4_0.csproj", "{A0DF2D35-BA97-4CAB-90C6-1C4463186C3E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Design-tests-net_4_5", "..\..\mcs\class/System.Design\System.Design-tests-net_4_5.csproj", "{BE037A30-EA31-40F1-BC2A-9FEAADDD435E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Design-tests-net_4_5", "..\..\mcs\class/System.Design\System.Design-tests-net_4_5.csproj", "{CF9157B2-D8CB-4C1E-9F92-7028CBD13DE0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PEAPI-net_4_5", "..\..\mcs\class/PEAPI\PEAPI-net_4_5.csproj", "{67C79BA1-2CF2-40B7-B362-1DCAF156AA25}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PEAPI-net_4_5", "..\..\mcs\class/PEAPI\PEAPI-net_4_5.csproj", "{465CE08E-9F33-4EA5-9AAB-A03DEBFAF671}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Npgsql-net_4_5", "..\..\mcs\class/Npgsql\Npgsql-net_4_5.csproj", "{3404EE44-7E95-4619-93B8-C7B82ADEB8F5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Npgsql-net_4_5", "..\..\mcs\class/Npgsql\Npgsql-net_4_5.csproj", "{0E57DA52-274B-4E8D-A60D-3B87910B70E0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Npgsql-tests-net_4_5", "..\..\mcs\class/Npgsql\Npgsql-tests-net_4_5.csproj", "{76A8C207-5DFF-435F-9F47-9C6E201AF8F4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Npgsql-tests-net_4_5", "..\..\mcs\class/Npgsql\Npgsql-tests-net_4_5.csproj", "{993AE1D3-7F06-482F-A90A-A06FD59B3FF5}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commons.Xml.Relaxng-net_4_5", "..\..\mcs\class/Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_4_5.csproj", "{4B2DAC6F-0527-4042-97C0-0B576ECA1A1C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commons.Xml.Relaxng-net_4_5", "..\..\mcs\class/Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_4_5.csproj", "{0C6297C3-66BE-4FD1-B9B0-057950B32E94}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commons.Xml.Relaxng-tests-net_4_5", "..\..\mcs\class/Commons.Xml.Relaxng\Commons.Xml.Relaxng-tests-net_4_5.csproj", "{BA4C18A4-EF3B-42DD-957A-5C1BF4EE6359}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commons.Xml.Relaxng-tests-net_4_5", "..\..\mcs\class/Commons.Xml.Relaxng\Commons.Xml.Relaxng-tests-net_4_5.csproj", "{7694FE57-6BB7-478E-BB4E-C5187167804F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novell.Directory.Ldap-net_4_5", "..\..\mcs\class/Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5.csproj", "{74565932-18F5-4BEC-AAB6-98230A4B662C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novell.Directory.Ldap-net_4_5", "..\..\mcs\class/Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5.csproj", "{BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novell.Directory.Ldap-tests-net_4_5", "..\..\mcs\class/Novell.Directory.Ldap\Novell.Directory.Ldap-tests-net_4_5.csproj", "{2B9B735A-BF18-4FB6-B576-8ED42BA8E1FF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novell.Directory.Ldap-tests-net_4_5", "..\..\mcs\class/Novell.Directory.Ldap\Novell.Directory.Ldap-tests-net_4_5.csproj", "{91FFC577-CF58-43EB-BD06-D0233F588A5B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security.Win32-net_4_5", "..\..\mcs\class/Mono.Security.Win32\Mono.Security.Win32-net_4_5.csproj", "{D044BF49-7C7C-4E7D-8A1B-4A7DA133E4B8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security.Win32-net_4_5", "..\..\mcs\class/Mono.Security.Win32\Mono.Security.Win32-net_4_5.csproj", "{A91ADA57-5818-4949-B584-CB5303EB8842}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.DirectoryServices-net_4_5", "..\..\mcs\class/System.DirectoryServices\System.DirectoryServices-net_4_5.csproj", "{97C8B52D-2E89-4EB1-856C-C9BD3A75A56B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.DirectoryServices-net_4_5", "..\..\mcs\class/System.DirectoryServices\System.DirectoryServices-net_4_5.csproj", "{F3D6D651-192F-4209-B272-7F8354D0CDB6}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.DirectoryServices-tests-net_4_5", "..\..\mcs\class/System.DirectoryServices\System.DirectoryServices-tests-net_4_5.csproj", "{B7DE9FFF-1E5D-464F-9C4B-5A6DA9D6EBC3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.DirectoryServices-tests-net_4_5", "..\..\mcs\class/System.DirectoryServices\System.DirectoryServices-tests-net_4_5.csproj", "{D358D57B-1CF3-4DBC-B5F7-17B69814B7DE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RabbitMQ.Client.Apigen-net_4_5", "..\..\mcs\class/RabbitMQ.Client/src/apigen\RabbitMQ.Client.Apigen-net_4_5.csproj", "{84ACFFEC-BB08-4715-B77B-091B827C55E3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RabbitMQ.Client.Apigen-net_4_5", "..\..\mcs\class/RabbitMQ.Client/src/apigen\RabbitMQ.Client.Apigen-net_4_5.csproj", "{EC71F150-48A7-4971-A37D-E519ABA830A3}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RabbitMQ.Client-net_4_5", "..\..\mcs\class/RabbitMQ.Client/src/client\RabbitMQ.Client-net_4_5.csproj", "{E4F02B09-E5BF-4DF9-9D55-58396821B80D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RabbitMQ.Client-net_4_5", "..\..\mcs\class/RabbitMQ.Client/src/client\RabbitMQ.Client-net_4_5.csproj", "{8BA87CBE-8098-4512-B008-A347E1EA281C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging-net_4_5", "..\..\mcs\class/Mono.Messaging\Mono.Messaging-net_4_5.csproj", "{3D737371-B7D6-49E4-AA91-F67EF2E07A45}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging-net_4_5", "..\..\mcs\class/Mono.Messaging\Mono.Messaging-net_4_5.csproj", "{1CB843E3-75E7-4115-9EE6-7B7262AC6C96}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging-tests-net_4_5", "..\..\mcs\class/Mono.Messaging\Mono.Messaging-tests-net_4_5.csproj", "{EBDF7A9B-728D-4D71-A603-3D840220FBE4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging-tests-net_4_5", "..\..\mcs\class/Mono.Messaging\Mono.Messaging-tests-net_4_5.csproj", "{3429D3B3-51DC-4236-9C5A-33C4F9E260FE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Messaging-net_4_0", "..\..\mcs\class/System.Messaging\System.Messaging-net_4_0.csproj", "{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Messaging-net_4_0", "..\..\mcs\class/System.Messaging\System.Messaging-net_4_0.csproj", "{443D0D78-0A65-4288-80C2-B58011E3A5D1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration.Install-net_4_0", "..\..\mcs\class/System.Configuration.Install\System.Configuration.Install-net_4_0.csproj", "{878F802D-3249-41E8-8322-A32C406383C6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration.Install-net_4_0", "..\..\mcs\class/System.Configuration.Install\System.Configuration.Install-net_4_0.csproj", "{3C248397-71FD-4A63-B4A5-9F2A28C4D983}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging-net_4_0", "..\..\mcs\class/Mono.Messaging\Mono.Messaging-net_4_0.csproj", "{7D27EF3B-540A-4BBD-873C-878ABC927401}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging-net_4_0", "..\..\mcs\class/Mono.Messaging\Mono.Messaging-net_4_0.csproj", "{CD0A320A-620E-42D0-86CD-2D32F5592E57}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Messaging-net_4_5", "..\..\mcs\class/System.Messaging\System.Messaging-net_4_5.csproj", "{47046600-6AFB-46AB-BCF6-8E9EDD67FA97}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Messaging-net_4_5", "..\..\mcs\class/System.Messaging\System.Messaging-net_4_5.csproj", "{A8B93174-06DF-4FC7-8E3E-45F395A943EB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Messaging-tests-net_4_5", "..\..\mcs\class/System.Messaging\System.Messaging-tests-net_4_5.csproj", "{CF3B58EF-C823-47AD-B77F-ACAF6C2DE9DC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Messaging-tests-net_4_5", "..\..\mcs\class/System.Messaging\System.Messaging-tests-net_4_5.csproj", "{2A3A7368-D302-4166-820C-8CB18138740C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging.RabbitMQ-net_4_5", "..\..\mcs\class/Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_4_5.csproj", "{6D4FFAA7-A96E-4C35-A87C-E368C0553EA4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging.RabbitMQ-net_4_5", "..\..\mcs\class/Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_4_5.csproj", "{114A51BC-8AB2-4B25-A9A7-CB78C43745B8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging.RabbitMQ-tests-net_4_5", "..\..\mcs\class/Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-tests-net_4_5.csproj", "{70EF0F9A-D878-4858-851E-7B7B6E69C75E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging.RabbitMQ-tests-net_4_5", "..\..\mcs\class/Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-tests-net_4_5.csproj", "{57115A1C-8C33-455E-A108-04DCD04808BD}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceProcess-net_4_5", "..\..\mcs\class/System.ServiceProcess\System.ServiceProcess-net_4_5.csproj", "{4F0B9DF5-C9AC-43CE-9229-BAE2B3C4AE52}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceProcess-net_4_5", "..\..\mcs\class/System.ServiceProcess\System.ServiceProcess-net_4_5.csproj", "{99FAEDEC-48C5-4B12-8707-13A8CF11CFEF}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceProcess-tests-net_4_5", "..\..\mcs\class/System.ServiceProcess\System.ServiceProcess-tests-net_4_5.csproj", "{F8218843-5463-4D1D-BD93-4E1A507FFAF9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceProcess-tests-net_4_5", "..\..\mcs\class/System.ServiceProcess\System.ServiceProcess-tests-net_4_5.csproj", "{D86B8C00-9D5A-46D0-8BF0-49E4D7606EAD}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing.Design-net_4_5", "..\..\mcs\class/System.Drawing.Design\System.Drawing.Design-net_4_5.csproj", "{167298A3-F7FD-41D9-888E-AAAD48074482}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing.Design-net_4_5", "..\..\mcs\class/System.Drawing.Design\System.Drawing.Design-net_4_5.csproj", "{8B8B57E4-285A-409A-BA4A-290DE0055301}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Design-net_4_5-1", "..\..\mcs\class/System.Design\System.Design-net_4_5-1.csproj", "{2414C54A-9454-4B25-932C-0724CF003A6D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Design-net_4_5-1", "..\..\mcs\class/System.Design\System.Design-net_4_5-1.csproj", "{54B3EC1E-F177-4E17-B4B9-ADF5C4AEE9B4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpZipLib-net_4_5", "..\..\mcs\class/ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5.csproj", "{C41C7048-6B86-43DB-9F5E-BED7A92CD56E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpZipLib-net_4_5", "..\..\mcs\class/ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5.csproj", "{039AD56A-E91B-4803-8328-287F70B61D14}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Http-net_4_5", "..\..\mcs\class/Mono.Http\Mono.Http-net_4_5.csproj", "{3B625FA4-DABF-4F64-9D38-D4005EE6ECD5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Http-net_4_5", "..\..\mcs\class/Mono.Http\Mono.Http-net_4_5.csproj", "{9F93BC7A-F061-4AF5-AF3C-F81692D20E89}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cairo-net_4_5", "..\..\mcs\class/Mono.Cairo\Mono.Cairo-net_4_5.csproj", "{78AEDB9D-4DB6-4EB5-BDCD-1DFAB7467761}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cairo-net_4_5", "..\..\mcs\class/Mono.Cairo\Mono.Cairo-net_4_5.csproj", "{75114723-49E9-4351-A4FD-36DB9BC044E6}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IBM.Data.DB2-net_4_5", "..\..\mcs\class/IBM.Data.DB2\IBM.Data.DB2-net_4_5.csproj", "{0A4E586A-047A-4C04-9821-265465A334F8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IBM.Data.DB2-net_4_5", "..\..\mcs\class/IBM.Data.DB2\IBM.Data.DB2-net_4_5.csproj", "{61C7FBD9-B531-4292-8456-AAA6F9E650C4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomMarshalers-net_4_5", "..\..\mcs\class/CustomMarshalers\CustomMarshalers-net_4_5.csproj", "{69C23F98-A766-46FB-B83F-2F22BFC3E897}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomMarshalers-net_4_5", "..\..\mcs\class/CustomMarshalers\CustomMarshalers-net_4_5.csproj", "{417E7FEB-E054-44F0-81FF-A896F4018DC7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSystem.C-net_4_5", "..\..\mcs\class/OpenSystem.C\OpenSystem.C-net_4_5.csproj", "{10F0CA9C-5F98-4091-BF3B-DDD0F6FF44DC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSystem.C-net_4_5", "..\..\mcs\class/OpenSystem.C\OpenSystem.C-net_4_5.csproj", "{2E94B160-349C-4138-8922-208B3B8175F2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil-net_4_5", "..\..\mcs\class/Mono.Cecil\Mono.Cecil-net_4_5.csproj", "{9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil-net_4_5", "..\..\mcs\class/Mono.Cecil\Mono.Cecil-net_4_5.csproj", "{954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil.Mdb-net_4_5", "..\..\mcs\class/Mono.Cecil.Mdb\Mono.Cecil.Mdb-net_4_5.csproj", "{571A830B-5A77-4918-897F-100BDFD66F5E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil.Mdb-net_4_5", "..\..\mcs\class/Mono.Cecil.Mdb\Mono.Cecil.Mdb-net_4_5.csproj", "{9ABB7BB9-5EA1-4081-B205-5658A602C1F5}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Debugger.Soft-net_4_5", "..\..\mcs\class/Mono.Debugger.Soft\Mono.Debugger.Soft-net_4_5.csproj", "{1B3407DC-BF9A-4679-BC2E-AF1322032D3D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Debugger.Soft-net_4_5", "..\..\mcs\class/Mono.Debugger.Soft\Mono.Debugger.Soft-net_4_5.csproj", "{21F6D72C-2C4D-4108-9BC5-C01FAFFCEF8E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Debugger.Soft-tests-net_4_5", "..\..\mcs\class/Mono.Debugger.Soft\Mono.Debugger.Soft-tests-net_4_5.csproj", "{FE0507AC-F903-45C9-8CB3-CBEFF973F2C1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Debugger.Soft-tests-net_4_5", "..\..\mcs\class/Mono.Debugger.Soft\Mono.Debugger.Soft-tests-net_4_5.csproj", "{FBA53F04-D998-43D8-8538-C11EE71EEB70}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SystemWebTestShim-net_4_5", "..\..\mcs\class/SystemWebTestShim\SystemWebTestShim-net_4_5.csproj", "{AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SystemWebTestShim-net_4_5", "..\..\mcs\class/SystemWebTestShim\SystemWebTestShim-net_4_5.csproj", "{3D24376B-ECC8-4E7B-9433-C77CC67880AA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Framework-net_4_5", "..\..\mcs\class/Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj", "{58CD6625-5643-4A3F-84E6-5568E8573A49}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Framework-net_4_5", "..\..\mcs\class/Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj", "{2BAFB878-D329-46A5-93AF-5A4ECD403A13}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Framework-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Framework\Microsoft.Build.Framework-tests-net_4_5.csproj", "{D35940CE-3A36-4AE4-850F-C022247AE9F2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Framework-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Framework\Microsoft.Build.Framework-tests-net_4_5.csproj", "{DB6937A9-D27A-42AB-A044-1DB4B1F97414}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Utilities-net_4_5", "..\..\mcs\class/Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj", "{B20027FF-D5D8-4AD3-8F5F-535556916D36}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Utilities-net_4_5", "..\..\mcs\class/Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj", "{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Utilities-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Utilities\Microsoft.Build.Utilities-tests-net_4_5.csproj", "{766E5895-AE1B-44F9-928C-34FAEE15CA64}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Utilities-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Utilities\Microsoft.Build.Utilities-tests-net_4_5.csproj", "{7E7B683B-FA73-492D-A59B-E13AF28F8B21}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Engine-net_4_5", "..\..\mcs\class/Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj", "{7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Engine-net_4_5", "..\..\mcs\class/Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj", "{0DA63190-E6E1-41C5-B683-A54FADBE61CB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Engine-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Engine\Microsoft.Build.Engine-tests-net_4_5.csproj", "{53D1041C-C85A-4DD3-9C65-6DC879737A0F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Engine-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Engine\Microsoft.Build.Engine-tests-net_4_5.csproj", "{AE80331E-4C95-4F65-BE43-0C3011661AE1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Tasks-net_4_5", "..\..\mcs\class/Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_5.csproj", "{09B16AF2-4480-4F66-995B-6FEFD9C67546}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Tasks-net_4_5", "..\..\mcs\class/Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_5.csproj", "{B0995E00-BF37-4B8A-8229-285C060E5957}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Tasks-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Tasks\Microsoft.Build.Tasks-tests-net_4_5.csproj", "{7E029CF3-FBE0-48F4-A802-1536E1E2FCFF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Tasks-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Tasks\Microsoft.Build.Tasks-tests-net_4_5.csproj", "{E572DA55-C0E6-42BA-9BCF-05B2C777D15B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.Linq-net_4_5", "..\..\mcs\class/System.Xml.Linq\System.Xml.Linq-net_4_5.csproj", "{50961B0B-5BEC-4058-9246-5CEEE888CEC8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.Linq-net_4_5", "..\..\mcs\class/System.Xml.Linq\System.Xml.Linq-net_4_5.csproj", "{A581C8A4-F031-43BA-A744-042ECD6EA6FE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.Linq-tests-net_4_5", "..\..\mcs\class/System.Xml.Linq\System.Xml.Linq-tests-net_4_5.csproj", "{04C9F589-3AA1-4BCA-ABC1-ABBC7527783E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.Linq-tests-net_4_5", "..\..\mcs\class/System.Xml.Linq\System.Xml.Linq-tests-net_4_5.csproj", "{20A3B729-8CAB-4480-84BF-07E8CECE4CDB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization-net_4_5", "..\..\mcs\class/System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj", "{088AB4AB-1904-4365-A74B-F7557A034945}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization-net_4_5", "..\..\mcs\class/System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj", "{E90544E8-C031-49EE-BB6F-8688382E8618}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization-tests-net_4_5", "..\..\mcs\class/System.Runtime.Serialization\System.Runtime.Serialization-tests-net_4_5.csproj", "{8748B03E-D19A-4A32-B0BC-67DE3F224EDC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization-tests-net_4_5", "..\..\mcs\class/System.Runtime.Serialization\System.Runtime.Serialization-tests-net_4_5.csproj", "{DC1A3B5B-AFAC-4EE0-B9B8-6664F9E744B7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel-net_4_0", "..\..\mcs\class/System.ServiceModel\System.ServiceModel-net_4_0.csproj", "{93532CB9-2FFB-4458-820F-BA280A6E6796}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel-net_4_0", "..\..\mcs\class/System.ServiceModel\System.ServiceModel-net_4_0.csproj", "{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization-net_4_0", "..\..\mcs\class/System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj", "{B3C699B6-74B4-4B41-901E-32E57D0909AC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization-net_4_0", "..\..\mcs\class/System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj", "{4F614C6C-A83E-4C3C-859B-0548391F519E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel-net_4_0", "..\..\mcs\class/System.IdentityModel\System.IdentityModel-net_4_0.csproj", "{4326E85E-00B2-47F8-9A54-A8E15021CBA3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel-net_4_0", "..\..\mcs\class/System.IdentityModel\System.IdentityModel-net_4_0.csproj", "{F3D909C0-D548-4FBC-BA04-BC8A445954EA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_0-2", "..\..\mcs\class/System.Web\System.Web-net_4_0-2.csproj", "{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_0-2", "..\..\mcs\class/System.Web\System.Web-net_4_0-2.csproj", "{C410B7A1-AC09-4CBB-9F20-AC9473811B40}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel.Selectors-net_4_0", "..\..\mcs\class/System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_0.csproj", "{DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel.Selectors-net_4_0", "..\..\mcs\class/System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_0.csproj", "{45FB5242-B51C-43BC-A7B5-75E5E17C4E95}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.DataSetExtensions-net_4_5", "..\..\mcs\class/System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_4_5.csproj", "{99723243-801A-4F86-A51B-F88737F567B2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.DataSetExtensions-net_4_5", "..\..\mcs\class/System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_4_5.csproj", "{CE1B7764-9679-451A-9ACB-697088B116F1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.DataSetExtensions-tests-net_4_5", "..\..\mcs\class/System.Data.DataSetExtensions\System.Data.DataSetExtensions-tests-net_4_5.csproj", "{EAFF9F04-A5B5-458E-860B-76D7B2B7D745}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.DataSetExtensions-tests-net_4_5", "..\..\mcs\class/System.Data.DataSetExtensions\System.Data.DataSetExtensions-tests-net_4_5.csproj", "{53BEA1F5-AA08-429E-BD7A-EAD4DF7B9EE1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Linq-net_4_5", "..\..\mcs\class/System.Data.Linq\System.Data.Linq-net_4_5.csproj", "{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Linq-net_4_5", "..\..\mcs\class/System.Data.Linq\System.Data.Linq-net_4_5.csproj", "{D5F1C909-8875-4D37-8CC1-30851258C594}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Linq-tests-net_4_5", "..\..\mcs\class/System.Data.Linq\System.Data.Linq-tests-net_4_5.csproj", "{1FC59170-4045-4778-81DA-EC3EAAE7670C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Linq-tests-net_4_5", "..\..\mcs\class/System.Data.Linq\System.Data.Linq-tests-net_4_5.csproj", "{1D746BE5-4458-4F6F-B87F-8B3EEEE2DD46}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_5-2", "..\..\mcs\class/System.Web\System.Web-net_4_5-2.csproj", "{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_5-2", "..\..\mcs\class/System.Web\System.Web-net_4_5-2.csproj", "{93406A57-422B-4A7E-886A-B37F2E97DB78}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Abstractions-net_4_5", "..\..\mcs\class/System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj", "{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Abstractions-net_4_5", "..\..\mcs\class/System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj", "{C035D4D2-D112-49A6-87B8-E47469BBDA4F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Abstractions-tests-net_4_5", "..\..\mcs\class/System.Web.Abstractions\System.Web.Abstractions-tests-net_4_5.csproj", "{4EB0E45D-D6AE-4CBA-8771-2CDDCAB24372}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Abstractions-tests-net_4_5", "..\..\mcs\class/System.Web.Abstractions\System.Web.Abstractions-tests-net_4_5.csproj", "{3AD60A26-BA14-4B61-9293-D98C1BF9552C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Routing-net_4_5", "..\..\mcs\class/System.Web.Routing\System.Web.Routing-net_4_5.csproj", "{6D8FBB29-646A-4F94-B80D-04DD8768F1E7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Routing-net_4_5", "..\..\mcs\class/System.Web.Routing\System.Web.Routing-net_4_5.csproj", "{83FDEDF8-E46D-437E-8CEF-DD2C36E05324}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Routing-tests-net_4_5", "..\..\mcs\class/System.Web.Routing\System.Web.Routing-tests-net_4_5.csproj", "{0A2B6514-DC20-4DC3-A976-622FEA39D4EB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Routing-tests-net_4_5", "..\..\mcs\class/System.Web.Routing\System.Web.Routing-tests-net_4_5.csproj", "{8E750A9D-7421-408C-B859-62A8C92D3FE2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel-net_4_5", "..\..\mcs\class/System.IdentityModel\System.IdentityModel-net_4_5.csproj", "{1B9AFE07-4230-4DE0-8A9F-C277179098FF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel-net_4_5", "..\..\mcs\class/System.IdentityModel\System.IdentityModel-net_4_5.csproj", "{1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel-tests-net_4_5", "..\..\mcs\class/System.IdentityModel\System.IdentityModel-tests-net_4_5.csproj", "{79CC8709-A8CF-4AB2-8077-924F769AC65E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel-tests-net_4_5", "..\..\mcs\class/System.IdentityModel\System.IdentityModel-tests-net_4_5.csproj", "{74D8D6B9-1D98-4F19-A834-A0C603AD1482}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel.Selectors-net_4_5", "..\..\mcs\class/System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5.csproj", "{C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel.Selectors-net_4_5", "..\..\mcs\class/System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5.csproj", "{5889C0B9-25DF-4405-A240-AC0615F4B3EB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel-net_4_5", "..\..\mcs\class/System.ServiceModel\System.ServiceModel-net_4_5.csproj", "{CF2A0D90-EB73-49B1-900B-BCE40990B404}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel-net_4_5", "..\..\mcs\class/System.ServiceModel\System.ServiceModel-net_4_5.csproj", "{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel-tests-net_4_5", "..\..\mcs\class/System.ServiceModel\System.ServiceModel-tests-net_4_5.csproj", "{D1B6CD53-1030-468E-AAF4-4D2253086D25}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel-tests-net_4_5", "..\..\mcs\class/System.ServiceModel\System.ServiceModel-tests-net_4_5.csproj", "{5F59D153-79FB-4348-B615-419F2DA69166}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Extensions-net_4_5", "..\..\mcs\class/System.Web.Extensions\System.Web.Extensions-net_4_5.csproj", "{88F3463D-A057-4531-AEE8-802F5B6342E9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Extensions-net_4_5", "..\..\mcs\class/System.Web.Extensions\System.Web.Extensions-net_4_5.csproj", "{74E571CD-0506-4A52-B780-FDA9445675FB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Extensions-tests-net_4_5", "..\..\mcs\class/System.Web.Extensions\System.Web.Extensions-tests-net_4_5.csproj", "{496386B9-294B-4D76-A15F-2C25E7E6A941}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Extensions-tests-net_4_5", "..\..\mcs\class/System.Web.Extensions\System.Web.Extensions-tests-net_4_5.csproj", "{F70BF1C1-23E0-449D-966D-0A0657F0AB02}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Extensions.Design-net_4_5", "..\..\mcs\class/System.Web.Extensions.Design\System.Web.Extensions.Design-net_4_5.csproj", "{B1C41A6E-22FC-4208-8B2A-9CBDE0B80FFF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Extensions.Design-net_4_5", "..\..\mcs\class/System.Web.Extensions.Design\System.Web.Extensions.Design-net_4_5.csproj", "{9F8B1088-2610-4E4D-A6E4-EDF2771104D9}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.DataAnnotations-net_4_5", "..\..\mcs\class/System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj", "{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.DataAnnotations-net_4_5", "..\..\mcs\class/System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj", "{64E625C0-AA4E-44DC-98F4-352D552F2EF8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.DataAnnotations-tests-net_4_5", "..\..\mcs\class/System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-tests-net_4_5.csproj", "{DB1D4B02-5F4D-4383-905E-82205D8F1D76}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.DataAnnotations-tests-net_4_5", "..\..\mcs\class/System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-tests-net_4_5.csproj", "{8A46F1CA-4F8B-4EE5-A5E3-AC67291311F3}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.DynamicData-net_4_5", "..\..\mcs\class/System.Web.DynamicData\System.Web.DynamicData-net_4_5.csproj", "{FCB921CD-F90B-453A-A546-F47CCC019EF3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.DynamicData-net_4_5", "..\..\mcs\class/System.Web.DynamicData\System.Web.DynamicData-net_4_5.csproj", "{02E0DC5C-2182-45D8-95E3-FF5ED16C318E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.DynamicData-tests-net_4_5", "..\..\mcs\class/System.Web.DynamicData\System.Web.DynamicData-tests-net_4_5.csproj", "{8178EA24-D36C-43EC-8783-6325059CBA5E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.DynamicData-tests-net_4_5", "..\..\mcs\class/System.Web.DynamicData\System.Web.DynamicData-tests-net_4_5.csproj", "{1500FD28-7DB2-40B3-BAB2-A8FBE3960A4E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Web-net_4_5", "..\..\mcs\class/System.ServiceModel.Web\System.ServiceModel.Web-net_4_5.csproj", "{89390ACC-32C7-45EE-A169-BA1A4EEE6C47}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Web-net_4_5", "..\..\mcs\class/System.ServiceModel.Web\System.ServiceModel.Web-net_4_5.csproj", "{BC669CAE-D6F8-49B9-8AC3-68B48BD70587}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Web-tests-net_4_5", "..\..\mcs\class/System.ServiceModel.Web\System.ServiceModel.Web-tests-net_4_5.csproj", "{4EE7AB4A-30BD-4795-AF12-1BFFA4108CF7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Web-tests-net_4_5", "..\..\mcs\class/System.ServiceModel.Web\System.ServiceModel.Web-tests-net_4_5.csproj", "{E8E13C56-208F-44E9-B0F9-F1A4996C595A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Mvc2-net_4_5", "..\..\mcs\class/System.Web.Mvc2\System.Web.Mvc2-net_4_5.csproj", "{5CC8078D-0307-481D-AAAE-EE62ED123A61}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Mvc2-net_4_5", "..\..\mcs\class/System.Web.Mvc2\System.Web.Mvc2-net_4_5.csproj", "{C4643395-6B5B-47D9-BD50-9F6804478AFD}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.C5-net_4_5", "..\..\mcs\class/Mono.C5\Mono.C5-net_4_5.csproj", "{557C0FF1-A6FA-4B27-92A2-98A59CD740E1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.C5-net_4_5", "..\..\mcs\class/Mono.C5\Mono.C5-net_4_5.csproj", "{E8DC0734-B7DB-4CA3-9DF2-4103F35B8A39}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.C5-tests-net_4_5", "..\..\mcs\class/Mono.C5\Mono.C5-tests-net_4_5.csproj", "{EF1AE0BA-B984-4149-8968-0337A4D9BDA4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.C5-tests-net_4_5", "..\..\mcs\class/Mono.C5\Mono.C5-tests-net_4_5.csproj", "{9A686629-45E0-431D-975C-BEDF137D75F1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Management-net_4_5", "..\..\mcs\class/Mono.Management\Mono.Management-net_4_5.csproj", "{962D9F06-30EC-4E71-B921-36FB856365A6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Management-net_4_5", "..\..\mcs\class/Mono.Management\Mono.Management-net_4_5.csproj", "{E8BE3F98-6FE7-4EBD-8FAC-7CDADFE26096}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Options-net_4_5", "..\..\mcs\class/Mono.Options\Mono.Options-net_4_5.csproj", "{01DD131B-233A-4BA2-AFCA-80FB5743449E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Options-net_4_5", "..\..\mcs\class/Mono.Options\Mono.Options-net_4_5.csproj", "{4F4AE80E-7DB0-49A9-B508-80A328137181}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Options-tests-net_4_5", "..\..\mcs\class/Mono.Options\Mono.Options-tests-net_4_5.csproj", "{57A29A4C-18F1-43BA-8DC4-00810C45368C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Options-tests-net_4_5", "..\..\mcs\class/Mono.Options\Mono.Options-tests-net_4_5.csproj", "{1AC76475-2AAB-431E-BD97-444CD5AF1191}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Simd-net_4_5", "..\..\mcs\class/Mono.Simd\Mono.Simd-net_4_5.csproj", "{E845A9A8-0491-4D18-B5B5-32DE93E21328}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Simd-net_4_5", "..\..\mcs\class/Mono.Simd\Mono.Simd-net_4_5.csproj", "{05D8BAFE-64FA-4F09-AC7B-86627DFF136F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Tasklets-net_4_5", "..\..\mcs\class/Mono.Tasklets\Mono.Tasklets-net_4_5.csproj", "{203E023D-A06D-49EA-9316-612A16FA5C88}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Tasklets-net_4_5", "..\..\mcs\class/Mono.Tasklets\Mono.Tasklets-net_4_5.csproj", "{33307B59-24A6-4100-9E0C-F65613FE95AA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Dynamic-net_4_5", "..\..\mcs\class/System.Dynamic\System.Dynamic-net_4_5.csproj", "{ADDB864A-84AC-41AB-A978-268B68E98EAF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Dynamic-net_4_5", "..\..\mcs\class/System.Dynamic\System.Dynamic-net_4_5.csproj", "{FB9F6B34-05B5-444F-885E-FF87DA721F12}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CSharp-net_4_5", "..\..\mcs\class/Mono.CSharp\Mono.CSharp-net_4_5.csproj", "{2D329C5C-24DA-4D80-B594-C996334758B6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CSharp-net_4_5", "..\..\mcs\class/Mono.CSharp\Mono.CSharp-net_4_5.csproj", "{D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CSharp-tests-net_4_5", "..\..\mcs\class/Mono.CSharp\Mono.CSharp-tests-net_4_5.csproj", "{364E6D64-019A-40A1-90A2-BBFD6EF542C5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CSharp-tests-net_4_5", "..\..\mcs\class/Mono.CSharp\Mono.CSharp-tests-net_4_5.csproj", "{A05D5D7B-744A-4E62-9B38-4B5149AA955A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Moonlight.Build.Tasks-net_4_5", "..\..\mcs\class/Moonlight.Build.Tasks\Moonlight.Build.Tasks-net_4_5.csproj", "{29C03463-6071-4FB2-83D2-B5497B35E090}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Moonlight.Build.Tasks-net_4_5", "..\..\mcs\class/Moonlight.Build.Tasks\Moonlight.Build.Tasks-net_4_5.csproj", "{C1BA77F3-938B-4598-BD75-5E9578827F47}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net-net_4_5", "..\..\mcs\class/System.Net\System.Net-net_4_5.csproj", "{204C086B-F0B0-4570-89F1-50245F0E0491}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net-net_4_5", "..\..\mcs\class/System.Net\System.Net-net_4_5.csproj", "{ADF802C8-DED6-4991-A5AE-34B8F1440EE4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json-net_4_5", "..\..\mcs\class/System.Json\System.Json-net_4_5.csproj", "{DBD6E6AA-45EA-4844-989B-C95A001A0440}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json-net_4_5", "..\..\mcs\class/System.Json\System.Json-net_4_5.csproj", "{EB9696AB-2203-48F1-92B4-86BD28340248}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json-tests-net_4_5", "..\..\mcs\class/System.Json\System.Json-tests-net_4_5.csproj", "{4E2A4405-91F8-4A5F-9925-D16C0AE8BBB5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json-tests-net_4_5", "..\..\mcs\class/System.Json\System.Json-tests-net_4_5.csproj", "{704ADB45-E58F-432D-955A-69E3B5DDEE77}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Numerics-net_4_5", "..\..\mcs\class/System.Numerics\System.Numerics-net_4_5.csproj", "{C807E510-3FB6-4C77-A7CC-6EAC73823C3C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Numerics-net_4_5", "..\..\mcs\class/System.Numerics\System.Numerics-net_4_5.csproj", "{9A7E3AA8-1EB4-4A43-A806-636E6B220A76}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Numerics-tests-net_4_5", "..\..\mcs\class/System.Numerics\System.Numerics-tests-net_4_5.csproj", "{0FCF1047-D9AE-48DA-B794-5505284027A9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Numerics-tests-net_4_5", "..\..\mcs\class/System.Numerics\System.Numerics-tests-net_4_5.csproj", "{1A3E2D13-1CE7-43CB-9748-9C7D586A897F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CSharp-net_4_5", "..\..\mcs\class/Microsoft.CSharp\Microsoft.CSharp-net_4_5.csproj", "{94E8FEFF-9695-4F77-A8AB-85370336FE0D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CSharp-net_4_5", "..\..\mcs\class/Microsoft.CSharp\Microsoft.CSharp-net_4_5.csproj", "{AC2AB4A1-8005-4458-8B2B-614DA9BBC644}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build-net_4_5", "..\..\mcs\class/Microsoft.Build\Microsoft.Build-net_4_5.csproj", "{47E4681E-7A08-482D-8D5E-4AA5A3E1E96B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build-net_4_5", "..\..\mcs\class/Microsoft.Build\Microsoft.Build-net_4_5.csproj", "{D8A2B8F2-F52B-44D5-A868-C344682749E2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build-tests-net_4_5", "..\..\mcs\class/Microsoft.Build\Microsoft.Build-tests-net_4_5.csproj", "{9DDFB8FD-C017-44D3-82D4-129AF99D667D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build-tests-net_4_5", "..\..\mcs\class/Microsoft.Build\Microsoft.Build-tests-net_4_5.csproj", "{E34212A3-F152-4A6F-88F7-7A4D0324D11C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms.DataVisualization-net_4_5", "..\..\mcs\class/System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-net_4_5.csproj", "{6CE40A14-711E-46EE-BAB4-AD83134C373E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms.DataVisualization-net_4_5", "..\..\mcs\class/System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-net_4_5.csproj", "{47FD8F07-F207-478D-B9D7-4CE5DC4A52B6}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms.DataVisualization-tests-net_4_5", "..\..\mcs\class/System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-tests-net_4_5.csproj", "{05F331B4-99A2-4DCA-9283-EA1589BCDF39}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms.DataVisualization-tests-net_4_5", "..\..\mcs\class/System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-tests-net_4_5.csproj", "{B1643A3E-B53E-4264-8CA3-27533EF662CB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xaml-net_4_5", "..\..\mcs\class/System.Xaml\System.Xaml-net_4_5.csproj", "{690E0C87-8516-4F5D-B105-1FEDC19AE99A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xaml-net_4_5", "..\..\mcs\class/System.Xaml\System.Xaml-net_4_5.csproj", "{2E8547F9-AE9C-4179-BC88-C0695369170B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xaml-tests-net_4_5", "..\..\mcs\class/System.Xaml\System.Xaml-tests-net_4_5.csproj", "{2990557C-6AC5-4C9E-83B5-F47B0B9B48DD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xaml-tests-net_4_5", "..\..\mcs\class/System.Xaml\System.Xaml-tests-net_4_5.csproj", "{10779E1B-BD7F-4FE1-81BB-E4EE8BAA0B83}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsBase-net_4_5", "..\..\mcs\class/WindowsBase\WindowsBase-net_4_5.csproj", "{6D23A57D-01AF-4266-8E58-C16E732FCF81}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsBase-net_4_5", "..\..\mcs\class/WindowsBase\WindowsBase-net_4_5.csproj", "{0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsBase-tests-net_4_5", "..\..\mcs\class/WindowsBase\WindowsBase-tests-net_4_5.csproj", "{AB097D8E-4AD6-4120-B75C-306E274727D4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsBase-tests-net_4_5", "..\..\mcs\class/WindowsBase\WindowsBase-tests-net_4_5.csproj", "{E0DEF2F1-BC80-48E8-8387-13CC5B03BE5B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Routing-net_4_5", "..\..\mcs\class/System.ServiceModel.Routing\System.ServiceModel.Routing-net_4_5.csproj", "{74243378-7F6B-4B8D-81E3-E61C7AD8B87D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Routing-net_4_5", "..\..\mcs\class/System.ServiceModel.Routing\System.ServiceModel.Routing-net_4_5.csproj", "{C60066A8-6929-44CD-BD9F-4556AFFC0087}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Discovery-net_4_5", "..\..\mcs\class/System.ServiceModel.Discovery\System.ServiceModel.Discovery-net_4_5.csproj", "{C06900FB-F604-4640-AFDC-000BF6BB38CC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Discovery-net_4_5", "..\..\mcs\class/System.ServiceModel.Discovery\System.ServiceModel.Discovery-net_4_5.csproj", "{875503E2-28DA-4301-99D4-9A897BDC06F1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Discovery-tests-net_4_5", "..\..\mcs\class/System.ServiceModel.Discovery\System.ServiceModel.Discovery-tests-net_4_5.csproj", "{BB7A44E8-2F00-4A87-843D-5387CD8611E3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Discovery-tests-net_4_5", "..\..\mcs\class/System.ServiceModel.Discovery\System.ServiceModel.Discovery-tests-net_4_5.csproj", "{C776055D-B157-4022-8926-DC1DCE41832F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Caching-net_4_5", "..\..\mcs\class/System.Runtime.Caching\System.Runtime.Caching-net_4_5.csproj", "{8645A982-AA1E-48CB-B996-7FCC4F8703CE}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Caching-net_4_5", "..\..\mcs\class/System.Runtime.Caching\System.Runtime.Caching-net_4_5.csproj", "{C18ABE89-33D2-4780-93BE-AB89B8187581}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Caching-tests-net_4_5", "..\..\mcs\class/System.Runtime.Caching\System.Runtime.Caching-tests-net_4_5.csproj", "{8AA31784-B653-4727-B8AD-ED2756AF1C3D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Caching-tests-net_4_5", "..\..\mcs\class/System.Runtime.Caching\System.Runtime.Caching-tests-net_4_5.csproj", "{CE2E44C6-7B7F-43BB-992D-44749DFA7D71}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.DurableInstancing-net_4_5", "..\..\mcs\class/System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-net_4_5.csproj", "{C07F9E49-E65C-40C7-A3BD-02F932A33C2A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.DurableInstancing-net_4_5", "..\..\mcs\class/System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-net_4_5.csproj", "{DD189B9C-5CB4-4CB8-988C-90C36AB0BDA2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.DurableInstancing-tests-net_4_5", "..\..\mcs\class/System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-tests-net_4_5.csproj", "{590FFFA8-EFBA-4B65-87A7-FB3B42C9FF02}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.DurableInstancing-tests-net_4_5", "..\..\mcs\class/System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-tests-net_4_5.csproj", "{6D34CFEC-13B9-4E34-A253-CE4E46322542}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Parallel-net_4_5", "..\..\mcs\class/Mono.Parallel\Mono.Parallel-net_4_5.csproj", "{B43E74BB-F4C0-462C-B86A-7108208A22A0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Parallel-net_4_5", "..\..\mcs\class/Mono.Parallel\Mono.Parallel-net_4_5.csproj", "{FD8BB787-B115-4DED-ACB0-2858546FC16D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Parallel-tests-net_4_5", "..\..\mcs\class/Mono.Parallel\Mono.Parallel-tests-net_4_5.csproj", "{1D2E5242-8084-4C3C-8461-F9B0DF7D0F32}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Parallel-tests-net_4_5", "..\..\mcs\class/Mono.Parallel\Mono.Parallel-tests-net_4_5.csproj", "{42F035A7-4FCD-4526-9D82-E7D3D4350AC1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Interfaces-net_4_5", "..\..\mcs\class/System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj", "{1CA793F9-A71D-4534-B684-D77AF04AB96F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Interfaces-net_4_5", "..\..\mcs\class/System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj", "{D80FD091-3F53-4879-B0BB-08897139CF97}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Core-net_4_5", "..\..\mcs\class/System.Reactive.Core\System.Reactive.Core-net_4_5.csproj", "{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Core-net_4_5", "..\..\mcs\class/System.Reactive.Core\System.Reactive.Core-net_4_5.csproj", "{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Linq-net_4_5", "..\..\mcs\class/System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj", "{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Linq-net_4_5", "..\..\mcs\class/System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj", "{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.PlatformServices-net_4_5", "..\..\mcs\class/System.Reactive.PlatformServices\System.Reactive.PlatformServices-net_4_5.csproj", "{A01E9CA8-9B09-4D80-923B-67E8B60D2723}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.PlatformServices-net_4_5", "..\..\mcs\class/System.Reactive.PlatformServices\System.Reactive.PlatformServices-net_4_5.csproj", "{6A74098E-D4D5-4D6F-A673-8E95CBF8726E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Providers-net_4_5", "..\..\mcs\class/System.Reactive.Providers\System.Reactive.Providers-net_4_5.csproj", "{3EC882EF-A451-467F-BE31-CE6E98A538F0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Providers-net_4_5", "..\..\mcs\class/System.Reactive.Providers\System.Reactive.Providers-net_4_5.csproj", "{03DD638D-4D60-42BB-94D6-3C7112C62C20}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Runtime.Remoting-net_4_5", "..\..\mcs\class/System.Reactive.Runtime.Remoting\System.Reactive.Runtime.Remoting-net_4_5.csproj", "{F2A9349E-4A1E-4FA2-86D7-E970CF54C6A5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Runtime.Remoting-net_4_5", "..\..\mcs\class/System.Reactive.Runtime.Remoting\System.Reactive.Runtime.Remoting-net_4_5.csproj", "{5462ACB9-395E-4152-8292-B24612453210}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Windows.Forms-net_4_5", "..\..\mcs\class/System.Reactive.Windows.Forms\System.Reactive.Windows.Forms-net_4_5.csproj", "{AB071CEE-330F-4AA3-B73C-9154150914C1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Windows.Forms-net_4_5", "..\..\mcs\class/System.Reactive.Windows.Forms\System.Reactive.Windows.Forms-net_4_5.csproj", "{A12A96AC-3AAD-417A-90FB-B40573189AC4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Windows.Threading-net_4_5", "..\..\mcs\class/System.Reactive.Windows.Threading\System.Reactive.Windows.Threading-net_4_5.csproj", "{490E03A7-434E-41D6-B134-BD090A9CE383}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Windows.Threading-net_4_5", "..\..\mcs\class/System.Reactive.Windows.Threading\System.Reactive.Windows.Threading-net_4_5.csproj", "{6E6F15CD-2244-4DD8-AD9E-02FECE17DB0D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Experimental-net_4_5", "..\..\mcs\class/System.Reactive.Experimental\System.Reactive.Experimental-net_4_5.csproj", "{6DDBDFA1-00F6-4584-801D-A2FC8691AEE1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Experimental-net_4_5", "..\..\mcs\class/System.Reactive.Experimental\System.Reactive.Experimental-net_4_5.csproj", "{36C5B564-9E57-4DD3-ADA4-4EC79402B02E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Debugger-net_4_5", "..\..\mcs\class/System.Reactive.Debugger\System.Reactive.Debugger-net_4_5.csproj", "{6B1ABEA7-1774-41A8-B6B6-5A3CFDED2882}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Debugger-net_4_5", "..\..\mcs\class/System.Reactive.Debugger\System.Reactive.Debugger-net_4_5.csproj", "{68AE2077-862E-4351-A159-D3CD817059CF}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Web.Infrastructure-net_4_5", "..\..\mcs\class/Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5.csproj", "{ADFD4824-AEDB-445C-9B52-D0E0A9318B87}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Web.Infrastructure-net_4_5", "..\..\mcs\class/Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5.csproj", "{4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebMatrix.Data-net_4_5", "..\..\mcs\class/WebMatrix.Data\WebMatrix.Data-net_4_5.csproj", "{37C82B59-9992-4A8F-AC90-C2D77D3BDF8F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebMatrix.Data-net_4_5", "..\..\mcs\class/WebMatrix.Data\WebMatrix.Data-net_4_5.csproj", "{A7DB00D7-81EF-4197-9F87-D6EBDFDBD88E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebMatrix.Data-tests-net_4_5", "..\..\mcs\class/WebMatrix.Data\WebMatrix.Data-tests-net_4_5.csproj", "{57596539-1B39-4CF2-9586-383EF5AB45DB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebMatrix.Data-tests-net_4_5", "..\..\mcs\class/WebMatrix.Data\WebMatrix.Data-tests-net_4_5.csproj", "{4D33E714-F07E-44AC-9998-705170E29818}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Services.Client-net_4_5", "..\..\mcs\class/System.Data.Services.Client\System.Data.Services.Client-net_4_5.csproj", "{515D27B3-F7B6-4F0D-9CF6-521F7D37118D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Services.Client-net_4_5", "..\..\mcs\class/System.Data.Services.Client\System.Data.Services.Client-net_4_5.csproj", "{05D23556-E085-4A30-A6AF-8F39651CA284}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Services-net_4_5", "..\..\mcs\class/System.Data.Services\System.Data.Services-net_4_5.csproj", "{16E0F17C-FBA5-46E2-97D1-E04E9E0CBB6D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Services-net_4_5", "..\..\mcs\class/System.Data.Services\System.Data.Services-net_4_5.csproj", "{90405849-4C66-4BF7-B9F6-E0D81995231B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Services-tests-net_4_5", "..\..\mcs\class/System.Data.Services\System.Data.Services-tests-net_4_5.csproj", "{9C91B0D3-EEDF-4914-A1D1-13360A6B7A8F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Services-tests-net_4_5", "..\..\mcs\class/System.Data.Services\System.Data.Services-tests-net_4_5.csproj", "{FCB4DC7D-7B4C-4BD6-98CA-4F5AA08CB18B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json.Microsoft-net_4_5", "..\..\mcs\class/System.Json.Microsoft\System.Json.Microsoft-net_4_5.csproj", "{DC000DEB-DEAE-4B93-994A-F9EB4DFB9901}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json.Microsoft-net_4_5", "..\..\mcs\class/System.Json.Microsoft\System.Json.Microsoft-net_4_5.csproj", "{A0CB0E7E-B383-4EE6-A7B8-E553318C3DBE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json.Microsoft-tests-net_4_5", "..\..\mcs\class/System.Json.Microsoft\System.Json.Microsoft-tests-net_4_5.csproj", "{831B40B7-11F7-4B33-B5C7-26989628D70C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json.Microsoft-tests-net_4_5", "..\..\mcs\class/System.Json.Microsoft\System.Json.Microsoft-tests-net_4_5.csproj", "{5E2117E9-A72D-4842-AD28-87FE0AAF5417}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "monodoc-net_4_5", "..\..\mcs\class/monodoc\monodoc-net_4_5.csproj", "{DB76C87C-DD25-4563-9DD0-7914A84CC11D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "monodoc-net_4_5", "..\..\mcs\class/monodoc\monodoc-net_4_5.csproj", "{46C0366B-72E7-4482-A6C4-4C8CE8318BDA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "monodoc-tests-net_4_5", "..\..\mcs\class/monodoc\monodoc-tests-net_4_5.csproj", "{20C68AFD-8518-4A78-91B4-747C71CB7589}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "monodoc-tests-net_4_5", "..\..\mcs\class/monodoc\monodoc-tests-net_4_5.csproj", "{AAE2ADEF-2160-40D7-B7E4-37C96ADBAC8C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading.Tasks.Dataflow-net_4_5", "..\..\mcs\class/System.Threading.Tasks.Dataflow\System.Threading.Tasks.Dataflow-net_4_5.csproj", "{D7EDCA7E-F61D-4D8A-8540-B0DDAED8A927}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading.Tasks.Dataflow-net_4_5", "..\..\mcs\class/System.Threading.Tasks.Dataflow\System.Threading.Tasks.Dataflow-net_4_5.csproj", "{82B719BA-7803-4832-B837-42928A0E1CEB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading.Tasks.Dataflow-tests-net_4_5", "..\..\mcs\class/System.Threading.Tasks.Dataflow\System.Threading.Tasks.Dataflow-tests-net_4_5.csproj", "{F87B162C-A83C-45FD-8FED-FFFB1E4C002C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading.Tasks.Dataflow-tests-net_4_5", "..\..\mcs\class/System.Threading.Tasks.Dataflow\System.Threading.Tasks.Dataflow-tests-net_4_5.csproj", "{8A83591A-6906-48BF-BB8E-1515D264B2D7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.Composition-net_4_5", "..\..\mcs\class/System.ComponentModel.Composition\System.ComponentModel.Composition-net_4_5.csproj", "{F0F5AB89-1FCB-400C-B20F-90063C272C28}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.Composition-net_4_5", "..\..\mcs\class/System.ComponentModel.Composition\System.ComponentModel.Composition-net_4_5.csproj", "{5FA3AE70-F92C-4D4E-80A6-2B7BD55655BB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Http-net_4_5", "..\..\mcs\class/System.Net.Http\System.Net.Http-net_4_5.csproj", "{46CFCFD7-D328-4896-86F2-215A6577548C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Http-net_4_5", "..\..\mcs\class/System.Net.Http\System.Net.Http-net_4_5.csproj", "{BE71D058-35CB-4623-AA66-631C7EB5F139}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Http-tests-net_4_5", "..\..\mcs\class/System.Net.Http\System.Net.Http-tests-net_4_5.csproj", "{A99841AC-505D-4E3F-8EC7-17232A175EB9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Http-tests-net_4_5", "..\..\mcs\class/System.Net.Http\System.Net.Http-tests-net_4_5.csproj", "{7F42459F-0D03-42BF-BC81-7EDF54F78C05}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Razor-net_4_5", "..\..\mcs\class/System.Web.Razor\System.Web.Razor-net_4_5.csproj", "{2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Http.WebRequest-net_4_5", "..\..\mcs\class/System.Net.Http.WebRequest\System.Net.Http.WebRequest-net_4_5.csproj", "{36096AD5-68E4-46E0-B9A0-FC29DBCC9B15}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages.Deployment-net_4_5", "..\..\mcs\class/System.Web.WebPages.Deployment\System.Web.WebPages.Deployment-net_4_5.csproj", "{20363524-CE98-4FCB-8477-AF79DDC1A909}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Razor-net_4_5", "..\..\mcs\class/System.Web.Razor\System.Web.Razor-net_4_5.csproj", "{030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages-net_4_5", "..\..\mcs\class/System.Web.WebPages\System.Web.WebPages-net_4_5.csproj", "{4A2FA66A-594D-4A7B-9943-B7956C46D856}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages.Deployment-net_4_5", "..\..\mcs\class/System.Web.WebPages.Deployment\System.Web.WebPages.Deployment-net_4_5.csproj", "{0089F43D-5A83-46A4-9299-A98B0A86A70A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages.Razor-net_4_5", "..\..\mcs\class/System.Web.WebPages.Razor\System.Web.WebPages.Razor-net_4_5.csproj", "{D8E8B136-69B6-461F-872A-9C0F12272D53}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages-net_4_5", "..\..\mcs\class/System.Web.WebPages\System.Web.WebPages-net_4_5.csproj", "{E9421151-F425-415F-8D32-5F28974E3C72}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Mvc3-net_4_5", "..\..\mcs\class/System.Web.Mvc3\System.Web.Mvc3-net_4_5.csproj", "{5797142C-571A-4B83-B837-0821D077236A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages.Razor-net_4_5", "..\..\mcs\class/System.Web.WebPages.Razor\System.Web.WebPages.Razor-net_4_5.csproj", "{7A8432CA-9024-4496-A751-18AEFC8932E7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Http.Formatting-net_4_5", "..\..\mcs\class/System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5.csproj", "{23304250-6657-44F1-851B-8EF6C5A9CEF7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Mvc3-net_4_5", "..\..\mcs\class/System.Web.Mvc3\System.Web.Mvc3-net_4_5.csproj", "{3DB9B990-AE64-4B64-8A75-3797970AF64A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Http-net_4_5", "..\..\mcs\class/System.Web.Http\System.Web.Http-net_4_5.csproj", "{0410DC95-B046-49E0-954A-A2CDA3368100}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Http.Formatting-net_4_5", "..\..\mcs\class/System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5.csproj", "{9BDDA23D-1ABF-477A-AAA6-CD489033208E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Http.SelfHost-net_4_5", "..\..\mcs\class/System.Web.Http.SelfHost\System.Web.Http.SelfHost-net_4_5.csproj", "{53C6EE8D-8590-4805-B016-FD9C8E360A21}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Http-net_4_5", "..\..\mcs\class/System.Web.Http\System.Web.Http-net_4_5.csproj", "{9E5FB1DD-0691-445E-8048-C90981B6948D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFramework-net_4_5", "..\..\mcs\class/EntityFramework\EntityFramework-net_4_5.csproj", "{AABFEC11-0171-447F-9093-6E118257D22C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Http.SelfHost-net_4_5", "..\..\mcs\class/System.Web.Http.SelfHost\System.Web.Http.SelfHost-net_4_5.csproj", "{00562AD9-16A9-4A82-8236-9FFCC0FC9B26}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFramework.SqlServer-net_4_5", "..\..\mcs\class/EntityFramework.SqlServer\EntityFramework.SqlServer-net_4_5.csproj", "{0CEF008D-47D4-49DC-9B67-C1CC73F40D77}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFramework-net_4_5", "..\..\mcs\class/EntityFramework\EntityFramework-net_4_5.csproj", "{7AC4183B-FA37-45D9-9069-47336EB37D0A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CodeContracts-net_4_5", "..\..\mcs\class/Mono.CodeContracts\Mono.CodeContracts-net_4_5.csproj", "{BFDC3628-3992-4BA9-B95F-E0DAF5A8D247}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFramework.SqlServer-net_4_5", "..\..\mcs\class/EntityFramework.SqlServer\EntityFramework.SqlServer-net_4_5.csproj", "{2D2DDD2D-5AE7-458B-B626-4475D671A7F9}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CodeContracts-tests-net_4_5", "..\..\mcs\class/Mono.CodeContracts\Mono.CodeContracts-tests-net_4_5.csproj", "{F3D6F2CB-120A-401F-92B5-59D88F932C4A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CodeContracts-net_4_5", "..\..\mcs\class/Mono.CodeContracts\Mono.CodeContracts-net_4_5.csproj", "{61E5E4CF-E818-44D1-B718-70EE46F2B85D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CodeContracts-tests-net_4_5", "..\..\mcs\class/Mono.CodeContracts\Mono.CodeContracts-tests-net_4_5.csproj", "{BB5DAECF-1B34-480C-B8EC-C1DAEEE56B89}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IO.Compression-net_4_5", "..\..\mcs\class/System.IO.Compression\System.IO.Compression-net_4_5.csproj", "{75C86F9F-5D58-4DDE-AADE-362D15CD395A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IO.Compression.FileSystem-net_4_5", "..\..\mcs\class/System.IO.Compression.FileSystem\System.IO.Compression.FileSystem-net_4_5.csproj", "{FD39D99F-0489-4AA5-990D-46A03BB78A1A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows-net_4_5", "..\..\mcs\class/System.Windows\System.Windows-net_4_5.csproj", "{D5662433-D835-47CA-BA45-E186255D48EB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.Serialization-net_4_5", "..\..\mcs\class/System.Xml.Serialization\System.Xml.Serialization-net_4_5.csproj", "{FE15E8BF-7546-4A4E-AD88-55AED8C3CBB3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime-net_4_5", "..\..\mcs\class/Facades/System.Runtime\System.Runtime-net_4_5.csproj", "{EDE6E598-F2C2-4E50-8D2C-F9EE48DD52BE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Linq-net_4_5", "..\..\mcs\class/Facades/System.Linq\System.Linq-net_4_5.csproj", "{449CB31C-BD0B-4350-A82A-D0F4EE76F1C8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.XmlSerializer-net_4_5", "..\..\mcs\class/Facades/System.Xml.XmlSerializer\System.Xml.XmlSerializer-net_4_5.csproj", "{FC137D2C-3EE5-4DDC-8BE8-17DCCC4624DC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Primitives-net_4_5", "..\..\mcs\class/Facades/System.ServiceModel.Primitives\System.ServiceModel.Primitives-net_4_5.csproj", "{06851BAA-6E25-4DEA-87E6-93D5BE894976}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.ReaderWriter-net_4_5", "..\..\mcs\class/Facades/System.Xml.ReaderWriter\System.Xml.ReaderWriter-net_4_5.csproj", "{86450EE5-13B2-4F59-8C0B-13EEF614ED79}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Diagnostics.Debug-net_4_5", "..\..\mcs\class/Facades/System.Diagnostics.Debug\System.Diagnostics.Debug-net_4_5.csproj", "{41BDC045-34C4-490C-A7B7-C826689DE03F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Extensions-net_4_5", "..\..\mcs\class/Facades/System.Runtime.Extensions\System.Runtime.Extensions-net_4_5.csproj", "{EC155D19-0F07-4ED0-BB51-A1792B4AF2EC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Diagnostics.Tools-net_4_5", "..\..\mcs\class/Facades/System.Diagnostics.Tools\System.Diagnostics.Tools-net_4_5.csproj", "{D8AD74BA-B169-400B-89EE-BC64E04E5A88}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Collections-net_4_5", "..\..\mcs\class/Facades/System.Collections\System.Collections-net_4_5.csproj", "{41117A9D-0DAC-42F2-BBB7-44621610838F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.EventBasedAsync-net_4_5", "..\..\mcs\class/Facades/System.ComponentModel.EventBasedAsync\System.ComponentModel.EventBasedAsync-net_4_5.csproj", "{F7093FF5-BB89-471B-83F6-509C7B32360D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel-net_4_5", "..\..\mcs\class/Facades/System.ComponentModel\System.ComponentModel-net_4_5.csproj", "{2BD41344-9F19-4972-B3A7-6CAA80E60F1F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ObjectModel-net_4_5", "..\..\mcs\class/Facades/System.ObjectModel\System.ObjectModel-net_4_5.csproj", "{8C685929-4B19-408E-975E-D14039889A7A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Text.RegularExpressions-net_4_5", "..\..\mcs\class/Facades/System.Text.RegularExpressions\System.Text.RegularExpressions-net_4_5.csproj", "{C27D0C3E-DD75-4E27-B70A-50D9DF48ECC0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading-net_4_5", "..\..\mcs\class/Facades/System.Threading\System.Threading-net_4_5.csproj", "{708A9F7F-4511-4AA3-A35E-3C9FB945E103}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.InteropServices-net_4_5", "..\..\mcs\class/Facades/System.Runtime.InteropServices\System.Runtime.InteropServices-net_4_5.csproj", "{1FE96A47-EA1F-4043-95C0-9A511AA095D7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reflection-net_4_5", "..\..\mcs\class/Facades/System.Reflection\System.Reflection-net_4_5.csproj", "{2A9DFBB5-AE84-489E-BD5C-19A721461836}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Globalization-net_4_5", "..\..\mcs\class/Facades/System.Globalization\System.Globalization-net_4_5.csproj", "{20594AA3-D09B-4751-93B6-16AED2B965BC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IO-net_4_5", "..\..\mcs\class/Facades/System.IO\System.IO-net_4_5.csproj", "{9B796831-5CFB-4783-9CB6-56ABE02AA4B4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reflection.Primitives-net_4_5", "..\..\mcs\class/Facades/System.Reflection.Primitives\System.Reflection.Primitives-net_4_5.csproj", "{0153FD8E-87C1-4828-BA17-5DCE9ACEF3A2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Resources.ResourceManager-net_4_5", "..\..\mcs\class/Facades/System.Resources.ResourceManager\System.Resources.ResourceManager-net_4_5.csproj", "{DEA6829A-AAAA-4927-8C14-C6B22F4E875E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security.Principal-net_4_5", "..\..\mcs\class/Facades/System.Security.Principal\System.Security.Principal-net_4_5.csproj", "{A5E05FB9-6ACC-49B1-86DE-233378C8A616}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Text.Encoding-net_4_5", "..\..\mcs\class/Facades/System.Text.Encoding\System.Text.Encoding-net_4_5.csproj", "{33772F45-1E93-4C47-87CD-74B75C304345}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Text.Encoding.Extensions-net_4_5", "..\..\mcs\class/Facades/System.Text.Encoding.Extensions\System.Text.Encoding.Extensions-net_4_5.csproj", "{FA366919-E9AA-4B3B-BEE0-753010021EBC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Linq.Queryable-net_4_5", "..\..\mcs\class/Facades/System.Linq.Queryable\System.Linq.Queryable-net_4_5.csproj", "{C06DBBA4-D7A1-4B22-A513-A670C489392C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Linq.Expressions-net_4_5", "..\..\mcs\class/Facades/System.Linq.Expressions\System.Linq.Expressions-net_4_5.csproj", "{F4225D55-F85F-41CF-B886-2EA80BC621C7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Primitives-net_4_5", "..\..\mcs\class/Facades/System.Net.Primitives\System.Net.Primitives-net_4_5.csproj", "{8ABEAF4B-A0E4-486D-8DEA-F8F1A1B13835}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Requests-net_4_5", "..\..\mcs\class/Facades/System.Net.Requests\System.Net.Requests-net_4_5.csproj", "{B23EA10F-1BAC-46D0-AFAD-F8E87F9BF5EB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NetworkInformation-net_4_5", "..\..\mcs\class/Facades/System.Net.NetworkInformation\System.Net.NetworkInformation-net_4_5.csproj", "{202B203B-093C-4C40-B4FA-950CE4F138E7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Primitives-net_4_5", "..\..\mcs\class/Facades/System.Runtime.Serialization.Primitives\System.Runtime.Serialization.Primitives-net_4_5.csproj", "{4F627E32-59E1-4560-9254-A5F6AEEA49D0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Xml-net_4_5", "..\..\mcs\class/Facades/System.Runtime.Serialization.Xml\System.Runtime.Serialization.Xml-net_4_5.csproj", "{F5C32B79-74F0-452C-9DA4-3010910DA071}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Json-net_4_5", "..\..\mcs\class/Facades/System.Runtime.Serialization.Json\System.Runtime.Serialization.Json-net_4_5.csproj", "{A435BDB8-2601-4D5B-AD78-7E5575E1DD37}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Http-net_4_5", "..\..\mcs\class/Facades/System.ServiceModel.Http\System.ServiceModel.Http-net_4_5.csproj", "{B979CA0D-CF48-4A33-AC27-FC8CC12E009D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.XDocument-net_4_5", "..\..\mcs\class/Facades/System.Xml.XDocument\System.Xml.XDocument-net_4_5.csproj", "{06EB86BE-A440-44C2-B11E-9C2A05CD9DAB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading.Tasks-net_4_5", "..\..\mcs\class/Facades/System.Threading.Tasks\System.Threading.Tasks-net_4_5.csproj", "{8D758ECB-8294-41E7-A239-B31194C7FD4D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Diagnostics.Contracts-net_4_5", "..\..\mcs\class/Facades/System.Diagnostics.Contracts\System.Diagnostics.Contracts-net_4_5.csproj", "{A1AE0E86-573D-4B50-8078-3EB8744924C7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Dynamic.Runtime-net_4_5", "..\..\mcs\class/Facades/System.Dynamic.Runtime\System.Dynamic.Runtime-net_4_5.csproj", "{DDCB4935-5269-4DFB-9B7B-D01655DDC29C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.Annotations-net_4_5", "..\..\mcs\class/Facades/System.ComponentModel.Annotations\System.ComponentModel.Annotations-net_4_5.csproj", "{C08613F0-C5E5-4FF2-A8F0-516BA0B39688}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Numerics-net_4_5", "..\..\mcs\class/Facades/System.Runtime.Numerics\System.Runtime.Numerics-net_4_5.csproj", "{60725AA0-76C0-46AA-9E9A-793D5EB671F8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Linq.Parallel-net_4_5", "..\..\mcs\class/Facades/System.Linq.Parallel\System.Linq.Parallel-net_4_5.csproj", "{F3509D69-1160-463A-8607-68E5E34EC5F5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Collections.Concurrent-net_4_5", "..\..\mcs\class/Facades/System.Collections.Concurrent\System.Collections.Concurrent-net_4_5.csproj", "{9933A0E4-D6A6-465B-814A-4B2E1860C931}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading.Tasks.Parallel-net_4_5", "..\..\mcs\class/Facades/System.Threading.Tasks.Parallel\System.Threading.Tasks.Parallel-net_4_5.csproj", "{EEA0DCB3-83BF-4BCF-BF77-5A43E289945A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reflection.Extensions-net_4_5", "..\..\mcs\class/Facades/System.Reflection.Extensions\System.Reflection.Extensions-net_4_5.csproj", "{A0351AB5-FB39-49C2-9A16-856E3CE38288}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -549,1090 +643,1278 @@ Global
                Release|Any CPU = Release|Any CPU
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {AD97431A-3538-4597-9C5C-97137A9ECCA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AD97431A-3538-4597-9C5C-97137A9ECCA1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AD97431A-3538-4597-9C5C-97137A9ECCA1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AD97431A-3538-4597-9C5C-97137A9ECCA1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7B7210E5-3B98-492F-B57E-BD53A99C39B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7B7210E5-3B98-492F-B57E-BD53A99C39B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7B7210E5-3B98-492F-B57E-BD53A99C39B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7B7210E5-3B98-492F-B57E-BD53A99C39B0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {50D0CA30-64AF-4136-B43D-C43EDDE136C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {50D0CA30-64AF-4136-B43D-C43EDDE136C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {50D0CA30-64AF-4136-B43D-C43EDDE136C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {50D0CA30-64AF-4136-B43D-C43EDDE136C7}.Release|Any CPU.Build.0 = Release|Any CPU
-               {97C3D4C4-2B27-40C2-94ED-9C0119AB785C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {97C3D4C4-2B27-40C2-94ED-9C0119AB785C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {97C3D4C4-2B27-40C2-94ED-9C0119AB785C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {97C3D4C4-2B27-40C2-94ED-9C0119AB785C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {205A8E90-88CC-4B46-8151-87FA90B666A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {205A8E90-88CC-4B46-8151-87FA90B666A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {205A8E90-88CC-4B46-8151-87FA90B666A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {205A8E90-88CC-4B46-8151-87FA90B666A5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {928D664D-8277-47B3-AB06-538D932143FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {928D664D-8277-47B3-AB06-538D932143FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {928D664D-8277-47B3-AB06-538D932143FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {928D664D-8277-47B3-AB06-538D932143FE}.Release|Any CPU.Build.0 = Release|Any CPU
-               {73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}.Release|Any CPU.Build.0 = Release|Any CPU
-               {67A04408-CBEF-4B63-B975-29D827B0DBED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {67A04408-CBEF-4B63-B975-29D827B0DBED}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {67A04408-CBEF-4B63-B975-29D827B0DBED}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {67A04408-CBEF-4B63-B975-29D827B0DBED}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0F9C68C1-0695-4DC0-8064-B0749F54DF34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0F9C68C1-0695-4DC0-8064-B0749F54DF34}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0F9C68C1-0695-4DC0-8064-B0749F54DF34}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0F9C68C1-0695-4DC0-8064-B0749F54DF34}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A2433930-2BB3-4818-97D2-45A907CB7B3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A2433930-2BB3-4818-97D2-45A907CB7B3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A2433930-2BB3-4818-97D2-45A907CB7B3B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A2433930-2BB3-4818-97D2-45A907CB7B3B}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B8B2866D-592F-4888-A1CB-697AD0F3CADE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B8B2866D-592F-4888-A1CB-697AD0F3CADE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B8B2866D-592F-4888-A1CB-697AD0F3CADE}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B8B2866D-592F-4888-A1CB-697AD0F3CADE}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4C8FFAF4-4FE9-4377-821B-AFD255791495}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4C8FFAF4-4FE9-4377-821B-AFD255791495}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4C8FFAF4-4FE9-4377-821B-AFD255791495}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4C8FFAF4-4FE9-4377-821B-AFD255791495}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E9DD3F8E-CFA0-4B07-885F-B37A3932A81D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E9DD3F8E-CFA0-4B07-885F-B37A3932A81D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E9DD3F8E-CFA0-4B07-885F-B37A3932A81D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E9DD3F8E-CFA0-4B07-885F-B37A3932A81D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B7BE46BA-4D0D-4CDB-A31D-772BDCFCFC8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B7BE46BA-4D0D-4CDB-A31D-772BDCFCFC8A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B7BE46BA-4D0D-4CDB-A31D-772BDCFCFC8A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B7BE46BA-4D0D-4CDB-A31D-772BDCFCFC8A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {EF086B78-3330-427F-86A2-B87B1AB095A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {EF086B78-3330-427F-86A2-B87B1AB095A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {EF086B78-3330-427F-86A2-B87B1AB095A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {EF086B78-3330-427F-86A2-B87B1AB095A0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4D1ABD9E-B23B-4C1F-9DF1-7E3407EC3914}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4D1ABD9E-B23B-4C1F-9DF1-7E3407EC3914}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4D1ABD9E-B23B-4C1F-9DF1-7E3407EC3914}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4D1ABD9E-B23B-4C1F-9DF1-7E3407EC3914}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C3638457-A40E-4E70-81B4-54ACB31DD76D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C3638457-A40E-4E70-81B4-54ACB31DD76D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C3638457-A40E-4E70-81B4-54ACB31DD76D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C3638457-A40E-4E70-81B4-54ACB31DD76D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {725170B0-51F0-46E2-A74D-F764B68553D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {725170B0-51F0-46E2-A74D-F764B68553D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {725170B0-51F0-46E2-A74D-F764B68553D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {725170B0-51F0-46E2-A74D-F764B68553D6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {980C299E-664F-4905-B01C-19599BBE78FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {980C299E-664F-4905-B01C-19599BBE78FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {980C299E-664F-4905-B01C-19599BBE78FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {980C299E-664F-4905-B01C-19599BBE78FF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C596FD9E-2AC3-48E2-9661-F6F40C84F044}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C596FD9E-2AC3-48E2-9661-F6F40C84F044}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C596FD9E-2AC3-48E2-9661-F6F40C84F044}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C596FD9E-2AC3-48E2-9661-F6F40C84F044}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2590BECB-2660-49C6-93B1-B9E7D0796214}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2590BECB-2660-49C6-93B1-B9E7D0796214}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2590BECB-2660-49C6-93B1-B9E7D0796214}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2590BECB-2660-49C6-93B1-B9E7D0796214}.Release|Any CPU.Build.0 = Release|Any CPU
-               {443B892C-060C-4829-839D-FE539CDEC5D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {443B892C-060C-4829-839D-FE539CDEC5D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {443B892C-060C-4829-839D-FE539CDEC5D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {443B892C-060C-4829-839D-FE539CDEC5D9}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {1A075F2A-40CF-48B5-B817-8B03444DB7C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {1A075F2A-40CF-48B5-B817-8B03444DB7C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {1A075F2A-40CF-48B5-B817-8B03444DB7C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {1A075F2A-40CF-48B5-B817-8B03444DB7C6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {18CD7C68-EF7C-4C7A-B8D6-FE9834145437}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {18CD7C68-EF7C-4C7A-B8D6-FE9834145437}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {18CD7C68-EF7C-4C7A-B8D6-FE9834145437}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {18CD7C68-EF7C-4C7A-B8D6-FE9834145437}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}.Release|Any CPU.Build.0 = Release|Any CPU
-               {610C7C77-5851-4B95-A3FE-B04E1B011E6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {610C7C77-5851-4B95-A3FE-B04E1B011E6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {610C7C77-5851-4B95-A3FE-B04E1B011E6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {610C7C77-5851-4B95-A3FE-B04E1B011E6A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C57BB644-EEFC-475A-AF6F-43EF29C75933}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C57BB644-EEFC-475A-AF6F-43EF29C75933}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C57BB644-EEFC-475A-AF6F-43EF29C75933}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C57BB644-EEFC-475A-AF6F-43EF29C75933}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BC281223-A7A5-415D-B4AA-59417DBFFBBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BC281223-A7A5-415D-B4AA-59417DBFFBBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BC281223-A7A5-415D-B4AA-59417DBFFBBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BC281223-A7A5-415D-B4AA-59417DBFFBBB}.Release|Any CPU.Build.0 = Release|Any CPU
-               {977F7A36-972C-4139-81B6-1EF6A8F44857}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {977F7A36-972C-4139-81B6-1EF6A8F44857}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {977F7A36-972C-4139-81B6-1EF6A8F44857}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {977F7A36-972C-4139-81B6-1EF6A8F44857}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0005126E-C0D0-4DA3-A2E2-E49592D3E164}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0005126E-C0D0-4DA3-A2E2-E49592D3E164}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0005126E-C0D0-4DA3-A2E2-E49592D3E164}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0005126E-C0D0-4DA3-A2E2-E49592D3E164}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6865A6A5-DF93-45C7-BE83-F06907EC81F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6865A6A5-DF93-45C7-BE83-F06907EC81F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6865A6A5-DF93-45C7-BE83-F06907EC81F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6865A6A5-DF93-45C7-BE83-F06907EC81F8}.Release|Any CPU.Build.0 = Release|Any CPU
-               {801DF65A-F6B4-4D66-B415-9E8832E66F48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {801DF65A-F6B4-4D66-B415-9E8832E66F48}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {801DF65A-F6B4-4D66-B415-9E8832E66F48}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {801DF65A-F6B4-4D66-B415-9E8832E66F48}.Release|Any CPU.Build.0 = Release|Any CPU
-               {46371E88-F274-4BE7-8587-444F4E6F7247}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {46371E88-F274-4BE7-8587-444F4E6F7247}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {46371E88-F274-4BE7-8587-444F4E6F7247}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {46371E88-F274-4BE7-8587-444F4E6F7247}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2038AFC9-B4E4-4A05-B57B-11B698CA67DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2038AFC9-B4E4-4A05-B57B-11B698CA67DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2038AFC9-B4E4-4A05-B57B-11B698CA67DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2038AFC9-B4E4-4A05-B57B-11B698CA67DF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C3A02669-DEEA-469D-930F-926DED9B53C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C3A02669-DEEA-469D-930F-926DED9B53C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C3A02669-DEEA-469D-930F-926DED9B53C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C3A02669-DEEA-469D-930F-926DED9B53C6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5C0B6042-9C59-4D58-A7C1-A912A0689066}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5C0B6042-9C59-4D58-A7C1-A912A0689066}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5C0B6042-9C59-4D58-A7C1-A912A0689066}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5C0B6042-9C59-4D58-A7C1-A912A0689066}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6AB4F63B-4869-4380-89F4-B3547BDC8BD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6AB4F63B-4869-4380-89F4-B3547BDC8BD0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6AB4F63B-4869-4380-89F4-B3547BDC8BD0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6AB4F63B-4869-4380-89F4-B3547BDC8BD0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {8A11FD7A-D62F-4130-9870-49486379AB1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {8A11FD7A-D62F-4130-9870-49486379AB1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8A11FD7A-D62F-4130-9870-49486379AB1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8A11FD7A-D62F-4130-9870-49486379AB1C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E77D8877-AEAD-4FDF-8A44-36AAA0B20653}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E77D8877-AEAD-4FDF-8A44-36AAA0B20653}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E77D8877-AEAD-4FDF-8A44-36AAA0B20653}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E77D8877-AEAD-4FDF-8A44-36AAA0B20653}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E52212C3-8609-434F-A1B3-5A63C057C119}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E52212C3-8609-434F-A1B3-5A63C057C119}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E52212C3-8609-434F-A1B3-5A63C057C119}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E52212C3-8609-434F-A1B3-5A63C057C119}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0594F40C-A4D6-4FDD-8876-AF3824DEFDED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0594F40C-A4D6-4FDD-8876-AF3824DEFDED}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0594F40C-A4D6-4FDD-8876-AF3824DEFDED}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0594F40C-A4D6-4FDD-8876-AF3824DEFDED}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D5968AB0-8856-49DC-9547-63530241BC22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D5968AB0-8856-49DC-9547-63530241BC22}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D5968AB0-8856-49DC-9547-63530241BC22}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D5968AB0-8856-49DC-9547-63530241BC22}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B53B8417-E392-4660-86F0-54E7B7FAD4BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B53B8417-E392-4660-86F0-54E7B7FAD4BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B53B8417-E392-4660-86F0-54E7B7FAD4BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B53B8417-E392-4660-86F0-54E7B7FAD4BA}.Release|Any CPU.Build.0 = Release|Any CPU
-               {70AD32F9-8D9F-4EFB-A6DB-254203565D0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {70AD32F9-8D9F-4EFB-A6DB-254203565D0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {70AD32F9-8D9F-4EFB-A6DB-254203565D0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {70AD32F9-8D9F-4EFB-A6DB-254203565D0A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5AF47E2F-C295-4410-BB78-F08FE99C0E76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5AF47E2F-C295-4410-BB78-F08FE99C0E76}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5AF47E2F-C295-4410-BB78-F08FE99C0E76}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5AF47E2F-C295-4410-BB78-F08FE99C0E76}.Release|Any CPU.Build.0 = Release|Any CPU
-               {847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5592C0B6-11CF-43FB-A673-8386BBFEA147}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5592C0B6-11CF-43FB-A673-8386BBFEA147}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5592C0B6-11CF-43FB-A673-8386BBFEA147}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5592C0B6-11CF-43FB-A673-8386BBFEA147}.Release|Any CPU.Build.0 = Release|Any CPU
-               {34966210-D64D-419C-94A4-9A6093CE5882}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {34966210-D64D-419C-94A4-9A6093CE5882}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {34966210-D64D-419C-94A4-9A6093CE5882}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {34966210-D64D-419C-94A4-9A6093CE5882}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}.Release|Any CPU.Build.0 = Release|Any CPU
-               {03E8A999-E329-44BB-8ED7-D60412068646}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {03E8A999-E329-44BB-8ED7-D60412068646}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {03E8A999-E329-44BB-8ED7-D60412068646}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {03E8A999-E329-44BB-8ED7-D60412068646}.Release|Any CPU.Build.0 = Release|Any CPU
-               {8F7F90F0-97DB-4E98-83AE-C2E28E9B512A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {8F7F90F0-97DB-4E98-83AE-C2E28E9B512A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8F7F90F0-97DB-4E98-83AE-C2E28E9B512A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8F7F90F0-97DB-4E98-83AE-C2E28E9B512A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2616FDAC-EC98-417B-A95C-C2E2D1ECB3F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2616FDAC-EC98-417B-A95C-C2E2D1ECB3F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2616FDAC-EC98-417B-A95C-C2E2D1ECB3F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2616FDAC-EC98-417B-A95C-C2E2D1ECB3F2}.Release|Any CPU.Build.0 = Release|Any CPU
-               {ECF02624-8EE8-4466-8925-3EE595034B4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {ECF02624-8EE8-4466-8925-3EE595034B4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {ECF02624-8EE8-4466-8925-3EE595034B4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {ECF02624-8EE8-4466-8925-3EE595034B4D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {9BBEC512-8833-4124-B826-777E45579059}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {9BBEC512-8833-4124-B826-777E45579059}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {9BBEC512-8833-4124-B826-777E45579059}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {9BBEC512-8833-4124-B826-777E45579059}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3C6256A3-3B1F-4CF8-9D91-016C855930DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3C6256A3-3B1F-4CF8-9D91-016C855930DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3C6256A3-3B1F-4CF8-9D91-016C855930DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3C6256A3-3B1F-4CF8-9D91-016C855930DC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {EF5108EC-6916-4ADE-AB7D-919F89F1FEE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {EF5108EC-6916-4ADE-AB7D-919F89F1FEE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {EF5108EC-6916-4ADE-AB7D-919F89F1FEE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {EF5108EC-6916-4ADE-AB7D-919F89F1FEE1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D70CC755-05BF-4148-8A19-3F28EA6CA21D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D70CC755-05BF-4148-8A19-3F28EA6CA21D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D70CC755-05BF-4148-8A19-3F28EA6CA21D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D70CC755-05BF-4148-8A19-3F28EA6CA21D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4F2AADB3-6D4D-41C3-AC38-6AC970F97703}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4F2AADB3-6D4D-41C3-AC38-6AC970F97703}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4F2AADB3-6D4D-41C3-AC38-6AC970F97703}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4F2AADB3-6D4D-41C3-AC38-6AC970F97703}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3F01DF0A-D726-4D86-8E47-DADB8EA4D994}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3F01DF0A-D726-4D86-8E47-DADB8EA4D994}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3F01DF0A-D726-4D86-8E47-DADB8EA4D994}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3F01DF0A-D726-4D86-8E47-DADB8EA4D994}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BED431C4-56B5-4990-A8E6-DCD02A331BC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BED431C4-56B5-4990-A8E6-DCD02A331BC9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BED431C4-56B5-4990-A8E6-DCD02A331BC9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BED431C4-56B5-4990-A8E6-DCD02A331BC9}.Release|Any CPU.Build.0 = Release|Any CPU
-               {801B7F88-6DE4-48B9-A830-450BF14DBBA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {801B7F88-6DE4-48B9-A830-450BF14DBBA1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {801B7F88-6DE4-48B9-A830-450BF14DBBA1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {801B7F88-6DE4-48B9-A830-450BF14DBBA1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2B2808F7-930A-4416-A060-57D9F8DC879C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2B2808F7-930A-4416-A060-57D9F8DC879C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2B2808F7-930A-4416-A060-57D9F8DC879C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2B2808F7-930A-4416-A060-57D9F8DC879C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2BB65926-A803-484F-A2D2-05CED0254A28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2BB65926-A803-484F-A2D2-05CED0254A28}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2BB65926-A803-484F-A2D2-05CED0254A28}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2BB65926-A803-484F-A2D2-05CED0254A28}.Release|Any CPU.Build.0 = Release|Any CPU
-               {48172E97-369D-408A-A5CB-DC3B34706C0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {48172E97-369D-408A-A5CB-DC3B34706C0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {48172E97-369D-408A-A5CB-DC3B34706C0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {48172E97-369D-408A-A5CB-DC3B34706C0B}.Release|Any CPU.Build.0 = Release|Any CPU
-               {26480A1B-A6B9-4865-8492-C18019094CE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {26480A1B-A6B9-4865-8492-C18019094CE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {26480A1B-A6B9-4865-8492-C18019094CE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {26480A1B-A6B9-4865-8492-C18019094CE4}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E763AC5D-E03A-4D54-8B0A-5F904B56FA69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E763AC5D-E03A-4D54-8B0A-5F904B56FA69}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E763AC5D-E03A-4D54-8B0A-5F904B56FA69}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E763AC5D-E03A-4D54-8B0A-5F904B56FA69}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4F8F4004-E655-463C-8A0F-4F7C99AB85B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4F8F4004-E655-463C-8A0F-4F7C99AB85B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4F8F4004-E655-463C-8A0F-4F7C99AB85B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4F8F4004-E655-463C-8A0F-4F7C99AB85B5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E9E47642-19D3-48A0-81C4-D51810976A70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E9E47642-19D3-48A0-81C4-D51810976A70}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E9E47642-19D3-48A0-81C4-D51810976A70}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E9E47642-19D3-48A0-81C4-D51810976A70}.Release|Any CPU.Build.0 = Release|Any CPU
-               {86595D30-C24E-4A0F-9419-499980DE4B79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {86595D30-C24E-4A0F-9419-499980DE4B79}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {86595D30-C24E-4A0F-9419-499980DE4B79}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {86595D30-C24E-4A0F-9419-499980DE4B79}.Release|Any CPU.Build.0 = Release|Any CPU
-               {ABF6A466-1744-4C43-8B68-C89EA10FBB67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {ABF6A466-1744-4C43-8B68-C89EA10FBB67}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {ABF6A466-1744-4C43-8B68-C89EA10FBB67}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {ABF6A466-1744-4C43-8B68-C89EA10FBB67}.Release|Any CPU.Build.0 = Release|Any CPU
-               {FCA901B7-B01E-4578-8C93-9BACB907AD22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {FCA901B7-B01E-4578-8C93-9BACB907AD22}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {FCA901B7-B01E-4578-8C93-9BACB907AD22}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {FCA901B7-B01E-4578-8C93-9BACB907AD22}.Release|Any CPU.Build.0 = Release|Any CPU
-               {14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F321F0E8-4A6A-4BF7-AF40-0EDD9A914066}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F321F0E8-4A6A-4BF7-AF40-0EDD9A914066}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F321F0E8-4A6A-4BF7-AF40-0EDD9A914066}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F321F0E8-4A6A-4BF7-AF40-0EDD9A914066}.Release|Any CPU.Build.0 = Release|Any CPU
-               {AD80D595-2812-412E-9F06-2A91C7283A48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AD80D595-2812-412E-9F06-2A91C7283A48}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AD80D595-2812-412E-9F06-2A91C7283A48}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AD80D595-2812-412E-9F06-2A91C7283A48}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5D580843-B172-4BF3-AABD-116A64020C1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5D580843-B172-4BF3-AABD-116A64020C1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5D580843-B172-4BF3-AABD-116A64020C1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5D580843-B172-4BF3-AABD-116A64020C1C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {517B1616-9AF6-4C66-9BB9-73369E8A4222}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {517B1616-9AF6-4C66-9BB9-73369E8A4222}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {517B1616-9AF6-4C66-9BB9-73369E8A4222}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {517B1616-9AF6-4C66-9BB9-73369E8A4222}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6A0BDCF6-4FFB-471F-B824-5AA24A47E076}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6A0BDCF6-4FFB-471F-B824-5AA24A47E076}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6A0BDCF6-4FFB-471F-B824-5AA24A47E076}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6A0BDCF6-4FFB-471F-B824-5AA24A47E076}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A9F46CB3-7262-47D8-A9EB-9B789278F9EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A9F46CB3-7262-47D8-A9EB-9B789278F9EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A9F46CB3-7262-47D8-A9EB-9B789278F9EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A9F46CB3-7262-47D8-A9EB-9B789278F9EF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F30781EC-D410-4A00-BD91-0971E37DE140}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F30781EC-D410-4A00-BD91-0971E37DE140}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F30781EC-D410-4A00-BD91-0971E37DE140}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F30781EC-D410-4A00-BD91-0971E37DE140}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0877A48B-2DF5-40A2-8714-ABBF2BD48987}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0877A48B-2DF5-40A2-8714-ABBF2BD48987}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0877A48B-2DF5-40A2-8714-ABBF2BD48987}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0877A48B-2DF5-40A2-8714-ABBF2BD48987}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B8CA1780-FF35-49B9-B385-C24BD0558109}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B8CA1780-FF35-49B9-B385-C24BD0558109}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B8CA1780-FF35-49B9-B385-C24BD0558109}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B8CA1780-FF35-49B9-B385-C24BD0558109}.Release|Any CPU.Build.0 = Release|Any CPU
-               {FDB86B5C-19F4-49DB-807F-CB0466C121A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {FDB86B5C-19F4-49DB-807F-CB0466C121A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {FDB86B5C-19F4-49DB-807F-CB0466C121A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {FDB86B5C-19F4-49DB-807F-CB0466C121A1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {60E307F3-5E95-42FF-9B41-3FB8AD664AB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {60E307F3-5E95-42FF-9B41-3FB8AD664AB6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {60E307F3-5E95-42FF-9B41-3FB8AD664AB6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {60E307F3-5E95-42FF-9B41-3FB8AD664AB6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BFC160FF-5B62-41D2-B039-52C469077AE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BFC160FF-5B62-41D2-B039-52C469077AE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BFC160FF-5B62-41D2-B039-52C469077AE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BFC160FF-5B62-41D2-B039-52C469077AE0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4E0AB773-6BB3-4866-881F-B362A573C8DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4E0AB773-6BB3-4866-881F-B362A573C8DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4E0AB773-6BB3-4866-881F-B362A573C8DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4E0AB773-6BB3-4866-881F-B362A573C8DD}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2C2BA4BC-CDE5-46D0-A225-9E84EE42997F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2C2BA4BC-CDE5-46D0-A225-9E84EE42997F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2C2BA4BC-CDE5-46D0-A225-9E84EE42997F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2C2BA4BC-CDE5-46D0-A225-9E84EE42997F}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E63734B6-D4FC-4016-A3E3-4C98E408E559}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E63734B6-D4FC-4016-A3E3-4C98E408E559}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E63734B6-D4FC-4016-A3E3-4C98E408E559}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E63734B6-D4FC-4016-A3E3-4C98E408E559}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2CA35670-6F91-4423-A36A-12560A182E0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2CA35670-6F91-4423-A36A-12560A182E0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2CA35670-6F91-4423-A36A-12560A182E0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2CA35670-6F91-4423-A36A-12560A182E0D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D9409D43-8919-4A4C-A7B5-77383840CD35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D9409D43-8919-4A4C-A7B5-77383840CD35}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D9409D43-8919-4A4C-A7B5-77383840CD35}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D9409D43-8919-4A4C-A7B5-77383840CD35}.Release|Any CPU.Build.0 = Release|Any CPU
-               {ABD934FF-6F3A-40CB-85DB-98316F708226}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {ABD934FF-6F3A-40CB-85DB-98316F708226}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {ABD934FF-6F3A-40CB-85DB-98316F708226}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {ABD934FF-6F3A-40CB-85DB-98316F708226}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5A9673B6-FC36-4B40-92F6-A9586B75EC57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5A9673B6-FC36-4B40-92F6-A9586B75EC57}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5A9673B6-FC36-4B40-92F6-A9586B75EC57}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5A9673B6-FC36-4B40-92F6-A9586B75EC57}.Release|Any CPU.Build.0 = Release|Any CPU
-               {10182EEF-2616-46BB-894E-6820BFA07D45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {10182EEF-2616-46BB-894E-6820BFA07D45}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {10182EEF-2616-46BB-894E-6820BFA07D45}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {10182EEF-2616-46BB-894E-6820BFA07D45}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A945645C-6DF3-414E-B5F1-25DC35C95136}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A945645C-6DF3-414E-B5F1-25DC35C95136}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A945645C-6DF3-414E-B5F1-25DC35C95136}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A945645C-6DF3-414E-B5F1-25DC35C95136}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4DB64CBC-A1A0-4EF6-9AC8-EABD847E9553}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4DB64CBC-A1A0-4EF6-9AC8-EABD847E9553}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4DB64CBC-A1A0-4EF6-9AC8-EABD847E9553}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4DB64CBC-A1A0-4EF6-9AC8-EABD847E9553}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7F9CCA1F-1778-4BB6-A8B6-D761429B4B8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7F9CCA1F-1778-4BB6-A8B6-D761429B4B8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7F9CCA1F-1778-4BB6-A8B6-D761429B4B8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7F9CCA1F-1778-4BB6-A8B6-D761429B4B8C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {348A36EC-8291-460B-9CC2-8CA8AD1759A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {348A36EC-8291-460B-9CC2-8CA8AD1759A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {348A36EC-8291-460B-9CC2-8CA8AD1759A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {348A36EC-8291-460B-9CC2-8CA8AD1759A2}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A99FD368-6E3E-448C-83C5-A7D64762924E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A99FD368-6E3E-448C-83C5-A7D64762924E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A99FD368-6E3E-448C-83C5-A7D64762924E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A99FD368-6E3E-448C-83C5-A7D64762924E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7443D41A-D078-49E1-9A88-87902B6EDFFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7443D41A-D078-49E1-9A88-87902B6EDFFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7443D41A-D078-49E1-9A88-87902B6EDFFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7443D41A-D078-49E1-9A88-87902B6EDFFC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {93ABF627-F02A-4409-9BAE-0E564A43FC9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {93ABF627-F02A-4409-9BAE-0E564A43FC9A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {93ABF627-F02A-4409-9BAE-0E564A43FC9A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {93ABF627-F02A-4409-9BAE-0E564A43FC9A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {ED516751-8649-48D5-B1F3-2C450B2E45D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {ED516751-8649-48D5-B1F3-2C450B2E45D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {ED516751-8649-48D5-B1F3-2C450B2E45D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {ED516751-8649-48D5-B1F3-2C450B2E45D1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {AD666708-4CC0-4822-B670-26D59A2D32AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AD666708-4CC0-4822-B670-26D59A2D32AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AD666708-4CC0-4822-B670-26D59A2D32AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AD666708-4CC0-4822-B670-26D59A2D32AF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C5D5DEB9-74DC-42FF-93C7-3316E4567B0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C5D5DEB9-74DC-42FF-93C7-3316E4567B0E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C5D5DEB9-74DC-42FF-93C7-3316E4567B0E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C5D5DEB9-74DC-42FF-93C7-3316E4567B0E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C0EEF402-0A7C-4FF1-8AE8-0D53850AB70E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C0EEF402-0A7C-4FF1-8AE8-0D53850AB70E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C0EEF402-0A7C-4FF1-8AE8-0D53850AB70E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C0EEF402-0A7C-4FF1-8AE8-0D53850AB70E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6BFAB010-392A-4F3D-861D-19B5BEC476D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6BFAB010-392A-4F3D-861D-19B5BEC476D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6BFAB010-392A-4F3D-861D-19B5BEC476D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6BFAB010-392A-4F3D-861D-19B5BEC476D5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}.Release|Any CPU.Build.0 = Release|Any CPU
-               {48C35A26-B26A-4084-9A9A-7729D345B3B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {48C35A26-B26A-4084-9A9A-7729D345B3B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {48C35A26-B26A-4084-9A9A-7729D345B3B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {48C35A26-B26A-4084-9A9A-7729D345B3B5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BE037A30-EA31-40F1-BC2A-9FEAADDD435E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BE037A30-EA31-40F1-BC2A-9FEAADDD435E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BE037A30-EA31-40F1-BC2A-9FEAADDD435E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BE037A30-EA31-40F1-BC2A-9FEAADDD435E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {67C79BA1-2CF2-40B7-B362-1DCAF156AA25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {67C79BA1-2CF2-40B7-B362-1DCAF156AA25}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {67C79BA1-2CF2-40B7-B362-1DCAF156AA25}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {67C79BA1-2CF2-40B7-B362-1DCAF156AA25}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3404EE44-7E95-4619-93B8-C7B82ADEB8F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3404EE44-7E95-4619-93B8-C7B82ADEB8F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3404EE44-7E95-4619-93B8-C7B82ADEB8F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3404EE44-7E95-4619-93B8-C7B82ADEB8F5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {76A8C207-5DFF-435F-9F47-9C6E201AF8F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {76A8C207-5DFF-435F-9F47-9C6E201AF8F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {76A8C207-5DFF-435F-9F47-9C6E201AF8F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {76A8C207-5DFF-435F-9F47-9C6E201AF8F4}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4B2DAC6F-0527-4042-97C0-0B576ECA1A1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4B2DAC6F-0527-4042-97C0-0B576ECA1A1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4B2DAC6F-0527-4042-97C0-0B576ECA1A1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4B2DAC6F-0527-4042-97C0-0B576ECA1A1C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BA4C18A4-EF3B-42DD-957A-5C1BF4EE6359}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BA4C18A4-EF3B-42DD-957A-5C1BF4EE6359}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BA4C18A4-EF3B-42DD-957A-5C1BF4EE6359}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BA4C18A4-EF3B-42DD-957A-5C1BF4EE6359}.Release|Any CPU.Build.0 = Release|Any CPU
-               {74565932-18F5-4BEC-AAB6-98230A4B662C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {74565932-18F5-4BEC-AAB6-98230A4B662C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {74565932-18F5-4BEC-AAB6-98230A4B662C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {74565932-18F5-4BEC-AAB6-98230A4B662C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2B9B735A-BF18-4FB6-B576-8ED42BA8E1FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2B9B735A-BF18-4FB6-B576-8ED42BA8E1FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2B9B735A-BF18-4FB6-B576-8ED42BA8E1FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2B9B735A-BF18-4FB6-B576-8ED42BA8E1FF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D044BF49-7C7C-4E7D-8A1B-4A7DA133E4B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D044BF49-7C7C-4E7D-8A1B-4A7DA133E4B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D044BF49-7C7C-4E7D-8A1B-4A7DA133E4B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D044BF49-7C7C-4E7D-8A1B-4A7DA133E4B8}.Release|Any CPU.Build.0 = Release|Any CPU
-               {97C8B52D-2E89-4EB1-856C-C9BD3A75A56B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {97C8B52D-2E89-4EB1-856C-C9BD3A75A56B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {97C8B52D-2E89-4EB1-856C-C9BD3A75A56B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {97C8B52D-2E89-4EB1-856C-C9BD3A75A56B}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B7DE9FFF-1E5D-464F-9C4B-5A6DA9D6EBC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B7DE9FFF-1E5D-464F-9C4B-5A6DA9D6EBC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B7DE9FFF-1E5D-464F-9C4B-5A6DA9D6EBC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B7DE9FFF-1E5D-464F-9C4B-5A6DA9D6EBC3}.Release|Any CPU.Build.0 = Release|Any CPU
-               {84ACFFEC-BB08-4715-B77B-091B827C55E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {84ACFFEC-BB08-4715-B77B-091B827C55E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {84ACFFEC-BB08-4715-B77B-091B827C55E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {84ACFFEC-BB08-4715-B77B-091B827C55E3}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E4F02B09-E5BF-4DF9-9D55-58396821B80D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E4F02B09-E5BF-4DF9-9D55-58396821B80D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E4F02B09-E5BF-4DF9-9D55-58396821B80D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E4F02B09-E5BF-4DF9-9D55-58396821B80D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3D737371-B7D6-49E4-AA91-F67EF2E07A45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3D737371-B7D6-49E4-AA91-F67EF2E07A45}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3D737371-B7D6-49E4-AA91-F67EF2E07A45}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3D737371-B7D6-49E4-AA91-F67EF2E07A45}.Release|Any CPU.Build.0 = Release|Any CPU
-               {EBDF7A9B-728D-4D71-A603-3D840220FBE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {EBDF7A9B-728D-4D71-A603-3D840220FBE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {EBDF7A9B-728D-4D71-A603-3D840220FBE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {EBDF7A9B-728D-4D71-A603-3D840220FBE4}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {878F802D-3249-41E8-8322-A32C406383C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {878F802D-3249-41E8-8322-A32C406383C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {878F802D-3249-41E8-8322-A32C406383C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {878F802D-3249-41E8-8322-A32C406383C6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7D27EF3B-540A-4BBD-873C-878ABC927401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7D27EF3B-540A-4BBD-873C-878ABC927401}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7D27EF3B-540A-4BBD-873C-878ABC927401}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7D27EF3B-540A-4BBD-873C-878ABC927401}.Release|Any CPU.Build.0 = Release|Any CPU
-               {47046600-6AFB-46AB-BCF6-8E9EDD67FA97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {47046600-6AFB-46AB-BCF6-8E9EDD67FA97}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {47046600-6AFB-46AB-BCF6-8E9EDD67FA97}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {47046600-6AFB-46AB-BCF6-8E9EDD67FA97}.Release|Any CPU.Build.0 = Release|Any CPU
-               {CF3B58EF-C823-47AD-B77F-ACAF6C2DE9DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {CF3B58EF-C823-47AD-B77F-ACAF6C2DE9DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {CF3B58EF-C823-47AD-B77F-ACAF6C2DE9DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {CF3B58EF-C823-47AD-B77F-ACAF6C2DE9DC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6D4FFAA7-A96E-4C35-A87C-E368C0553EA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6D4FFAA7-A96E-4C35-A87C-E368C0553EA4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6D4FFAA7-A96E-4C35-A87C-E368C0553EA4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6D4FFAA7-A96E-4C35-A87C-E368C0553EA4}.Release|Any CPU.Build.0 = Release|Any CPU
-               {70EF0F9A-D878-4858-851E-7B7B6E69C75E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {70EF0F9A-D878-4858-851E-7B7B6E69C75E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {70EF0F9A-D878-4858-851E-7B7B6E69C75E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {70EF0F9A-D878-4858-851E-7B7B6E69C75E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4F0B9DF5-C9AC-43CE-9229-BAE2B3C4AE52}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4F0B9DF5-C9AC-43CE-9229-BAE2B3C4AE52}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4F0B9DF5-C9AC-43CE-9229-BAE2B3C4AE52}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4F0B9DF5-C9AC-43CE-9229-BAE2B3C4AE52}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F8218843-5463-4D1D-BD93-4E1A507FFAF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F8218843-5463-4D1D-BD93-4E1A507FFAF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F8218843-5463-4D1D-BD93-4E1A507FFAF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F8218843-5463-4D1D-BD93-4E1A507FFAF9}.Release|Any CPU.Build.0 = Release|Any CPU
-               {167298A3-F7FD-41D9-888E-AAAD48074482}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {167298A3-F7FD-41D9-888E-AAAD48074482}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {167298A3-F7FD-41D9-888E-AAAD48074482}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {167298A3-F7FD-41D9-888E-AAAD48074482}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2414C54A-9454-4B25-932C-0724CF003A6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2414C54A-9454-4B25-932C-0724CF003A6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2414C54A-9454-4B25-932C-0724CF003A6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2414C54A-9454-4B25-932C-0724CF003A6D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C41C7048-6B86-43DB-9F5E-BED7A92CD56E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C41C7048-6B86-43DB-9F5E-BED7A92CD56E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C41C7048-6B86-43DB-9F5E-BED7A92CD56E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C41C7048-6B86-43DB-9F5E-BED7A92CD56E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3B625FA4-DABF-4F64-9D38-D4005EE6ECD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3B625FA4-DABF-4F64-9D38-D4005EE6ECD5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3B625FA4-DABF-4F64-9D38-D4005EE6ECD5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3B625FA4-DABF-4F64-9D38-D4005EE6ECD5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {78AEDB9D-4DB6-4EB5-BDCD-1DFAB7467761}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {78AEDB9D-4DB6-4EB5-BDCD-1DFAB7467761}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {78AEDB9D-4DB6-4EB5-BDCD-1DFAB7467761}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {78AEDB9D-4DB6-4EB5-BDCD-1DFAB7467761}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0A4E586A-047A-4C04-9821-265465A334F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0A4E586A-047A-4C04-9821-265465A334F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0A4E586A-047A-4C04-9821-265465A334F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0A4E586A-047A-4C04-9821-265465A334F8}.Release|Any CPU.Build.0 = Release|Any CPU
-               {69C23F98-A766-46FB-B83F-2F22BFC3E897}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {69C23F98-A766-46FB-B83F-2F22BFC3E897}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {69C23F98-A766-46FB-B83F-2F22BFC3E897}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {69C23F98-A766-46FB-B83F-2F22BFC3E897}.Release|Any CPU.Build.0 = Release|Any CPU
-               {10F0CA9C-5F98-4091-BF3B-DDD0F6FF44DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {10F0CA9C-5F98-4091-BF3B-DDD0F6FF44DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {10F0CA9C-5F98-4091-BF3B-DDD0F6FF44DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {10F0CA9C-5F98-4091-BF3B-DDD0F6FF44DC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}.Release|Any CPU.Build.0 = Release|Any CPU
-               {571A830B-5A77-4918-897F-100BDFD66F5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {571A830B-5A77-4918-897F-100BDFD66F5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {571A830B-5A77-4918-897F-100BDFD66F5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {571A830B-5A77-4918-897F-100BDFD66F5E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {1B3407DC-BF9A-4679-BC2E-AF1322032D3D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {1B3407DC-BF9A-4679-BC2E-AF1322032D3D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {1B3407DC-BF9A-4679-BC2E-AF1322032D3D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {1B3407DC-BF9A-4679-BC2E-AF1322032D3D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {FE0507AC-F903-45C9-8CB3-CBEFF973F2C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {FE0507AC-F903-45C9-8CB3-CBEFF973F2C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {FE0507AC-F903-45C9-8CB3-CBEFF973F2C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {FE0507AC-F903-45C9-8CB3-CBEFF973F2C1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {58CD6625-5643-4A3F-84E6-5568E8573A49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {58CD6625-5643-4A3F-84E6-5568E8573A49}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {58CD6625-5643-4A3F-84E6-5568E8573A49}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {58CD6625-5643-4A3F-84E6-5568E8573A49}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D35940CE-3A36-4AE4-850F-C022247AE9F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D35940CE-3A36-4AE4-850F-C022247AE9F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D35940CE-3A36-4AE4-850F-C022247AE9F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D35940CE-3A36-4AE4-850F-C022247AE9F2}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B20027FF-D5D8-4AD3-8F5F-535556916D36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B20027FF-D5D8-4AD3-8F5F-535556916D36}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B20027FF-D5D8-4AD3-8F5F-535556916D36}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B20027FF-D5D8-4AD3-8F5F-535556916D36}.Release|Any CPU.Build.0 = Release|Any CPU
-               {766E5895-AE1B-44F9-928C-34FAEE15CA64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {766E5895-AE1B-44F9-928C-34FAEE15CA64}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {766E5895-AE1B-44F9-928C-34FAEE15CA64}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {766E5895-AE1B-44F9-928C-34FAEE15CA64}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}.Release|Any CPU.Build.0 = Release|Any CPU
-               {53D1041C-C85A-4DD3-9C65-6DC879737A0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {53D1041C-C85A-4DD3-9C65-6DC879737A0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {53D1041C-C85A-4DD3-9C65-6DC879737A0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {53D1041C-C85A-4DD3-9C65-6DC879737A0F}.Release|Any CPU.Build.0 = Release|Any CPU
-               {09B16AF2-4480-4F66-995B-6FEFD9C67546}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {09B16AF2-4480-4F66-995B-6FEFD9C67546}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {09B16AF2-4480-4F66-995B-6FEFD9C67546}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {09B16AF2-4480-4F66-995B-6FEFD9C67546}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7E029CF3-FBE0-48F4-A802-1536E1E2FCFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7E029CF3-FBE0-48F4-A802-1536E1E2FCFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7E029CF3-FBE0-48F4-A802-1536E1E2FCFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7E029CF3-FBE0-48F4-A802-1536E1E2FCFF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {50961B0B-5BEC-4058-9246-5CEEE888CEC8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {50961B0B-5BEC-4058-9246-5CEEE888CEC8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {50961B0B-5BEC-4058-9246-5CEEE888CEC8}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {50961B0B-5BEC-4058-9246-5CEEE888CEC8}.Release|Any CPU.Build.0 = Release|Any CPU
-               {04C9F589-3AA1-4BCA-ABC1-ABBC7527783E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {04C9F589-3AA1-4BCA-ABC1-ABBC7527783E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {04C9F589-3AA1-4BCA-ABC1-ABBC7527783E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {04C9F589-3AA1-4BCA-ABC1-ABBC7527783E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {088AB4AB-1904-4365-A74B-F7557A034945}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {088AB4AB-1904-4365-A74B-F7557A034945}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {088AB4AB-1904-4365-A74B-F7557A034945}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {088AB4AB-1904-4365-A74B-F7557A034945}.Release|Any CPU.Build.0 = Release|Any CPU
-               {8748B03E-D19A-4A32-B0BC-67DE3F224EDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {8748B03E-D19A-4A32-B0BC-67DE3F224EDC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8748B03E-D19A-4A32-B0BC-67DE3F224EDC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8748B03E-D19A-4A32-B0BC-67DE3F224EDC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {93532CB9-2FFB-4458-820F-BA280A6E6796}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {93532CB9-2FFB-4458-820F-BA280A6E6796}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {93532CB9-2FFB-4458-820F-BA280A6E6796}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {93532CB9-2FFB-4458-820F-BA280A6E6796}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B3C699B6-74B4-4B41-901E-32E57D0909AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B3C699B6-74B4-4B41-901E-32E57D0909AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B3C699B6-74B4-4B41-901E-32E57D0909AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B3C699B6-74B4-4B41-901E-32E57D0909AC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4326E85E-00B2-47F8-9A54-A8E15021CBA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4326E85E-00B2-47F8-9A54-A8E15021CBA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4326E85E-00B2-47F8-9A54-A8E15021CBA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4326E85E-00B2-47F8-9A54-A8E15021CBA3}.Release|Any CPU.Build.0 = Release|Any CPU
-               {909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}.Release|Any CPU.Build.0 = Release|Any CPU
-               {DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}.Release|Any CPU.Build.0 = Release|Any CPU
-               {99723243-801A-4F86-A51B-F88737F567B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {99723243-801A-4F86-A51B-F88737F567B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {99723243-801A-4F86-A51B-F88737F567B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {99723243-801A-4F86-A51B-F88737F567B2}.Release|Any CPU.Build.0 = Release|Any CPU
-               {EAFF9F04-A5B5-458E-860B-76D7B2B7D745}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {EAFF9F04-A5B5-458E-860B-76D7B2B7D745}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {EAFF9F04-A5B5-458E-860B-76D7B2B7D745}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {EAFF9F04-A5B5-458E-860B-76D7B2B7D745}.Release|Any CPU.Build.0 = Release|Any CPU
-               {8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {1FC59170-4045-4778-81DA-EC3EAAE7670C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {1FC59170-4045-4778-81DA-EC3EAAE7670C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {1FC59170-4045-4778-81DA-EC3EAAE7670C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {1FC59170-4045-4778-81DA-EC3EAAE7670C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B467A47F-0589-44F2-987D-8E1D6D4A8ED8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B467A47F-0589-44F2-987D-8E1D6D4A8ED8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B467A47F-0589-44F2-987D-8E1D6D4A8ED8}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B467A47F-0589-44F2-987D-8E1D6D4A8ED8}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4EB0E45D-D6AE-4CBA-8771-2CDDCAB24372}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4EB0E45D-D6AE-4CBA-8771-2CDDCAB24372}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4EB0E45D-D6AE-4CBA-8771-2CDDCAB24372}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4EB0E45D-D6AE-4CBA-8771-2CDDCAB24372}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6D8FBB29-646A-4F94-B80D-04DD8768F1E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6D8FBB29-646A-4F94-B80D-04DD8768F1E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6D8FBB29-646A-4F94-B80D-04DD8768F1E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6D8FBB29-646A-4F94-B80D-04DD8768F1E7}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0A2B6514-DC20-4DC3-A976-622FEA39D4EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0A2B6514-DC20-4DC3-A976-622FEA39D4EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0A2B6514-DC20-4DC3-A976-622FEA39D4EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0A2B6514-DC20-4DC3-A976-622FEA39D4EB}.Release|Any CPU.Build.0 = Release|Any CPU
-               {1B9AFE07-4230-4DE0-8A9F-C277179098FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {1B9AFE07-4230-4DE0-8A9F-C277179098FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {1B9AFE07-4230-4DE0-8A9F-C277179098FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {1B9AFE07-4230-4DE0-8A9F-C277179098FF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {79CC8709-A8CF-4AB2-8077-924F769AC65E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {79CC8709-A8CF-4AB2-8077-924F769AC65E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {79CC8709-A8CF-4AB2-8077-924F769AC65E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {79CC8709-A8CF-4AB2-8077-924F769AC65E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {CF2A0D90-EB73-49B1-900B-BCE40990B404}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {CF2A0D90-EB73-49B1-900B-BCE40990B404}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {CF2A0D90-EB73-49B1-900B-BCE40990B404}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {CF2A0D90-EB73-49B1-900B-BCE40990B404}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D1B6CD53-1030-468E-AAF4-4D2253086D25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D1B6CD53-1030-468E-AAF4-4D2253086D25}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D1B6CD53-1030-468E-AAF4-4D2253086D25}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D1B6CD53-1030-468E-AAF4-4D2253086D25}.Release|Any CPU.Build.0 = Release|Any CPU
-               {88F3463D-A057-4531-AEE8-802F5B6342E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {88F3463D-A057-4531-AEE8-802F5B6342E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {88F3463D-A057-4531-AEE8-802F5B6342E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {88F3463D-A057-4531-AEE8-802F5B6342E9}.Release|Any CPU.Build.0 = Release|Any CPU
-               {496386B9-294B-4D76-A15F-2C25E7E6A941}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {496386B9-294B-4D76-A15F-2C25E7E6A941}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {496386B9-294B-4D76-A15F-2C25E7E6A941}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {496386B9-294B-4D76-A15F-2C25E7E6A941}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B1C41A6E-22FC-4208-8B2A-9CBDE0B80FFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B1C41A6E-22FC-4208-8B2A-9CBDE0B80FFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B1C41A6E-22FC-4208-8B2A-9CBDE0B80FFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B1C41A6E-22FC-4208-8B2A-9CBDE0B80FFF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {AB2C11F0-259B-4B85-A1BB-9243CD007A9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AB2C11F0-259B-4B85-A1BB-9243CD007A9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AB2C11F0-259B-4B85-A1BB-9243CD007A9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AB2C11F0-259B-4B85-A1BB-9243CD007A9E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {DB1D4B02-5F4D-4383-905E-82205D8F1D76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {DB1D4B02-5F4D-4383-905E-82205D8F1D76}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {DB1D4B02-5F4D-4383-905E-82205D8F1D76}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {DB1D4B02-5F4D-4383-905E-82205D8F1D76}.Release|Any CPU.Build.0 = Release|Any CPU
-               {FCB921CD-F90B-453A-A546-F47CCC019EF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {FCB921CD-F90B-453A-A546-F47CCC019EF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {FCB921CD-F90B-453A-A546-F47CCC019EF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {FCB921CD-F90B-453A-A546-F47CCC019EF3}.Release|Any CPU.Build.0 = Release|Any CPU
-               {8178EA24-D36C-43EC-8783-6325059CBA5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {8178EA24-D36C-43EC-8783-6325059CBA5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8178EA24-D36C-43EC-8783-6325059CBA5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8178EA24-D36C-43EC-8783-6325059CBA5E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {89390ACC-32C7-45EE-A169-BA1A4EEE6C47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {89390ACC-32C7-45EE-A169-BA1A4EEE6C47}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {89390ACC-32C7-45EE-A169-BA1A4EEE6C47}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {89390ACC-32C7-45EE-A169-BA1A4EEE6C47}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4EE7AB4A-30BD-4795-AF12-1BFFA4108CF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4EE7AB4A-30BD-4795-AF12-1BFFA4108CF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4EE7AB4A-30BD-4795-AF12-1BFFA4108CF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4EE7AB4A-30BD-4795-AF12-1BFFA4108CF7}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5CC8078D-0307-481D-AAAE-EE62ED123A61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5CC8078D-0307-481D-AAAE-EE62ED123A61}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5CC8078D-0307-481D-AAAE-EE62ED123A61}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5CC8078D-0307-481D-AAAE-EE62ED123A61}.Release|Any CPU.Build.0 = Release|Any CPU
-               {557C0FF1-A6FA-4B27-92A2-98A59CD740E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {557C0FF1-A6FA-4B27-92A2-98A59CD740E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {557C0FF1-A6FA-4B27-92A2-98A59CD740E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {557C0FF1-A6FA-4B27-92A2-98A59CD740E1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {EF1AE0BA-B984-4149-8968-0337A4D9BDA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {EF1AE0BA-B984-4149-8968-0337A4D9BDA4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {EF1AE0BA-B984-4149-8968-0337A4D9BDA4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {EF1AE0BA-B984-4149-8968-0337A4D9BDA4}.Release|Any CPU.Build.0 = Release|Any CPU
-               {962D9F06-30EC-4E71-B921-36FB856365A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {962D9F06-30EC-4E71-B921-36FB856365A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {962D9F06-30EC-4E71-B921-36FB856365A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {962D9F06-30EC-4E71-B921-36FB856365A6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {01DD131B-233A-4BA2-AFCA-80FB5743449E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {01DD131B-233A-4BA2-AFCA-80FB5743449E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {01DD131B-233A-4BA2-AFCA-80FB5743449E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {01DD131B-233A-4BA2-AFCA-80FB5743449E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {57A29A4C-18F1-43BA-8DC4-00810C45368C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {57A29A4C-18F1-43BA-8DC4-00810C45368C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {57A29A4C-18F1-43BA-8DC4-00810C45368C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {57A29A4C-18F1-43BA-8DC4-00810C45368C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E845A9A8-0491-4D18-B5B5-32DE93E21328}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E845A9A8-0491-4D18-B5B5-32DE93E21328}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E845A9A8-0491-4D18-B5B5-32DE93E21328}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E845A9A8-0491-4D18-B5B5-32DE93E21328}.Release|Any CPU.Build.0 = Release|Any CPU
-               {203E023D-A06D-49EA-9316-612A16FA5C88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {203E023D-A06D-49EA-9316-612A16FA5C88}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {203E023D-A06D-49EA-9316-612A16FA5C88}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {203E023D-A06D-49EA-9316-612A16FA5C88}.Release|Any CPU.Build.0 = Release|Any CPU
-               {ADDB864A-84AC-41AB-A978-268B68E98EAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {ADDB864A-84AC-41AB-A978-268B68E98EAF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {ADDB864A-84AC-41AB-A978-268B68E98EAF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {ADDB864A-84AC-41AB-A978-268B68E98EAF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2D329C5C-24DA-4D80-B594-C996334758B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2D329C5C-24DA-4D80-B594-C996334758B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2D329C5C-24DA-4D80-B594-C996334758B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2D329C5C-24DA-4D80-B594-C996334758B6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {364E6D64-019A-40A1-90A2-BBFD6EF542C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {364E6D64-019A-40A1-90A2-BBFD6EF542C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {364E6D64-019A-40A1-90A2-BBFD6EF542C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {364E6D64-019A-40A1-90A2-BBFD6EF542C5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {29C03463-6071-4FB2-83D2-B5497B35E090}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {29C03463-6071-4FB2-83D2-B5497B35E090}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {29C03463-6071-4FB2-83D2-B5497B35E090}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {29C03463-6071-4FB2-83D2-B5497B35E090}.Release|Any CPU.Build.0 = Release|Any CPU
-               {204C086B-F0B0-4570-89F1-50245F0E0491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {204C086B-F0B0-4570-89F1-50245F0E0491}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {204C086B-F0B0-4570-89F1-50245F0E0491}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {204C086B-F0B0-4570-89F1-50245F0E0491}.Release|Any CPU.Build.0 = Release|Any CPU
-               {DBD6E6AA-45EA-4844-989B-C95A001A0440}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {DBD6E6AA-45EA-4844-989B-C95A001A0440}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {DBD6E6AA-45EA-4844-989B-C95A001A0440}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {DBD6E6AA-45EA-4844-989B-C95A001A0440}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4E2A4405-91F8-4A5F-9925-D16C0AE8BBB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4E2A4405-91F8-4A5F-9925-D16C0AE8BBB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4E2A4405-91F8-4A5F-9925-D16C0AE8BBB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4E2A4405-91F8-4A5F-9925-D16C0AE8BBB5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C807E510-3FB6-4C77-A7CC-6EAC73823C3C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C807E510-3FB6-4C77-A7CC-6EAC73823C3C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C807E510-3FB6-4C77-A7CC-6EAC73823C3C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C807E510-3FB6-4C77-A7CC-6EAC73823C3C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0FCF1047-D9AE-48DA-B794-5505284027A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0FCF1047-D9AE-48DA-B794-5505284027A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0FCF1047-D9AE-48DA-B794-5505284027A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0FCF1047-D9AE-48DA-B794-5505284027A9}.Release|Any CPU.Build.0 = Release|Any CPU
-               {94E8FEFF-9695-4F77-A8AB-85370336FE0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {94E8FEFF-9695-4F77-A8AB-85370336FE0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {94E8FEFF-9695-4F77-A8AB-85370336FE0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {94E8FEFF-9695-4F77-A8AB-85370336FE0D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {47E4681E-7A08-482D-8D5E-4AA5A3E1E96B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {47E4681E-7A08-482D-8D5E-4AA5A3E1E96B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {47E4681E-7A08-482D-8D5E-4AA5A3E1E96B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {47E4681E-7A08-482D-8D5E-4AA5A3E1E96B}.Release|Any CPU.Build.0 = Release|Any CPU
-               {9DDFB8FD-C017-44D3-82D4-129AF99D667D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {9DDFB8FD-C017-44D3-82D4-129AF99D667D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {9DDFB8FD-C017-44D3-82D4-129AF99D667D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {9DDFB8FD-C017-44D3-82D4-129AF99D667D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6CE40A14-711E-46EE-BAB4-AD83134C373E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6CE40A14-711E-46EE-BAB4-AD83134C373E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6CE40A14-711E-46EE-BAB4-AD83134C373E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6CE40A14-711E-46EE-BAB4-AD83134C373E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {05F331B4-99A2-4DCA-9283-EA1589BCDF39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {05F331B4-99A2-4DCA-9283-EA1589BCDF39}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {05F331B4-99A2-4DCA-9283-EA1589BCDF39}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {05F331B4-99A2-4DCA-9283-EA1589BCDF39}.Release|Any CPU.Build.0 = Release|Any CPU
-               {690E0C87-8516-4F5D-B105-1FEDC19AE99A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {690E0C87-8516-4F5D-B105-1FEDC19AE99A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {690E0C87-8516-4F5D-B105-1FEDC19AE99A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {690E0C87-8516-4F5D-B105-1FEDC19AE99A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2990557C-6AC5-4C9E-83B5-F47B0B9B48DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2990557C-6AC5-4C9E-83B5-F47B0B9B48DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2990557C-6AC5-4C9E-83B5-F47B0B9B48DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2990557C-6AC5-4C9E-83B5-F47B0B9B48DD}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6D23A57D-01AF-4266-8E58-C16E732FCF81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6D23A57D-01AF-4266-8E58-C16E732FCF81}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6D23A57D-01AF-4266-8E58-C16E732FCF81}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6D23A57D-01AF-4266-8E58-C16E732FCF81}.Release|Any CPU.Build.0 = Release|Any CPU
-               {AB097D8E-4AD6-4120-B75C-306E274727D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AB097D8E-4AD6-4120-B75C-306E274727D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AB097D8E-4AD6-4120-B75C-306E274727D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AB097D8E-4AD6-4120-B75C-306E274727D4}.Release|Any CPU.Build.0 = Release|Any CPU
-               {74243378-7F6B-4B8D-81E3-E61C7AD8B87D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {74243378-7F6B-4B8D-81E3-E61C7AD8B87D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {74243378-7F6B-4B8D-81E3-E61C7AD8B87D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {74243378-7F6B-4B8D-81E3-E61C7AD8B87D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C06900FB-F604-4640-AFDC-000BF6BB38CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C06900FB-F604-4640-AFDC-000BF6BB38CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C06900FB-F604-4640-AFDC-000BF6BB38CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C06900FB-F604-4640-AFDC-000BF6BB38CC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BB7A44E8-2F00-4A87-843D-5387CD8611E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BB7A44E8-2F00-4A87-843D-5387CD8611E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BB7A44E8-2F00-4A87-843D-5387CD8611E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BB7A44E8-2F00-4A87-843D-5387CD8611E3}.Release|Any CPU.Build.0 = Release|Any CPU
-               {8645A982-AA1E-48CB-B996-7FCC4F8703CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {8645A982-AA1E-48CB-B996-7FCC4F8703CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8645A982-AA1E-48CB-B996-7FCC4F8703CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8645A982-AA1E-48CB-B996-7FCC4F8703CE}.Release|Any CPU.Build.0 = Release|Any CPU
-               {8AA31784-B653-4727-B8AD-ED2756AF1C3D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {8AA31784-B653-4727-B8AD-ED2756AF1C3D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8AA31784-B653-4727-B8AD-ED2756AF1C3D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8AA31784-B653-4727-B8AD-ED2756AF1C3D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C07F9E49-E65C-40C7-A3BD-02F932A33C2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C07F9E49-E65C-40C7-A3BD-02F932A33C2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C07F9E49-E65C-40C7-A3BD-02F932A33C2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C07F9E49-E65C-40C7-A3BD-02F932A33C2A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {590FFFA8-EFBA-4B65-87A7-FB3B42C9FF02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {590FFFA8-EFBA-4B65-87A7-FB3B42C9FF02}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {590FFFA8-EFBA-4B65-87A7-FB3B42C9FF02}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {590FFFA8-EFBA-4B65-87A7-FB3B42C9FF02}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B43E74BB-F4C0-462C-B86A-7108208A22A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B43E74BB-F4C0-462C-B86A-7108208A22A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B43E74BB-F4C0-462C-B86A-7108208A22A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B43E74BB-F4C0-462C-B86A-7108208A22A0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {1D2E5242-8084-4C3C-8461-F9B0DF7D0F32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {1D2E5242-8084-4C3C-8461-F9B0DF7D0F32}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {1D2E5242-8084-4C3C-8461-F9B0DF7D0F32}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {1D2E5242-8084-4C3C-8461-F9B0DF7D0F32}.Release|Any CPU.Build.0 = Release|Any CPU
-               {1CA793F9-A71D-4534-B684-D77AF04AB96F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {1CA793F9-A71D-4534-B684-D77AF04AB96F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {1CA793F9-A71D-4534-B684-D77AF04AB96F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {1CA793F9-A71D-4534-B684-D77AF04AB96F}.Release|Any CPU.Build.0 = Release|Any CPU
-               {422D6DBA-72EE-4876-9EC3-78DEE759CAA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {422D6DBA-72EE-4876-9EC3-78DEE759CAA9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {422D6DBA-72EE-4876-9EC3-78DEE759CAA9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {422D6DBA-72EE-4876-9EC3-78DEE759CAA9}.Release|Any CPU.Build.0 = Release|Any CPU
-               {924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A01E9CA8-9B09-4D80-923B-67E8B60D2723}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A01E9CA8-9B09-4D80-923B-67E8B60D2723}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A01E9CA8-9B09-4D80-923B-67E8B60D2723}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A01E9CA8-9B09-4D80-923B-67E8B60D2723}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3EC882EF-A451-467F-BE31-CE6E98A538F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3EC882EF-A451-467F-BE31-CE6E98A538F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3EC882EF-A451-467F-BE31-CE6E98A538F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3EC882EF-A451-467F-BE31-CE6E98A538F0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F2A9349E-4A1E-4FA2-86D7-E970CF54C6A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F2A9349E-4A1E-4FA2-86D7-E970CF54C6A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F2A9349E-4A1E-4FA2-86D7-E970CF54C6A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F2A9349E-4A1E-4FA2-86D7-E970CF54C6A5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {AB071CEE-330F-4AA3-B73C-9154150914C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AB071CEE-330F-4AA3-B73C-9154150914C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AB071CEE-330F-4AA3-B73C-9154150914C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AB071CEE-330F-4AA3-B73C-9154150914C1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {490E03A7-434E-41D6-B134-BD090A9CE383}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {490E03A7-434E-41D6-B134-BD090A9CE383}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {490E03A7-434E-41D6-B134-BD090A9CE383}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {490E03A7-434E-41D6-B134-BD090A9CE383}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6DDBDFA1-00F6-4584-801D-A2FC8691AEE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6DDBDFA1-00F6-4584-801D-A2FC8691AEE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6DDBDFA1-00F6-4584-801D-A2FC8691AEE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6DDBDFA1-00F6-4584-801D-A2FC8691AEE1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6B1ABEA7-1774-41A8-B6B6-5A3CFDED2882}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6B1ABEA7-1774-41A8-B6B6-5A3CFDED2882}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6B1ABEA7-1774-41A8-B6B6-5A3CFDED2882}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6B1ABEA7-1774-41A8-B6B6-5A3CFDED2882}.Release|Any CPU.Build.0 = Release|Any CPU
-               {ADFD4824-AEDB-445C-9B52-D0E0A9318B87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {ADFD4824-AEDB-445C-9B52-D0E0A9318B87}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {ADFD4824-AEDB-445C-9B52-D0E0A9318B87}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {ADFD4824-AEDB-445C-9B52-D0E0A9318B87}.Release|Any CPU.Build.0 = Release|Any CPU
-               {37C82B59-9992-4A8F-AC90-C2D77D3BDF8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {37C82B59-9992-4A8F-AC90-C2D77D3BDF8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {37C82B59-9992-4A8F-AC90-C2D77D3BDF8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {37C82B59-9992-4A8F-AC90-C2D77D3BDF8F}.Release|Any CPU.Build.0 = Release|Any CPU
-               {57596539-1B39-4CF2-9586-383EF5AB45DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {57596539-1B39-4CF2-9586-383EF5AB45DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {57596539-1B39-4CF2-9586-383EF5AB45DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {57596539-1B39-4CF2-9586-383EF5AB45DB}.Release|Any CPU.Build.0 = Release|Any CPU
-               {515D27B3-F7B6-4F0D-9CF6-521F7D37118D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {515D27B3-F7B6-4F0D-9CF6-521F7D37118D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {515D27B3-F7B6-4F0D-9CF6-521F7D37118D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {515D27B3-F7B6-4F0D-9CF6-521F7D37118D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {16E0F17C-FBA5-46E2-97D1-E04E9E0CBB6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {16E0F17C-FBA5-46E2-97D1-E04E9E0CBB6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {16E0F17C-FBA5-46E2-97D1-E04E9E0CBB6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {16E0F17C-FBA5-46E2-97D1-E04E9E0CBB6D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {9C91B0D3-EEDF-4914-A1D1-13360A6B7A8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {9C91B0D3-EEDF-4914-A1D1-13360A6B7A8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {9C91B0D3-EEDF-4914-A1D1-13360A6B7A8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {9C91B0D3-EEDF-4914-A1D1-13360A6B7A8F}.Release|Any CPU.Build.0 = Release|Any CPU
-               {DC000DEB-DEAE-4B93-994A-F9EB4DFB9901}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {DC000DEB-DEAE-4B93-994A-F9EB4DFB9901}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {DC000DEB-DEAE-4B93-994A-F9EB4DFB9901}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {DC000DEB-DEAE-4B93-994A-F9EB4DFB9901}.Release|Any CPU.Build.0 = Release|Any CPU
-               {831B40B7-11F7-4B33-B5C7-26989628D70C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {831B40B7-11F7-4B33-B5C7-26989628D70C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {831B40B7-11F7-4B33-B5C7-26989628D70C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {831B40B7-11F7-4B33-B5C7-26989628D70C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {DB76C87C-DD25-4563-9DD0-7914A84CC11D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {DB76C87C-DD25-4563-9DD0-7914A84CC11D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {DB76C87C-DD25-4563-9DD0-7914A84CC11D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {DB76C87C-DD25-4563-9DD0-7914A84CC11D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {20C68AFD-8518-4A78-91B4-747C71CB7589}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {20C68AFD-8518-4A78-91B4-747C71CB7589}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {20C68AFD-8518-4A78-91B4-747C71CB7589}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {20C68AFD-8518-4A78-91B4-747C71CB7589}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D7EDCA7E-F61D-4D8A-8540-B0DDAED8A927}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D7EDCA7E-F61D-4D8A-8540-B0DDAED8A927}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D7EDCA7E-F61D-4D8A-8540-B0DDAED8A927}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D7EDCA7E-F61D-4D8A-8540-B0DDAED8A927}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F87B162C-A83C-45FD-8FED-FFFB1E4C002C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F87B162C-A83C-45FD-8FED-FFFB1E4C002C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F87B162C-A83C-45FD-8FED-FFFB1E4C002C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F87B162C-A83C-45FD-8FED-FFFB1E4C002C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F0F5AB89-1FCB-400C-B20F-90063C272C28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F0F5AB89-1FCB-400C-B20F-90063C272C28}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F0F5AB89-1FCB-400C-B20F-90063C272C28}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F0F5AB89-1FCB-400C-B20F-90063C272C28}.Release|Any CPU.Build.0 = Release|Any CPU
-               {46CFCFD7-D328-4896-86F2-215A6577548C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {46CFCFD7-D328-4896-86F2-215A6577548C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {46CFCFD7-D328-4896-86F2-215A6577548C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {46CFCFD7-D328-4896-86F2-215A6577548C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A99841AC-505D-4E3F-8EC7-17232A175EB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A99841AC-505D-4E3F-8EC7-17232A175EB9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A99841AC-505D-4E3F-8EC7-17232A175EB9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A99841AC-505D-4E3F-8EC7-17232A175EB9}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}.Release|Any CPU.Build.0 = Release|Any CPU
-               {20363524-CE98-4FCB-8477-AF79DDC1A909}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {20363524-CE98-4FCB-8477-AF79DDC1A909}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {20363524-CE98-4FCB-8477-AF79DDC1A909}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {20363524-CE98-4FCB-8477-AF79DDC1A909}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4A2FA66A-594D-4A7B-9943-B7956C46D856}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4A2FA66A-594D-4A7B-9943-B7956C46D856}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4A2FA66A-594D-4A7B-9943-B7956C46D856}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4A2FA66A-594D-4A7B-9943-B7956C46D856}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D8E8B136-69B6-461F-872A-9C0F12272D53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D8E8B136-69B6-461F-872A-9C0F12272D53}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D8E8B136-69B6-461F-872A-9C0F12272D53}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D8E8B136-69B6-461F-872A-9C0F12272D53}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5797142C-571A-4B83-B837-0821D077236A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5797142C-571A-4B83-B837-0821D077236A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5797142C-571A-4B83-B837-0821D077236A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5797142C-571A-4B83-B837-0821D077236A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {23304250-6657-44F1-851B-8EF6C5A9CEF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {23304250-6657-44F1-851B-8EF6C5A9CEF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {23304250-6657-44F1-851B-8EF6C5A9CEF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {23304250-6657-44F1-851B-8EF6C5A9CEF7}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0410DC95-B046-49E0-954A-A2CDA3368100}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0410DC95-B046-49E0-954A-A2CDA3368100}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0410DC95-B046-49E0-954A-A2CDA3368100}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0410DC95-B046-49E0-954A-A2CDA3368100}.Release|Any CPU.Build.0 = Release|Any CPU
-               {53C6EE8D-8590-4805-B016-FD9C8E360A21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {53C6EE8D-8590-4805-B016-FD9C8E360A21}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {53C6EE8D-8590-4805-B016-FD9C8E360A21}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {53C6EE8D-8590-4805-B016-FD9C8E360A21}.Release|Any CPU.Build.0 = Release|Any CPU
-               {AABFEC11-0171-447F-9093-6E118257D22C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AABFEC11-0171-447F-9093-6E118257D22C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AABFEC11-0171-447F-9093-6E118257D22C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AABFEC11-0171-447F-9093-6E118257D22C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0CEF008D-47D4-49DC-9B67-C1CC73F40D77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0CEF008D-47D4-49DC-9B67-C1CC73F40D77}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0CEF008D-47D4-49DC-9B67-C1CC73F40D77}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0CEF008D-47D4-49DC-9B67-C1CC73F40D77}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BFDC3628-3992-4BA9-B95F-E0DAF5A8D247}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BFDC3628-3992-4BA9-B95F-E0DAF5A8D247}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BFDC3628-3992-4BA9-B95F-E0DAF5A8D247}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BFDC3628-3992-4BA9-B95F-E0DAF5A8D247}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F3D6F2CB-120A-401F-92B5-59D88F932C4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F3D6F2CB-120A-401F-92B5-59D88F932C4A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F3D6F2CB-120A-401F-92B5-59D88F932C4A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F3D6F2CB-120A-401F-92B5-59D88F932C4A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C43E1948-715C-4711-9442-13652674CE49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C43E1948-715C-4711-9442-13652674CE49}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C43E1948-715C-4711-9442-13652674CE49}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C43E1948-715C-4711-9442-13652674CE49}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {07C1F58B-9E99-47F8-A847-79EDA5157DA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {07C1F58B-9E99-47F8-A847-79EDA5157DA8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {07C1F58B-9E99-47F8-A847-79EDA5157DA8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {07C1F58B-9E99-47F8-A847-79EDA5157DA8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {93EE601C-8B43-4AE1-B417-7BDCD0FE4C95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {93EE601C-8B43-4AE1-B417-7BDCD0FE4C95}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {93EE601C-8B43-4AE1-B417-7BDCD0FE4C95}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {93EE601C-8B43-4AE1-B417-7BDCD0FE4C95}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D9776E38-7673-45F6-BF19-7B77830DF9CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D9776E38-7673-45F6-BF19-7B77830DF9CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D9776E38-7673-45F6-BF19-7B77830DF9CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D9776E38-7673-45F6-BF19-7B77830DF9CA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}.Release|Any CPU.Build.0 = Release|Any CPU
+               {79F25FD7-0D76-4526-AF39-1A648649A827}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {79F25FD7-0D76-4526-AF39-1A648649A827}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {79F25FD7-0D76-4526-AF39-1A648649A827}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {79F25FD7-0D76-4526-AF39-1A648649A827}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}.Release|Any CPU.Build.0 = Release|Any CPU
+               {245C754C-D6DE-4434-BA78-37A93E196236}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {245C754C-D6DE-4434-BA78-37A93E196236}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {245C754C-D6DE-4434-BA78-37A93E196236}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {245C754C-D6DE-4434-BA78-37A93E196236}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D513888C-71DC-4A65-B753-668FF8FB2CAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D513888C-71DC-4A65-B753-668FF8FB2CAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D513888C-71DC-4A65-B753-668FF8FB2CAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D513888C-71DC-4A65-B753-668FF8FB2CAA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2BD930A2-88A9-4AD0-ADE7-1531552DF896}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2BD930A2-88A9-4AD0-ADE7-1531552DF896}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2BD930A2-88A9-4AD0-ADE7-1531552DF896}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2BD930A2-88A9-4AD0-ADE7-1531552DF896}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DC4EE47D-CEB6-4592-994A-92C6B1D746FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DC4EE47D-CEB6-4592-994A-92C6B1D746FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DC4EE47D-CEB6-4592-994A-92C6B1D746FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DC4EE47D-CEB6-4592-994A-92C6B1D746FA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {347CC78E-794E-4BEF-BDAB-A0437E367442}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {347CC78E-794E-4BEF-BDAB-A0437E367442}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {347CC78E-794E-4BEF-BDAB-A0437E367442}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {347CC78E-794E-4BEF-BDAB-A0437E367442}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D9D617A3-31C7-4B72-A905-9E4274FC853B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D9D617A3-31C7-4B72-A905-9E4274FC853B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D9D617A3-31C7-4B72-A905-9E4274FC853B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D9D617A3-31C7-4B72-A905-9E4274FC853B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {269CBEEC-489D-4169-A4D8-CEAE9DB7E404}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {269CBEEC-489D-4169-A4D8-CEAE9DB7E404}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {269CBEEC-489D-4169-A4D8-CEAE9DB7E404}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {269CBEEC-489D-4169-A4D8-CEAE9DB7E404}.Release|Any CPU.Build.0 = Release|Any CPU
+               {83D197B9-A796-4A0D-B8F9-930DD9415615}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {83D197B9-A796-4A0D-B8F9-930DD9415615}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {83D197B9-A796-4A0D-B8F9-930DD9415615}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {83D197B9-A796-4A0D-B8F9-930DD9415615}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FC2EF2C1-8774-4DFE-AE47-9574374D3591}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FC2EF2C1-8774-4DFE-AE47-9574374D3591}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FC2EF2C1-8774-4DFE-AE47-9574374D3591}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FC2EF2C1-8774-4DFE-AE47-9574374D3591}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1A468E0B-8690-4595-BBD7-D9A5002DFF26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1A468E0B-8690-4595-BBD7-D9A5002DFF26}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1A468E0B-8690-4595-BBD7-D9A5002DFF26}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1A468E0B-8690-4595-BBD7-D9A5002DFF26}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D121EB80-19C6-4313-9BBE-6F66556CE8B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D121EB80-19C6-4313-9BBE-6F66556CE8B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D121EB80-19C6-4313-9BBE-6F66556CE8B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D121EB80-19C6-4313-9BBE-6F66556CE8B7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C86FCD4E-6A52-4595-8F9E-5270607D5EA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C86FCD4E-6A52-4595-8F9E-5270607D5EA9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C86FCD4E-6A52-4595-8F9E-5270607D5EA9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C86FCD4E-6A52-4595-8F9E-5270607D5EA9}.Release|Any CPU.Build.0 = Release|Any CPU
+               {51720A26-B4D9-4B84-8CB5-9CBA57477FBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {51720A26-B4D9-4B84-8CB5-9CBA57477FBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {51720A26-B4D9-4B84-8CB5-9CBA57477FBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {51720A26-B4D9-4B84-8CB5-9CBA57477FBB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8260E24F-1471-4320-AB5B-7CC7B68521E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8260E24F-1471-4320-AB5B-7CC7B68521E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8260E24F-1471-4320-AB5B-7CC7B68521E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8260E24F-1471-4320-AB5B-7CC7B68521E3}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CA49630B-FD24-411F-9651-B15CA72CE5B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CA49630B-FD24-411F-9651-B15CA72CE5B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CA49630B-FD24-411F-9651-B15CA72CE5B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CA49630B-FD24-411F-9651-B15CA72CE5B8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FCBCCC55-006E-41B2-A649-CF9A843E34BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FCBCCC55-006E-41B2-A649-CF9A843E34BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FCBCCC55-006E-41B2-A649-CF9A843E34BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FCBCCC55-006E-41B2-A649-CF9A843E34BD}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5E680987-7C43-48A0-9BF1-86124ACA78BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5E680987-7C43-48A0-9BF1-86124ACA78BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5E680987-7C43-48A0-9BF1-86124ACA78BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5E680987-7C43-48A0-9BF1-86124ACA78BD}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}.Release|Any CPU.Build.0 = Release|Any CPU
+               {AF08418D-2ADF-47E1-9D2F-8A9A2FEBF4B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {AF08418D-2ADF-47E1-9D2F-8A9A2FEBF4B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {AF08418D-2ADF-47E1-9D2F-8A9A2FEBF4B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {AF08418D-2ADF-47E1-9D2F-8A9A2FEBF4B1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DE98E72C-2727-4737-AAFC-CC1228F4812C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DE98E72C-2727-4737-AAFC-CC1228F4812C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DE98E72C-2727-4737-AAFC-CC1228F4812C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DE98E72C-2727-4737-AAFC-CC1228F4812C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {31465E05-7B4F-4209-8B9B-5F596A032D27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {31465E05-7B4F-4209-8B9B-5F596A032D27}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {31465E05-7B4F-4209-8B9B-5F596A032D27}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {31465E05-7B4F-4209-8B9B-5F596A032D27}.Release|Any CPU.Build.0 = Release|Any CPU
+               {91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F96F7491-66DB-4291-8803-F2F165B33B55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F96F7491-66DB-4291-8803-F2F165B33B55}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F96F7491-66DB-4291-8803-F2F165B33B55}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F96F7491-66DB-4291-8803-F2F165B33B55}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A2A5BBDB-A278-484E-811D-8FC5BA18444B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A2A5BBDB-A278-484E-811D-8FC5BA18444B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A2A5BBDB-A278-484E-811D-8FC5BA18444B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A2A5BBDB-A278-484E-811D-8FC5BA18444B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CBA2EEEA-4D6F-45B5-ADE2-7C86D3B2A449}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CBA2EEEA-4D6F-45B5-ADE2-7C86D3B2A449}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CBA2EEEA-4D6F-45B5-ADE2-7C86D3B2A449}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CBA2EEEA-4D6F-45B5-ADE2-7C86D3B2A449}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9FB65E2F-34A9-42FF-AE94-2F101B951E4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9FB65E2F-34A9-42FF-AE94-2F101B951E4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9FB65E2F-34A9-42FF-AE94-2F101B951E4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9FB65E2F-34A9-42FF-AE94-2F101B951E4E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {B915D688-A61F-4B8E-9110-16B76DB4446D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B915D688-A61F-4B8E-9110-16B76DB4446D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B915D688-A61F-4B8E-9110-16B76DB4446D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B915D688-A61F-4B8E-9110-16B76DB4446D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D8260595-C32F-4AC3-9C01-2CD2528CFA1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D8260595-C32F-4AC3-9C01-2CD2528CFA1D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D8260595-C32F-4AC3-9C01-2CD2528CFA1D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D8260595-C32F-4AC3-9C01-2CD2528CFA1D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9837CA8F-8FA7-4CE9-8BE8-BE4D5A236CDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9837CA8F-8FA7-4CE9-8BE8-BE4D5A236CDE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9837CA8F-8FA7-4CE9-8BE8-BE4D5A236CDE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9837CA8F-8FA7-4CE9-8BE8-BE4D5A236CDE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {99D172A2-7914-496C-9005-AA69F51195AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {99D172A2-7914-496C-9005-AA69F51195AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {99D172A2-7914-496C-9005-AA69F51195AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {99D172A2-7914-496C-9005-AA69F51195AF}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2D07BA52-8035-4434-B4FD-9B87789B8286}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2D07BA52-8035-4434-B4FD-9B87789B8286}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2D07BA52-8035-4434-B4FD-9B87789B8286}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2D07BA52-8035-4434-B4FD-9B87789B8286}.Release|Any CPU.Build.0 = Release|Any CPU
+               {B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C7510E1F-66A4-4076-B87B-889E219AAB3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C7510E1F-66A4-4076-B87B-889E219AAB3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C7510E1F-66A4-4076-B87B-889E219AAB3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C7510E1F-66A4-4076-B87B-889E219AAB3F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {65F07468-96FC-4A71-8565-2CD7A50728CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {65F07468-96FC-4A71-8565-2CD7A50728CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {65F07468-96FC-4A71-8565-2CD7A50728CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {65F07468-96FC-4A71-8565-2CD7A50728CC}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CA2CD67B-1308-460D-BDBA-498F63DEAA31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CA2CD67B-1308-460D-BDBA-498F63DEAA31}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CA2CD67B-1308-460D-BDBA-498F63DEAA31}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CA2CD67B-1308-460D-BDBA-498F63DEAA31}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A1C102BA-BFA1-4242-A44D-E041A6E37161}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A1C102BA-BFA1-4242-A44D-E041A6E37161}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A1C102BA-BFA1-4242-A44D-E041A6E37161}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A1C102BA-BFA1-4242-A44D-E041A6E37161}.Release|Any CPU.Build.0 = Release|Any CPU
+               {38FCD731-0E11-46F7-A31B-DCBE853AD8D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {38FCD731-0E11-46F7-A31B-DCBE853AD8D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {38FCD731-0E11-46F7-A31B-DCBE853AD8D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {38FCD731-0E11-46F7-A31B-DCBE853AD8D7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8A8D5677-ACBD-40B4-916D-B9B5451F713D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8A8D5677-ACBD-40B4-916D-B9B5451F713D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8A8D5677-ACBD-40B4-916D-B9B5451F713D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8A8D5677-ACBD-40B4-916D-B9B5451F713D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5532F6F2-B136-4D85-9500-5D1C9E1D9335}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5532F6F2-B136-4D85-9500-5D1C9E1D9335}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5532F6F2-B136-4D85-9500-5D1C9E1D9335}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5532F6F2-B136-4D85-9500-5D1C9E1D9335}.Release|Any CPU.Build.0 = Release|Any CPU
+               {6977FA25-AB73-4DE7-B535-19C04DB9C29A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {6977FA25-AB73-4DE7-B535-19C04DB9C29A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {6977FA25-AB73-4DE7-B535-19C04DB9C29A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6977FA25-AB73-4DE7-B535-19C04DB9C29A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {475537C3-F2C7-42FD-8AF9-871BC6266BAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {475537C3-F2C7-42FD-8AF9-871BC6266BAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {475537C3-F2C7-42FD-8AF9-871BC6266BAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {475537C3-F2C7-42FD-8AF9-871BC6266BAA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CF521447-730D-46F7-911F-0A1CFFB9B5CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CF521447-730D-46F7-911F-0A1CFFB9B5CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CF521447-730D-46F7-911F-0A1CFFB9B5CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CF521447-730D-46F7-911F-0A1CFFB9B5CB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7C1E1624-DAC7-4819-880B-852644622BF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7C1E1624-DAC7-4819-880B-852644622BF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7C1E1624-DAC7-4819-880B-852644622BF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7C1E1624-DAC7-4819-880B-852644622BF2}.Release|Any CPU.Build.0 = Release|Any CPU
+               {84879866-2AFD-4318-8C53-8951471B7369}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {84879866-2AFD-4318-8C53-8951471B7369}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {84879866-2AFD-4318-8C53-8951471B7369}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {84879866-2AFD-4318-8C53-8951471B7369}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0CE11B15-9B31-4AD1-857C-55B69C027130}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0CE11B15-9B31-4AD1-857C-55B69C027130}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0CE11B15-9B31-4AD1-857C-55B69C027130}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0CE11B15-9B31-4AD1-857C-55B69C027130}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9F1843D9-A9D4-4D87-8CC9-B4AF53DE0196}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9F1843D9-A9D4-4D87-8CC9-B4AF53DE0196}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9F1843D9-A9D4-4D87-8CC9-B4AF53DE0196}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9F1843D9-A9D4-4D87-8CC9-B4AF53DE0196}.Release|Any CPU.Build.0 = Release|Any CPU
+               {945A4FD5-2184-44CC-9519-13AFC37ED81A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {945A4FD5-2184-44CC-9519-13AFC37ED81A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {945A4FD5-2184-44CC-9519-13AFC37ED81A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {945A4FD5-2184-44CC-9519-13AFC37ED81A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1DFD7DE0-7771-4EE5-93B7-60551C6D3C6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1DFD7DE0-7771-4EE5-93B7-60551C6D3C6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1DFD7DE0-7771-4EE5-93B7-60551C6D3C6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1DFD7DE0-7771-4EE5-93B7-60551C6D3C6F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {562FC450-E53A-4CF5-AE5A-91973EBE5A28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {562FC450-E53A-4CF5-AE5A-91973EBE5A28}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {562FC450-E53A-4CF5-AE5A-91973EBE5A28}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {562FC450-E53A-4CF5-AE5A-91973EBE5A28}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9C3F8EFB-4A3A-4BD1-9072-881F1F558781}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9C3F8EFB-4A3A-4BD1-9072-881F1F558781}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9C3F8EFB-4A3A-4BD1-9072-881F1F558781}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9C3F8EFB-4A3A-4BD1-9072-881F1F558781}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D1129EE6-1E08-4393-8EF2-EA2EA6C1D5A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D1129EE6-1E08-4393-8EF2-EA2EA6C1D5A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D1129EE6-1E08-4393-8EF2-EA2EA6C1D5A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D1129EE6-1E08-4393-8EF2-EA2EA6C1D5A9}.Release|Any CPU.Build.0 = Release|Any CPU
+               {20B32D23-8DD0-4291-A98F-C52A3E99DFE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {20B32D23-8DD0-4291-A98F-C52A3E99DFE8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {20B32D23-8DD0-4291-A98F-C52A3E99DFE8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {20B32D23-8DD0-4291-A98F-C52A3E99DFE8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9B26C34E-8E81-4857-A1CB-B50F407EE7E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9B26C34E-8E81-4857-A1CB-B50F407EE7E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9B26C34E-8E81-4857-A1CB-B50F407EE7E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9B26C34E-8E81-4857-A1CB-B50F407EE7E1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {21E94E1F-226D-4BD3-9368-594C0553CE91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {21E94E1F-226D-4BD3-9368-594C0553CE91}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {21E94E1F-226D-4BD3-9368-594C0553CE91}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {21E94E1F-226D-4BD3-9368-594C0553CE91}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0653CFE2-4A19-4B91-A51F-793F8D516790}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0653CFE2-4A19-4B91-A51F-793F8D516790}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0653CFE2-4A19-4B91-A51F-793F8D516790}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0653CFE2-4A19-4B91-A51F-793F8D516790}.Release|Any CPU.Build.0 = Release|Any CPU
+               {663D8C81-B74E-4D44-8C59-2264C6942B30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {663D8C81-B74E-4D44-8C59-2264C6942B30}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {663D8C81-B74E-4D44-8C59-2264C6942B30}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {663D8C81-B74E-4D44-8C59-2264C6942B30}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4C5A0721-050A-4457-8D1C-8FB58DA895DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4C5A0721-050A-4457-8D1C-8FB58DA895DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4C5A0721-050A-4457-8D1C-8FB58DA895DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4C5A0721-050A-4457-8D1C-8FB58DA895DE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F26434C1-BA3D-41FB-B560-C009CB72B1B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F26434C1-BA3D-41FB-B560-C009CB72B1B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F26434C1-BA3D-41FB-B560-C009CB72B1B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F26434C1-BA3D-41FB-B560-C009CB72B1B6}.Release|Any CPU.Build.0 = Release|Any CPU
+               {121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7D94F9AC-9F7A-4639-9E89-85083D77101D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7D94F9AC-9F7A-4639-9E89-85083D77101D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7D94F9AC-9F7A-4639-9E89-85083D77101D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7D94F9AC-9F7A-4639-9E89-85083D77101D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {95593889-8509-4FFC-8EDE-C673FDA39FC8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {95593889-8509-4FFC-8EDE-C673FDA39FC8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {95593889-8509-4FFC-8EDE-C673FDA39FC8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {95593889-8509-4FFC-8EDE-C673FDA39FC8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {287E4CA2-E854-4E18-AFEE-B71E893A30EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {287E4CA2-E854-4E18-AFEE-B71E893A30EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {287E4CA2-E854-4E18-AFEE-B71E893A30EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {287E4CA2-E854-4E18-AFEE-B71E893A30EA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {409FF748-B765-4AB3-BCB1-72199B9E341C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {409FF748-B765-4AB3-BCB1-72199B9E341C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {409FF748-B765-4AB3-BCB1-72199B9E341C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {409FF748-B765-4AB3-BCB1-72199B9E341C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {16740D76-23DD-4BEC-87C6-948A8D766030}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {16740D76-23DD-4BEC-87C6-948A8D766030}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {16740D76-23DD-4BEC-87C6-948A8D766030}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {16740D76-23DD-4BEC-87C6-948A8D766030}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C044B1E6-B892-49DC-BD71-4C796BD8964A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C044B1E6-B892-49DC-BD71-4C796BD8964A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C044B1E6-B892-49DC-BD71-4C796BD8964A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C044B1E6-B892-49DC-BD71-4C796BD8964A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {394BAC94-3126-4DAE-8C55-5547372BAB46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {394BAC94-3126-4DAE-8C55-5547372BAB46}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {394BAC94-3126-4DAE-8C55-5547372BAB46}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {394BAC94-3126-4DAE-8C55-5547372BAB46}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0B03F192-EC11-49E5-A7F6-E97C0D559E51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0B03F192-EC11-49E5-A7F6-E97C0D559E51}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0B03F192-EC11-49E5-A7F6-E97C0D559E51}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0B03F192-EC11-49E5-A7F6-E97C0D559E51}.Release|Any CPU.Build.0 = Release|Any CPU
+               {32FF1A9B-A989-43C0-BFBB-3808C7B2509F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {32FF1A9B-A989-43C0-BFBB-3808C7B2509F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {32FF1A9B-A989-43C0-BFBB-3808C7B2509F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {32FF1A9B-A989-43C0-BFBB-3808C7B2509F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {BAC369E3-E94E-4E5A-97FF-0CF696D07814}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {BAC369E3-E94E-4E5A-97FF-0CF696D07814}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {BAC369E3-E94E-4E5A-97FF-0CF696D07814}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {BAC369E3-E94E-4E5A-97FF-0CF696D07814}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8EF189A4-B862-4825-9938-00658C43B534}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8EF189A4-B862-4825-9938-00658C43B534}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8EF189A4-B862-4825-9938-00658C43B534}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8EF189A4-B862-4825-9938-00658C43B534}.Release|Any CPU.Build.0 = Release|Any CPU
+               {71444193-6B64-4C1B-A87D-580CCB548952}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {71444193-6B64-4C1B-A87D-580CCB548952}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {71444193-6B64-4C1B-A87D-580CCB548952}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {71444193-6B64-4C1B-A87D-580CCB548952}.Release|Any CPU.Build.0 = Release|Any CPU
+               {92E7A483-839B-4EFA-A77D-16C68F051941}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {92E7A483-839B-4EFA-A77D-16C68F051941}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {92E7A483-839B-4EFA-A77D-16C68F051941}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {92E7A483-839B-4EFA-A77D-16C68F051941}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DD1B3195-5FEA-46A2-99B5-9839CA60485C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DD1B3195-5FEA-46A2-99B5-9839CA60485C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DD1B3195-5FEA-46A2-99B5-9839CA60485C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DD1B3195-5FEA-46A2-99B5-9839CA60485C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4796A339-E32F-476E-9D7D-69C771CD618C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4796A339-E32F-476E-9D7D-69C771CD618C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4796A339-E32F-476E-9D7D-69C771CD618C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4796A339-E32F-476E-9D7D-69C771CD618C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CA7E5301-90D2-4C07-87B7-851AA216D4C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CA7E5301-90D2-4C07-87B7-851AA216D4C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CA7E5301-90D2-4C07-87B7-851AA216D4C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CA7E5301-90D2-4C07-87B7-851AA216D4C9}.Release|Any CPU.Build.0 = Release|Any CPU
+               {49220562-83E1-49A2-971F-5D31C4AB0258}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {49220562-83E1-49A2-971F-5D31C4AB0258}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {49220562-83E1-49A2-971F-5D31C4AB0258}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {49220562-83E1-49A2-971F-5D31C4AB0258}.Release|Any CPU.Build.0 = Release|Any CPU
+               {99315C7A-EEDA-4247-96F4-14924760DB8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {99315C7A-EEDA-4247-96F4-14924760DB8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {99315C7A-EEDA-4247-96F4-14924760DB8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {99315C7A-EEDA-4247-96F4-14924760DB8B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {85526C39-79CA-40DB-940A-3C83DF30DF85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {85526C39-79CA-40DB-940A-3C83DF30DF85}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {85526C39-79CA-40DB-940A-3C83DF30DF85}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {85526C39-79CA-40DB-940A-3C83DF30DF85}.Release|Any CPU.Build.0 = Release|Any CPU
+               {991C45A8-3B22-45BB-B688-DBF8BA835992}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {991C45A8-3B22-45BB-B688-DBF8BA835992}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {991C45A8-3B22-45BB-B688-DBF8BA835992}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {991C45A8-3B22-45BB-B688-DBF8BA835992}.Release|Any CPU.Build.0 = Release|Any CPU
+               {B91370A1-A33A-4F7A-BDF2-1E194AFA0869}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B91370A1-A33A-4F7A-BDF2-1E194AFA0869}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B91370A1-A33A-4F7A-BDF2-1E194AFA0869}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B91370A1-A33A-4F7A-BDF2-1E194AFA0869}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F83F663F-89F7-481C-941E-E4FE67867254}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F83F663F-89F7-481C-941E-E4FE67867254}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F83F663F-89F7-481C-941E-E4FE67867254}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F83F663F-89F7-481C-941E-E4FE67867254}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D0D311A2-725A-4413-B7FA-EF61E2A4C0C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D0D311A2-725A-4413-B7FA-EF61E2A4C0C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D0D311A2-725A-4413-B7FA-EF61E2A4C0C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D0D311A2-725A-4413-B7FA-EF61E2A4C0C0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {AA8CFAB1-B81C-434E-AA60-C2373B27EB56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {AA8CFAB1-B81C-434E-AA60-C2373B27EB56}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {AA8CFAB1-B81C-434E-AA60-C2373B27EB56}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {AA8CFAB1-B81C-434E-AA60-C2373B27EB56}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CEE0A26D-0700-446F-B515-5AFF610ACF5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CEE0A26D-0700-446F-B515-5AFF610ACF5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CEE0A26D-0700-446F-B515-5AFF610ACF5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CEE0A26D-0700-446F-B515-5AFF610ACF5E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {08486D58-12AA-4B53-82F7-1B2C62EAE9D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {08486D58-12AA-4B53-82F7-1B2C62EAE9D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {08486D58-12AA-4B53-82F7-1B2C62EAE9D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {08486D58-12AA-4B53-82F7-1B2C62EAE9D5}.Release|Any CPU.Build.0 = Release|Any CPU
+               {77D30907-035D-4382-AA43-5A8EE294EA33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {77D30907-035D-4382-AA43-5A8EE294EA33}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {77D30907-035D-4382-AA43-5A8EE294EA33}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {77D30907-035D-4382-AA43-5A8EE294EA33}.Release|Any CPU.Build.0 = Release|Any CPU
+               {82BD591A-1377-41BD-9B2C-1037574BB935}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {82BD591A-1377-41BD-9B2C-1037574BB935}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {82BD591A-1377-41BD-9B2C-1037574BB935}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {82BD591A-1377-41BD-9B2C-1037574BB935}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1CD96FCF-0288-4FA4-9451-47B0C2206186}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1CD96FCF-0288-4FA4-9451-47B0C2206186}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1CD96FCF-0288-4FA4-9451-47B0C2206186}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1CD96FCF-0288-4FA4-9451-47B0C2206186}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7DA0BC53-8555-4547-BAE6-BD72EF93B109}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7DA0BC53-8555-4547-BAE6-BD72EF93B109}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7DA0BC53-8555-4547-BAE6-BD72EF93B109}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7DA0BC53-8555-4547-BAE6-BD72EF93B109}.Release|Any CPU.Build.0 = Release|Any CPU
+               {6CC04C44-1378-4502-B134-FE6D46B1A4B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {6CC04C44-1378-4502-B134-FE6D46B1A4B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {6CC04C44-1378-4502-B134-FE6D46B1A4B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6CC04C44-1378-4502-B134-FE6D46B1A4B4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7E62A1A2-DEED-44AD-9FF2-178065ED8A44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7E62A1A2-DEED-44AD-9FF2-178065ED8A44}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7E62A1A2-DEED-44AD-9FF2-178065ED8A44}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7E62A1A2-DEED-44AD-9FF2-178065ED8A44}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E19661F8-3BCE-48C0-A408-8F712F87A396}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E19661F8-3BCE-48C0-A408-8F712F87A396}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E19661F8-3BCE-48C0-A408-8F712F87A396}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E19661F8-3BCE-48C0-A408-8F712F87A396}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D413E89D-CE81-4766-BBC1-AC17A3FD5C95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D413E89D-CE81-4766-BBC1-AC17A3FD5C95}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D413E89D-CE81-4766-BBC1-AC17A3FD5C95}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D413E89D-CE81-4766-BBC1-AC17A3FD5C95}.Release|Any CPU.Build.0 = Release|Any CPU
+               {07BD11C9-C562-4EC3-8B7E-26EA909393C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {07BD11C9-C562-4EC3-8B7E-26EA909393C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {07BD11C9-C562-4EC3-8B7E-26EA909393C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {07BD11C9-C562-4EC3-8B7E-26EA909393C0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7EB08776-A0D3-415F-960A-58869EDFDA02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7EB08776-A0D3-415F-960A-58869EDFDA02}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7EB08776-A0D3-415F-960A-58869EDFDA02}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7EB08776-A0D3-415F-960A-58869EDFDA02}.Release|Any CPU.Build.0 = Release|Any CPU
+               {228F1876-102C-4817-875C-1D80F17BADF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {228F1876-102C-4817-875C-1D80F17BADF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {228F1876-102C-4817-875C-1D80F17BADF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {228F1876-102C-4817-875C-1D80F17BADF9}.Release|Any CPU.Build.0 = Release|Any CPU
+               {923568BE-5A8D-44A1-AA33-348679E6AAD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {923568BE-5A8D-44A1-AA33-348679E6AAD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {923568BE-5A8D-44A1-AA33-348679E6AAD7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {923568BE-5A8D-44A1-AA33-348679E6AAD7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C67F17EE-7E1C-4B87-B58B-11458749DD70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C67F17EE-7E1C-4B87-B58B-11458749DD70}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C67F17EE-7E1C-4B87-B58B-11458749DD70}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C67F17EE-7E1C-4B87-B58B-11458749DD70}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C7D8B744-96E6-42A0-82C0-C191C686D485}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C7D8B744-96E6-42A0-82C0-C191C686D485}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C7D8B744-96E6-42A0-82C0-C191C686D485}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C7D8B744-96E6-42A0-82C0-C191C686D485}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2ABC2A54-EF46-42A3-BCCD-A58070E5D2F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2ABC2A54-EF46-42A3-BCCD-A58070E5D2F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2ABC2A54-EF46-42A3-BCCD-A58070E5D2F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2ABC2A54-EF46-42A3-BCCD-A58070E5D2F0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8C367062-EFEF-4765-B1B1-5553608F6A60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8C367062-EFEF-4765-B1B1-5553608F6A60}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8C367062-EFEF-4765-B1B1-5553608F6A60}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8C367062-EFEF-4765-B1B1-5553608F6A60}.Release|Any CPU.Build.0 = Release|Any CPU
+               {41B3B369-328C-45B8-9F14-224641427A35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {41B3B369-328C-45B8-9F14-224641427A35}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {41B3B369-328C-45B8-9F14-224641427A35}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {41B3B369-328C-45B8-9F14-224641427A35}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3C0E9135-1458-47F6-9076-17FFB1E3E32F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3C0E9135-1458-47F6-9076-17FFB1E3E32F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3C0E9135-1458-47F6-9076-17FFB1E3E32F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3C0E9135-1458-47F6-9076-17FFB1E3E32F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A0DF2D35-BA97-4CAB-90C6-1C4463186C3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A0DF2D35-BA97-4CAB-90C6-1C4463186C3E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A0DF2D35-BA97-4CAB-90C6-1C4463186C3E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A0DF2D35-BA97-4CAB-90C6-1C4463186C3E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CF9157B2-D8CB-4C1E-9F92-7028CBD13DE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CF9157B2-D8CB-4C1E-9F92-7028CBD13DE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CF9157B2-D8CB-4C1E-9F92-7028CBD13DE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CF9157B2-D8CB-4C1E-9F92-7028CBD13DE0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {465CE08E-9F33-4EA5-9AAB-A03DEBFAF671}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {465CE08E-9F33-4EA5-9AAB-A03DEBFAF671}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {465CE08E-9F33-4EA5-9AAB-A03DEBFAF671}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {465CE08E-9F33-4EA5-9AAB-A03DEBFAF671}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0E57DA52-274B-4E8D-A60D-3B87910B70E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0E57DA52-274B-4E8D-A60D-3B87910B70E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0E57DA52-274B-4E8D-A60D-3B87910B70E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0E57DA52-274B-4E8D-A60D-3B87910B70E0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {993AE1D3-7F06-482F-A90A-A06FD59B3FF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {993AE1D3-7F06-482F-A90A-A06FD59B3FF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {993AE1D3-7F06-482F-A90A-A06FD59B3FF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {993AE1D3-7F06-482F-A90A-A06FD59B3FF5}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0C6297C3-66BE-4FD1-B9B0-057950B32E94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0C6297C3-66BE-4FD1-B9B0-057950B32E94}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0C6297C3-66BE-4FD1-B9B0-057950B32E94}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0C6297C3-66BE-4FD1-B9B0-057950B32E94}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7694FE57-6BB7-478E-BB4E-C5187167804F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7694FE57-6BB7-478E-BB4E-C5187167804F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7694FE57-6BB7-478E-BB4E-C5187167804F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7694FE57-6BB7-478E-BB4E-C5187167804F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {91FFC577-CF58-43EB-BD06-D0233F588A5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {91FFC577-CF58-43EB-BD06-D0233F588A5B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {91FFC577-CF58-43EB-BD06-D0233F588A5B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {91FFC577-CF58-43EB-BD06-D0233F588A5B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A91ADA57-5818-4949-B584-CB5303EB8842}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A91ADA57-5818-4949-B584-CB5303EB8842}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A91ADA57-5818-4949-B584-CB5303EB8842}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A91ADA57-5818-4949-B584-CB5303EB8842}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F3D6D651-192F-4209-B272-7F8354D0CDB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F3D6D651-192F-4209-B272-7F8354D0CDB6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F3D6D651-192F-4209-B272-7F8354D0CDB6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F3D6D651-192F-4209-B272-7F8354D0CDB6}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D358D57B-1CF3-4DBC-B5F7-17B69814B7DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D358D57B-1CF3-4DBC-B5F7-17B69814B7DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D358D57B-1CF3-4DBC-B5F7-17B69814B7DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D358D57B-1CF3-4DBC-B5F7-17B69814B7DE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {EC71F150-48A7-4971-A37D-E519ABA830A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {EC71F150-48A7-4971-A37D-E519ABA830A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {EC71F150-48A7-4971-A37D-E519ABA830A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {EC71F150-48A7-4971-A37D-E519ABA830A3}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8BA87CBE-8098-4512-B008-A347E1EA281C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8BA87CBE-8098-4512-B008-A347E1EA281C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8BA87CBE-8098-4512-B008-A347E1EA281C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8BA87CBE-8098-4512-B008-A347E1EA281C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1CB843E3-75E7-4115-9EE6-7B7262AC6C96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1CB843E3-75E7-4115-9EE6-7B7262AC6C96}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1CB843E3-75E7-4115-9EE6-7B7262AC6C96}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1CB843E3-75E7-4115-9EE6-7B7262AC6C96}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3429D3B3-51DC-4236-9C5A-33C4F9E260FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3429D3B3-51DC-4236-9C5A-33C4F9E260FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3429D3B3-51DC-4236-9C5A-33C4F9E260FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3429D3B3-51DC-4236-9C5A-33C4F9E260FE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {443D0D78-0A65-4288-80C2-B58011E3A5D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {443D0D78-0A65-4288-80C2-B58011E3A5D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {443D0D78-0A65-4288-80C2-B58011E3A5D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {443D0D78-0A65-4288-80C2-B58011E3A5D1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3C248397-71FD-4A63-B4A5-9F2A28C4D983}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3C248397-71FD-4A63-B4A5-9F2A28C4D983}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3C248397-71FD-4A63-B4A5-9F2A28C4D983}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3C248397-71FD-4A63-B4A5-9F2A28C4D983}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CD0A320A-620E-42D0-86CD-2D32F5592E57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CD0A320A-620E-42D0-86CD-2D32F5592E57}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CD0A320A-620E-42D0-86CD-2D32F5592E57}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CD0A320A-620E-42D0-86CD-2D32F5592E57}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A8B93174-06DF-4FC7-8E3E-45F395A943EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A8B93174-06DF-4FC7-8E3E-45F395A943EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A8B93174-06DF-4FC7-8E3E-45F395A943EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A8B93174-06DF-4FC7-8E3E-45F395A943EB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2A3A7368-D302-4166-820C-8CB18138740C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2A3A7368-D302-4166-820C-8CB18138740C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2A3A7368-D302-4166-820C-8CB18138740C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2A3A7368-D302-4166-820C-8CB18138740C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {114A51BC-8AB2-4B25-A9A7-CB78C43745B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {114A51BC-8AB2-4B25-A9A7-CB78C43745B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {114A51BC-8AB2-4B25-A9A7-CB78C43745B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {114A51BC-8AB2-4B25-A9A7-CB78C43745B8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {57115A1C-8C33-455E-A108-04DCD04808BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {57115A1C-8C33-455E-A108-04DCD04808BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {57115A1C-8C33-455E-A108-04DCD04808BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {57115A1C-8C33-455E-A108-04DCD04808BD}.Release|Any CPU.Build.0 = Release|Any CPU
+               {99FAEDEC-48C5-4B12-8707-13A8CF11CFEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {99FAEDEC-48C5-4B12-8707-13A8CF11CFEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {99FAEDEC-48C5-4B12-8707-13A8CF11CFEF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {99FAEDEC-48C5-4B12-8707-13A8CF11CFEF}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D86B8C00-9D5A-46D0-8BF0-49E4D7606EAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D86B8C00-9D5A-46D0-8BF0-49E4D7606EAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D86B8C00-9D5A-46D0-8BF0-49E4D7606EAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D86B8C00-9D5A-46D0-8BF0-49E4D7606EAD}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8B8B57E4-285A-409A-BA4A-290DE0055301}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8B8B57E4-285A-409A-BA4A-290DE0055301}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8B8B57E4-285A-409A-BA4A-290DE0055301}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8B8B57E4-285A-409A-BA4A-290DE0055301}.Release|Any CPU.Build.0 = Release|Any CPU
+               {54B3EC1E-F177-4E17-B4B9-ADF5C4AEE9B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {54B3EC1E-F177-4E17-B4B9-ADF5C4AEE9B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {54B3EC1E-F177-4E17-B4B9-ADF5C4AEE9B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {54B3EC1E-F177-4E17-B4B9-ADF5C4AEE9B4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {039AD56A-E91B-4803-8328-287F70B61D14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {039AD56A-E91B-4803-8328-287F70B61D14}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {039AD56A-E91B-4803-8328-287F70B61D14}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {039AD56A-E91B-4803-8328-287F70B61D14}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9F93BC7A-F061-4AF5-AF3C-F81692D20E89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9F93BC7A-F061-4AF5-AF3C-F81692D20E89}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9F93BC7A-F061-4AF5-AF3C-F81692D20E89}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9F93BC7A-F061-4AF5-AF3C-F81692D20E89}.Release|Any CPU.Build.0 = Release|Any CPU
+               {75114723-49E9-4351-A4FD-36DB9BC044E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {75114723-49E9-4351-A4FD-36DB9BC044E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {75114723-49E9-4351-A4FD-36DB9BC044E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {75114723-49E9-4351-A4FD-36DB9BC044E6}.Release|Any CPU.Build.0 = Release|Any CPU
+               {61C7FBD9-B531-4292-8456-AAA6F9E650C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {61C7FBD9-B531-4292-8456-AAA6F9E650C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {61C7FBD9-B531-4292-8456-AAA6F9E650C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {61C7FBD9-B531-4292-8456-AAA6F9E650C4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {417E7FEB-E054-44F0-81FF-A896F4018DC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {417E7FEB-E054-44F0-81FF-A896F4018DC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {417E7FEB-E054-44F0-81FF-A896F4018DC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {417E7FEB-E054-44F0-81FF-A896F4018DC7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2E94B160-349C-4138-8922-208B3B8175F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2E94B160-349C-4138-8922-208B3B8175F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2E94B160-349C-4138-8922-208B3B8175F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2E94B160-349C-4138-8922-208B3B8175F2}.Release|Any CPU.Build.0 = Release|Any CPU
+               {954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9ABB7BB9-5EA1-4081-B205-5658A602C1F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9ABB7BB9-5EA1-4081-B205-5658A602C1F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9ABB7BB9-5EA1-4081-B205-5658A602C1F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9ABB7BB9-5EA1-4081-B205-5658A602C1F5}.Release|Any CPU.Build.0 = Release|Any CPU
+               {21F6D72C-2C4D-4108-9BC5-C01FAFFCEF8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {21F6D72C-2C4D-4108-9BC5-C01FAFFCEF8E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {21F6D72C-2C4D-4108-9BC5-C01FAFFCEF8E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {21F6D72C-2C4D-4108-9BC5-C01FAFFCEF8E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FBA53F04-D998-43D8-8538-C11EE71EEB70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FBA53F04-D998-43D8-8538-C11EE71EEB70}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FBA53F04-D998-43D8-8538-C11EE71EEB70}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FBA53F04-D998-43D8-8538-C11EE71EEB70}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3D24376B-ECC8-4E7B-9433-C77CC67880AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3D24376B-ECC8-4E7B-9433-C77CC67880AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3D24376B-ECC8-4E7B-9433-C77CC67880AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3D24376B-ECC8-4E7B-9433-C77CC67880AA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2BAFB878-D329-46A5-93AF-5A4ECD403A13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2BAFB878-D329-46A5-93AF-5A4ECD403A13}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2BAFB878-D329-46A5-93AF-5A4ECD403A13}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2BAFB878-D329-46A5-93AF-5A4ECD403A13}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DB6937A9-D27A-42AB-A044-1DB4B1F97414}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DB6937A9-D27A-42AB-A044-1DB4B1F97414}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DB6937A9-D27A-42AB-A044-1DB4B1F97414}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DB6937A9-D27A-42AB-A044-1DB4B1F97414}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7E7B683B-FA73-492D-A59B-E13AF28F8B21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7E7B683B-FA73-492D-A59B-E13AF28F8B21}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7E7B683B-FA73-492D-A59B-E13AF28F8B21}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7E7B683B-FA73-492D-A59B-E13AF28F8B21}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0DA63190-E6E1-41C5-B683-A54FADBE61CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0DA63190-E6E1-41C5-B683-A54FADBE61CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0DA63190-E6E1-41C5-B683-A54FADBE61CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0DA63190-E6E1-41C5-B683-A54FADBE61CB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {AE80331E-4C95-4F65-BE43-0C3011661AE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {AE80331E-4C95-4F65-BE43-0C3011661AE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {AE80331E-4C95-4F65-BE43-0C3011661AE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {AE80331E-4C95-4F65-BE43-0C3011661AE1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {B0995E00-BF37-4B8A-8229-285C060E5957}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B0995E00-BF37-4B8A-8229-285C060E5957}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B0995E00-BF37-4B8A-8229-285C060E5957}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B0995E00-BF37-4B8A-8229-285C060E5957}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E572DA55-C0E6-42BA-9BCF-05B2C777D15B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E572DA55-C0E6-42BA-9BCF-05B2C777D15B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E572DA55-C0E6-42BA-9BCF-05B2C777D15B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E572DA55-C0E6-42BA-9BCF-05B2C777D15B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A581C8A4-F031-43BA-A744-042ECD6EA6FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A581C8A4-F031-43BA-A744-042ECD6EA6FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A581C8A4-F031-43BA-A744-042ECD6EA6FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A581C8A4-F031-43BA-A744-042ECD6EA6FE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {20A3B729-8CAB-4480-84BF-07E8CECE4CDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {20A3B729-8CAB-4480-84BF-07E8CECE4CDB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {20A3B729-8CAB-4480-84BF-07E8CECE4CDB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {20A3B729-8CAB-4480-84BF-07E8CECE4CDB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E90544E8-C031-49EE-BB6F-8688382E8618}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E90544E8-C031-49EE-BB6F-8688382E8618}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E90544E8-C031-49EE-BB6F-8688382E8618}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E90544E8-C031-49EE-BB6F-8688382E8618}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DC1A3B5B-AFAC-4EE0-B9B8-6664F9E744B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DC1A3B5B-AFAC-4EE0-B9B8-6664F9E744B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DC1A3B5B-AFAC-4EE0-B9B8-6664F9E744B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DC1A3B5B-AFAC-4EE0-B9B8-6664F9E744B7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4F614C6C-A83E-4C3C-859B-0548391F519E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4F614C6C-A83E-4C3C-859B-0548391F519E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4F614C6C-A83E-4C3C-859B-0548391F519E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4F614C6C-A83E-4C3C-859B-0548391F519E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F3D909C0-D548-4FBC-BA04-BC8A445954EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F3D909C0-D548-4FBC-BA04-BC8A445954EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F3D909C0-D548-4FBC-BA04-BC8A445954EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F3D909C0-D548-4FBC-BA04-BC8A445954EA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C410B7A1-AC09-4CBB-9F20-AC9473811B40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C410B7A1-AC09-4CBB-9F20-AC9473811B40}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C410B7A1-AC09-4CBB-9F20-AC9473811B40}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C410B7A1-AC09-4CBB-9F20-AC9473811B40}.Release|Any CPU.Build.0 = Release|Any CPU
+               {45FB5242-B51C-43BC-A7B5-75E5E17C4E95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {45FB5242-B51C-43BC-A7B5-75E5E17C4E95}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {45FB5242-B51C-43BC-A7B5-75E5E17C4E95}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {45FB5242-B51C-43BC-A7B5-75E5E17C4E95}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CE1B7764-9679-451A-9ACB-697088B116F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CE1B7764-9679-451A-9ACB-697088B116F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CE1B7764-9679-451A-9ACB-697088B116F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CE1B7764-9679-451A-9ACB-697088B116F1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {53BEA1F5-AA08-429E-BD7A-EAD4DF7B9EE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {53BEA1F5-AA08-429E-BD7A-EAD4DF7B9EE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {53BEA1F5-AA08-429E-BD7A-EAD4DF7B9EE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {53BEA1F5-AA08-429E-BD7A-EAD4DF7B9EE1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D5F1C909-8875-4D37-8CC1-30851258C594}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D5F1C909-8875-4D37-8CC1-30851258C594}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D5F1C909-8875-4D37-8CC1-30851258C594}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D5F1C909-8875-4D37-8CC1-30851258C594}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1D746BE5-4458-4F6F-B87F-8B3EEEE2DD46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1D746BE5-4458-4F6F-B87F-8B3EEEE2DD46}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1D746BE5-4458-4F6F-B87F-8B3EEEE2DD46}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1D746BE5-4458-4F6F-B87F-8B3EEEE2DD46}.Release|Any CPU.Build.0 = Release|Any CPU
+               {93406A57-422B-4A7E-886A-B37F2E97DB78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {93406A57-422B-4A7E-886A-B37F2E97DB78}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {93406A57-422B-4A7E-886A-B37F2E97DB78}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {93406A57-422B-4A7E-886A-B37F2E97DB78}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C035D4D2-D112-49A6-87B8-E47469BBDA4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C035D4D2-D112-49A6-87B8-E47469BBDA4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C035D4D2-D112-49A6-87B8-E47469BBDA4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C035D4D2-D112-49A6-87B8-E47469BBDA4F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3AD60A26-BA14-4B61-9293-D98C1BF9552C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3AD60A26-BA14-4B61-9293-D98C1BF9552C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3AD60A26-BA14-4B61-9293-D98C1BF9552C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3AD60A26-BA14-4B61-9293-D98C1BF9552C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {83FDEDF8-E46D-437E-8CEF-DD2C36E05324}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {83FDEDF8-E46D-437E-8CEF-DD2C36E05324}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {83FDEDF8-E46D-437E-8CEF-DD2C36E05324}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {83FDEDF8-E46D-437E-8CEF-DD2C36E05324}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8E750A9D-7421-408C-B859-62A8C92D3FE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8E750A9D-7421-408C-B859-62A8C92D3FE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8E750A9D-7421-408C-B859-62A8C92D3FE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8E750A9D-7421-408C-B859-62A8C92D3FE2}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {74D8D6B9-1D98-4F19-A834-A0C603AD1482}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {74D8D6B9-1D98-4F19-A834-A0C603AD1482}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {74D8D6B9-1D98-4F19-A834-A0C603AD1482}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {74D8D6B9-1D98-4F19-A834-A0C603AD1482}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5889C0B9-25DF-4405-A240-AC0615F4B3EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5889C0B9-25DF-4405-A240-AC0615F4B3EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5889C0B9-25DF-4405-A240-AC0615F4B3EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5889C0B9-25DF-4405-A240-AC0615F4B3EB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5F59D153-79FB-4348-B615-419F2DA69166}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5F59D153-79FB-4348-B615-419F2DA69166}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5F59D153-79FB-4348-B615-419F2DA69166}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5F59D153-79FB-4348-B615-419F2DA69166}.Release|Any CPU.Build.0 = Release|Any CPU
+               {74E571CD-0506-4A52-B780-FDA9445675FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {74E571CD-0506-4A52-B780-FDA9445675FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {74E571CD-0506-4A52-B780-FDA9445675FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {74E571CD-0506-4A52-B780-FDA9445675FB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F70BF1C1-23E0-449D-966D-0A0657F0AB02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F70BF1C1-23E0-449D-966D-0A0657F0AB02}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F70BF1C1-23E0-449D-966D-0A0657F0AB02}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F70BF1C1-23E0-449D-966D-0A0657F0AB02}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9F8B1088-2610-4E4D-A6E4-EDF2771104D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9F8B1088-2610-4E4D-A6E4-EDF2771104D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9F8B1088-2610-4E4D-A6E4-EDF2771104D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9F8B1088-2610-4E4D-A6E4-EDF2771104D9}.Release|Any CPU.Build.0 = Release|Any CPU
+               {64E625C0-AA4E-44DC-98F4-352D552F2EF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {64E625C0-AA4E-44DC-98F4-352D552F2EF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {64E625C0-AA4E-44DC-98F4-352D552F2EF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {64E625C0-AA4E-44DC-98F4-352D552F2EF8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8A46F1CA-4F8B-4EE5-A5E3-AC67291311F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8A46F1CA-4F8B-4EE5-A5E3-AC67291311F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8A46F1CA-4F8B-4EE5-A5E3-AC67291311F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8A46F1CA-4F8B-4EE5-A5E3-AC67291311F3}.Release|Any CPU.Build.0 = Release|Any CPU
+               {02E0DC5C-2182-45D8-95E3-FF5ED16C318E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {02E0DC5C-2182-45D8-95E3-FF5ED16C318E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {02E0DC5C-2182-45D8-95E3-FF5ED16C318E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {02E0DC5C-2182-45D8-95E3-FF5ED16C318E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1500FD28-7DB2-40B3-BAB2-A8FBE3960A4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1500FD28-7DB2-40B3-BAB2-A8FBE3960A4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1500FD28-7DB2-40B3-BAB2-A8FBE3960A4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1500FD28-7DB2-40B3-BAB2-A8FBE3960A4E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {BC669CAE-D6F8-49B9-8AC3-68B48BD70587}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {BC669CAE-D6F8-49B9-8AC3-68B48BD70587}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {BC669CAE-D6F8-49B9-8AC3-68B48BD70587}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {BC669CAE-D6F8-49B9-8AC3-68B48BD70587}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E8E13C56-208F-44E9-B0F9-F1A4996C595A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E8E13C56-208F-44E9-B0F9-F1A4996C595A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E8E13C56-208F-44E9-B0F9-F1A4996C595A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E8E13C56-208F-44E9-B0F9-F1A4996C595A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C4643395-6B5B-47D9-BD50-9F6804478AFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C4643395-6B5B-47D9-BD50-9F6804478AFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C4643395-6B5B-47D9-BD50-9F6804478AFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C4643395-6B5B-47D9-BD50-9F6804478AFD}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E8DC0734-B7DB-4CA3-9DF2-4103F35B8A39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E8DC0734-B7DB-4CA3-9DF2-4103F35B8A39}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E8DC0734-B7DB-4CA3-9DF2-4103F35B8A39}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E8DC0734-B7DB-4CA3-9DF2-4103F35B8A39}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9A686629-45E0-431D-975C-BEDF137D75F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9A686629-45E0-431D-975C-BEDF137D75F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9A686629-45E0-431D-975C-BEDF137D75F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9A686629-45E0-431D-975C-BEDF137D75F1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E8BE3F98-6FE7-4EBD-8FAC-7CDADFE26096}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E8BE3F98-6FE7-4EBD-8FAC-7CDADFE26096}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E8BE3F98-6FE7-4EBD-8FAC-7CDADFE26096}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E8BE3F98-6FE7-4EBD-8FAC-7CDADFE26096}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4F4AE80E-7DB0-49A9-B508-80A328137181}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4F4AE80E-7DB0-49A9-B508-80A328137181}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4F4AE80E-7DB0-49A9-B508-80A328137181}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4F4AE80E-7DB0-49A9-B508-80A328137181}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1AC76475-2AAB-431E-BD97-444CD5AF1191}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1AC76475-2AAB-431E-BD97-444CD5AF1191}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1AC76475-2AAB-431E-BD97-444CD5AF1191}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1AC76475-2AAB-431E-BD97-444CD5AF1191}.Release|Any CPU.Build.0 = Release|Any CPU
+               {05D8BAFE-64FA-4F09-AC7B-86627DFF136F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {05D8BAFE-64FA-4F09-AC7B-86627DFF136F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {05D8BAFE-64FA-4F09-AC7B-86627DFF136F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {05D8BAFE-64FA-4F09-AC7B-86627DFF136F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {33307B59-24A6-4100-9E0C-F65613FE95AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {33307B59-24A6-4100-9E0C-F65613FE95AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {33307B59-24A6-4100-9E0C-F65613FE95AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {33307B59-24A6-4100-9E0C-F65613FE95AA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FB9F6B34-05B5-444F-885E-FF87DA721F12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FB9F6B34-05B5-444F-885E-FF87DA721F12}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FB9F6B34-05B5-444F-885E-FF87DA721F12}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FB9F6B34-05B5-444F-885E-FF87DA721F12}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A05D5D7B-744A-4E62-9B38-4B5149AA955A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A05D5D7B-744A-4E62-9B38-4B5149AA955A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A05D5D7B-744A-4E62-9B38-4B5149AA955A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A05D5D7B-744A-4E62-9B38-4B5149AA955A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C1BA77F3-938B-4598-BD75-5E9578827F47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C1BA77F3-938B-4598-BD75-5E9578827F47}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C1BA77F3-938B-4598-BD75-5E9578827F47}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C1BA77F3-938B-4598-BD75-5E9578827F47}.Release|Any CPU.Build.0 = Release|Any CPU
+               {ADF802C8-DED6-4991-A5AE-34B8F1440EE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {ADF802C8-DED6-4991-A5AE-34B8F1440EE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {ADF802C8-DED6-4991-A5AE-34B8F1440EE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {ADF802C8-DED6-4991-A5AE-34B8F1440EE4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {EB9696AB-2203-48F1-92B4-86BD28340248}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {EB9696AB-2203-48F1-92B4-86BD28340248}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {EB9696AB-2203-48F1-92B4-86BD28340248}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {EB9696AB-2203-48F1-92B4-86BD28340248}.Release|Any CPU.Build.0 = Release|Any CPU
+               {704ADB45-E58F-432D-955A-69E3B5DDEE77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {704ADB45-E58F-432D-955A-69E3B5DDEE77}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {704ADB45-E58F-432D-955A-69E3B5DDEE77}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {704ADB45-E58F-432D-955A-69E3B5DDEE77}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9A7E3AA8-1EB4-4A43-A806-636E6B220A76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9A7E3AA8-1EB4-4A43-A806-636E6B220A76}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9A7E3AA8-1EB4-4A43-A806-636E6B220A76}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9A7E3AA8-1EB4-4A43-A806-636E6B220A76}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1A3E2D13-1CE7-43CB-9748-9C7D586A897F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1A3E2D13-1CE7-43CB-9748-9C7D586A897F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1A3E2D13-1CE7-43CB-9748-9C7D586A897F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1A3E2D13-1CE7-43CB-9748-9C7D586A897F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {AC2AB4A1-8005-4458-8B2B-614DA9BBC644}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {AC2AB4A1-8005-4458-8B2B-614DA9BBC644}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {AC2AB4A1-8005-4458-8B2B-614DA9BBC644}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {AC2AB4A1-8005-4458-8B2B-614DA9BBC644}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D8A2B8F2-F52B-44D5-A868-C344682749E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D8A2B8F2-F52B-44D5-A868-C344682749E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D8A2B8F2-F52B-44D5-A868-C344682749E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D8A2B8F2-F52B-44D5-A868-C344682749E2}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E34212A3-F152-4A6F-88F7-7A4D0324D11C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E34212A3-F152-4A6F-88F7-7A4D0324D11C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E34212A3-F152-4A6F-88F7-7A4D0324D11C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E34212A3-F152-4A6F-88F7-7A4D0324D11C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {47FD8F07-F207-478D-B9D7-4CE5DC4A52B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {47FD8F07-F207-478D-B9D7-4CE5DC4A52B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {47FD8F07-F207-478D-B9D7-4CE5DC4A52B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {47FD8F07-F207-478D-B9D7-4CE5DC4A52B6}.Release|Any CPU.Build.0 = Release|Any CPU
+               {B1643A3E-B53E-4264-8CA3-27533EF662CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B1643A3E-B53E-4264-8CA3-27533EF662CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B1643A3E-B53E-4264-8CA3-27533EF662CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B1643A3E-B53E-4264-8CA3-27533EF662CB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2E8547F9-AE9C-4179-BC88-C0695369170B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2E8547F9-AE9C-4179-BC88-C0695369170B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2E8547F9-AE9C-4179-BC88-C0695369170B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2E8547F9-AE9C-4179-BC88-C0695369170B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {10779E1B-BD7F-4FE1-81BB-E4EE8BAA0B83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {10779E1B-BD7F-4FE1-81BB-E4EE8BAA0B83}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {10779E1B-BD7F-4FE1-81BB-E4EE8BAA0B83}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {10779E1B-BD7F-4FE1-81BB-E4EE8BAA0B83}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E0DEF2F1-BC80-48E8-8387-13CC5B03BE5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E0DEF2F1-BC80-48E8-8387-13CC5B03BE5B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E0DEF2F1-BC80-48E8-8387-13CC5B03BE5B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E0DEF2F1-BC80-48E8-8387-13CC5B03BE5B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C60066A8-6929-44CD-BD9F-4556AFFC0087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C60066A8-6929-44CD-BD9F-4556AFFC0087}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C60066A8-6929-44CD-BD9F-4556AFFC0087}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C60066A8-6929-44CD-BD9F-4556AFFC0087}.Release|Any CPU.Build.0 = Release|Any CPU
+               {875503E2-28DA-4301-99D4-9A897BDC06F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {875503E2-28DA-4301-99D4-9A897BDC06F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {875503E2-28DA-4301-99D4-9A897BDC06F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {875503E2-28DA-4301-99D4-9A897BDC06F1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C776055D-B157-4022-8926-DC1DCE41832F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C776055D-B157-4022-8926-DC1DCE41832F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C776055D-B157-4022-8926-DC1DCE41832F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C776055D-B157-4022-8926-DC1DCE41832F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C18ABE89-33D2-4780-93BE-AB89B8187581}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C18ABE89-33D2-4780-93BE-AB89B8187581}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C18ABE89-33D2-4780-93BE-AB89B8187581}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C18ABE89-33D2-4780-93BE-AB89B8187581}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CE2E44C6-7B7F-43BB-992D-44749DFA7D71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CE2E44C6-7B7F-43BB-992D-44749DFA7D71}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CE2E44C6-7B7F-43BB-992D-44749DFA7D71}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CE2E44C6-7B7F-43BB-992D-44749DFA7D71}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DD189B9C-5CB4-4CB8-988C-90C36AB0BDA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DD189B9C-5CB4-4CB8-988C-90C36AB0BDA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DD189B9C-5CB4-4CB8-988C-90C36AB0BDA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DD189B9C-5CB4-4CB8-988C-90C36AB0BDA2}.Release|Any CPU.Build.0 = Release|Any CPU
+               {6D34CFEC-13B9-4E34-A253-CE4E46322542}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {6D34CFEC-13B9-4E34-A253-CE4E46322542}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {6D34CFEC-13B9-4E34-A253-CE4E46322542}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6D34CFEC-13B9-4E34-A253-CE4E46322542}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FD8BB787-B115-4DED-ACB0-2858546FC16D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FD8BB787-B115-4DED-ACB0-2858546FC16D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FD8BB787-B115-4DED-ACB0-2858546FC16D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FD8BB787-B115-4DED-ACB0-2858546FC16D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {42F035A7-4FCD-4526-9D82-E7D3D4350AC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {42F035A7-4FCD-4526-9D82-E7D3D4350AC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {42F035A7-4FCD-4526-9D82-E7D3D4350AC1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {42F035A7-4FCD-4526-9D82-E7D3D4350AC1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D80FD091-3F53-4879-B0BB-08897139CF97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D80FD091-3F53-4879-B0BB-08897139CF97}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D80FD091-3F53-4879-B0BB-08897139CF97}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D80FD091-3F53-4879-B0BB-08897139CF97}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}.Release|Any CPU.Build.0 = Release|Any CPU
+               {83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {6A74098E-D4D5-4D6F-A673-8E95CBF8726E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {6A74098E-D4D5-4D6F-A673-8E95CBF8726E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {6A74098E-D4D5-4D6F-A673-8E95CBF8726E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6A74098E-D4D5-4D6F-A673-8E95CBF8726E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {03DD638D-4D60-42BB-94D6-3C7112C62C20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {03DD638D-4D60-42BB-94D6-3C7112C62C20}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {03DD638D-4D60-42BB-94D6-3C7112C62C20}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {03DD638D-4D60-42BB-94D6-3C7112C62C20}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5462ACB9-395E-4152-8292-B24612453210}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5462ACB9-395E-4152-8292-B24612453210}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5462ACB9-395E-4152-8292-B24612453210}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5462ACB9-395E-4152-8292-B24612453210}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A12A96AC-3AAD-417A-90FB-B40573189AC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A12A96AC-3AAD-417A-90FB-B40573189AC4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A12A96AC-3AAD-417A-90FB-B40573189AC4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A12A96AC-3AAD-417A-90FB-B40573189AC4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {6E6F15CD-2244-4DD8-AD9E-02FECE17DB0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {6E6F15CD-2244-4DD8-AD9E-02FECE17DB0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {6E6F15CD-2244-4DD8-AD9E-02FECE17DB0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6E6F15CD-2244-4DD8-AD9E-02FECE17DB0D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {36C5B564-9E57-4DD3-ADA4-4EC79402B02E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {36C5B564-9E57-4DD3-ADA4-4EC79402B02E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {36C5B564-9E57-4DD3-ADA4-4EC79402B02E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {36C5B564-9E57-4DD3-ADA4-4EC79402B02E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {68AE2077-862E-4351-A159-D3CD817059CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {68AE2077-862E-4351-A159-D3CD817059CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {68AE2077-862E-4351-A159-D3CD817059CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {68AE2077-862E-4351-A159-D3CD817059CF}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A7DB00D7-81EF-4197-9F87-D6EBDFDBD88E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A7DB00D7-81EF-4197-9F87-D6EBDFDBD88E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A7DB00D7-81EF-4197-9F87-D6EBDFDBD88E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A7DB00D7-81EF-4197-9F87-D6EBDFDBD88E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4D33E714-F07E-44AC-9998-705170E29818}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4D33E714-F07E-44AC-9998-705170E29818}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4D33E714-F07E-44AC-9998-705170E29818}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4D33E714-F07E-44AC-9998-705170E29818}.Release|Any CPU.Build.0 = Release|Any CPU
+               {05D23556-E085-4A30-A6AF-8F39651CA284}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {05D23556-E085-4A30-A6AF-8F39651CA284}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {05D23556-E085-4A30-A6AF-8F39651CA284}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {05D23556-E085-4A30-A6AF-8F39651CA284}.Release|Any CPU.Build.0 = Release|Any CPU
+               {90405849-4C66-4BF7-B9F6-E0D81995231B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {90405849-4C66-4BF7-B9F6-E0D81995231B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {90405849-4C66-4BF7-B9F6-E0D81995231B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {90405849-4C66-4BF7-B9F6-E0D81995231B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FCB4DC7D-7B4C-4BD6-98CA-4F5AA08CB18B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FCB4DC7D-7B4C-4BD6-98CA-4F5AA08CB18B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FCB4DC7D-7B4C-4BD6-98CA-4F5AA08CB18B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FCB4DC7D-7B4C-4BD6-98CA-4F5AA08CB18B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A0CB0E7E-B383-4EE6-A7B8-E553318C3DBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A0CB0E7E-B383-4EE6-A7B8-E553318C3DBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A0CB0E7E-B383-4EE6-A7B8-E553318C3DBE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A0CB0E7E-B383-4EE6-A7B8-E553318C3DBE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5E2117E9-A72D-4842-AD28-87FE0AAF5417}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5E2117E9-A72D-4842-AD28-87FE0AAF5417}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5E2117E9-A72D-4842-AD28-87FE0AAF5417}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5E2117E9-A72D-4842-AD28-87FE0AAF5417}.Release|Any CPU.Build.0 = Release|Any CPU
+               {46C0366B-72E7-4482-A6C4-4C8CE8318BDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {46C0366B-72E7-4482-A6C4-4C8CE8318BDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {46C0366B-72E7-4482-A6C4-4C8CE8318BDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {46C0366B-72E7-4482-A6C4-4C8CE8318BDA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {AAE2ADEF-2160-40D7-B7E4-37C96ADBAC8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {AAE2ADEF-2160-40D7-B7E4-37C96ADBAC8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {AAE2ADEF-2160-40D7-B7E4-37C96ADBAC8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {AAE2ADEF-2160-40D7-B7E4-37C96ADBAC8C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {82B719BA-7803-4832-B837-42928A0E1CEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {82B719BA-7803-4832-B837-42928A0E1CEB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {82B719BA-7803-4832-B837-42928A0E1CEB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {82B719BA-7803-4832-B837-42928A0E1CEB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8A83591A-6906-48BF-BB8E-1515D264B2D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8A83591A-6906-48BF-BB8E-1515D264B2D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8A83591A-6906-48BF-BB8E-1515D264B2D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8A83591A-6906-48BF-BB8E-1515D264B2D7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5FA3AE70-F92C-4D4E-80A6-2B7BD55655BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5FA3AE70-F92C-4D4E-80A6-2B7BD55655BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5FA3AE70-F92C-4D4E-80A6-2B7BD55655BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5FA3AE70-F92C-4D4E-80A6-2B7BD55655BB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {BE71D058-35CB-4623-AA66-631C7EB5F139}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {BE71D058-35CB-4623-AA66-631C7EB5F139}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {BE71D058-35CB-4623-AA66-631C7EB5F139}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {BE71D058-35CB-4623-AA66-631C7EB5F139}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7F42459F-0D03-42BF-BC81-7EDF54F78C05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7F42459F-0D03-42BF-BC81-7EDF54F78C05}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7F42459F-0D03-42BF-BC81-7EDF54F78C05}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7F42459F-0D03-42BF-BC81-7EDF54F78C05}.Release|Any CPU.Build.0 = Release|Any CPU
+               {36096AD5-68E4-46E0-B9A0-FC29DBCC9B15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {36096AD5-68E4-46E0-B9A0-FC29DBCC9B15}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {36096AD5-68E4-46E0-B9A0-FC29DBCC9B15}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {36096AD5-68E4-46E0-B9A0-FC29DBCC9B15}.Release|Any CPU.Build.0 = Release|Any CPU
+               {030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0089F43D-5A83-46A4-9299-A98B0A86A70A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0089F43D-5A83-46A4-9299-A98B0A86A70A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0089F43D-5A83-46A4-9299-A98B0A86A70A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0089F43D-5A83-46A4-9299-A98B0A86A70A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E9421151-F425-415F-8D32-5F28974E3C72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E9421151-F425-415F-8D32-5F28974E3C72}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E9421151-F425-415F-8D32-5F28974E3C72}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E9421151-F425-415F-8D32-5F28974E3C72}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7A8432CA-9024-4496-A751-18AEFC8932E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7A8432CA-9024-4496-A751-18AEFC8932E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7A8432CA-9024-4496-A751-18AEFC8932E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7A8432CA-9024-4496-A751-18AEFC8932E7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3DB9B990-AE64-4B64-8A75-3797970AF64A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3DB9B990-AE64-4B64-8A75-3797970AF64A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3DB9B990-AE64-4B64-8A75-3797970AF64A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3DB9B990-AE64-4B64-8A75-3797970AF64A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9BDDA23D-1ABF-477A-AAA6-CD489033208E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9BDDA23D-1ABF-477A-AAA6-CD489033208E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9BDDA23D-1ABF-477A-AAA6-CD489033208E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9BDDA23D-1ABF-477A-AAA6-CD489033208E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9E5FB1DD-0691-445E-8048-C90981B6948D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9E5FB1DD-0691-445E-8048-C90981B6948D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9E5FB1DD-0691-445E-8048-C90981B6948D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9E5FB1DD-0691-445E-8048-C90981B6948D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {00562AD9-16A9-4A82-8236-9FFCC0FC9B26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {00562AD9-16A9-4A82-8236-9FFCC0FC9B26}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {00562AD9-16A9-4A82-8236-9FFCC0FC9B26}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {00562AD9-16A9-4A82-8236-9FFCC0FC9B26}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7AC4183B-FA37-45D9-9069-47336EB37D0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7AC4183B-FA37-45D9-9069-47336EB37D0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7AC4183B-FA37-45D9-9069-47336EB37D0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7AC4183B-FA37-45D9-9069-47336EB37D0A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2D2DDD2D-5AE7-458B-B626-4475D671A7F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2D2DDD2D-5AE7-458B-B626-4475D671A7F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2D2DDD2D-5AE7-458B-B626-4475D671A7F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2D2DDD2D-5AE7-458B-B626-4475D671A7F9}.Release|Any CPU.Build.0 = Release|Any CPU
+               {61E5E4CF-E818-44D1-B718-70EE46F2B85D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {61E5E4CF-E818-44D1-B718-70EE46F2B85D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {61E5E4CF-E818-44D1-B718-70EE46F2B85D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {61E5E4CF-E818-44D1-B718-70EE46F2B85D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {BB5DAECF-1B34-480C-B8EC-C1DAEEE56B89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {BB5DAECF-1B34-480C-B8EC-C1DAEEE56B89}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {BB5DAECF-1B34-480C-B8EC-C1DAEEE56B89}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {BB5DAECF-1B34-480C-B8EC-C1DAEEE56B89}.Release|Any CPU.Build.0 = Release|Any CPU
+               {75C86F9F-5D58-4DDE-AADE-362D15CD395A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {75C86F9F-5D58-4DDE-AADE-362D15CD395A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {75C86F9F-5D58-4DDE-AADE-362D15CD395A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {75C86F9F-5D58-4DDE-AADE-362D15CD395A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FD39D99F-0489-4AA5-990D-46A03BB78A1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FD39D99F-0489-4AA5-990D-46A03BB78A1A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FD39D99F-0489-4AA5-990D-46A03BB78A1A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FD39D99F-0489-4AA5-990D-46A03BB78A1A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D5662433-D835-47CA-BA45-E186255D48EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D5662433-D835-47CA-BA45-E186255D48EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D5662433-D835-47CA-BA45-E186255D48EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D5662433-D835-47CA-BA45-E186255D48EB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FE15E8BF-7546-4A4E-AD88-55AED8C3CBB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FE15E8BF-7546-4A4E-AD88-55AED8C3CBB3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FE15E8BF-7546-4A4E-AD88-55AED8C3CBB3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FE15E8BF-7546-4A4E-AD88-55AED8C3CBB3}.Release|Any CPU.Build.0 = Release|Any CPU
+               {EDE6E598-F2C2-4E50-8D2C-F9EE48DD52BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {EDE6E598-F2C2-4E50-8D2C-F9EE48DD52BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {EDE6E598-F2C2-4E50-8D2C-F9EE48DD52BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {EDE6E598-F2C2-4E50-8D2C-F9EE48DD52BE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {449CB31C-BD0B-4350-A82A-D0F4EE76F1C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {449CB31C-BD0B-4350-A82A-D0F4EE76F1C8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {449CB31C-BD0B-4350-A82A-D0F4EE76F1C8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {449CB31C-BD0B-4350-A82A-D0F4EE76F1C8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FC137D2C-3EE5-4DDC-8BE8-17DCCC4624DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FC137D2C-3EE5-4DDC-8BE8-17DCCC4624DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FC137D2C-3EE5-4DDC-8BE8-17DCCC4624DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FC137D2C-3EE5-4DDC-8BE8-17DCCC4624DC}.Release|Any CPU.Build.0 = Release|Any CPU
+               {06851BAA-6E25-4DEA-87E6-93D5BE894976}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {06851BAA-6E25-4DEA-87E6-93D5BE894976}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {06851BAA-6E25-4DEA-87E6-93D5BE894976}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {06851BAA-6E25-4DEA-87E6-93D5BE894976}.Release|Any CPU.Build.0 = Release|Any CPU
+               {86450EE5-13B2-4F59-8C0B-13EEF614ED79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {86450EE5-13B2-4F59-8C0B-13EEF614ED79}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {86450EE5-13B2-4F59-8C0B-13EEF614ED79}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {86450EE5-13B2-4F59-8C0B-13EEF614ED79}.Release|Any CPU.Build.0 = Release|Any CPU
+               {41BDC045-34C4-490C-A7B7-C826689DE03F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {41BDC045-34C4-490C-A7B7-C826689DE03F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {41BDC045-34C4-490C-A7B7-C826689DE03F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {41BDC045-34C4-490C-A7B7-C826689DE03F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {EC155D19-0F07-4ED0-BB51-A1792B4AF2EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {EC155D19-0F07-4ED0-BB51-A1792B4AF2EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {EC155D19-0F07-4ED0-BB51-A1792B4AF2EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {EC155D19-0F07-4ED0-BB51-A1792B4AF2EC}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D8AD74BA-B169-400B-89EE-BC64E04E5A88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D8AD74BA-B169-400B-89EE-BC64E04E5A88}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D8AD74BA-B169-400B-89EE-BC64E04E5A88}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D8AD74BA-B169-400B-89EE-BC64E04E5A88}.Release|Any CPU.Build.0 = Release|Any CPU
+               {41117A9D-0DAC-42F2-BBB7-44621610838F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {41117A9D-0DAC-42F2-BBB7-44621610838F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {41117A9D-0DAC-42F2-BBB7-44621610838F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {41117A9D-0DAC-42F2-BBB7-44621610838F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F7093FF5-BB89-471B-83F6-509C7B32360D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F7093FF5-BB89-471B-83F6-509C7B32360D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F7093FF5-BB89-471B-83F6-509C7B32360D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F7093FF5-BB89-471B-83F6-509C7B32360D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2BD41344-9F19-4972-B3A7-6CAA80E60F1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2BD41344-9F19-4972-B3A7-6CAA80E60F1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2BD41344-9F19-4972-B3A7-6CAA80E60F1F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2BD41344-9F19-4972-B3A7-6CAA80E60F1F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8C685929-4B19-408E-975E-D14039889A7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8C685929-4B19-408E-975E-D14039889A7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8C685929-4B19-408E-975E-D14039889A7A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8C685929-4B19-408E-975E-D14039889A7A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C27D0C3E-DD75-4E27-B70A-50D9DF48ECC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C27D0C3E-DD75-4E27-B70A-50D9DF48ECC0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C27D0C3E-DD75-4E27-B70A-50D9DF48ECC0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C27D0C3E-DD75-4E27-B70A-50D9DF48ECC0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {708A9F7F-4511-4AA3-A35E-3C9FB945E103}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {708A9F7F-4511-4AA3-A35E-3C9FB945E103}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {708A9F7F-4511-4AA3-A35E-3C9FB945E103}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {708A9F7F-4511-4AA3-A35E-3C9FB945E103}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1FE96A47-EA1F-4043-95C0-9A511AA095D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1FE96A47-EA1F-4043-95C0-9A511AA095D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1FE96A47-EA1F-4043-95C0-9A511AA095D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1FE96A47-EA1F-4043-95C0-9A511AA095D7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2A9DFBB5-AE84-489E-BD5C-19A721461836}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2A9DFBB5-AE84-489E-BD5C-19A721461836}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2A9DFBB5-AE84-489E-BD5C-19A721461836}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2A9DFBB5-AE84-489E-BD5C-19A721461836}.Release|Any CPU.Build.0 = Release|Any CPU
+               {20594AA3-D09B-4751-93B6-16AED2B965BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {20594AA3-D09B-4751-93B6-16AED2B965BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {20594AA3-D09B-4751-93B6-16AED2B965BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {20594AA3-D09B-4751-93B6-16AED2B965BC}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9B796831-5CFB-4783-9CB6-56ABE02AA4B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9B796831-5CFB-4783-9CB6-56ABE02AA4B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9B796831-5CFB-4783-9CB6-56ABE02AA4B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9B796831-5CFB-4783-9CB6-56ABE02AA4B4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0153FD8E-87C1-4828-BA17-5DCE9ACEF3A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0153FD8E-87C1-4828-BA17-5DCE9ACEF3A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0153FD8E-87C1-4828-BA17-5DCE9ACEF3A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0153FD8E-87C1-4828-BA17-5DCE9ACEF3A2}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DEA6829A-AAAA-4927-8C14-C6B22F4E875E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DEA6829A-AAAA-4927-8C14-C6B22F4E875E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DEA6829A-AAAA-4927-8C14-C6B22F4E875E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DEA6829A-AAAA-4927-8C14-C6B22F4E875E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A5E05FB9-6ACC-49B1-86DE-233378C8A616}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A5E05FB9-6ACC-49B1-86DE-233378C8A616}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A5E05FB9-6ACC-49B1-86DE-233378C8A616}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A5E05FB9-6ACC-49B1-86DE-233378C8A616}.Release|Any CPU.Build.0 = Release|Any CPU
+               {33772F45-1E93-4C47-87CD-74B75C304345}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {33772F45-1E93-4C47-87CD-74B75C304345}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {33772F45-1E93-4C47-87CD-74B75C304345}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {33772F45-1E93-4C47-87CD-74B75C304345}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FA366919-E9AA-4B3B-BEE0-753010021EBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FA366919-E9AA-4B3B-BEE0-753010021EBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FA366919-E9AA-4B3B-BEE0-753010021EBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FA366919-E9AA-4B3B-BEE0-753010021EBC}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C06DBBA4-D7A1-4B22-A513-A670C489392C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C06DBBA4-D7A1-4B22-A513-A670C489392C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C06DBBA4-D7A1-4B22-A513-A670C489392C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C06DBBA4-D7A1-4B22-A513-A670C489392C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F4225D55-F85F-41CF-B886-2EA80BC621C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F4225D55-F85F-41CF-B886-2EA80BC621C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F4225D55-F85F-41CF-B886-2EA80BC621C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F4225D55-F85F-41CF-B886-2EA80BC621C7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8ABEAF4B-A0E4-486D-8DEA-F8F1A1B13835}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8ABEAF4B-A0E4-486D-8DEA-F8F1A1B13835}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8ABEAF4B-A0E4-486D-8DEA-F8F1A1B13835}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8ABEAF4B-A0E4-486D-8DEA-F8F1A1B13835}.Release|Any CPU.Build.0 = Release|Any CPU
+               {B23EA10F-1BAC-46D0-AFAD-F8E87F9BF5EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B23EA10F-1BAC-46D0-AFAD-F8E87F9BF5EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B23EA10F-1BAC-46D0-AFAD-F8E87F9BF5EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B23EA10F-1BAC-46D0-AFAD-F8E87F9BF5EB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {202B203B-093C-4C40-B4FA-950CE4F138E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {202B203B-093C-4C40-B4FA-950CE4F138E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {202B203B-093C-4C40-B4FA-950CE4F138E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {202B203B-093C-4C40-B4FA-950CE4F138E7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4F627E32-59E1-4560-9254-A5F6AEEA49D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4F627E32-59E1-4560-9254-A5F6AEEA49D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4F627E32-59E1-4560-9254-A5F6AEEA49D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4F627E32-59E1-4560-9254-A5F6AEEA49D0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F5C32B79-74F0-452C-9DA4-3010910DA071}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F5C32B79-74F0-452C-9DA4-3010910DA071}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F5C32B79-74F0-452C-9DA4-3010910DA071}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F5C32B79-74F0-452C-9DA4-3010910DA071}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A435BDB8-2601-4D5B-AD78-7E5575E1DD37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A435BDB8-2601-4D5B-AD78-7E5575E1DD37}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A435BDB8-2601-4D5B-AD78-7E5575E1DD37}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A435BDB8-2601-4D5B-AD78-7E5575E1DD37}.Release|Any CPU.Build.0 = Release|Any CPU
+               {B979CA0D-CF48-4A33-AC27-FC8CC12E009D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B979CA0D-CF48-4A33-AC27-FC8CC12E009D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B979CA0D-CF48-4A33-AC27-FC8CC12E009D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B979CA0D-CF48-4A33-AC27-FC8CC12E009D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {06EB86BE-A440-44C2-B11E-9C2A05CD9DAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {06EB86BE-A440-44C2-B11E-9C2A05CD9DAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {06EB86BE-A440-44C2-B11E-9C2A05CD9DAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {06EB86BE-A440-44C2-B11E-9C2A05CD9DAB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8D758ECB-8294-41E7-A239-B31194C7FD4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8D758ECB-8294-41E7-A239-B31194C7FD4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8D758ECB-8294-41E7-A239-B31194C7FD4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8D758ECB-8294-41E7-A239-B31194C7FD4D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A1AE0E86-573D-4B50-8078-3EB8744924C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A1AE0E86-573D-4B50-8078-3EB8744924C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A1AE0E86-573D-4B50-8078-3EB8744924C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A1AE0E86-573D-4B50-8078-3EB8744924C7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DDCB4935-5269-4DFB-9B7B-D01655DDC29C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DDCB4935-5269-4DFB-9B7B-D01655DDC29C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DDCB4935-5269-4DFB-9B7B-D01655DDC29C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DDCB4935-5269-4DFB-9B7B-D01655DDC29C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C08613F0-C5E5-4FF2-A8F0-516BA0B39688}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C08613F0-C5E5-4FF2-A8F0-516BA0B39688}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C08613F0-C5E5-4FF2-A8F0-516BA0B39688}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C08613F0-C5E5-4FF2-A8F0-516BA0B39688}.Release|Any CPU.Build.0 = Release|Any CPU
+               {60725AA0-76C0-46AA-9E9A-793D5EB671F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {60725AA0-76C0-46AA-9E9A-793D5EB671F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {60725AA0-76C0-46AA-9E9A-793D5EB671F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {60725AA0-76C0-46AA-9E9A-793D5EB671F8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F3509D69-1160-463A-8607-68E5E34EC5F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F3509D69-1160-463A-8607-68E5E34EC5F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F3509D69-1160-463A-8607-68E5E34EC5F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F3509D69-1160-463A-8607-68E5E34EC5F5}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9933A0E4-D6A6-465B-814A-4B2E1860C931}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9933A0E4-D6A6-465B-814A-4B2E1860C931}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9933A0E4-D6A6-465B-814A-4B2E1860C931}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9933A0E4-D6A6-465B-814A-4B2E1860C931}.Release|Any CPU.Build.0 = Release|Any CPU
+               {EEA0DCB3-83BF-4BCF-BF77-5A43E289945A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {EEA0DCB3-83BF-4BCF-BF77-5A43E289945A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {EEA0DCB3-83BF-4BCF-BF77-5A43E289945A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {EEA0DCB3-83BF-4BCF-BF77-5A43E289945A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A0351AB5-FB39-49C2-9A16-856E3CE38288}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A0351AB5-FB39-49C2-9A16-856E3CE38288}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A0351AB5-FB39-49C2-9A16-856E3CE38288}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A0351AB5-FB39-49C2-9A16-856E3CE38288}.Release|Any CPU.Build.0 = Release|Any CPU
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
index 631a9aaa1d19c81b3b7f1de01946bf03f3390dd6..e5fdc5ad3a2ac9a0d7ce30c0631ca82651b58139 100644 (file)
@@ -28,7 +28,7 @@
       <library_output>./../../class/lib/basic/tmp/System.dll</library_output>
       <fx_version>2.0</fx_version>
       <profile>basic</profile>
-      <response>System.dll.sources</response>
+      <response>./../../build/deps/basic_System.dll.sources</response>
     </project>
     <project dir="class/System.XML" library="System.Xml-basic">
       <boot>true</boot>
@@ -48,7 +48,7 @@
       <library_output>./../../class/lib/basic/tmp/System.dll</library_output>
       <fx_version>2.0</fx_version>
       <profile>basic</profile>
-      <response>System.dll.sources</response>
+      <response>./../../build/deps/basic_System.dll.sources</response>
     </project>
     <project dir="class/Mono.Security" library="Mono.Security-basic">
       <boot>true</boot>
     </project>
     <project dir="class/corlib" library="corlib-tests-net_2_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618 -d:INSIDE_CORLIB -d:LIBC -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -debug -optimize -r:./../../class/lib/net_2_0/mscorlib.dll -debug+ -debug:full -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll -define:MONO_DATACONVERTER_STATIC_METHODS</flags>
+      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618 -d:INSIDE_CORLIB -d:LIBC -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -debug -optimize -r:./../../class/lib/net_2_0/mscorlib.dll -debug -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll -define:MONO_DATACONVERTER_STATIC_METHODS -resource:Test/resources/Resources.resources</flags>
       <output>corlib_test_net_2_0.dll</output>
       <built_sources></built_sources>
       <library_output>corlib_test_net_2_0.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_2_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_2_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_2_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_2_0/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_2_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_2_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_2_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_2_0.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_2_0.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_2_0-1">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_2_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_2_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_2_0/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_2_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_2_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_2_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_2_0.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_2_0.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_2_0-2">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_2_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_2_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_2_0/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_2_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_2_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_2_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_2_0.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_2_0.dll</library_output>
     </project>
     <project dir="class/System.Net" library="System.Net-net_2_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -unsafe -r:System.dll -r:System.Core.dll -r:System.Xml.dll -d:NET_2_1 -d:NET_2_0 -d:NET_1_1 -d:NET_3_5 -nowarn:1720</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -unsafe -r:System.dll -r:System.Core.dll -r:System.Xml.dll -d:NET_3_5 -nowarn:1720</flags>
       <output>System.Net.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_2_0/System.Net.dll</library_output>
     </project>
     <project dir="tools/mkbundle" library="mkbundle-net_2_0">
       <boot></boot>
-      <flags>/codepage:65001 -r:Mono.Posix.dll -r:ICSharpCode.SharpZipLib.dll -resource:template.c -resource:template_z.c -resource:template_main.c -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <flags>/codepage:65001 -resource:template.c -resource:template_z.c -resource:template_main.c -d:STATIC,NO_SYMBOL_WRITER,NO_AUTHENTICODE -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig</flags>
       <output>mkbundle.exe</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_2_0/mkbundle.exe</library_output>
     </project>
     <project dir="class/corlib" library="corlib-tests-net_4_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618 -d:INSIDE_CORLIB -d:LIBC -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -optimize -r:./../../class/lib/net_4_0/mscorlib.dll -debug+ -debug:full -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll -define:MONO_DATACONVERTER_STATIC_METHODS</flags>
+      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618 -d:INSIDE_CORLIB -d:LIBC -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -optimize -r:./../../class/lib/net_4_0/mscorlib.dll -debug -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll -define:MONO_DATACONVERTER_STATIC_METHODS -resource:Test/resources/Resources.resources</flags>
       <output>corlib_test_net_4_0.dll</output>
       <built_sources></built_sources>
       <library_output>corlib_test_net_4_0.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_4_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_0/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_4_0.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_4_0.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_4_0-1">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_0/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_4_0.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_4_0.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_4_0-2">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_0/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_4_0.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_4_0.dll</library_output>
     </project>
     <project dir="class/System.Net" library="System.Net-net_4_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -unsafe -r:System.dll -r:System.Core.dll -r:System.Xml.dll -d:NET_2_1 -d:NET_2_0 -d:NET_1_1 -d:NET_3_5 -nowarn:1720</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -unsafe -r:System.dll -r:System.Core.dll -r:System.Xml.dll -d:NET_3_5 -nowarn:1720</flags>
       <output>System.Net.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_0/System.Net.dll</library_output>
     </project>
     <project dir="class/monodoc" library="monodoc-tests-net_4_0">
       <boot>false</boot>
-      <flags>/codepage:65001 /nowarn:618,612,672,809 /define:LEGACY_MODE -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/monodoc.dll /r:System.Core.dll /r:System.Xml.dll</flags>
+      <flags>/codepage:65001 /nowarn:618,612,672,809 /define:LEGACY_MODE -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/monodoc.dll /r:System.dll /r:System.Core.dll /r:System.Xml.dll</flags>
       <output>monodoc_test_net_4_0.dll</output>
       <built_sources></built_sources>
       <library_output>monodoc_test_net_4_0.dll</library_output>
     </project>
     <project dir="class/corlib" library="corlib-tests-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618 -d:INSIDE_CORLIB -d:LIBC -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -debug -optimize -r:./../../class/lib/net_4_5/mscorlib.dll -debug+ -debug:full -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll -define:MONO_DATACONVERTER_STATIC_METHODS</flags>
+      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618 -d:INSIDE_CORLIB -d:LIBC -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -debug -optimize -r:./../../class/lib/net_4_5/mscorlib.dll -debug -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll -define:MONO_DATACONVERTER_STATIC_METHODS -resource:Test/resources/Resources.resources</flags>
       <output>corlib_test_net_4_5.dll</output>
       <built_sources></built_sources>
       <library_output>corlib_test_net_4_5.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_5/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_5/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_4_5.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_4_5.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_4_5-1">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_5/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_5/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_4_5.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_4_5.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_4_5-2">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_5/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_5/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_4_5.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_4_5.dll</library_output>
     </project>
     <project dir="class/System.Net" library="System.Net-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -unsafe -r:System.dll -r:System.Core.dll -r:System.Xml.dll -d:NET_2_1 -d:NET_2_0 -d:NET_1_1 -d:NET_3_5 -nowarn:1720</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -unsafe -r:System.dll -r:System.Core.dll -r:System.Xml.dll -d:NET_3_5 -nowarn:1720</flags>
       <output>System.Net.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Net.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Interfaces" library="System.Reactive.Interfaces-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Interfaces.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Interfaces.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Core" library="System.Reactive.Core-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Core.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Core.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Linq" library="System.Reactive.Linq-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Linq.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Linq.dll</library_output>
     </project>
     <project dir="class/System.Reactive.PlatformServices" library="System.Reactive.PlatformServices-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.PlatformServices.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.PlatformServices.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Providers" library="System.Reactive.Providers-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Providers.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Providers.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Runtime.Remoting" library="System.Reactive.Runtime.Remoting-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Runtime.Remoting.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Runtime.Remoting.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Windows.Forms" library="System.Reactive.Windows.Forms-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -r:System.Windows.Forms.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -r:System.Windows.Forms.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Windows.Forms.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Windows.Forms.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Windows.Threading" library="System.Reactive.Windows.Threading-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -r:WindowsBase.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -r:WindowsBase.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Windows.Threading.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Windows.Threading.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Experimental" library="System.Reactive.Experimental-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Experimental.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Experimental.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Debugger" library="System.Reactive.Debugger-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Debugger.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Debugger.dll</library_output>
     </project>
     <project dir="class/monodoc" library="monodoc-tests-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 /nowarn:618,612,672,809 /define:LEGACY_MODE -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/monodoc.dll /r:System.Core.dll /r:System.Xml.dll</flags>
+      <flags>/codepage:65001 /nowarn:618,612,672,809 /define:LEGACY_MODE -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/monodoc.dll /r:System.dll /r:System.Core.dll /r:System.Xml.dll</flags>
       <output>monodoc_test_net_4_5.dll</output>
       <built_sources></built_sources>
       <library_output>monodoc_test_net_4_5.dll</library_output>
       <profile>net_4_5</profile>
       <response>./../../build/deps/System.Net.Http_test_net_4_5.dll.response</response>
     </project>
+    <project dir="class/System.Net.Http.WebRequest" library="System.Net.Http.WebRequest-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -r:System.Net.Http.dll -r:System.dll</flags>
+      <output>System.Net.Http.WebRequest.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../class/lib/net_4_5/System.Net.Http.WebRequest.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Net.Http.WebRequest.dll.sources</response>
+    </project>
     <project dir="class/System.Web.Razor" library="System.Web.Razor-net_4_5">
       <boot>false</boot>
       <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /warn:1 /keyfile:../winfx.pub -delaysign /r:System.dll /r:System.Core.dll /d:ASPNETWEBPAGES /resource:System.Web.Razor.Resources.RazorResources.resources /resource:System.Web.Razor.Common.CommonResources.resources</flags>
       <profile>net_4_5</profile>
       <response>System.Web.Http.SelfHost.dll.sources</response>
     </project>
+    <project dir="class/System.Web.Http.WebHost" library="">
+      <boot></boot>
+      <flags></flags>
+      <output></output>
+      <built_sources></built_sources>
+      <library_output></library_output>
+      <fx_version></fx_version>
+      <profile></profile>
+      <response></response>
+    </project>
+    <project dir="System.Web.Http.WebHost-net_4_5" library="">
+      <boot></boot>
+      <flags></flags>
+      <output></output>
+      <built_sources></built_sources>
+      <library_output></library_output>
+      <fx_version></fx_version>
+      <profile></profile>
+      <response></response>
+    </project>
     <project dir="class/EntityFramework" library="EntityFramework-net_4_5">
       <boot>false</boot>
       <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -r:System.Data.dll -r:System.Transactions.dll -r:System.Xml.Linq.dll -r:System.Configuration.dll -r:System.ComponentModel.DataAnnotations.dll -r:System.Runtime.Serialization.dll -r:System.dll -r:System.Xml.dll -r:System.Core.dll -r:Microsoft.CSharp.dll -keyfile:../ecma.pub -delaysign -warn:1 -resource:System.Data.Entity.Properties.Resources.resources -resource:System.Data.Entity.Properties.Resources.Migrate.resources -resource:System.Data.Entity.Properties.Resources.PowerShell.resources -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/System.Data.Resources.DbProviderServices.ConceptualSchemaDefinition.csdl -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/System.Data.Resources.DbProviderServices.ConceptualSchemaDefinitionVersion3.csdl -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/System.Data.Resources.ProviderServices.ProviderManifest.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.AnnotationSchema.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.CodeGenerationSchema.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.CSDLSchema_1.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.CSDLSchema_1_1.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.CSDLSchema_2.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.CSDLSchema_3.xsd -resource:System.Data.Resources.EntityStoreSchemaGenerator.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.SSDLSchema.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.SSDLSchema_2.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.SSDLSchema_3.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/MappingSpecification/System.Data.Resources.CSMSL_1.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/MappingSpecification/System.Data.Resources.CSMSL_2.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/MappingSpecification/System.Data.Resources.CSMSL_3.xsd</flags>
       <profile>net_4_5</profile>
       <response>./../../build/deps/Mono.CodeContracts_test_net_4_5.dll.response</response>
     </project>
+    <project dir="class/System.IO.Compression" library="System.IO.Compression-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.IO.Compression.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../class/lib/net_4_5/System.IO.Compression.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.IO.Compression.dll.sources</response>
+    </project>
+    <project dir="class/System.IO.Compression.FileSystem" library="System.IO.Compression.FileSystem-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System /r:System.IO.Compression.dll</flags>
+      <output>System.IO.Compression.FileSystem.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../class/lib/net_4_5/System.IO.Compression.FileSystem.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.IO.Compression.FileSystem.dll.sources</response>
+    </project>
+    <project dir="class/System.Windows" library="System.Windows-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Windows.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../class/lib/net_4_5/System.Windows.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Windows.dll.sources</response>
+    </project>
+    <project dir="class/System.Xml.Serialization" library="System.Xml.Serialization-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Xml /r:System.ServiceModel</flags>
+      <output>System.Xml.Serialization.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../class/lib/net_4_5/System.Xml.Serialization.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Xml.Serialization.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Runtime" library="System.Runtime-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System /r:System.Core /r:System.ComponentModel.Composition</flags>
+      <output>System.Runtime.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Runtime.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Runtime.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Linq" library="System.Linq-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Core /r:System</flags>
+      <output>System.Linq.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Linq.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Linq.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Xml.XmlSerializer" library="System.Xml.XmlSerializer-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Xml</flags>
+      <output>System.Xml.XmlSerializer.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Xml.XmlSerializer.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Xml.XmlSerializer.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.ServiceModel.Primitives" library="System.ServiceModel.Primitives-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.ServiceModel /r:System.Xml</flags>
+      <output>System.ServiceModel.Primitives.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.ServiceModel.Primitives.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.ServiceModel.Primitives.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Xml.ReaderWriter" library="System.Xml.ReaderWriter-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Xml</flags>
+      <output>System.Xml.ReaderWriter.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Xml.ReaderWriter.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Xml.ReaderWriter.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Diagnostics.Debug" library="System.Diagnostics.Debug-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Diagnostics.Debug.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Diagnostics.Debug.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Diagnostics.Debug.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Runtime.Extensions" library="System.Runtime.Extensions-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Runtime.Extensions.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Runtime.Extensions.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Runtime.Extensions.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Diagnostics.Tools" library="System.Diagnostics.Tools-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Diagnostics.Tools.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Diagnostics.Tools.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Diagnostics.Tools.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Collections" library="System.Collections-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System /r:System.Core</flags>
+      <output>System.Collections.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Collections.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Collections.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.ComponentModel.EventBasedAsync" library="System.ComponentModel.EventBasedAsync-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.ComponentModel.EventBasedAsync.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.ComponentModel.EventBasedAsync.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.ComponentModel.EventBasedAsync.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.ComponentModel" library="System.ComponentModel-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.ComponentModel.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.ComponentModel.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.ComponentModel.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.ObjectModel" library="System.ObjectModel-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.ObjectModel.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.ObjectModel.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.ObjectModel.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Text.RegularExpressions" library="System.Text.RegularExpressions-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Text.RegularExpressions.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Text.RegularExpressions.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Text.RegularExpressions.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Threading" library="System.Threading-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Core /r:System</flags>
+      <output>System.Threading.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Threading.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Threading.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Runtime.InteropServices" library="System.Runtime.InteropServices-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Runtime.InteropServices.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Runtime.InteropServices.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Runtime.InteropServices.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Reflection" library="System.Reflection-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Reflection.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Reflection.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Reflection.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Globalization" library="System.Globalization-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Globalization.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Globalization.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Globalization.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.IO" library="System.IO-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.IO.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.IO.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.IO.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Reflection.Primitives" library="System.Reflection.Primitives-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Reflection.Primitives.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Reflection.Primitives.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Reflection.Primitives.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Resources.ResourceManager" library="System.Resources.ResourceManager-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Resources.ResourceManager.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Resources.ResourceManager.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Resources.ResourceManager.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Security.Principal" library="System.Security.Principal-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Security.Principal.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Security.Principal.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Security.Principal.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Text.Encoding" library="System.Text.Encoding-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Text.Encoding.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Text.Encoding.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Text.Encoding.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Text.Encoding.Extensions" library="System.Text.Encoding.Extensions-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Text.Encoding.Extensions.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Text.Encoding.Extensions.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Text.Encoding.Extensions.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Linq.Queryable" library="System.Linq.Queryable-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Core /r:System</flags>
+      <output>System.Linq.Queryable.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Linq.Queryable.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Linq.Queryable.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Linq.Expressions" library="System.Linq.Expressions-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Core /r:System</flags>
+      <output>System.Linq.Expressions.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Linq.Expressions.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Linq.Expressions.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Net.Primitives" library="System.Net.Primitives-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Net.Primitives.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Net.Primitives.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Net.Primitives.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Net.Requests" library="System.Net.Requests-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Net.Requests.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Net.Requests.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Net.Requests.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Net.NetworkInformation" library="System.Net.NetworkInformation-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Net.NetworkInformation.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Net.NetworkInformation.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Net.NetworkInformation.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Runtime.Serialization.Primitives" library="System.Runtime.Serialization.Primitives-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Runtime.Serialization /r:System.Xml</flags>
+      <output>System.Runtime.Serialization.Primitives.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Runtime.Serialization.Primitives.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Runtime.Serialization.Primitives.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Runtime.Serialization.Xml" library="System.Runtime.Serialization.Xml-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Runtime.Serialization /r:System.Xml</flags>
+      <output>System.Runtime.Serialization.Xml.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Runtime.Serialization.Xml.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Runtime.Serialization.Xml.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Runtime.Serialization.Json" library="System.Runtime.Serialization.Json-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Runtime.Serialization /r:System.Xml</flags>
+      <output>System.Runtime.Serialization.Json.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Runtime.Serialization.Json.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Runtime.Serialization.Json.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.ServiceModel.Http" library="System.ServiceModel.Http-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.ServiceModel</flags>
+      <output>System.ServiceModel.Http.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.ServiceModel.Http.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.ServiceModel.Http.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Xml.XDocument" library="System.Xml.XDocument-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Xml.Linq /r:System.Xml</flags>
+      <output>System.Xml.XDocument.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Xml.XDocument.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Xml.XDocument.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Threading.Tasks" library="System.Threading.Tasks-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Core /r:System</flags>
+      <output>System.Threading.Tasks.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Threading.Tasks.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Threading.Tasks.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Diagnostics.Contracts" library="System.Diagnostics.Contracts-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Diagnostics.Contracts.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Diagnostics.Contracts.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Diagnostics.Contracts.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Dynamic.Runtime" library="System.Dynamic.Runtime-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Dynamic.Runtime.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Dynamic.Runtime.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Dynamic.Runtime.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.ComponentModel.Annotations" library="System.ComponentModel.Annotations-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.ComponentModel.DataAnnotations</flags>
+      <output>System.ComponentModel.Annotations.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.ComponentModel.Annotations.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.ComponentModel.Annotations.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Runtime.Numerics" library="System.Runtime.Numerics-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Numerics</flags>
+      <output>System.Runtime.Numerics.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Runtime.Numerics.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Runtime.Numerics.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Linq.Parallel" library="System.Linq.Parallel-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Core /r:System</flags>
+      <output>System.Linq.Parallel.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Linq.Parallel.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Linq.Parallel.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Collections.Concurrent" library="System.Collections.Concurrent-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Collections.Concurrent.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Collections.Concurrent.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Collections.Concurrent.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Threading.Tasks.Parallel" library="System.Threading.Tasks.Parallel-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Threading.Tasks.Parallel.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Threading.Tasks.Parallel.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Threading.Tasks.Parallel.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Reflection.Extensions" library="System.Reflection.Extensions-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Reflection.Extensions.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Reflection.Extensions.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Reflection.Extensions.dll.sources</response>
+    </project>
     <project dir="nunit24/NUnit.Framework/framework" library="NUnit.Framework-net_4_5">
       <boot>false</boot>
       <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Xml.dll /r:System.dll /d:StronglyNamedAssembly -warn:1</flags>
     </project>
     <project dir="tools/mkbundle" library="mkbundle-net_4_5">
       <boot></boot>
-      <flags>/codepage:65001 -r:Mono.Posix.dll -r:ICSharpCode.SharpZipLib.dll -resource:template.c -resource:template_z.c -resource:template_main.c -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <flags>/codepage:65001 -resource:template.c -resource:template_z.c -resource:template_main.c -d:STATIC,NO_SYMBOL_WRITER,NO_AUTHENTICODE -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
       <output>mkbundle.exe</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/mkbundle.exe</library_output>
diff --git a/nacl/README b/nacl/README
new file mode 100644 (file)
index 0000000..03a77ba
--- /dev/null
@@ -0,0 +1,2 @@
+Building NaCl Mono with glibc (newlib support is eliminated but should still be buildable with small effort) is complex.  Instructions live here for the adventurous: https://docs.google.com/a/google.com/document/d/1Jd_4M7mlmxF8daVbepAy_8RKYcRbhifXanRYyBKkVa4/pub
+
diff --git a/nacl/common.sh b/nacl/common.sh
new file mode 100644 (file)
index 0000000..65e7dc7
--- /dev/null
@@ -0,0 +1,217 @@
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that be
+# found in the LICENSE file.
+#
+
+set -o nounset
+set -o errexit
+
+# scripts that source this file must be run from within packages tree
+readonly SAVE_PWD=$(pwd)
+
+# Pick platform directory for compiler.
+readonly OS_NAME=$(uname -s)
+if [ $OS_NAME = "Darwin" ]; then
+  readonly OS_SUBDIR="mac"
+  readonly OS_SUBDIR_SHORT="mac"
+elif [ $OS_NAME = "Linux" ]; then
+  readonly OS_SUBDIR="linux"
+  readonly OS_SUBDIR_SHORT="linux"
+else
+  readonly OS_SUBDIR="windows"
+  readonly OS_SUBDIR_SHORT="win"
+fi
+
+readonly MACHINE=$(uname -m)
+if [ $MACHINE = "x86_64" ]; then
+  readonly TARGET_BITSIZE=${TARGET_BITSIZE:-"64"}
+  readonly HOST_BITSIZE=${HOST_BITSIZE:-"64"}
+else
+  # uname -m reports i686 on Linux and i386 on Mac
+  readonly TARGET_BITSIZE=${TARGET_BITSIZE:-"32"}
+  readonly HOST_BITSIZE=${HOST_BITSIZE:-"32"}
+fi
+
+if [ $TARGET_BITSIZE == "64" ]; then
+  readonly TARGET_BIT_PREFIX="64"
+  readonly CROSS_ID=x86_64
+else
+  readonly TARGET_BIT_PREFIX=""
+  readonly CROSS_ID=i686
+fi
+# we might want to override the detected host platform (e.g. on OSX 10.6)
+if [ $HOST_BITSIZE == "64" ]; then
+  readonly HOST_BIT_PREFIX="64"
+else
+  readonly HOST_BIT_PREFIX=""
+fi
+
+export NACL_CROSS_PREFIX=${CROSS_ID}-nacl
+export NACL_CROSS_PREFIX_DASH=${NACL_CROSS_PREFIX}-
+
+readonly NACL_NEWLIB=${NACL_NEWLIB:-"0"}
+
+if [ $NACL_NEWLIB = "1" ]; then
+  readonly NACL_SDK_BASE=${NACL_SDK_ROOT}/toolchain/${OS_SUBDIR_SHORT}_x86_newlib
+else
+case "${NACL_SDK_ROOT}" in
+*pepper_15* | *pepper_16* | *pepper_17*)
+  readonly NACL_SDK_BASE=${NACL_SDK_ROOT}/toolchain/${OS_SUBDIR_SHORT}_x86
+  ;;
+*)
+  readonly NACL_SDK_BASE=${NACL_SDK_ROOT}/toolchain/${OS_SUBDIR_SHORT}_x86_glibc
+  ;;
+esac
+fi
+
+readonly NACL_BIN_PATH=${NACL_SDK_BASE}/bin
+export NACLCC=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}gcc
+export NACLCXX=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}g++
+export NACLAR=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}ar
+export NACLRANLIB=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}ranlib
+export NACLLD=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}ld
+export NACLAS=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}as
+
+# NACL_SDK_GCC_SPECS_PATH is where nacl-gcc 'specs' file will be installed
+readonly NACL_SDK_GCC_SPECS_PATH=${NACL_SDK_BASE}/lib/gcc/x86_64-nacl/4.4.3
+
+# NACL_SDK_USR is where the headers, libraries, etc. will be installed
+readonly NACL_SDK_USR=${NACL_SDK_BASE}/${NACL_CROSS_PREFIX}/usr
+readonly NACL_SDK_USR_INCLUDE=${NACL_SDK_USR}/include
+readonly NACL_SDK_USR_LIB=${NACL_SDK_USR}/lib
+
+
+######################################################################
+# Helper functions
+######################################################################
+
+Banner() {
+  echo "######################################################################"
+  echo $*
+  echo "######################################################################"
+}
+
+
+VerifyPath() {
+  # make sure path isn't all slashes (possibly from an unset variable)
+  local PATH=$1
+  local TRIM=${PATH##/}
+  if [ ${#TRIM} -ne 0 ]; then
+    return 0
+  else
+    return 1
+  fi
+}
+
+
+ChangeDir() {
+  local NAME=$1
+  if VerifyPath ${NAME}; then
+    cd ${NAME}
+  else
+    echo "ChangeDir called with bad path."
+    exit -1
+  fi
+}
+
+
+Remove() {
+  local NAME=$1
+  if VerifyPath ${NAME}; then
+    rm -rf ${NAME}
+  else
+    echo "Remove called with bad path."
+    exit -1
+  fi
+}
+
+
+MakeDir() {
+  local NAME=$1
+  if VerifyPath ${NAME}; then
+    mkdir -p ${NAME}
+  else
+    echo "MakeDir called with bad path."
+    exit -1
+  fi
+}
+
+
+PatchSpecFile() {
+  # fix up spaces so gcc sees entire path
+  local SED_SAFE_SPACES_USR_INCLUDE=${NACL_SDK_USR_INCLUDE/ /\ /}
+  local SED_SAFE_SPACES_USR_LIB=${NACL_SDK_USR_LIB/ /\ /}
+  # have nacl-gcc dump specs file & add include & lib search paths
+  ${NACL_SDK_BASE}/bin/x86_64-nacl-gcc -dumpspecs |\
+    sed "/*cpp:/{
+      N
+      s|$| -I${SED_SAFE_SPACES_USR_INCLUDE}|
+    }" |\
+    sed "/*link_libgcc:/{
+      N
+      s|$| -L${SED_SAFE_SPACES_USR_LIB}|
+    }" >${NACL_SDK_GCC_SPECS_PATH}/specs
+}
+
+
+DefaultConfigureStep() {
+  Banner "Configuring ${PACKAGE_NAME}"
+  # export the nacl tools
+  export CC=${NACLCC}
+  export CXX=${NACLCXX}
+  export AR=${NACLAR}
+  export RANLIB=${NACLRANLIB}
+  export PKG_CONFIG_PATH=${NACL_SDK_USR_LIB}/pkgconfig
+  export PKG_CONFIG_LIBDIR=${NACL_SDK_USR_LIB}
+  export PATH=${NACL_BIN_PATH}:${PATH};
+  ChangeDir ${NACL_PACKAGES_REPOSITORY}/${PACKAGE_NAME}
+  Remove ${PACKAGE_NAME}-build
+  MakeDir ${PACKAGE_NAME}-build
+  cd ${PACKAGE_NAME}-build
+  ../configure \
+    --host=nacl \
+    --disable-shared \
+    --prefix=${NACL_SDK_USR} \
+    --exec-prefix=${NACL_SDK_USR} \
+    --libdir=${NACL_SDK_USR_LIB} \
+    --oldincludedir=${NACL_SDK_USR_INCLUDE} \
+    --with-http=off \
+    --with-html=off \
+    --with-ftp=off \
+    --with-x=no
+}
+
+
+DefaultBuildStep() {
+  # assumes pwd has makefile
+  make clean
+if [ $TARGET_BITSIZE == "64" ]; then
+  make -j8
+else
+  make
+fi
+}
+
+
+DefaultInstallStep() {
+  # assumes pwd has makefile
+  make install
+}
+
+
+DefaultCleanUpStep() {
+  PatchSpecFile
+  ChangeDir ${SAVE_PWD}
+}
+
+
+DefaultPackageInstall() {
+  DefaultPreInstallStep
+  DefaultDownloadStep
+  DefaultExtractStep
+  DefaultPatchStep
+  DefaultConfigureStep
+  DefaultBuildStep
+  DefaultInstallStep
+  DefaultCleanUpStep
+}
diff --git a/nacl/config-nacl-runtime.cache b/nacl/config-nacl-runtime.cache
new file mode 100644 (file)
index 0000000..4bd26c4
--- /dev/null
@@ -0,0 +1,19 @@
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+ac_cv_func_mmap=${ac_cv_func_mmap=no}
+ac_cv_var_timezone=${ac_cv_var_timezone=yes}
+ac_cv_host=${ac_cv_host=i686-pc-nacl}
+ac_cv_target=${ac_cv_target=i686-pc-nacl}
+ac_cv_func_backtrace_symbols=${ac_cv_func_backtrace_symbols=no}
+mono_cv_uscore=${mono_cv_uscore=no}
diff --git a/nacl/config-nacl-runtime64.cache b/nacl/config-nacl-runtime64.cache
new file mode 100644 (file)
index 0000000..b952fef
--- /dev/null
@@ -0,0 +1,19 @@
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+ac_cv_func_mmap=${ac_cv_func_mmap=no}
+ac_cv_var_timezone=${ac_cv_var_timezone=yes}
+ac_cv_host=${ac_cv_host=x86_64-pc-nacl}
+ac_cv_target=${ac_cv_target=x86_64-pc-nacl}
+ac_cv_func_backtrace_symbols=${ac_cv_func_backtrace_symbols=no}
+mono_cv_uscore=${mono_cv_uscore=no}
diff --git a/nacl/nacl-runtime-mono.sh b/nacl/nacl-runtime-mono.sh
new file mode 100755 (executable)
index 0000000..d93bb97
--- /dev/null
@@ -0,0 +1,82 @@
+#!/bin/bash
+# Copyright (c) 2009 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that be
+# found in the LICENSE file.
+#
+
+# nacl-runtime-mono.sh
+#
+# usage:  nacl-runtime-mono.sh
+#
+# this script builds mono runtime for Native Client 
+#
+
+readonly MONO_TRUNK_NACL=$(pwd)
+
+source common.sh
+
+readonly PACKAGE_NAME=runtime${TARGET_BIT_PREFIX}-build
+readonly INSTALL_PATH=${MONO_TRUNK_NACL}/naclmono-${CROSS_ID}
+
+
+CustomConfigureStep() {
+  Banner "Configuring ${PACKAGE_NAME}"
+  # export the nacl tools
+  set +e
+  if [ -f ${PACKAGE_NAME}/Makefile ]
+  then
+    cd ${PACKAGE_NAME}
+  fi
+  make distclean
+  cd ${MONO_TRUNK_NACL}
+  set -e
+  if [ $TARGET_BITSIZE == "32" ]; then
+    CONFIG_OPTS="--host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --target=i686-pc-linux-gnu"
+  else
+    CONFIG_OPTS="--host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu"
+  fi
+  # UGLY hack to allow dynamic linking
+  sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ ../configure
+  sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ ../libgc/configure
+  sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ ../eglib/configure
+  Remove ${PACKAGE_NAME}
+  MakeDir ${PACKAGE_NAME}
+  cd ${PACKAGE_NAME}
+  CC=${NACLCC} CXX=${NACLCXX} AR=${NACLAR} RANLIB=${NACLRANLIB} PKG_CONFIG_PATH=${NACL_SDK_USR_LIB}/pkgconfig LD="${NACLLD}" \
+  PKG_CONFIG_LIBDIR=${NACL_SDK_USR_LIB} PATH=${NACL_BIN_PATH}:${PATH} LIBS="-lnacl_dyncode -lc -lg -lnosys -lnacl" \
+  CFLAGS="-g -O2 -D_POSIX_PATH_MAX=256 -DPATH_MAX=256" ../../configure \
+    ${CONFIG_OPTS} \
+    --exec-prefix=${INSTALL_PATH} \
+    --libdir=${INSTALL_PATH}/lib \
+    --prefix=${INSTALL_PATH} \
+    --program-prefix="" \
+    --oldincludedir=${INSTALL_PATH}/include \
+    --with-glib=embedded \
+    --with-tls=pthread \
+    --enable-threads=posix \
+    --without-sigaltstack \
+    --without-mmap \
+    --with-gc=included \
+    --enable-nacl-gc \
+    --with-sgen=no \
+    --enable-nls=no \
+    --enable-nacl-codegen \
+    --disable-system-aot \
+    --enable-shared \
+    --disable-parallel-mark \
+    --with-static-mono=no
+
+}
+
+CustomInstallStep() {
+  make install
+}
+
+CustomPackageInstall() {
+  CustomConfigureStep
+  DefaultBuildStep
+  CustomInstallStep
+}
+
+CustomPackageInstall
+exit 0
diff --git a/nacl/nacl_interp_loader_sdk.sh b/nacl/nacl_interp_loader_sdk.sh
new file mode 100755 (executable)
index 0000000..1e4bd31
--- /dev/null
@@ -0,0 +1,56 @@
+#!/bin/bash
+# Copyright (c) 2012 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Usage: nacl_interp_loader.sh PLATFORM NEXE ARGS...
+
+# Assumes this file is sitting in the source tree.
+# This should be changed for some proper SDK installation setup.
+NACL_SDK_ROOT=${NACL_SDK_ROOT:-/path/to/naclsdk/pepper_XX}
+
+case "$1" in
+i?86)
+  arch=x86_32
+  libdir=lib32
+  ;;
+x86_64)
+  arch=x86_64
+  libdir=lib64
+  ;;
+arm|v7l)
+  arch=arm
+  libdir=lib32
+  ;;
+*)
+  echo >&2 "$0: Do not recognize architecture \"$1\""
+  exit 127
+  ;;
+esac
+
+shift
+
+case "${NACL_SDK_ROOT}" in
+*pepper_15* | *pepper_16* | *pepper_17*)
+  SEL_LDR="$NACL_SDK_ROOT/toolchain/linux_x86/bin/sel_ldr_${arch}"
+  IRT="$NACL_SDK_ROOT/toolchain/linux_x86/runtime/irt_core_${arch}.nexe"
+  RTLD="$NACL_SDK_ROOT/toolchain/linux_x86/x86_64-nacl/${libdir}/runnable-ld.so"
+  LIBDIR="$NACL_SDK_ROOT/toolchain/linux_x86/x86_64-nacl/${libdir}"
+  ;;
+*)
+  SEL_LDR="$NACL_SDK_ROOT/tools/sel_ldr_${arch}"
+  IRT="$NACL_SDK_ROOT/tools/irt_core_${arch}.nexe"
+  RTLD="$NACL_SDK_ROOT/toolchain/linux_x86_glibc/x86_64-nacl/${libdir}/runnable-ld.so"
+  LIBDIR="$NACL_SDK_ROOT/toolchain/linux_x86_glibc/x86_64-nacl/${libdir}"
+  ;;
+esac
+
+IGNORE_VALIDATOR_ARG=""
+if [ x"$NACL_IGNORE_VALIDATOR" == x"1" ]; then
+  IGNORE_VALIDATOR_ARG="-c"
+fi
+
+exec "$SEL_LDR" -E "NACL_PWD=`pwd`" -E "MONO_PATH=$MONO_PATH" \
+  -E "MONO_CFG_DIR=$MONO_CFG_DIR" -E "MONO_SHARED_DIR=$MONO_SHARED_DIR" \
+  -a $IGNORE_VALIDATOR_ARG -S -B "$IRT" -l /dev/null -- "$RTLD" \
+  --library-path $LIBDIR "$@"
index b95ad9226d4093e0a07cc742651c8dadd2ee12fe..bb22ec6bb620ae67fc1b0719d8592550db5cea4c 100644 (file)
@@ -356,6 +356,7 @@ dist distdir:
        @$(MAKE) dist2
 # This is a separate target because 'update-po' must be executed before.
 dist2: stamp-po $(DISTFILES)
+       mkdir -p $(distdir)
        dists="$(DISTFILES)"; \
        if test "$(PACKAGE)" = "gettext-tools"; then \
          dists="$$dists Makevars.template"; \
index f8d500502a3ac246de0cb38b27d37721f2425dc8..93b44b4bdc35670eea40ffebd7619e5dc8b57e17 100644 (file)
@@ -169,8 +169,12 @@ mcs-compileall: mono-wrapper etc/mono/config
            fi; done; done; \
        $$ok
 
+if NACL_CODEGEN
+check-local:
+else
 check-local: mcs-compileall mcs-do-test-profiles
        $(MAKE) $(test_select) mcs-do-run-test-profiles
+endif
 
 # Compile all mcs tests
 test: mcs-do-test-profiles
index eb6cd895921f9eaa9eec3b678180f6483d211563..18c8cb5e47b959b19d0c26b29a9f2bc42ae35cce 100644 (file)
@@ -4,4 +4,13 @@ MONO_CFG_DIR='@mono_cfg_dir@'
 PATH="$r/runtime/_tmpinst/bin:$PATH"
 MONO_SHARED_DIR=$r/runtime
 export MONO_CFG_DIR MONO_SHARED_DIR PATH
+if [ -n "@nacl_self_host@" ]; then
+  case "$@" in
+    # gacutil.exe and mdoc.exe require filesystem functionality not
+    # exposed in NaCl.
+    # mcs.exe was added to the list recently because mcs under NaCl
+    # no longer produces equivalent output. TODO: investigate
+    */mcs.exe* | */gacutil.exe* | */mdoc.exe* ) exec /usr/local/bin/mono "$@";;
+  esac
+fi
 exec "$r/libtool" --mode=execute "$r/@mono_runtime@" --config "@mono_cfg_dir@/mono/config" "$@"
index 26c3c193202509cca341368b899e5fba54fa58ec..e0273c1d06034870d066e58def44dc4f660f27c2 100644 (file)
@@ -187,19 +187,21 @@ REWRITE_COMMON = sed \
 
 REWRITE = $(REWRITE_COMMON) -e 's,@''mono_interp@,$(mono_interp),g'
 REWRITE_DEBUG = $(REWRITE_COMMON) -e 's,@''mono_interp@,$(mono_interp) --debug,g'
+REWRITE2_DEBUG = $(REWRITE_DEBUG) -e 's,@''framework_version@,2.0,g'
 
 REWRITE2 = $(REWRITE) -e 's,@''framework_version@,2.0,g'
 REWRITE2_1 = $(REWRITE) -e 's,@''framework_version@,2.1,g'
-if INSTALL_4_0
+if INSTALL_4_5
 REWRITE4 = $(REWRITE) -e 's,@''framework_version@,4.5,g'
-else
-REWRITE4 = $(REWRITE) -e 's,@''framework_version@,2.0,g'
-endif
-REWRITE2_DEBUG = $(REWRITE_DEBUG) -e 's,@''framework_version@,2.0,g'
-if INSTALL_4_0
 REWRITE4_DEBUG = $(REWRITE_DEBUG) -e 's,@''framework_version@,4.5,g'
-else
-REWRITE4_DEBUG = $(REWRITE_DEBUG) -e 's,@''framework_version@,2.0,g'
+else 
+       if INSTALL_4_0
+       REWRITE4 = $(REWRITE) -e 's,@''framework_version@,4.0,g'
+       REWRITE4_DEBUG = $(REWRITE_DEBUG) -e 's,@''framework_version@,4.0,g'
+       else
+       REWRITE4 = $(REWRITE) -e 's,@''framework_version@,2.0,g'
+       REWRITE4_DEBUG = $(REWRITE_DEBUG) -e 's,@''framework_version@,2.0,g'
+       endif
 endif
 
 peverify: peverify.in Makefile
index 1de8fc77cb7cc9d7c81e813785563d353d63f022..b24739fa686de7d203056aa7670c081f7abaab4f 100644 (file)
@@ -32,6 +32,7 @@ MPH_UNIX_SOURCE =                             \
        fstab.c                                 \
        grp.c                                   \
        macros.c                                \
+       mac-reachability.c                      \
        nl.c                                    \
        nl.h                                    \
        old-map.c                               \
@@ -43,6 +44,7 @@ MPH_UNIX_SOURCE =                             \
        sys-stat.c                              \
        sys-statvfs.c                           \
        sys-time.c                              \
+       sys-uio.c                               \
        sys-utsname.c   \
        sys-wait.c                              \
        sys-xattr.c                             \
@@ -114,6 +116,10 @@ libMonoPosixHelper_la_LIBADD =                     \
 libMonoPosixHelper_la_LDFLAGS = -no-undefined -avoid-version
 libMonoSupportW_la_LDFLAGS = -no-undefined -avoid-version
 
+if PLATFORM_DARWIN
+libMonoPosixHelper_la_LDFLAGS += -framework CoreFoundation -framework SystemConfiguration
+endif
+
 libMonoSupportW_la_SOURCES =                   \
                supportw.c                      \
                support-heap.c                  \
@@ -141,6 +147,7 @@ refresh:
        --autoconf-header="<sys/statvfs.h>"                   \
        --autoconf-header="<sys/xattr.h>"                     \
        --autoconf-header="<sys/mman.h>"                      \
+       --autoconf-header="<sys/uio.h>"                       \
        --autoconf-header="<unistd.h>"                        \
        --impl-header="<fcntl.h>"                             \
        --impl-header="<signal.h>"                            \
index 939d915d949553729d64b6e89577b9152cc3aa54..bc1b3e238e16730ad5113258b05eb174ec214b6f 100644 (file)
@@ -78,6 +78,7 @@ Mono_Posix_Syscall_readdir (void *dirp, struct Mono_Posix_Syscall__Dirent *entry
                return -1;
        }
 
+       errno = 0;
        d = readdir (dirp);
 
        if (d == NULL) {
index 013d9cd416793007bae98ab55c4011339ffa7af7..12947991c00fa9387a9d1b2896e2c008e5313256 100644 (file)
@@ -100,6 +100,16 @@ Mono_Posix_Syscall_open_mode (const char *pathname, gint32 flags, guint32 mode)
        return open (pathname, flags, mode);
 }
 
+gint32
+Mono_Posix_Syscall_get_at_fdcwd ()
+{
+#ifdef AT_FDCWD
+       return AT_FDCWD;
+#else
+       return -1;
+#endif
+}
+
 gint32
 Mono_Posix_Syscall_creat (const char *pathname, guint32 mode)
 {
diff --git a/support/mac-reachability.c b/support/mac-reachability.c
new file mode 100644 (file)
index 0000000..c2499f5
--- /dev/null
@@ -0,0 +1,153 @@
+//
+// mac-reachability.c: System.Net.NetworkingInformation.NetworkChange
+// implementation for Mac OS X using SystemConfiguration's
+// NetworkReachability API.
+//
+// Authors:
+//  Aaron Bockover (abock@xamarin.com)
+//
+// Copyright (c) 2013 Xamarin, Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+int mono_sc_reachability_enabled (void);
+
+#if defined(PLATFORM_MACOSX) || defined(TARGET_IOS)
+
+int
+mono_sc_reachability_enabled (void)
+{
+       return 1;
+}
+
+#include <SystemConfiguration/SCNetworkReachability.h>
+#include <netinet/in.h>
+
+typedef void (*mono_sc_reachability_callback)(int);
+
+typedef struct {
+       SCNetworkReachabilityRef reachability;
+       mono_sc_reachability_callback callback;
+} mono_sc_reachability;
+
+mono_sc_reachability * mono_sc_reachability_new (mono_sc_reachability_callback callback);
+void mono_sc_reachability_free (mono_sc_reachability *reachability);
+int mono_sc_reachability_is_available (mono_sc_reachability *reachability);
+
+static int
+_mono_sc_reachability_is_available (SCNetworkReachabilityFlags flags)
+{
+       return (flags & kSCNetworkFlagsReachable) && (flags & kSCNetworkFlagsConnectionRequired) == 0;
+}
+
+static void
+_mono_sc_reachability_callback (SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void *user)
+{
+       mono_sc_reachability *reachability;
+       
+       if (user == NULL) {
+               return;
+       }
+
+       reachability = (mono_sc_reachability *)user;
+       if (reachability->callback == NULL) {
+               return;
+       }
+
+       reachability->callback (_mono_sc_reachability_is_available (flags));
+}
+
+mono_sc_reachability *
+mono_sc_reachability_new (mono_sc_reachability_callback callback)
+{
+       struct sockaddr_in zero;
+       SCNetworkReachabilityRef reachability;
+       SCNetworkReachabilityContext context;
+       mono_sc_reachability *instance;
+
+       if (callback == NULL) {
+               return NULL;
+       }
+
+       bzero (&zero, sizeof (zero));
+       zero.sin_len = sizeof (zero);
+       zero.sin_family = AF_INET;
+
+       reachability = SCNetworkReachabilityCreateWithAddress (NULL, (const struct sockaddr *)&zero);
+       if (reachability == NULL) {
+               return NULL;
+       }
+
+       instance = (mono_sc_reachability *)malloc (sizeof (mono_sc_reachability));
+       instance->reachability = reachability;
+       instance->callback = callback;
+
+       bzero (&context, sizeof (context));
+       context.info = instance;
+
+       if (!SCNetworkReachabilitySetCallback (reachability, _mono_sc_reachability_callback, &context) ||
+               !SCNetworkReachabilityScheduleWithRunLoop (reachability, CFRunLoopGetCurrent (), kCFRunLoopDefaultMode)) {
+               mono_sc_reachability_free (instance);
+               return NULL;
+       }
+
+       return instance;
+}
+
+void
+mono_sc_reachability_free (mono_sc_reachability *reachability)
+{
+       if (reachability != NULL) {
+               if (reachability->reachability != NULL) {
+                       SCNetworkReachabilityUnscheduleFromRunLoop (reachability->reachability,
+                               CFRunLoopGetCurrent (), kCFRunLoopDefaultMode);
+                       CFRelease (reachability->reachability);
+                       reachability->reachability = NULL;
+               }
+
+               reachability->callback = NULL;
+               free (reachability);
+               reachability = NULL;
+       }
+}
+
+int
+mono_sc_reachability_is_available (mono_sc_reachability *reachability)
+{
+       SCNetworkReachabilityFlags flags;
+       return reachability != NULL && reachability->reachability != NULL &&
+               SCNetworkReachabilityGetFlags (reachability->reachability, &flags) &&
+               _mono_sc_reachability_is_available (flags);
+}
+
+#else
+
+int
+mono_sc_reachability_enabled (void)
+{
+       return 0;
+}
+
+#endif
index cb653bcda9a81e0c8f09b4e26c3da802b1c4ab96..42fdf7cfaadfbfe04b825b13b538ac9427f8b02e 100644 (file)
@@ -45,6 +45,9 @@
 #ifdef HAVE_SYS_MMAN_H
 #include <sys/mman.h>
 #endif /* ndef HAVE_SYS_MMAN_H */
+#ifdef HAVE_SYS_UIO_H
+#include <sys/uio.h>
+#endif /* ndef HAVE_SYS_UIO_H */
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif /* ndef HAVE_UNISTD_H */
@@ -292,6 +295,72 @@ int Mono_Posix_ToAccessModes (int x, int *r)
        return 0;
 }
 
+int Mono_Posix_FromAtFlags (int x, int *r)
+{
+       *r = 0;
+       if ((x & Mono_Posix_AtFlags_AT_EMPTY_PATH) == Mono_Posix_AtFlags_AT_EMPTY_PATH)
+#ifdef AT_EMPTY_PATH
+               *r |= AT_EMPTY_PATH;
+#else /* def AT_EMPTY_PATH */
+               {errno = EINVAL; return -1;}
+#endif /* ndef AT_EMPTY_PATH */
+       if ((x & Mono_Posix_AtFlags_AT_NO_AUTOMOUNT) == Mono_Posix_AtFlags_AT_NO_AUTOMOUNT)
+#ifdef AT_NO_AUTOMOUNT
+               *r |= AT_NO_AUTOMOUNT;
+#else /* def AT_NO_AUTOMOUNT */
+               {errno = EINVAL; return -1;}
+#endif /* ndef AT_NO_AUTOMOUNT */
+       if ((x & Mono_Posix_AtFlags_AT_REMOVEDIR) == Mono_Posix_AtFlags_AT_REMOVEDIR)
+#ifdef AT_REMOVEDIR
+               *r |= AT_REMOVEDIR;
+#else /* def AT_REMOVEDIR */
+               {errno = EINVAL; return -1;}
+#endif /* ndef AT_REMOVEDIR */
+       if ((x & Mono_Posix_AtFlags_AT_SYMLINK_FOLLOW) == Mono_Posix_AtFlags_AT_SYMLINK_FOLLOW)
+#ifdef AT_SYMLINK_FOLLOW
+               *r |= AT_SYMLINK_FOLLOW;
+#else /* def AT_SYMLINK_FOLLOW */
+               {errno = EINVAL; return -1;}
+#endif /* ndef AT_SYMLINK_FOLLOW */
+       if ((x & Mono_Posix_AtFlags_AT_SYMLINK_NOFOLLOW) == Mono_Posix_AtFlags_AT_SYMLINK_NOFOLLOW)
+#ifdef AT_SYMLINK_NOFOLLOW
+               *r |= AT_SYMLINK_NOFOLLOW;
+#else /* def AT_SYMLINK_NOFOLLOW */
+               {errno = EINVAL; return -1;}
+#endif /* ndef AT_SYMLINK_NOFOLLOW */
+       if (x == 0)
+               return 0;
+       return 0;
+}
+
+int Mono_Posix_ToAtFlags (int x, int *r)
+{
+       *r = 0;
+       if (x == 0)
+               return 0;
+#ifdef AT_EMPTY_PATH
+       if ((x & AT_EMPTY_PATH) == AT_EMPTY_PATH)
+               *r |= Mono_Posix_AtFlags_AT_EMPTY_PATH;
+#endif /* ndef AT_EMPTY_PATH */
+#ifdef AT_NO_AUTOMOUNT
+       if ((x & AT_NO_AUTOMOUNT) == AT_NO_AUTOMOUNT)
+               *r |= Mono_Posix_AtFlags_AT_NO_AUTOMOUNT;
+#endif /* ndef AT_NO_AUTOMOUNT */
+#ifdef AT_REMOVEDIR
+       if ((x & AT_REMOVEDIR) == AT_REMOVEDIR)
+               *r |= Mono_Posix_AtFlags_AT_REMOVEDIR;
+#endif /* ndef AT_REMOVEDIR */
+#ifdef AT_SYMLINK_FOLLOW
+       if ((x & AT_SYMLINK_FOLLOW) == AT_SYMLINK_FOLLOW)
+               *r |= Mono_Posix_AtFlags_AT_SYMLINK_FOLLOW;
+#endif /* ndef AT_SYMLINK_FOLLOW */
+#ifdef AT_SYMLINK_NOFOLLOW
+       if ((x & AT_SYMLINK_NOFOLLOW) == AT_SYMLINK_NOFOLLOW)
+               *r |= Mono_Posix_AtFlags_AT_SYMLINK_NOFOLLOW;
+#endif /* ndef AT_SYMLINK_NOFOLLOW */
+       return 0;
+}
+
 int Mono_Posix_FromConfstrName (int x, int *r)
 {
        *r = 0;
@@ -2764,6 +2833,38 @@ Mono_Posix_ToFlock (struct flock *from, struct Mono_Posix_Flock *to)
 #endif /* ndef HAVE_STRUCT_FLOCK */
 
 
+#ifdef HAVE_STRUCT_IOVEC
+int
+Mono_Posix_FromIovec (struct Mono_Posix_Iovec *from, struct iovec *to)
+{
+       _cnm_return_val_if_overflow (guint64, from->iov_len, -1);
+
+       memset (to, 0, sizeof(*to));
+
+       to->iov_base = from->iov_base;
+       to->iov_len  = from->iov_len;
+
+       return 0;
+}
+#endif /* ndef HAVE_STRUCT_IOVEC */
+
+
+#ifdef HAVE_STRUCT_IOVEC
+int
+Mono_Posix_ToIovec (struct iovec *from, struct Mono_Posix_Iovec *to)
+{
+       _cnm_return_val_if_overflow (guint64, from->iov_len, -1);
+
+       memset (to, 0, sizeof(*to));
+
+       to->iov_base = from->iov_base;
+       to->iov_len  = from->iov_len;
+
+       return 0;
+}
+#endif /* ndef HAVE_STRUCT_IOVEC */
+
+
 int Mono_Posix_FromLockType (short x, short *r)
 {
        *r = 0;
@@ -3367,6 +3468,12 @@ int Mono_Posix_FromOpenFlags (int x, int *r)
 #else /* def O_ASYNC */
                {errno = EINVAL; return -1;}
 #endif /* ndef O_ASYNC */
+       if ((x & Mono_Posix_OpenFlags_O_CLOEXEC) == Mono_Posix_OpenFlags_O_CLOEXEC)
+#ifdef O_CLOEXEC
+               *r |= O_CLOEXEC;
+#else /* def O_CLOEXEC */
+               {errno = EINVAL; return -1;}
+#endif /* ndef O_CLOEXEC */
        if ((x & Mono_Posix_OpenFlags_O_CREAT) == Mono_Posix_OpenFlags_O_CREAT)
 #ifdef O_CREAT
                *r |= O_CREAT;
@@ -3415,6 +3522,12 @@ int Mono_Posix_FromOpenFlags (int x, int *r)
 #else /* def O_NONBLOCK */
                {errno = EINVAL; return -1;}
 #endif /* ndef O_NONBLOCK */
+       if ((x & Mono_Posix_OpenFlags_O_PATH) == Mono_Posix_OpenFlags_O_PATH)
+#ifdef O_PATH
+               *r |= O_PATH;
+#else /* def O_PATH */
+               {errno = EINVAL; return -1;}
+#endif /* ndef O_PATH */
        if ((x & Mono_Posix_OpenFlags_O_RDONLY) == Mono_Posix_OpenFlags_O_RDONLY)
 #ifdef O_RDONLY
                *r |= O_RDONLY;
@@ -3463,6 +3576,10 @@ int Mono_Posix_ToOpenFlags (int x, int *r)
        if ((x & O_ASYNC) == O_ASYNC)
                *r |= Mono_Posix_OpenFlags_O_ASYNC;
 #endif /* ndef O_ASYNC */
+#ifdef O_CLOEXEC
+       if ((x & O_CLOEXEC) == O_CLOEXEC)
+               *r |= Mono_Posix_OpenFlags_O_CLOEXEC;
+#endif /* ndef O_CLOEXEC */
 #ifdef O_CREAT
        if ((x & O_CREAT) == O_CREAT)
                *r |= Mono_Posix_OpenFlags_O_CREAT;
@@ -3495,6 +3612,10 @@ int Mono_Posix_ToOpenFlags (int x, int *r)
        if ((x & O_NONBLOCK) == O_NONBLOCK)
                *r |= Mono_Posix_OpenFlags_O_NONBLOCK;
 #endif /* ndef O_NONBLOCK */
+#ifdef O_PATH
+       if ((x & O_PATH) == O_PATH)
+               *r |= Mono_Posix_OpenFlags_O_PATH;
+#endif /* ndef O_PATH */
 #ifdef O_RDONLY
        if ((x & O_RDONLY) == O_RDONLY)
                *r |= Mono_Posix_OpenFlags_O_RDONLY;
@@ -4486,86 +4607,6 @@ int Mono_Posix_ToSignum (int x, int *r)
        errno = EINVAL; return -1;
 }
 
-#ifdef HAVE_STRUCT_STAT
-int
-Mono_Posix_FromStat (struct Mono_Posix_Stat *from, struct stat *to)
-{
-       _cnm_return_val_if_overflow (dev_t, from->st_dev, -1);
-       _cnm_return_val_if_overflow (ino_t, from->st_ino, -1);
-       _cnm_return_val_if_overflow (nlink_t, from->st_nlink, -1);
-       _cnm_return_val_if_overflow (uid_t, from->st_uid, -1);
-       _cnm_return_val_if_overflow (gid_t, from->st_gid, -1);
-       _cnm_return_val_if_overflow (dev_t, from->st_rdev, -1);
-       _cnm_return_val_if_overflow (off_t, from->st_size, -1);
-       _cnm_return_val_if_overflow (blksize_t, from->st_blksize, -1);
-       _cnm_return_val_if_overflow (blkcnt_t, from->st_blocks, -1);
-       _cnm_return_val_if_overflow (time_t, from->st_atime_, -1);
-       _cnm_return_val_if_overflow (time_t, from->st_mtime_, -1);
-       _cnm_return_val_if_overflow (time_t, from->st_ctime_, -1);
-
-       memset (to, 0, sizeof(*to));
-
-       to->st_dev     = from->st_dev;
-       to->st_ino     = from->st_ino;
-       if (Mono_Posix_FromFilePermissions (from->st_mode, &to->st_mode) != 0) {
-               return -1;
-       }
-       to->st_nlink   = from->st_nlink;
-       to->st_uid     = from->st_uid;
-       to->st_gid     = from->st_gid;
-       to->st_rdev    = from->st_rdev;
-       to->st_size    = from->st_size;
-       to->st_blksize = from->st_blksize;
-       to->st_blocks  = from->st_blocks;
-       to->st_atime   = from->st_atime_;
-       to->st_mtime   = from->st_mtime_;
-       to->st_ctime   = from->st_ctime_;
-
-       return 0;
-}
-#endif /* ndef HAVE_STRUCT_STAT */
-
-
-#ifdef HAVE_STRUCT_STAT
-int
-Mono_Posix_ToStat (struct stat *from, struct Mono_Posix_Stat *to)
-{
-       _cnm_return_val_if_overflow (guint64, from->st_dev, -1);
-       _cnm_return_val_if_overflow (guint64, from->st_ino, -1);
-       _cnm_return_val_if_overflow (guint64, from->st_nlink, -1);
-       _cnm_return_val_if_overflow (unsigned int, from->st_uid, -1);
-       _cnm_return_val_if_overflow (unsigned int, from->st_gid, -1);
-       _cnm_return_val_if_overflow (guint64, from->st_rdev, -1);
-       _cnm_return_val_if_overflow (gint64, from->st_size, -1);
-       _cnm_return_val_if_overflow (gint64, from->st_blksize, -1);
-       _cnm_return_val_if_overflow (gint64, from->st_blocks, -1);
-       _cnm_return_val_if_overflow (gint64, from->st_atime, -1);
-       _cnm_return_val_if_overflow (gint64, from->st_mtime, -1);
-       _cnm_return_val_if_overflow (gint64, from->st_ctime, -1);
-
-       memset (to, 0, sizeof(*to));
-
-       to->st_dev     = from->st_dev;
-       to->st_ino     = from->st_ino;
-       if (Mono_Posix_ToFilePermissions (from->st_mode, &to->st_mode) != 0) {
-               return -1;
-       }
-       to->st_nlink   = from->st_nlink;
-       to->st_uid     = from->st_uid;
-       to->st_gid     = from->st_gid;
-       to->st_rdev    = from->st_rdev;
-       to->st_size    = from->st_size;
-       to->st_blksize = from->st_blksize;
-       to->st_blocks  = from->st_blocks;
-       to->st_atime_  = from->st_atime;
-       to->st_mtime_  = from->st_mtime;
-       to->st_ctime_  = from->st_ctime;
-
-       return 0;
-}
-#endif /* ndef HAVE_STRUCT_STAT */
-
-
 int Mono_Posix_FromSysconfName (int x, int *r)
 {
        *r = 0;
index aab06b7b9cd87633ac75ad4b535a413d09a946db..a78caf0ef9e478cc30e1f40e3a8afa6b90f73aa2 100644 (file)
@@ -35,6 +35,21 @@ enum Mono_Posix_AccessModes {
 int Mono_Posix_FromAccessModes (int x, int *r);
 int Mono_Posix_ToAccessModes (int x, int *r);
 
+enum Mono_Posix_AtFlags {
+       Mono_Posix_AtFlags_AT_EMPTY_PATH             = 0x00001000,
+       #define Mono_Posix_AtFlags_AT_EMPTY_PATH       Mono_Posix_AtFlags_AT_EMPTY_PATH
+       Mono_Posix_AtFlags_AT_NO_AUTOMOUNT           = 0x00000800,
+       #define Mono_Posix_AtFlags_AT_NO_AUTOMOUNT     Mono_Posix_AtFlags_AT_NO_AUTOMOUNT
+       Mono_Posix_AtFlags_AT_REMOVEDIR              = 0x00000200,
+       #define Mono_Posix_AtFlags_AT_REMOVEDIR        Mono_Posix_AtFlags_AT_REMOVEDIR
+       Mono_Posix_AtFlags_AT_SYMLINK_FOLLOW         = 0x00000400,
+       #define Mono_Posix_AtFlags_AT_SYMLINK_FOLLOW   Mono_Posix_AtFlags_AT_SYMLINK_FOLLOW
+       Mono_Posix_AtFlags_AT_SYMLINK_NOFOLLOW       = 0x00000100,
+       #define Mono_Posix_AtFlags_AT_SYMLINK_NOFOLLOW Mono_Posix_AtFlags_AT_SYMLINK_NOFOLLOW
+};
+int Mono_Posix_FromAtFlags (int x, int *r);
+int Mono_Posix_ToAtFlags (int x, int *r);
+
 enum Mono_Posix_ConfstrName {
        Mono_Posix_ConfstrName__CS_GNU_LIBC_VERSION                      = 0x00000002,
        #define Mono_Posix_ConfstrName__CS_GNU_LIBC_VERSION                Mono_Posix_ConfstrName__CS_GNU_LIBC_VERSION
@@ -669,6 +684,8 @@ enum Mono_Posix_OpenFlags {
        #define Mono_Posix_OpenFlags_O_APPEND    Mono_Posix_OpenFlags_O_APPEND
        Mono_Posix_OpenFlags_O_ASYNC           = 0x00002000,
        #define Mono_Posix_OpenFlags_O_ASYNC     Mono_Posix_OpenFlags_O_ASYNC
+       Mono_Posix_OpenFlags_O_CLOEXEC         = 0x00080000,
+       #define Mono_Posix_OpenFlags_O_CLOEXEC   Mono_Posix_OpenFlags_O_CLOEXEC
        Mono_Posix_OpenFlags_O_CREAT           = 0x00000040,
        #define Mono_Posix_OpenFlags_O_CREAT     Mono_Posix_OpenFlags_O_CREAT
        Mono_Posix_OpenFlags_O_DIRECT          = 0x00004000,
@@ -685,6 +702,8 @@ enum Mono_Posix_OpenFlags {
        #define Mono_Posix_OpenFlags_O_NOFOLLOW  Mono_Posix_OpenFlags_O_NOFOLLOW
        Mono_Posix_OpenFlags_O_NONBLOCK        = 0x00000800,
        #define Mono_Posix_OpenFlags_O_NONBLOCK  Mono_Posix_OpenFlags_O_NONBLOCK
+       Mono_Posix_OpenFlags_O_PATH            = 0x00200000,
+       #define Mono_Posix_OpenFlags_O_PATH      Mono_Posix_OpenFlags_O_PATH
        Mono_Posix_OpenFlags_O_RDONLY          = 0x00000000,
        #define Mono_Posix_OpenFlags_O_RDONLY    Mono_Posix_OpenFlags_O_RDONLY
        Mono_Posix_OpenFlags_O_RDWR            = 0x00000002,
@@ -1411,6 +1430,7 @@ int Mono_Posix_ToXattrFlags (int x, int *r);
  */
 
 struct Mono_Posix_Flock;
+struct Mono_Posix_Iovec;
 struct Mono_Posix_Pollfd;
 struct Mono_Posix_Stat;
 struct Mono_Posix_Statvfs;
@@ -1430,8 +1450,8 @@ struct Mono_Unix_UnixSignal_SignalInfo;
  */
 
 struct flock;
+struct iovec;
 struct pollfd;
-struct stat;
 struct timespec;
 struct timeval;
 struct timezone;
@@ -1461,6 +1481,17 @@ int
 Mono_Posix_ToFlock (struct flock *from, struct Mono_Posix_Flock* to);
 
 
+struct Mono_Posix_Iovec {
+       void*   iov_base;
+       guint64 iov_len;
+};
+
+int
+Mono_Posix_FromIovec (struct Mono_Posix_Iovec* from, struct iovec *to);
+int
+Mono_Posix_ToIovec (struct iovec *from, struct Mono_Posix_Iovec* to);
+
+
 struct Mono_Posix_Pollfd {
        int   fd;
        short events;
@@ -1474,28 +1505,25 @@ Mono_Posix_ToPollfd (struct pollfd *from, struct Mono_Posix_Pollfd* to);
 
 
 struct Mono_Posix_Stat {
-       guint64      st_dev;      /* dev_t     */
-       guint64      st_ino;      /* ino_t     */
+       guint64      st_dev;         /* dev_t     */
+       guint64      st_ino;         /* ino_t     */
        unsigned int st_mode;
        unsigned int _padding_;
-       guint64      st_nlink;    /* nlink_t   */
-       unsigned int st_uid;      /* uid_t     */
-       unsigned int st_gid;      /* gid_t     */
-       guint64      st_rdev;     /* dev_t     */
-       gint64       st_size;     /* off_t     */
-       gint64       st_blksize;  /* blksize_t */
-       gint64       st_blocks;   /* blkcnt_t  */
-       gint64       st_atime_;   /* time_t    */
-       gint64       st_mtime_;   /* time_t    */
-       gint64       st_ctime_;   /* time_t    */
+       guint64      st_nlink;       /* nlink_t   */
+       unsigned int st_uid;         /* uid_t     */
+       unsigned int st_gid;         /* gid_t     */
+       guint64      st_rdev;        /* dev_t     */
+       gint64       st_size;        /* off_t     */
+       gint64       st_blksize;     /* blksize_t */
+       gint64       st_blocks;      /* blkcnt_t  */
+       gint64       st_atime_;      /* time_t    */
+       gint64       st_mtime_;      /* time_t    */
+       gint64       st_ctime_;      /* time_t    */
+       gint64       st_atime_nsec;
+       gint64       st_mtime_nsec;
+       gint64       st_ctime_nsec;
 };
 
-int
-Mono_Posix_FromStat (struct Mono_Posix_Stat* from, struct stat *to);
-int
-Mono_Posix_ToStat (struct stat *from, struct Mono_Posix_Stat* to);
-
-
 struct Mono_Posix_Statvfs {
        guint64 f_bsize;
        guint64 f_frsize;
@@ -1626,6 +1654,7 @@ int map_Mono_Posix_FileMode (int mode);
 int map_Mono_Posix_OpenFlags (int flags);
 int map_Mono_Posix_WaitOptions (int wait_options);
 int Mono_Posix_FromRealTimeSignum (int offset, int* rval);
+int Mono_Posix_FromStat (struct Mono_Posix_Stat* source, void* destination);
 int Mono_Posix_FromStatvfs (struct Mono_Posix_Statvfs* source, void* destination);
 int Mono_Posix_SIGRTMAX (void);
 int Mono_Posix_SIGRTMIN (void);
@@ -1685,9 +1714,14 @@ gint64 Mono_Posix_Syscall_fpathconf (int filedes, int name, int defaultError);
 int Mono_Posix_Syscall_fremovexattr (int fd, const char* name);
 int Mono_Posix_Syscall_fsetxattr (int fd, const char* name, unsigned char* value, guint64 size, int flags);
 int Mono_Posix_Syscall_fstat (int filedes, struct Mono_Posix_Stat* buf);
+int Mono_Posix_Syscall_fstatat (int dirfd, const char* file_name, struct Mono_Posix_Stat* buf, int flags);
 int Mono_Posix_Syscall_fstatvfs (int fd, struct Mono_Posix_Statvfs* buf);
 int Mono_Posix_Syscall_ftruncate (int fd, gint64 length);
+int Mono_Posix_Syscall_futimens (int fd, struct Mono_Posix_Timespec* times);
 int Mono_Posix_Syscall_futimes (int fd, struct Mono_Posix_Timeval* tvp);
+int Mono_Posix_Syscall_get_at_fdcwd (void);
+gint64 Mono_Posix_Syscall_get_utime_now (void);
+gint64 Mono_Posix_Syscall_get_utime_omit (void);
 void* Mono_Posix_Syscall_getcwd (char* buf, guint64 size);
 int Mono_Posix_Syscall_getdomainname (char* name, guint64 len);
 int Mono_Posix_Syscall_getfsent (struct Mono_Posix_Syscall__Fstab* fs);
@@ -1721,6 +1755,7 @@ int Mono_Posix_Syscall_lstat (const char* file_name, struct Mono_Posix_Stat* buf
 int Mono_Posix_Syscall_lutimes (const char* filename, struct Mono_Posix_Timeval* tvp);
 int Mono_Posix_Syscall_mincore (void* start, guint64 length, unsigned char* vec);
 int Mono_Posix_Syscall_mknod (const char* pathname, unsigned int mode, guint64 dev);
+int Mono_Posix_Syscall_mknodat (int dirfd, const char* pathname, unsigned int mode, guint64 dev);
 int Mono_Posix_Syscall_mlock (void* start, guint64 len);
 void* Mono_Posix_Syscall_mmap (void* start, guint64 length, int prot, int flags, int fd, gint64 offset);
 int Mono_Posix_Syscall_mprotect (void* start, guint64 len, int prot);
@@ -1738,12 +1773,16 @@ int Mono_Posix_Syscall_posix_fadvise (int fd, gint64 offset, gint64 len, int adv
 int Mono_Posix_Syscall_posix_fallocate (int fd, gint64 offset, guint64 len);
 int Mono_Posix_Syscall_posix_madvise (void* addr, guint64 len, int advice);
 gint64 Mono_Posix_Syscall_pread (int fd, void* buf, guint64 count, gint64 offset);
+gint64 Mono_Posix_Syscall_preadv (int fd, struct Mono_Posix_Iovec* iov, int iovcnt, gint64 offset);
 int Mono_Posix_Syscall_psignal (int sig, const char* s);
 gint64 Mono_Posix_Syscall_pwrite (int fd, void* buf, guint64 count, gint64 offset);
+gint64 Mono_Posix_Syscall_pwritev (int fd, struct Mono_Posix_Iovec* iov, int iovcnt, gint64 offset);
 gint64 Mono_Posix_Syscall_read (int fd, void* buf, guint64 count);
 int Mono_Posix_Syscall_readdir (void* dir, struct Mono_Posix_Syscall__Dirent* dentry);
 int Mono_Posix_Syscall_readdir_r (void* dirp, struct Mono_Posix_Syscall__Dirent* entry, void** result);
 int Mono_Posix_Syscall_readlink (const char* path, char* buf, guint64 bufsiz);
+int Mono_Posix_Syscall_readlinkat (int dirfd, const char* pathname, char* buf, guint64 bufsiz);
+gint64 Mono_Posix_Syscall_readv (int fd, struct Mono_Posix_Iovec* iov, int iovcnt);
 int Mono_Posix_Syscall_remap_file_pages (void* start, guint64 size, int prot, gint64 pgoff, int flags);
 int Mono_Posix_Syscall_removexattr (const char* path, const char* name);
 int Mono_Posix_Syscall_rewinddir (void* dir);
@@ -1773,14 +1812,17 @@ int Mono_Posix_Syscall_truncate (const char* path, gint64 length);
 int Mono_Posix_Syscall_ttyname_r (int fd, char* buf, guint64 buflen);
 int Mono_Posix_Syscall_uname (struct Mono_Posix_Syscall__Utsname* buf);
 int Mono_Posix_Syscall_utime (const char* filename, struct Mono_Posix_Utimbuf* buf, int use_buf);
+int Mono_Posix_Syscall_utimensat (int dirfd, const char* pathname, struct Mono_Posix_Timespec* times, int flags);
 int Mono_Posix_Syscall_utimes (const char* filename, struct Mono_Posix_Timeval* tvp);
 int Mono_Posix_Syscall_WEXITSTATUS (int status);
 int Mono_Posix_Syscall_WIFEXITED (int status);
 int Mono_Posix_Syscall_WIFSIGNALED (int status);
 int Mono_Posix_Syscall_WIFSTOPPED (int status);
 gint64 Mono_Posix_Syscall_write (int fd, void* buf, guint64 count);
+gint64 Mono_Posix_Syscall_writev (int fd, struct Mono_Posix_Iovec* iov, int iovcnt);
 int Mono_Posix_Syscall_WSTOPSIG (int status);
 int Mono_Posix_Syscall_WTERMSIG (int status);
+int Mono_Posix_ToStat (void* source, struct Mono_Posix_Stat* destination);
 int Mono_Posix_ToStatvfs (void* source, struct Mono_Posix_Statvfs* destination);
 void* Mono_Unix_UnixSignal_install (int signum);
 int Mono_Unix_UnixSignal_uninstall (void* info);
index f50922d76af193bb3ca10fe9e0c88eb16650765f..60ad23d594eb20f8d6caf2e003aee5389c2fedf3 100644 (file)
@@ -373,6 +373,12 @@ ReadEvents (gpointer sock, gpointer buffer, gint32 count, gint32 size)
        return 0;
 }
 
+int
+CreateNLSocket (void)
+{
+       return -1;
+}
+
 int
 CloseNLSocket (gpointer sock)
 {
index 4bb6ad6ca2b532e51f3e014cdcb6203b265ff339..6e3b68a208e9bc2340facb98262023033f9a2527 100644 (file)
@@ -183,6 +183,10 @@ Mono_Posix_Syscall_getpwuid_r (mph_uid_t uid,
        } while ((r = getpwuid_r (uid, &_pwbuf, buf, buflen, (struct passwd**) pwbufp)) && 
                        recheck_range (r));
 
+       if (r == 0 && !(*pwbufp))
+               /* On solaris, this function returns 0 even if the entry was not found */
+               r = errno = ENOENT;
+
        if (r == 0 && copy_passwd (pwbuf, &_pwbuf) == -1)
                r = errno = ENOMEM;
        free (buf);
index a635dd485edc000625353e8c034b90370361845a..8f16106f59f47b55a88d86d4a43510462c007154 100644 (file)
@@ -27,7 +27,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <pthread.h>
-#include <mono/io-layer/atomic.h>
+#include <mono/utils/atomic.h>
 #include <mono/metadata/appdomain.h>
 #endif
 
@@ -107,7 +107,7 @@ int Mono_Posix_FromRealTimeSignum (int offset, int *r)
 
 #ifndef HOST_WIN32
 
-#ifdef WAPI_ATOMIC_ASM
+#ifndef WAPI_NO_ATOMIC_ASM
        #define mph_int_get(p)     InterlockedExchangeAdd ((p), 0)
        #define mph_int_inc(p)     InterlockedIncrement ((p))
        #define mph_int_dec_test(p)     (InterlockedDecrement ((p)) == 0)
index f885d11b82195f45ff638b940222c82000e1882b..ce804ef6fb5761f85393591ba8562ca9df08df57 100644 (file)
@@ -7,6 +7,8 @@
  * Copyright (C) 2004-2006 Jonathan Pryor
  */
 
+#include <config.h>
+
 #define _XOPEN_SOURCE 600
 
 #ifdef PLATFORM_MACOSX
index 952a46363dbb687052d045404063c46142ac4cd7..52ab1cf46898e6a3f810341b656e6e211f453d40 100644 (file)
 
 G_BEGIN_DECLS
 
+int
+Mono_Posix_FromStat (struct Mono_Posix_Stat *from, void *_to)
+{
+       struct stat *to = _to;
+       memset (to, 0, sizeof(*to));
+
+       to->st_dev         = from->st_dev;
+       to->st_ino         = from->st_ino;
+       if (Mono_Posix_FromFilePermissions (from->st_mode, &to->st_mode) != 0) {
+               return -1;
+       }
+       to->st_nlink       = from->st_nlink;
+       to->st_uid         = from->st_uid;
+       to->st_gid         = from->st_gid;
+       to->st_rdev        = from->st_rdev;
+       to->st_size        = from->st_size;
+       to->st_blksize     = from->st_blksize;
+       to->st_blocks      = from->st_blocks;
+       to->st_atime       = from->st_atime_;
+       to->st_mtime       = from->st_mtime_;
+       to->st_ctime       = from->st_ctime_;
+#ifdef HAVE_STRUCT_STAT_ST_ATIM
+       to->st_atim.tv_nsec = from->st_atime_nsec;
+#endif
+#ifdef HAVE_STRUCT_STAT_ST_MTIM
+       to->st_mtim.tv_nsec = from->st_mtime_nsec;
+#endif
+#ifdef HAVE_STRUCT_STAT_ST_CTIM
+       to->st_ctim.tv_nsec = from->st_ctime_nsec;
+#endif
+
+       return 0;
+}
+
+int
+Mono_Posix_ToStat (void *_from, struct Mono_Posix_Stat *to)
+{
+       struct stat *from = _from;
+       memset (to, 0, sizeof(*to));
+
+       to->st_dev        = from->st_dev;
+       to->st_ino        = from->st_ino;
+       if (Mono_Posix_ToFilePermissions (from->st_mode, &to->st_mode) != 0) {
+               return -1;
+       }
+       to->st_nlink      = from->st_nlink;
+       to->st_uid        = from->st_uid;
+       to->st_gid        = from->st_gid;
+       to->st_rdev       = from->st_rdev;
+       to->st_size       = from->st_size;
+       to->st_blksize    = from->st_blksize;
+       to->st_blocks     = from->st_blocks;
+       to->st_atime_     = from->st_atime;
+       to->st_mtime_     = from->st_mtime;
+       to->st_ctime_     = from->st_ctime;
+#ifdef HAVE_STRUCT_STAT_ST_ATIM
+       to->st_atime_nsec = from->st_atim.tv_nsec;
+#endif
+#ifdef HAVE_STRUCT_STAT_ST_MTIM
+       to->st_mtime_nsec = from->st_mtim.tv_nsec;
+#endif
+#ifdef HAVE_STRUCT_STAT_ST_CTIM
+       to->st_ctime_nsec = from->st_ctim.tv_nsec;
+#endif
+
+       return 0;
+}
+
 gint32
 Mono_Posix_Syscall_stat (const char *file_name, struct Mono_Posix_Stat *buf)
 {
@@ -70,6 +138,27 @@ Mono_Posix_Syscall_lstat (const char *file_name, struct Mono_Posix_Stat *buf)
        return r;
 }
 
+#ifdef HAVE_FSTATAT
+gint32
+Mono_Posix_Syscall_fstatat (gint32 dirfd, const char *file_name, struct Mono_Posix_Stat *buf, gint32 flags)
+{
+       int r;
+       struct stat _buf;
+
+       if (Mono_Posix_FromAtFlags (flags, &flags) == -1)
+               return -1;
+
+       if (buf == NULL) {
+               errno = EFAULT;
+               return -1;
+       }
+       r = fstatat (dirfd, file_name, &_buf, flags);
+       if (r != -1 && Mono_Posix_ToStat (&_buf, buf) == -1)
+               r = -1;
+       return r;
+}
+#endif
+
 gint32
 Mono_Posix_Syscall_mknod (const char *pathname, guint32 mode, mph_dev_t dev)
 {
@@ -78,8 +167,79 @@ Mono_Posix_Syscall_mknod (const char *pathname, guint32 mode, mph_dev_t dev)
        return mknod (pathname, mode, dev);
 }
 
+#ifdef HAVE_MKNODAT
+gint32
+Mono_Posix_Syscall_mknodat (int dirfd, const char *pathname, guint32 mode, mph_dev_t dev)
+{
+       if (Mono_Posix_FromFilePermissions (mode, &mode) == -1)
+               return -1;
+       return mknodat (dirfd, pathname, mode, dev);
+}
+#endif
+
 G_END_DECLS
 
+gint64
+Mono_Posix_Syscall_get_utime_now ()
+{
+#ifdef UTIME_NOW
+       return UTIME_NOW;
+#else
+       return -1;
+#endif
+}
+
+gint64
+Mono_Posix_Syscall_get_utime_omit ()
+{
+#ifdef UTIME_OMIT
+       return UTIME_OMIT;
+#else
+       return -1;
+#endif
+}
+
+static inline struct timespec*
+copy_utimens (struct timespec* to, struct Mono_Posix_Timespec *from)
+{
+       if (from) {
+               to[0].tv_sec  = from[0].tv_sec;
+               to[0].tv_nsec = from[0].tv_nsec;
+               to[1].tv_sec  = from[1].tv_sec;
+               to[1].tv_nsec = from[1].tv_nsec;
+               return to;
+       }
+
+       return NULL;
+}
+
+#ifdef HAVE_FUTIMENS
+gint32
+Mono_Posix_Syscall_futimens(int fd, struct Mono_Posix_Timespec *tv)
+{
+       struct timespec _tv[2];
+       struct timespec *ptv;
+
+       ptv = copy_utimens (_tv, tv);
+
+       return futimens (fd, ptv);
+}
+#endif /* def HAVE_FUTIMENS */
+
+#ifdef HAVE_UTIMENSAT
+gint32
+Mono_Posix_Syscall_utimensat(int dirfd, const char *pathname, struct Mono_Posix_Timespec *tv, int flags)
+{
+       struct timespec _tv[2];
+       struct timespec *ptv;
+
+       ptv = copy_utimens (_tv, tv);
+
+       return utimensat (dirfd, pathname, ptv, flags);
+}
+#endif /* def HAVE_UTIMENSAT */
+
+
 /*
  * vim: noexpandtab
  */
diff --git a/support/sys-uio.c b/support/sys-uio.c
new file mode 100644 (file)
index 0000000..f6b80e0
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+ * <sys/uio.h> wrapper functions.
+ *
+ * Authors:
+ *   Steffen Kiess (s-kiess@web.de)
+ *
+ * Copyright (C) 2012 Steffen Kiess
+ */
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif /* ndef _GNU_SOURCE */
+
+#include <sys/uio.h>
+
+#include "map.h"
+#include "mph.h"
+
+G_BEGIN_DECLS
+
+static struct iovec*
+from_iovec (struct Mono_Posix_Iovec *iov, gint32 iovcnt)
+{
+       struct iovec* v;
+       gint32 i;
+
+       if (iovcnt < 0) {
+               errno = EINVAL;
+               return NULL;
+       }
+
+       v = malloc (iovcnt * sizeof (struct iovec));
+       if (!v) {
+               return NULL;
+       }
+
+       for (i = 0; i < iovcnt; i++) {
+               if (Mono_Posix_FromIovec (&iov[i], &v[i]) != 0) {
+                       free (v);
+                       return NULL;
+               }
+       }
+
+       return v;
+}
+
+#ifdef HAVE_READV
+gint64
+Mono_Posix_Syscall_readv (int dirfd, struct Mono_Posix_Iovec *iov, gint32 iovcnt)
+{
+       struct iovec* v;
+       gint64 res;
+
+       v = from_iovec (iov, iovcnt);
+       if (!v) {
+               return -1;
+       }
+
+       res = readv(dirfd, v, iovcnt);
+       free (v);
+       return res;
+}
+#endif /* def HAVE_READV */
+
+#ifdef HAVE_WRITEV
+gint64
+Mono_Posix_Syscall_writev (int dirfd, struct Mono_Posix_Iovec *iov, gint32 iovcnt)
+{
+       struct iovec* v;
+       gint64 res;
+
+       v = from_iovec (iov, iovcnt);
+       if (!v) {
+               return -1;
+       }
+
+       res = writev (dirfd, v, iovcnt);
+       free (v);
+       return res;
+}
+#endif /* def HAVE_WRITEV */
+
+#ifdef HAVE_PREADV
+gint64
+Mono_Posix_Syscall_preadv (int dirfd, struct Mono_Posix_Iovec *iov, gint32 iovcnt, gint64 off)
+{
+       struct iovec* v;
+       gint64 res;
+
+       mph_return_if_off_t_overflow (off);
+
+       v = from_iovec (iov, iovcnt);
+       if (!v) {
+               return -1;
+       }
+
+       res = preadv (dirfd, v, iovcnt, (off_t) off);
+       free (v);
+       return res;
+}
+#endif /* def HAVE_PREADV */
+
+#ifdef HAVE_PWRITEV
+gint64
+Mono_Posix_Syscall_pwritev (int dirfd, struct Mono_Posix_Iovec *iov, gint32 iovcnt, gint64 off)
+{
+       struct iovec* v;
+       gint64 res;
+
+       mph_return_if_off_t_overflow (off);
+
+       v = from_iovec (iov, iovcnt);
+       if (!v) {
+               return -1;
+       }
+
+       res = pwritev (dirfd, v, iovcnt, (off_t) off);
+       free (v);
+       return res;
+}
+#endif /* def HAVE_PWRITEV */
+
+
+/*
+ * vim: noexpandtab
+ */
index 5652329e13ff78abe8ca97b54789c5ded2522e7e..7fe7dac836324121782e1bb80d7878a7fce1b55b 100644 (file)
@@ -7,6 +7,8 @@
  * Copyright (C) 2004-2006 Jonathan Pryor
  */
 
+#include <config.h>
+
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE
 #endif /* ndef _GNU_SOURCE */
@@ -147,6 +149,19 @@ Mono_Posix_Syscall_readlink (const char *path, char *buf, mph_size_t len)
        return r;
 }
 
+#ifdef HAVE_READLINKAT
+gint32
+Mono_Posix_Syscall_readlinkat (int dirfd, const char *path, char *buf, mph_size_t len)
+{
+       int r;
+       mph_return_if_size_t_overflow (len);
+       r = readlinkat (dirfd, path, buf, (size_t) len);
+       if (r >= 0 && r < len)
+               buf [r] = '\0';
+       return r;
+}
+#endif /* def HAVE_READLINKAT */
+
 #if HAVE_GETLOGIN_R
 gint32
 Mono_Posix_Syscall_getlogin_r (char *buf, mph_size_t len)
index d21955f9cf845a3071b80747dafda0b386142d3b..11b0980667bb2a806455e8665393569e3f9bcede 100644 (file)
@@ -71,6 +71,7 @@ namespace Mono.Tools.LocaleBuilder
                List<CultureInfoEntry> cultures;
                Dictionary<string, string> region_currency;
                Dictionary<string, string> currency_fractions;
+               Dictionary<string, string> extra_parent_locales; 
 
                // The lang is the language that display names will be displayed in
                public string Lang
@@ -261,6 +262,19 @@ namespace Mono.Tools.LocaleBuilder
                                region_currency.Add (entry.Attributes["iso3166"].Value, child.Attributes["iso4217"].Value);
                        }
 
+                       // Parent locales
+                       extra_parent_locales = new Dictionary<string, string> (StringComparer.OrdinalIgnoreCase);
+                       foreach (XmlNode entry in supplemental.SelectNodes ("supplementalData/parentLocales/parentLocale")) {
+                               var parent = entry.Attributes["parent"].Value;
+
+                               if (parent == "root")
+                                       continue;
+
+                               var locales = entry.Attributes["locales"].Value;
+                               foreach (var locale in locales.Split (' '))
+                                       extra_parent_locales.Add (locale, parent);
+                       }
+
                        var lcdids = GetXmlDocument ("lcids.xml");
                        foreach (XmlNode lcid in lcdids.SelectNodes ("lcids/lcid")) {
                                var name = lcid.Attributes["name"].Value;
@@ -837,7 +851,17 @@ namespace Mono.Tools.LocaleBuilder
 
                                        fname += part;
 
-                                       var xml = GetXmlDocument (Path.Combine (data_root, "main", fname + ".xml"));
+                                       XmlDocument xml;
+                                       string extra;
+                                       if (extra_parent_locales.TryGetValue (fname, out extra)) {
+                                               xml = GetXmlDocument (Path.Combine (data_root, "main", extra + ".xml"));
+                                               if (doc == null)
+                                                       doc = xml;
+
+                                               Import (xml, data);
+                                       }
+
+                                       xml = GetXmlDocument (Path.Combine (data_root, "main", fname + ".xml"));
                                        if (doc == null)
                                                doc = xml;
 
@@ -886,14 +910,6 @@ namespace Mono.Tools.LocaleBuilder
                                                }
                                        }
                                }
-
-                               if (data.DateTimeFormatEntry.MonthGenitiveNames[0] == null)
-                                       data.DateTimeFormatEntry.MonthGenitiveNames = data.DateTimeFormatEntry.MonthNames;
-
-                               if (data.DateTimeFormatEntry.AbbreviatedMonthGenitiveNames[0] == null)
-                                       data.DateTimeFormatEntry.AbbreviatedMonthGenitiveNames = data.DateTimeFormatEntry.AbbreviatedMonthNames;
-
-
                        }
 
                        // It looks like it never changes
@@ -981,8 +997,12 @@ namespace Mono.Tools.LocaleBuilder
                                ProcessAllNodes (nodes, df.AbbreviatedMonthNames, AddOrReplaceValue);
 
                                nodes = node.SelectNodes ("months/monthContext[@type='format']/monthWidth[@type='wide']/month");
-                               if (nodes != null)
+                               if (nodes != null) {
                                        ProcessAllNodes (nodes, df.MonthGenitiveNames, AddOrReplaceValue);
+                               }
+
+                               // All values seem to match
+                               Array.Copy (df.AbbreviatedMonthNames, df.AbbreviatedMonthGenitiveNames, df.AbbreviatedMonthNames.Length);
 
                                nodes = node.SelectNodes ("days/dayContext[@type='format']/dayWidth[@type='wide']/day");
                                ProcessAllNodes (nodes, df.DayNames, AddOrReplaceDayValue);
@@ -1070,7 +1090,10 @@ namespace Mono.Tools.LocaleBuilder
                                // We cannot use the value from CLDR because many broken
                                // .NET serializers (e.g. JSON) use text value of NegativeInfinity
                                // and different value would break interoperability with .NET
-                               if (el != null && el.InnerText != "∞") {
+                               var inf = GetInfinitySymbol (ci);
+                               if (inf != null)
+                                       ni.InfinitySymbol = inf;
+                               else if (el != null && el.InnerText != "∞") {
                                        ni.InfinitySymbol = el.InnerText;
                                }
 
@@ -1095,6 +1118,50 @@ namespace Mono.Tools.LocaleBuilder
                        }
                }
 
+               string GetInfinitySymbol (CultureInfoEntry ci)
+               {
+                       // TODO: Add more
+                       switch (ci.TwoLetterISOLanguageName) {
+                               case "ca":
+                                       return "Infinit";
+                               case "cs":
+                               case "sk":
+                                       return "+nekonečno";
+                               case "de":
+                                       return "+unendlich";
+                               case "el":
+                                       return "Άπειρο";
+                               case "es":
+                               case "gl":
+                                       return "Infinito";
+                               case "it":
+                               case "pt":
+                                       return "+Infinito";
+                               case "nl":
+                                       return "oneindig";
+                               case "fr":
+                               case "tzm":
+                                       return "+Infini";
+                               case "pl":
+                                       return "+nieskończoność";
+                               case "ru":
+                               case "tg":
+                                       return "бесконечность";
+                               case "sl":
+                                       return "neskončnost";
+                               case "rm":
+                                       return "+infinit";
+                               case "lv":
+                                       return "bezgalība";
+                               case "lt":
+                                       return "begalybė";
+                               case "eu":
+                                       return "Infinitu";
+                       }
+
+                       return null;
+               }
+
                static string ConvertDatePatternFormat (string format)
                {
                        //
index c30980292626d72826c9d9f4d17a9685694373f7..d94c4b6058273cea63cc6eef1a97942dcff0015b 100644 (file)
@@ -42,7 +42,7 @@ minimal: locale-builder.exe locale-data
 
 locale-data:
        if ! test -d CLDR/common ; then \
-               wget http://www.unicode.org/Public/cldr/21/core.zip ; \
+               curl http://www.unicode.org/Public/cldr/21/core.zip -o core.zip ; \
                unzip core.zip -d CLDR ; \
        fi
 
index 68a3ca0a17cb700819914dec43c66c7f8b462345..5d4f1d0d817f0f7df47dd1b0a64d11396c3a2682 100644 (file)
@@ -68,6 +68,9 @@ namespace Mono.Tools.LocaleBuilder
                {
                        get
                        {
+                               if (InfinitySymbol.StartsWith (PositiveSign))
+                                       return NegativeSign + InfinitySymbol.Substring (1, InfinitySymbol.Length - 1);
+       
                                return NegativeSign + InfinitySymbol;
                        }
                }
@@ -76,7 +79,7 @@ namespace Mono.Tools.LocaleBuilder
                {
                        get
                        {
-                               return InfinitySymbol == "Infinity" ? InfinitySymbol : PositiveSign + InfinitySymbol;
+                               return InfinitySymbol;
                        }
                }
 
index b36a586ce1b1e44be4104bbce89e405b2c2913db..f50d85d7e9bada616567394c0ff8c043ff0355fc 100644 (file)
@@ -87,7 +87,7 @@ namespace Mono.Tools.LocaleBuilder
                        { 0x0037, new [] { ".", "yyyy 'წლის' dd MM, dddd", "H:mm:ss", "dd.MM.yyyy", "H:mm", "dd MM", "MMMM yyyy" } },
                        { 0x0038, new [] { "-", "d. MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
                        { 0x0039, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x003a, new [] { "/", "dddd, d' ta\' 'MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d' ta\' 'MMMM", "MMMM yyyy" } },
+                       { 0x003a, new [] { "/", "dddd, d' ta\\' 'MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d' ta\\' 'MMMM", "MMMM yyyy" } },
                        { 0x003b, new [] { ".", "MMMM d'. b. 'yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "MMMM d'. b. '", "MMMM yyyy" } },
                        { 0x003c, new [] { "/", "d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "dd MMMM", "MMMM yyyy" } },
                        { 0x003e, new [] { "/", "dd MMMM yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "dd MMMM", "MMMM yyyy" } },
@@ -202,7 +202,7 @@ namespace Mono.Tools.LocaleBuilder
                        { 0x0437, new [] { ".", "yyyy 'წლის' dd MM, dddd", "H:mm:ss", "dd.MM.yyyy", "H:mm", "dd MM", "MMMM yyyy" } },
                        { 0x0438, new [] { "-", "d. MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
                        { 0x0439, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x043a, new [] { "/", "dddd, d' ta\' 'MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d' ta\' 'MMMM", "MMMM yyyy" } },
+                       { 0x043a, new [] { "/", "dddd, d' ta\\' 'MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d' ta\\' 'MMMM", "MMMM yyyy" } },
                        { 0x043b, new [] { ".", "MMMM d'. b. 'yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "MMMM d'. b. '", "MMMM yyyy" } },
                        { 0x043e, new [] { "/", "dd MMMM yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "dd MMMM", "MMMM yyyy" } },
                        { 0x043f, new [] { ".", "d MMMM yyyy 'ж.'", "H:mm:ss", "dd.MM.yyyy", "H:mm", "d MMMM", "MMMM yyyy" } },
@@ -390,19 +390,19 @@ namespace Mono.Tools.LocaleBuilder
                static readonly Dictionary<int, string[][]> DateTime2 = new Dictionary<int, string[][]> {
                        { 0x0001, new[] { new[] { "dd/MM/yy", "dd/MM/yyyy" }, new[] { "dd/MMMM/yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" } } },
                        { 0x0002, new[] { new[] { "d.M.yyyy 'г.'", "dd.M.yyyy 'г.'", "d.MM.yyyy 'г.'", "dd.MM.yyyy 'г.'" }, new[] { "dd MMMM yyyy 'г.'", "d MMMM yyyy 'г.'", "dddd, dd MMMM yyyy 'г.'", "dddd, d MMMM yyyy 'г.'" }, new[] { "HH:mm 'ч.'", "H:mm 'ч.'" }, new[] { "HH:mm:ss 'ч.'", "H:mm:ss 'ч.'" } } },
-                       { 0x0003, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd", "d/MM/yy", "d/M/yy", "dd-MM-yy", "dd.MM.yy" }, new[] { "dddd, d' / 'MMMM' / 'yyyy", "d'/'MMMM'/'yyyy", "d' 'MMMM' 'yyyy" }, new[] { "HH:mm", "H:mm", "HH'H'mm'\''" }, new[] { "HH:mm:ss", "H:mm:ss", "HH'H'mm'\''ss'\'\''" } } },
+                       { 0x0003, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd", "d/MM/yy", "d/M/yy", "dd-MM-yy", "dd.MM.yy" }, new[] { "dddd, d' / 'MMMM' / 'yyyy", "d'/'MMMM'/'yyyy", "d' 'MMMM' 'yyyy" }, new[] { "HH:mm", "H:mm", "HH'H'mm'\\''" }, new[] { "HH:mm:ss", "H:mm:ss", "HH'H'mm'\\''ss'\\'\\''" } } },
                        { 0x0004, new[] { new[] { "yyyy/M/d", "yyyy-M-d", "yyyy.M.d", "yyyy-MM-dd", "yyyy/MM/dd", "yyyy.MM.dd", "yy-M-d", "yy/M/d", "yy.M.d", "yy/MM/dd" }, new[] { "yyyy'年'M'月'd'日'", "yyyy'年'M'月'd'日',dddd", "dddd,yyyy'年'M'月'd'日'" }, new[] { "H:mm", "HH:mm", "tt h:mm", "tt hh:mm" }, new[] { "H:mm:ss", "HH:mm:ss", "tt h:mm:ss", "tt hh:mm:ss" } } },
                        { 0x0005, new[] { new[] { "d.M.yyyy", "d-M-yy", "yyyy-MM-dd", "yyyy-M-d", "yy-M-d" }, new[] { "d. MMMM yyyy" }, new[] { "H:mm", "HH:mm", "h.mm tt", "H.mm" }, new[] { "H:mm:ss", "HH:mm:ss", "h.mm.ss tt", "H.mm.ss" } } },
                        { 0x0006, new[] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd", "yyyy MM dd" }, new[] { "d. MMMM yyyy", "dd. MMMM yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" } } },
                        { 0x0007, new[] { new[] { "dd.MM.yyyy", "dd.MMM.yyyy", "dd.MM.yy", "d.MM.yy", "d.M.yy", "d.M.yyyy", "yyyy-MM-dd" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy", "d. MMM yyyy" }, new[] { "HH:mm", "H:mm", "H.mm", "H.mm' Uhr'" }, new[] { "HH:mm:ss", "H:mm:ss' Uhr'", "HH:mm:ss' Uhr'", "HHmmss" } } },
                        { 0x0008, new[] { new[] { "d/M/yyyy", "dd/MM/yyyy", "d/M/yy", "dd/MM/yy", "dd/MMM/yyyy", "yyyy-MM-dd" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" } } },
                        { 0x0009, new[] { new[] { "M/d/yyyy", "M/d/yy", "MM/dd/yy", "MM/dd/yyyy", "yy/MM/dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy", "MMMM dd, yyyy", "dddd, dd MMMM, yyyy", "dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" } } },
-                       { 0x000a, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/MM/yy", "d/M/yy", "dd-MM-yy", "dd.MM.yy", "yyyy-MM-dd", "dd.MMM.yyyy" }, new[] { "dddd, dd' de 'MMMM' de 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "H:mm", "HH:mm", "HH'H'mm'\''" }, new[] { "H:mm:ss", "HH:mm:ss", "HH'H'mm'\''ss'\'\''" } } },
+                       { 0x000a, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/MM/yy", "d/M/yy", "dd-MM-yy", "dd.MM.yy", "yyyy-MM-dd", "dd.MMM.yyyy" }, new[] { "dddd, dd' de 'MMMM' de 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "H:mm", "HH:mm", "HH'H'mm'\\''" }, new[] { "H:mm:ss", "HH:mm:ss", "HH'H'mm'\\''ss'\\'\\''" } } },
                        { 0x000b, new[] { new[] { "d.M.yyyy", "dd.MM.yyyy", "d.M.yy", "yyyy-MM-dd" }, new[] { "d. MMMM'ta 'yyyy", "dd. MMMM'ta 'yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" } } },
                        { 0x000c, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd.MM.yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "d MMM yy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm", "HH' h 'mm", "HH'h'mm" }, new[] { "HH:mm:ss", "H:mm:ss" } } },
                        { 0x000d, new[] { new[] { "dd/MM/yyyy", "dd MMMM yyyy", "dd/MM/yy", "dd/MMMM/yyyy", "dd-MM-yy", "dd-MM-yyyy", "dd-MMMM-yyyy", "yyyy-MM-dd", "dd 'ב'MMMM yyyy", "dd MMM yy" }, new[] { "dddd dd MMMM yyyy", "dd MMMM yyyy", "dddd dd 'ב'MMMM yyyy", "ddd dd 'ב'MMMM yyyy", "dd 'ב'MMMM yyyy" }, new[] { "HH:mm", "hh:mm tt" }, new[] { "HH:mm:ss", "hh:mm:ss tt" } } },
                        { 0x000e, new[] { new[] { "yyyy.MM.dd.", "yyyy. MM. dd.", "yyyy-MM-dd", "yy-MM-dd" }, new[] { "yyyy. MMMM d." }, new[] { "H:mm", "HH:mm", "h:mm tt" }, new[] { "H:mm:ss", "HH:mm:ss", "h:mm:ss tt" } } },
-                       { 0x000f, new[] { new[] { "d.M.yyyy", "dd.MM.yy", "d. M. yyyy.", "d. M. '\''yy.", "yyyy-MM-dd", "yy MM dd" }, new[] { "d. MMMM yyyy", "dd. MMMM yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" } } },
+                       { 0x000f, new[] { new[] { "d.M.yyyy", "dd.MM.yy", "d. M. yyyy.", "d. M. '\\''yy.", "yyyy-MM-dd", "yy MM dd" }, new[] { "d. MMMM yyyy", "dd. MMMM yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" } } },
                        { 0x0010, new[] { new[] { "dd/MM/yyyy", "dd/MMM/yyyy", "dd/MM/yy", "dd.M.yy", "d/M/yy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "d-MMM-yy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "H.mm", "HH.mm" }, new[] { "HH:mm:ss", "H.mm.ss", "HH.mm.ss" } } },
                        { 0x0011, new[] { new[] { "yyyy/MM/dd", "yy/MM/dd", "yy/M/d", "yyyy/M/d", "yy/MM/dd' ('ddd')'", "yy/M/d' ('ddd')'", "yyyy/MM/dd' ('ddd')'", "yyyy-MM-dd" }, new[] { "yyyy'年'M'月'd'日'", "yyyy'年'MM'月'dd'日'", "yyyy'年'M'月'd'日' dddd", "yyyy'年'MM'月'dd'日' dddd" }, new[] { "H:mm", "HH:mm", "tt h:mm", "tt hh:mm" }, new[] { "H:mm:ss", "HH:mm:ss", "tt h:mm:ss", "tt hh:mm:ss" } } },
                        { 0x0012, new[] { new[] { "yyyy-MM-dd", "yy-MM-dd", "yy-M-d", "yyyy-M-d" }, new[] { "yyyy'년' M'월' d'일' dddd", "yyyy'년' M'월' d'일'", "yy'년' M'월' d'일' dddd", "yy'년' M'월' d'일'", "yyyy'년' MM'월' dd'일' dddd", "yyyy'년' MM'월' dd'일'" }, new[] { "tt h:mm", "tt hh:mm", "H:mm", "HH:mm" }, new[] { "tt h:mm:ss", "tt hh:mm:ss", "H:mm:ss", "HH:mm:ss" } } },
@@ -432,7 +432,7 @@ namespace Mono.Tools.LocaleBuilder
                        { 0x002a, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd-MM-yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" } } },
                        { 0x002b, new[] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d/MM/yyyy", "dd/MM/yyyy", "d/MMM/yyyy", "dd/MMM/yyyy", "yyyy-MM-dd" }, new[] { "d MMMM, yyyy", "dddd, d MMMM yyyy", "dddd, dd MMMM yyyy", "dd MMMM yyyy", "d-MMM-yyyy", "dd-MMM-yyyy", "ddd, d-MMMM-yyyy", "ddd, dd-MMMM-yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" } } },
                        { 0x002c, new[] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "d MMMM yyyy", "dd MMMM yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" } } },
-                       { 0x002d, new[] { new[] { "yyyy/MM/dd", "yyyy-MM-dd" }, new[] { "dddd, yyyy.'eko' MMMM'k 'd" }, new[] { "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss", "HH'H'mm'\''ss'\'\''" } } },
+                       { 0x002d, new[] { new[] { "yyyy/MM/dd", "yyyy-MM-dd" }, new[] { "dddd, yyyy.'eko' MMMM'k 'd" }, new[] { "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss", "HH'H'mm'\\''ss'\\'\\''" } } },
                        { 0x002e, new[] { new[] { "d. M. yyyy", "d. M. yy", "dd.MM.yyyy", "dd.MM.yy", "yyyy-MM-dd" }, new[] { "dddd, 'dnja' d. MMMM yyyy", "dddd, d. MMMM yyyy", "d. MMMM yyyy", "d. M. yyyy" }, new[] { "H.mm 'hodź.'", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" } } },
                        { 0x002f, new[] { new[] { "dd.MM.yyyy", "dd.MM.yy", "yyyy-MM-dd" }, new[] { "dddd, dd MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" } } },
                        { 0x0032, new[] { new[] { "yyyy/MM/dd", "yy/MM/dd", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "hh:mm tt", "h:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "h:mm:ss tt", "HH:mm:ss" } } },
@@ -442,7 +442,7 @@ namespace Mono.Tools.LocaleBuilder
                        { 0x0037, new[] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "yyyy 'წლის' dd MM, dddd" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" } } },
                        { 0x0038, new[] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "d. MMMM yyyy" }, new[] { "HH:mm", "HH.mm" }, new[] { "HH:mm:ss", "HH.mm.ss" } } },
                        { 0x0039, new[] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" } } },
-                       { 0x003a, new[] { new[] { "dd/MM/yyyy", "yyyy-MM-dd", "ddMMyyyy", "d-M-yyyy", "d/M/yyyy" }, new[] { "dddd, d' ta\' 'MMMM yyyy", "d' ta\' 'MMMM yyyy", "dd MMM yyyy" }, new[] { "HH:mm", "h:mm tt", "H:mm", "hh:mm tt" }, new[] { "HH:mm:ss", "h:mm:ss tt", "H:mm:ss", "hh:mm:ss tt" } } },
+                       { 0x003a, new[] { new[] { "dd/MM/yyyy", "yyyy-MM-dd", "ddMMyyyy", "d-M-yyyy", "d/M/yyyy" }, new[] { "dddd, d' ta\\' 'MMMM yyyy", "d' ta\\' 'MMMM yyyy", "dd MMM yyyy" }, new[] { "HH:mm", "h:mm tt", "H:mm", "hh:mm tt" }, new[] { "HH:mm:ss", "h:mm:ss tt", "H:mm:ss", "hh:mm:ss tt" } } },
                        { 0x003b, new[] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "MMMM d'. b. 'yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm" }, new[] { "HH:mm:ss", "H:mm:ss", "HH.mm.ss" } } },
                        { 0x003c, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/M/yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "d MMMM yyyy", "dd MMMM yyyy", "dd MMM yyyy", "d MMM yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" } } },
                        { 0x003e, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" } } },
@@ -468,7 +468,7 @@ namespace Mono.Tools.LocaleBuilder
                        { 0x0052, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/M/yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "hh:mm tt", "h:mm tt" }, new[] { "HH:mm:ss", "H:mm:ss", "hh:mm:ss tt", "h:mm:ss tt" } } },
                        { 0x0053, new[] { new[] { "yyyy-MM-dd" }, new[] { "d MMMM yyyy", "ddd d MMMM yyyy" }, new[] { "H:mm tt" }, new[] { "HH:mm:ss" } } },
                        { 0x0054, new[] { new[] { "dd/MM/yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "H:mm tt" }, new[] { "HH:mm:ss" } } },
-                       { 0x0056, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/MM/yy", "d/M/yy", "dd-MM-yy", "dd.MM.yy", "yyyy-MM-dd" }, new[] { "dddd, dd' de 'MMMM' de 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "H:mm", "HH:mm", "hh:mm tt", "HH'H'mm'\''" }, new[] { "H:mm:ss", "HH:mm:ss", "hh:mm:ss tt", "HH'H'mm'\''ss'\'\''" } } },
+                       { 0x0056, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/MM/yy", "d/M/yy", "dd-MM-yy", "dd.MM.yy", "yyyy-MM-dd" }, new[] { "dddd, dd' de 'MMMM' de 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "H:mm", "HH:mm", "hh:mm tt", "HH'H'mm'\\''" }, new[] { "H:mm:ss", "HH:mm:ss", "hh:mm:ss tt", "HH'H'mm'\\''ss'\\'\\''" } } },
                        { 0x0057, new[] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" } } },
                        { 0x005a, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" } } },
                        { 0x005b, new[] { new[] { "yyyy-MM-dd", "yyyy/MM/dd", "yy/MM/dd", "dd/MM/yyyy", "dd/MM/yy" }, new[] { "yyyy MMMM' මස 'dd' වැනිදා 'dddd" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" } } },
@@ -505,7 +505,7 @@ namespace Mono.Tools.LocaleBuilder
                        { 0x0091, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/M/yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "hh:mm tt", "h:mm tt" }, new[] { "HH:mm:ss", "H:mm:ss", "hh:mm:ss tt", "h:mm:ss tt" } } },
                        { 0x0401, new[] { new[] { "dd/MM/yy", "dd/MM/yyyy" }, new[] { "dd/MMMM/yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" } } },
                        { 0x0402, new[] { new[] { "d.M.yyyy 'г.'", "dd.M.yyyy 'г.'", "d.MM.yyyy 'г.'", "dd.MM.yyyy 'г.'" }, new[] { "dd MMMM yyyy 'г.'", "d MMMM yyyy 'г.'", "dddd, dd MMMM yyyy 'г.'", "dddd, d MMMM yyyy 'г.'" }, new[] { "HH:mm 'ч.'", "H:mm 'ч.'" }, new[] { "HH:mm:ss 'ч.'", "H:mm:ss 'ч.'" } } },
-                       { 0x0403, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd", "d/MM/yy", "d/M/yy", "dd-MM-yy", "dd.MM.yy" }, new[] { "dddd, d' / 'MMMM' / 'yyyy", "d'/'MMMM'/'yyyy", "d' 'MMMM' 'yyyy" }, new[] { "HH:mm", "H:mm", "HH'H'mm'\''" }, new[] { "HH:mm:ss", "H:mm:ss", "HH'H'mm'\''ss'\'\''" } } },
+                       { 0x0403, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd", "d/MM/yy", "d/M/yy", "dd-MM-yy", "dd.MM.yy" }, new[] { "dddd, d' / 'MMMM' / 'yyyy", "d'/'MMMM'/'yyyy", "d' 'MMMM' 'yyyy" }, new[] { "HH:mm", "H:mm", "HH'H'mm'\\''" }, new[] { "HH:mm:ss", "H:mm:ss", "HH'H'mm'\\''ss'\\'\\''" } } },
                        { 0x0404, new[] { new[] { "yyyy/M/d", "yyyy/MM/dd", "yyyy-MM-dd" }, new[] { "yyyy'年'M'月'd'日'", "yyyy'年'MM'月'dd'日'" }, new[] { "tt hh:mm", "tt h:mm", "HH:mm", "H:mm" }, new[] { "tt hh:mm:ss", "tt h:mm:ss", "HH:mm:ss", "H:mm:ss" } } },
                        { 0x0405, new[] { new[] { "d.M.yyyy", "d-M-yy", "yyyy-MM-dd", "yyyy-M-d", "yy-M-d" }, new[] { "d. MMMM yyyy" }, new[] { "H:mm", "HH:mm", "h.mm tt", "H.mm" }, new[] { "H:mm:ss", "HH:mm:ss", "h.mm.ss tt", "H.mm.ss" } } },
                        { 0x0406, new[] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd", "yyyy MM dd" }, new[] { "d. MMMM yyyy", "dd. MMMM yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" } } },
@@ -516,7 +516,7 @@ namespace Mono.Tools.LocaleBuilder
                        { 0x040c, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd.MM.yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "d MMM yy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm", "HH' h 'mm", "HH'h'mm" }, new[] { "HH:mm:ss", "H:mm:ss" } } },
                        { 0x040d, new[] { new[] { "dd/MM/yyyy", "dd MMMM yyyy", "dd/MM/yy", "dd/MMMM/yyyy", "dd-MM-yy", "dd-MM-yyyy", "dd-MMMM-yyyy", "yyyy-MM-dd", "dd 'ב'MMMM yyyy", "dd MMM yy" }, new[] { "dddd dd MMMM yyyy", "dd MMMM yyyy", "dddd dd 'ב'MMMM yyyy", "ddd dd 'ב'MMMM yyyy", "dd 'ב'MMMM yyyy" }, new[] { "HH:mm", "hh:mm tt" }, new[] { "HH:mm:ss", "hh:mm:ss tt" } } },
                        { 0x040e, new[] { new[] { "yyyy.MM.dd.", "yyyy. MM. dd.", "yyyy-MM-dd", "yy-MM-dd" }, new[] { "yyyy. MMMM d." }, new[] { "H:mm", "HH:mm", "h:mm tt" }, new[] { "H:mm:ss", "HH:mm:ss", "h:mm:ss tt" } } },
-                       { 0x040f, new[] { new[] { "d.M.yyyy", "dd.MM.yy", "d. M. yyyy.", "d. M. '\''yy.", "yyyy-MM-dd", "yy MM dd" }, new[] { "d. MMMM yyyy", "dd. MMMM yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" } } },
+                       { 0x040f, new[] { new[] { "d.M.yyyy", "dd.MM.yy", "d. M. yyyy.", "d. M. '\\''yy.", "yyyy-MM-dd", "yy MM dd" }, new[] { "d. MMMM yyyy", "dd. MMMM yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" } } },
                        { 0x0410, new[] { new[] { "dd/MM/yyyy", "dd/MMM/yyyy", "dd/MM/yy", "dd.M.yy", "d/M/yy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "d-MMM-yy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "H.mm", "HH.mm" }, new[] { "HH:mm:ss", "H.mm.ss", "HH.mm.ss" } } },
                        { 0x0411, new[] { new[] { "yyyy/MM/dd", "yy/MM/dd", "yy/M/d", "yyyy/M/d", "yy/MM/dd' ('ddd')'", "yy/M/d' ('ddd')'", "yyyy/MM/dd' ('ddd')'", "yyyy-MM-dd" }, new[] { "yyyy'年'M'月'd'日'", "yyyy'年'MM'月'dd'日'", "yyyy'年'M'月'd'日' dddd", "yyyy'年'MM'月'dd'日' dddd" }, new[] { "H:mm", "HH:mm", "tt h:mm", "tt hh:mm" }, new[] { "H:mm:ss", "HH:mm:ss", "tt h:mm:ss", "tt hh:mm:ss" } } },
                        { 0x0412, new[] { new[] { "yyyy-MM-dd", "yy-MM-dd", "yy-M-d", "yyyy-M-d" }, new[] { "yyyy'년' M'월' d'일' dddd", "yyyy'년' M'월' d'일'", "yy'년' M'월' d'일' dddd", "yy'년' M'월' d'일'", "yyyy'년' MM'월' dd'일' dddd", "yyyy'년' MM'월' dd'일'" }, new[] { "tt h:mm", "tt hh:mm", "H:mm", "HH:mm" }, new[] { "tt h:mm:ss", "tt hh:mm:ss", "H:mm:ss", "HH:mm:ss" } } },
@@ -546,7 +546,7 @@ namespace Mono.Tools.LocaleBuilder
                        { 0x042a, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd-MM-yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" } } },
                        { 0x042b, new[] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d/MM/yyyy", "dd/MM/yyyy", "d/MMM/yyyy", "dd/MMM/yyyy", "yyyy-MM-dd" }, new[] { "d MMMM, yyyy", "dddd, d MMMM yyyy", "dddd, dd MMMM yyyy", "dd MMMM yyyy", "d-MMM-yyyy", "dd-MMM-yyyy", "ddd, d-MMMM-yyyy", "ddd, dd-MMMM-yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" } } },
                        { 0x042c, new[] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "d MMMM yyyy", "dd MMMM yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" } } },
-                       { 0x042d, new[] { new[] { "yyyy/MM/dd", "yyyy-MM-dd" }, new[] { "dddd, yyyy.'eko' MMMM'k 'd" }, new[] { "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss", "HH'H'mm'\''ss'\'\''" } } },
+                       { 0x042d, new[] { new[] { "yyyy/MM/dd", "yyyy-MM-dd" }, new[] { "dddd, yyyy.'eko' MMMM'k 'd" }, new[] { "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss", "HH'H'mm'\\''ss'\\'\\''" } } },
                        { 0x042e, new[] { new[] { "d. M. yyyy", "d. M. yy", "dd.MM.yyyy", "dd.MM.yy", "yyyy-MM-dd" }, new[] { "dddd, 'dnja' d. MMMM yyyy", "dddd, d. MMMM yyyy", "d. MMMM yyyy", "d. M. yyyy" }, new[] { "H.mm 'hodź.'", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" } } },
                        { 0x042f, new[] { new[] { "dd.MM.yyyy", "dd.MM.yy", "yyyy-MM-dd" }, new[] { "dddd, dd MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" } } },
                        { 0x0432, new[] { new[] { "yyyy/MM/dd", "yy/MM/dd", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "hh:mm tt", "h:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "h:mm:ss tt", "HH:mm:ss" } } },
@@ -556,7 +556,7 @@ namespace Mono.Tools.LocaleBuilder
                        { 0x0437, new[] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "yyyy 'წლის' dd MM, dddd" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" } } },
                        { 0x0438, new[] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "d. MMMM yyyy" }, new[] { "HH:mm", "HH.mm" }, new[] { "HH:mm:ss", "HH.mm.ss" } } },
                        { 0x0439, new[] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" } } },
-                       { 0x043a, new[] { new[] { "dd/MM/yyyy", "yyyy-MM-dd", "ddMMyyyy", "d-M-yyyy", "d/M/yyyy" }, new[] { "dddd, d' ta\' 'MMMM yyyy", "d' ta\' 'MMMM yyyy", "dd MMM yyyy" }, new[] { "HH:mm", "h:mm tt", "H:mm", "hh:mm tt" }, new[] { "HH:mm:ss", "h:mm:ss tt", "H:mm:ss", "hh:mm:ss tt" } } },
+                       { 0x043a, new[] { new[] { "dd/MM/yyyy", "yyyy-MM-dd", "ddMMyyyy", "d-M-yyyy", "d/M/yyyy" }, new[] { "dddd, d' ta\\' 'MMMM yyyy", "d' ta\\' 'MMMM yyyy", "dd MMM yyyy" }, new[] { "HH:mm", "h:mm tt", "H:mm", "hh:mm tt" }, new[] { "HH:mm:ss", "h:mm:ss tt", "H:mm:ss", "hh:mm:ss tt" } } },
                        { 0x043b, new[] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "MMMM d'. b. 'yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm" }, new[] { "HH:mm:ss", "H:mm:ss", "HH.mm.ss" } } },
                        { 0x043e, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" } } },
                        { 0x043f, new[] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "d MMMM yyyy 'ж.'", "dd MMMM yyyy 'ж.'" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" } } },
@@ -581,7 +581,7 @@ namespace Mono.Tools.LocaleBuilder
                        { 0x0452, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/M/yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "hh:mm tt", "h:mm tt" }, new[] { "HH:mm:ss", "H:mm:ss", "hh:mm:ss tt", "h:mm:ss tt" } } },
                        { 0x0453, new[] { new[] { "yyyy-MM-dd" }, new[] { "d MMMM yyyy", "ddd d MMMM yyyy" }, new[] { "H:mm tt" }, new[] { "HH:mm:ss" } } },
                        { 0x0454, new[] { new[] { "dd/MM/yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "H:mm tt" }, new[] { "HH:mm:ss" } } },
-                       { 0x0456, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/MM/yy", "d/M/yy", "dd-MM-yy", "dd.MM.yy", "yyyy-MM-dd" }, new[] { "dddd, dd' de 'MMMM' de 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "H:mm", "HH:mm", "hh:mm tt", "HH'H'mm'\''" }, new[] { "H:mm:ss", "HH:mm:ss", "hh:mm:ss tt", "HH'H'mm'\''ss'\'\''" } } },
+                       { 0x0456, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/MM/yy", "d/M/yy", "dd-MM-yy", "dd.MM.yy", "yyyy-MM-dd" }, new[] { "dddd, dd' de 'MMMM' de 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "H:mm", "HH:mm", "hh:mm tt", "HH'H'mm'\\''" }, new[] { "H:mm:ss", "HH:mm:ss", "hh:mm:ss tt", "HH'H'mm'\\''ss'\\'\\''" } } },
                        { 0x0457, new[] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" } } },
                        { 0x045a, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" } } },
                        { 0x045b, new[] { new[] { "yyyy-MM-dd", "yyyy/MM/dd", "yy/MM/dd", "dd/MM/yyyy", "dd/MM/yy" }, new[] { "yyyy MMMM' මස 'dd' වැනිදා 'dddd" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" } } },
@@ -642,7 +642,7 @@ namespace Mono.Tools.LocaleBuilder
                        { 0x0c04, new[] { new[] { "d/M/yyyy", "d/M/yy", "dd/MM/yy", "yy/M/d", "yy/MM/dd", "yyyy/M/d", "yyyy/MM/dd", "yyyy-MM-dd" }, new[] { "yyyy'年'M'月'd'日'", "yyyy'年'MM'月'dd'日'" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" } } },
                        { 0x0c07, new[] { new[] { "dd.MM.yyyy", "dd.MM.yy", "dd.M.yyyy", "yyyy-MM-dd" }, new[] { "dddd, dd. MMMM yyyy", "d.MMMM yyyy", "d.MMMyyyy", "d MMM yyyy" }, new[] { "HH:mm", "H:mm", "HH:mm' Uhr'", "H:mm' Uhr'", "HHmm", "HH", "H' Uhr'" }, new[] { "HH:mm:ss", "H:mm:ss", "HH:mm:ss' Uhr'", "H:mm:ss' Uhr'", "HHmmss" } } },
                        { 0x0c09, new[] { new[] { "d/MM/yyyy", "d/MM/yy", "d/M/yy", "d/M/yyyy", "dd/MM/yy", "dd/MM/yyyy", "dd-MMM-yy", "dd-MMMM-yyyy", "yyyy-MM-dd", "yy/MM/dd", "yyyy/MM/dd" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "H:mm:ss", "HH:mm:ss" } } },
-                       { 0x0c0a, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/MM/yy", "d/M/yy", "dd-MM-yy", "dd.MM.yy", "yyyy-MM-dd", "dd.MMM.yyyy" }, new[] { "dddd, dd' de 'MMMM' de 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "H:mm", "HH:mm", "HH'H'mm'\''" }, new[] { "H:mm:ss", "HH:mm:ss", "HH'H'mm'\''ss'\'\''" } } },
+                       { 0x0c0a, new[] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/MM/yy", "d/M/yy", "dd-MM-yy", "dd.MM.yy", "yyyy-MM-dd", "dd.MMM.yyyy" }, new[] { "dddd, dd' de 'MMMM' de 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "H:mm", "HH:mm", "HH'H'mm'\\''" }, new[] { "H:mm:ss", "HH:mm:ss", "HH'H'mm'\\''ss'\\'\\''" } } },
                        { 0x0c0c, new[] { new[] { "yyyy-MM-dd", "yy-MM-dd", "dd-MM-yy", "yy MM dd", "dd/MM/yy", "dd/MMM/yyyy" }, new[] { "d MMMM yyyy", "d MMM yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm", "HH' h 'mm", "HH'h'mm" }, new[] { "HH:mm:ss", "H:mm:ss" } } },
                        { 0x0c1a, new[] { new[] { "d.M.yyyy", "d.M.yy", "d. M. yyyy", "dd.MM.yyyy", "d. M. yy", "dd.MM.yy", "dd. MM. yy", "yyyy-MM-dd" }, new[] { "d. MMMM yyyy", "dd. MMMM yyyy", "dddd, d. MMMM yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" } } },
                        { 0x0c3b, new[] { new[] { "d.M.yyyy", "dd.MM.yyyy", "d.M.yy", "yyyy-MM-dd" }, new[] { "MMMM d'. b. 'yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" } } },
index 9a3cbe8928680af2a41802881304d9a89f36b783..32b3777d85aadfb0b62d5397ef7601106cff3d0e 100644 (file)
@@ -19,6 +19,7 @@ read_entry (FILE *in, void **data)
        if (fread (&type, 1, 1, in) != 1)
                return SGEN_PROTOCOL_EOF;
        switch (type) {
+       case SGEN_PROTOCOL_COLLECTION_FORCE: size = sizeof (SGenProtocolCollectionForce); break;
        case SGEN_PROTOCOL_COLLECTION_BEGIN: size = sizeof (SGenProtocolCollection); break;
        case SGEN_PROTOCOL_COLLECTION_END: size = sizeof (SGenProtocolCollection); break;
        case SGEN_PROTOCOL_ALLOC: size = sizeof (SGenProtocolAlloc); break;
@@ -43,6 +44,10 @@ read_entry (FILE *in, void **data)
        case SGEN_PROTOCOL_CEMENT: size = sizeof (SGenProtocolCement); break;
        case SGEN_PROTOCOL_CEMENT_RESET: size = 0; break;
        case SGEN_PROTOCOL_DISLINK_UPDATE: size = sizeof (SGenProtocolDislinkUpdate); break;
+       case SGEN_PROTOCOL_DISLINK_UPDATE_STAGED: size = sizeof (SGenProtocolDislinkUpdateStaged); break;
+       case SGEN_PROTOCOL_DISLINK_PROCESS_STAGED: size = sizeof (SGenProtocolDislinkProcessStaged); break;
+       case SGEN_PROTOCOL_DOMAIN_UNLOAD_BEGIN: size = sizeof (SGenProtocolDomainUnload); break;
+       case SGEN_PROTOCOL_DOMAIN_UNLOAD_END: size = sizeof (SGenProtocolDomainUnload); break;
        default: assert (0);
        }
 
@@ -61,6 +66,11 @@ static void
 print_entry (int type, void *data)
 {
        switch (type) {
+       case SGEN_PROTOCOL_COLLECTION_FORCE: {
+               SGenProtocolCollectionForce *entry = data;
+               printf ("collection force generation %d\n", entry->generation);
+               break;
+       }
        case SGEN_PROTOCOL_COLLECTION_BEGIN: {
                SGenProtocolCollection *entry = data;
                printf ("collection begin %d generation %d\n", entry->index, entry->generation);
@@ -179,13 +189,37 @@ print_entry (int type, void *data)
        }
        case SGEN_PROTOCOL_DISLINK_UPDATE: {
                SGenProtocolDislinkUpdate *entry = data;
-               printf ("dislink_update link %p obj %p", entry->link, entry->obj);
+               printf ("dislink_update link %p obj %p staged %d", entry->link, entry->obj, entry->staged);
+               if (entry->obj)
+                       printf (" track %d\n", entry->track);
+               else
+                       printf ("\n");
+               break;
+       }
+       case SGEN_PROTOCOL_DISLINK_UPDATE_STAGED: {
+               SGenProtocolDislinkUpdateStaged *entry = data;
+               printf ("dislink_update_staged link %p obj %p index %d", entry->link, entry->obj, entry->index);
                if (entry->obj)
                        printf (" track %d\n", entry->track);
                else
                        printf ("\n");
                break;
        }
+       case SGEN_PROTOCOL_DISLINK_PROCESS_STAGED: {
+               SGenProtocolDislinkProcessStaged *entry = data;
+               printf ("dislink_process_staged link %p obj %p index %d\n", entry->link, entry->obj, entry->index);
+               break;
+       }
+       case SGEN_PROTOCOL_DOMAIN_UNLOAD_BEGIN: {
+               SGenProtocolDomainUnload *entry = data;
+               printf ("dislink_unload_begin domain %p\n", entry->domain);
+               break;
+       }
+       case SGEN_PROTOCOL_DOMAIN_UNLOAD_END: {
+               SGenProtocolDomainUnload *entry = data;
+               printf ("dislink_unload_end domain %p\n", entry->domain);
+               break;
+       }
        default:
                assert (0);
        }
@@ -201,6 +235,7 @@ static gboolean
 is_match (gpointer ptr, int type, void *data)
 {
        switch (type) {
+       case SGEN_PROTOCOL_COLLECTION_FORCE:
        case SGEN_PROTOCOL_COLLECTION_BEGIN:
        case SGEN_PROTOCOL_COLLECTION_END:
        case SGEN_PROTOCOL_THREAD_SUSPEND:
@@ -208,6 +243,8 @@ is_match (gpointer ptr, int type, void *data)
        case SGEN_PROTOCOL_THREAD_REGISTER:
        case SGEN_PROTOCOL_THREAD_UNREGISTER:
        case SGEN_PROTOCOL_CEMENT_RESET:
+       case SGEN_PROTOCOL_DOMAIN_UNLOAD_BEGIN:
+       case SGEN_PROTOCOL_DOMAIN_UNLOAD_END:
                return TRUE;
        case SGEN_PROTOCOL_ALLOC:
        case SGEN_PROTOCOL_ALLOC_PINNED:
@@ -273,22 +310,96 @@ is_match (gpointer ptr, int type, void *data)
                SGenProtocolDislinkUpdate *entry = data;
                return ptr == entry->obj || ptr == entry->link;
        }
+       case SGEN_PROTOCOL_DISLINK_UPDATE_STAGED: {
+               SGenProtocolDislinkUpdateStaged *entry = data;
+               return ptr == entry->obj || ptr == entry->link;
+       }
+       case SGEN_PROTOCOL_DISLINK_PROCESS_STAGED: {
+               SGenProtocolDislinkProcessStaged *entry = data;
+               return ptr == entry->obj || ptr == entry->link;
+       }
        default:
                assert (0);
        }
 }
 
+static gboolean
+is_vtable_match (gpointer ptr, int type, void *data)
+{
+       switch (type) {
+       case SGEN_PROTOCOL_ALLOC:
+       case SGEN_PROTOCOL_ALLOC_PINNED:
+       case SGEN_PROTOCOL_ALLOC_DEGRADED: {
+               SGenProtocolAlloc *entry = data;
+               return ptr == entry->vtable;
+       }
+       case SGEN_PROTOCOL_COPY: {
+               SGenProtocolCopy *entry = data;
+               return ptr == entry->vtable;
+       }
+       case SGEN_PROTOCOL_PIN: {
+               SGenProtocolPin *entry = data;
+               return ptr == entry->vtable;
+       }
+       case SGEN_PROTOCOL_SCAN_BEGIN: {
+               SGenProtocolScanBegin *entry = data;
+               return ptr == entry->vtable;
+       }
+       case SGEN_PROTOCOL_WBARRIER: {
+               SGenProtocolWBarrier *entry = data;
+               return ptr == entry->value_vtable;
+       }
+       case SGEN_PROTOCOL_GLOBAL_REMSET: {
+               SGenProtocolGlobalRemset *entry = data;
+               return ptr == entry->value_vtable;
+       }
+       case SGEN_PROTOCOL_PTR_UPDATE: {
+               SGenProtocolPtrUpdate *entry = data;
+               return ptr == entry->vtable;
+       }
+       case SGEN_PROTOCOL_CLEANUP: {
+               SGenProtocolCleanup *entry = data;
+               return ptr == entry->vtable;
+       }
+       case SGEN_PROTOCOL_MISSING_REMSET: {
+               SGenProtocolMissingRemset *entry = data;
+               return ptr == entry->obj_vtable || ptr == entry->value_vtable;
+       }
+       case SGEN_PROTOCOL_CEMENT: {
+               SGenProtocolCement *entry = data;
+               return ptr == entry->vtable;
+       }
+       default:
+               return FALSE;
+       }
+}
+
+static gboolean dump_all = FALSE;
+
 int
 main (int argc, char *argv[])
 {
        int type;
        void *data;
-       int num_nums = argc - 1;
+       int num_args = argc - 1;
+       int num_nums = 0;
+       int num_vtables = 0;
        int i;
-       long nums [num_nums];
+       long nums [num_args];
+       long vtables [num_args];
 
-       for (i = 0; i < num_nums; ++i)
-               nums [i] = strtoul (argv [i + 1], NULL, 16);
+       for (i = 0; i < num_args; ++i) {
+               char *arg = argv [i + 1];
+               char *next_arg = argv [i + 2];
+               if (!strcmp (arg, "--all")) {
+                       dump_all = TRUE;
+               } else if (!strcmp (arg, "-v") || !strcmp (arg, "--vtable")) {
+                       vtables [num_vtables++] = strtoul (next_arg, NULL, 16);
+                       ++i;
+               } else {
+                       nums [num_nums++] = strtoul (arg, NULL, 16);
+               }
+       }
 
        while ((type = read_entry (stdin, &data)) != SGEN_PROTOCOL_EOF) {
                gboolean match = FALSE;
@@ -298,7 +409,17 @@ main (int argc, char *argv[])
                                break;
                        }
                }
-               if (match)
+               if (!match) {
+                       for (i = 0; i < num_vtables; ++i) {
+                               if (is_vtable_match ((gpointer) vtables [i], type, data)) {
+                                       match = TRUE;
+                                       break;
+                               }
+                       }
+               }
+               if (dump_all)
+                       printf (match ? "* " : "  ");
+               if (match || dump_all)
                        print_entry (type, data);
                free (data);
        }