[Pkg-cli-libs-commits] [SCM] gdata-sharp branch, master, updated. debian/1.4.0.2-4-3-ge326188

Jo Shields directhex at apebox.org
Sat Nov 13 11:27:41 UTC 2010


The following commit has been merged in the master branch:
commit e3261884930c67a0da71d41a7ceaa22b45b2a2ac
Author: Jo Shields <directhex at apebox.org>
Date:   Sat Nov 13 11:22:12 2010 +0000

    Add a patch from upstream bug #429, which removes the dependency on System.Web. gdata-sharp already bundles a chunk of Mono's System.Web source code, for use on Windows CE (which lacks re required methods). This patch simply adds the rest of the System.Web pieces used by gdata-sharp, and makes the file part of the build on all platforms, not just Windows CE. Thanks to Gabriel Burt <gabriel.burt at gmail.com>

diff --git a/debian/patches/remove-system-web-dep.patch b/debian/patches/remove-system-web-dep.patch
new file mode 100644
index 0000000..6a418bb
--- /dev/null
+++ b/debian/patches/remove-system-web-dep.patch
@@ -0,0 +1,2129 @@
+Index: gdata-sharp.git/src/core/HttpUtility.cs
+===================================================================
+--- gdata-sharp.git.orig/src/core/HttpUtility.cs	2010-11-13 10:23:59.000000000 +0000
++++ gdata-sharp.git/src/core/HttpUtility.cs	2010-11-13 11:21:00.000000000 +0000
+@@ -1,969 +1,1146 @@
+-#if WindowsCE || PocketPC
++// 
++// System.Web.HttpUtility
++// Taken from http://github.com/mono/mono/tree/master/mcs/class/System.Web/System.Web.Util/
++//
++// Authors:
++//   Patrik Torstensson (Patrik.Torstensson at labs2.com)
++//   Wictor Wilén (decode/encode functions) (wictor at ibizkit.se)
++//   Tim Coleman (tim at timcoleman.com)
++//   Gonzalo Paniagua Javier (gonzalo at ximian.com)
++//
++// Copyright (C) 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.
++//
+ 
+-// 
+-// System.Web.HttpUtility
+-//
+-// Authors:
+-//   Patrik Torstensson (Patrik.Torstensson at labs2.com)
+-//   Wictor Wilén (decode/encode functions) (wictor at ibizkit.se)
+-//   Tim Coleman (tim at timcoleman.com)
+-//   Gonzalo Paniagua Javier (gonzalo at ximian.com)
+-//
+-// Copyright (C) 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.Collections;
+-using System.Collections.Specialized;
+-using System.Globalization;
+-using System.IO;
+-using System.Security.Permissions;
+-using System.Text;
+-
+-namespace System.Web {
+-
+-	public sealed class HttpUtility {
+-
+-		#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');
+-		}
+-
+-		public HttpUtility () 
+-		{
+-		}
+-	
+-		#endregion // Constructors
+-	
+-		#region Methods
+-	
+-		public static void HtmlAttributeEncode (string s, TextWriter output) 
+-		{
+-			output.Write(HtmlAttributeEncode(s));
+-		}
+-	
+-		public static string HtmlAttributeEncode (string s) 
+-		{
+-			if (null == s) 
+-				return null;
+-	
+-			if (s.IndexOf ('&') == -1 && s.IndexOf ('"') == -1)
+-				return s;
+-
+-			StringBuilder output = new StringBuilder ();
+-			foreach (char c in s) 
+-				switch (c) {
+-				case '&' : 
+-					output.Append ("&");
+-					break;
+-				case '"' :
+-					output.Append (""");
+-					break;
+-				default:
+-					output.Append (c);
+-					break;
+-				}
+-	
+-			return output.ToString();
+-		}
+-	
+-		public static string UrlDecode (string str) 
+-		{
+-			return UrlDecode(str, Encoding.UTF8);
+-		}
+-	
+-		private static char [] GetChars (MemoryStream b, Encoding e)
+-		{
+-			return e.GetChars (b.GetBuffer (), 0, (int) b.Length);
+-		}
+-
+-		public static string UrlDecode (string s, Encoding e)
+-		{
+-			if (null == s) 
+-				return null;
+-
+-			if (s.IndexOf ('%') == -1 && s.IndexOf ('+') == -1)
+-				return s;
+-
+-			if (e == null)
+-				e = Encoding.UTF8;
+-	
+-			StringBuilder output = new StringBuilder ();
+-			long len = s.Length;
+-			MemoryStream bytes = new MemoryStream ();
+-			int xchar;
+-	
+-			for (int i = 0; i < len; i++) {
+-				if (s [i] == '%' && i + 2 < len && s [i + 1] != '%') {
+-					if (s [i + 1] == 'u' && i + 5 < len) {
+-						if (bytes.Length > 0) {
+-							output.Append (GetChars (bytes, e));
+-							bytes.SetLength (0);
+-						}
+-
+-						xchar = GetChar (s, i + 2, 4);
+-						if (xchar != -1) {
+-							output.Append ((char) xchar);
+-							i += 5;
+-						} else {
+-							output.Append ('%');
+-						}
+-					} else if ((xchar = GetChar (s, i + 1, 2)) != -1) {
+-						bytes.WriteByte ((byte) xchar);
+-						i += 2;
+-					} else {
+-						output.Append ('%');
+-					}
+-					continue;
+-				}
+-
+-				if (bytes.Length > 0) {
+-					output.Append (GetChars (bytes, e));
+-					bytes.SetLength (0);
+-				}
+-
+-				if (s [i] == '+') {
+-					output.Append (' ');
+-				} else {
+-					output.Append (s [i]);
+-				}
+-	         	}
+-	
+-			if (bytes.Length > 0) {
+-				output.Append (GetChars (bytes, e));
+-			}
+-
+-			bytes = null;
+-			return output.ToString ();
+-		}
+-	
+-		public static string UrlDecode (byte [] bytes, Encoding e)
+-		{
+-			if (bytes == null)
+-				return null;
+-
+-			return UrlDecode (bytes, 0, bytes.Length, e);
+-		}
+-
+-		private static int GetInt (byte b)
+-		{
+-			char c = (char) b;
+-			if (c >= '0' && c <= '9')
+-				return c - '0';
+-
+-			if (c >= 'a' && c <= 'f')
+-				return c - 'a' + 10;
+-
+-			if (c >= 'A' && c <= 'F')
+-				return c - 'A' + 10;
+-
+-			return -1;
+-		}
+-
+-		private static int GetChar (byte [] bytes, int offset, int length)
+-		{
+-			int value = 0;
+-			int end = length + offset;
+-			for (int i = offset; i < end; i++) {
+-				int current = GetInt (bytes [i]);
+-				if (current == -1)
+-					return -1;
+-				value = (value << 4) + current;
+-			}
+-
+-			return value;
+-		}
+-
+-		private static int GetChar (string str, int offset, int length)
+-		{
+-			int val = 0;
+-			int end = length + offset;
+-			for (int i = offset; i < end; i++) {
+-				char c = str [i];
+-				if (c > 127)
+-					return -1;
+-
+-				int current = GetInt ((byte) c);
+-				if (current == -1)
+-					return -1;
+-				val = (val << 4) + current;
+-			}
+-
+-			return val;
+-		}
+-		
+-		public static string UrlDecode (byte [] bytes, int offset, int count, Encoding e)
+-		{
+-			if (bytes == null)
+-				return null;
+-			if (count == 0)
+-				return String.Empty;
+-
+-			if (bytes == null)
+-				throw new ArgumentNullException ("bytes");
+-
+-			if (offset < 0 || offset > bytes.Length)
+-				throw new ArgumentOutOfRangeException ("offset");
+-
+-			if (count < 0 || offset + count > bytes.Length)
+-				throw new ArgumentOutOfRangeException ("count");
+-
+-			StringBuilder output = new StringBuilder ();
+-			MemoryStream acc = new MemoryStream ();
+-
+-			int end = count + offset;
+-			int xchar;
+-			for (int i = offset; i < end; i++) {
+-				if (bytes [i] == '%' && i + 2 < count && bytes [i + 1] != '%') {
+-					if (bytes [i + 1] == (byte) 'u' && i + 5 < end) {
+-						if (acc.Length > 0) {
+-							output.Append (GetChars (acc, e));
+-							acc.SetLength (0);
+-						}
+-						xchar = GetChar (bytes, i + 2, 4);
+-						if (xchar != -1) {
+-							output.Append ((char) xchar);
+-							i += 5;
+-							continue;
+-						}
+-					} else if ((xchar = GetChar (bytes, i + 1, 2)) != -1) {
+-						acc.WriteByte ((byte) xchar);
+-						i += 2;
+-						continue;
+-					}
+-				}
+-
+-				if (acc.Length > 0) {
+-					output.Append (GetChars (acc, e));
+-					acc.SetLength (0);
+-				}
+-
+-				if (bytes [i] == '+') {
+-					output.Append (' ');
+-				} else {
+-					output.Append ((char) bytes [i]);
+-				}
+-			}
+-
+-			if (acc.Length > 0) {
+-				output.Append (GetChars (acc, e));
+-			}
+-			
+-			acc = null;
+-			return output.ToString ();
+-		}
+-	
+-		public static byte [] UrlDecodeToBytes (byte [] bytes)
+-		{
+-			if (bytes == null)
+-				return null;
+-
+-			return UrlDecodeToBytes (bytes, 0, bytes.Length);
+-		}
+-
+-		public static byte [] UrlDecodeToBytes (string str)
+-		{
+-			return UrlDecodeToBytes (str, Encoding.UTF8);
+-		}
+-
+-		public static byte [] UrlDecodeToBytes (string str, Encoding e)
+-		{
+-			if (str == null)
+-				return null;
+-
+-			if (e == null)
+-				throw new ArgumentNullException ("e");
+-
+-			return UrlDecodeToBytes (e.GetBytes (str));
+-		}
+-
+-		public static byte [] UrlDecodeToBytes (byte [] bytes, int offset, int count)
+-		{
+-			if (bytes == null)
+-				return null;
+-			if (count == 0)
+-				return new byte [0];
+-
+-			int len = bytes.Length;
+-			if (offset < 0 || offset >= len)
+-				throw new ArgumentOutOfRangeException("offset");
+-
+-			if (count < 0 || offset > len - count)
+-				throw new ArgumentOutOfRangeException("count");
+-
+-			MemoryStream result = new MemoryStream ();
+-			int end = offset + count;
+-			for (int i = offset; i < end; i++){
+-				char c = (char) bytes [i];
+-				if (c == '+') {
+-					c = ' ';
+-				} else if (c == '%' && i < end - 2) {
+-					int xchar = GetChar (bytes, i + 1, 2);
+-					if (xchar != -1) {
+-						c = (char) xchar;
+-						i += 2;
+-					}
+-				}
+-				result.WriteByte ((byte) c);
+-			}
+-
+-			return result.ToArray ();
+-		}
+-
+-		static char [] hexChars = "0123456789abcdef".ToCharArray ();
+-		const string notEncoded = "!'()*-._";
+-
+-		static void UrlEncodeChar (char c, Stream result, bool isUnicode) {
+-			if (c > 255) {
+-				//FIXME: what happens when there is an internal error?
+-				//if (!isUnicode)
+-				//	throw new ArgumentOutOfRangeException ("c", c, "c must be less than 256");
+-				int idx;
+-				int i = (int) c;
+-
+-				result.WriteByte ((byte)'%');
+-				result.WriteByte ((byte)'u');
+-				idx = i >> 12;
+-				result.WriteByte ((byte)hexChars [idx]);
+-				idx = (i >> 8) & 0x0F;
+-				result.WriteByte ((byte)hexChars [idx]);
+-				idx = (i >> 4) & 0x0F;
+-				result.WriteByte ((byte)hexChars [idx]);
+-				idx = i & 0x0F;
+-				result.WriteByte ((byte)hexChars [idx]);
+-				return;
+-			}
+-			
+-			if (c>' ' && notEncoded.IndexOf (c)!=-1) {
+-				result.WriteByte ((byte)c);
+-				return;
+-			}
+-			if (c==' ') {
+-				result.WriteByte ((byte)'+');
+-				return;
+-			}
+-			if (	(c < '0') ||
+-				(c < 'A' && c > '9') ||
+-				(c > 'Z' && c < 'a') ||
+-				(c > 'z')) {
+-				if (isUnicode && c > 127) {
+-					result.WriteByte ((byte)'%');
+-					result.WriteByte ((byte)'u');
+-					result.WriteByte ((byte)'0');
+-					result.WriteByte ((byte)'0');
+-				}
+-				else
+-					result.WriteByte ((byte)'%');
+-				
+-				int idx = ((int) c) >> 4;
+-				result.WriteByte ((byte)hexChars [idx]);
+-				idx = ((int) c) & 0x0F;
+-				result.WriteByte ((byte)hexChars [idx]);
+-			}
+-			else
+-				result.WriteByte ((byte)c);
+-		}
+-
+-		public static byte [] UrlEncodeToBytes (byte [] bytes, int offset, int count)
+-		{
+-			if (bytes == null)
+-				return null;
+-
+-			int len = bytes.Length;
+-			if (len == 0)
+-				return new byte [0];
+-
+-			if (offset < 0 || offset >= len)
+-				throw new ArgumentOutOfRangeException("offset");
+-
+-			if (count < 0 || count > len - offset)
+-				throw new ArgumentOutOfRangeException("count");
+-
+-			MemoryStream result = new MemoryStream (count);
+-			int end = offset + count;
+-			for (int i = offset; i < end; i++)
+-				UrlEncodeChar ((char)bytes [i], result, false);
+-
+-			return result.ToArray();
+-		}
+-
+-
+-		public static byte [] UrlEncodeUnicodeToBytes (string str)
+-		{
+-			if (str == null)
+-				return null;
+-
+-			if (str == "")
+-				return new byte [0];
+-
+-			MemoryStream result = new MemoryStream (str.Length);
+-			foreach (char c in str){
+-				UrlEncodeChar (c, result, true);
+-			}
+-			return result.ToArray ();
+-		}
+-
+-		/// <summary>
+-		/// Decodes an HTML-encoded string and returns the decoded string.
+-		/// </summary>
+-		/// <param name="s">The HTML string to decode. </param>
+-		/// <returns>The decoded text.</returns>
+-		public static string HtmlDecode (string s) 
+-		{
+-			if (s == null)
+-				throw new ArgumentNullException ("s");
+-
+-			if (s.IndexOf ('&') == -1)
+-				return s;
+-
+-			StringBuilder entity = new StringBuilder ();
+-			StringBuilder output = new StringBuilder ();
+-			int len = s.Length;
+-			// 0 -> nothing,
+-			// 1 -> right after '&'
+-			// 2 -> between '&' and ';' but no '#'
+-			// 3 -> '#' found after '&' and getting numbers
+-			int state = 0;
+-			int number = 0;
+-			bool have_trailing_digits = false;
+-	
+-			for (int i = 0; i < len; i++) {
+-				char c = s [i];
+-				if (state == 0) {
+-					if (c == '&') {
+-						entity.Append (c);
+-						state = 1;
+-					} else {
+-						output.Append (c);
+-					}
+-					continue;
+-				}
+-
+-				if (c == '&') {
+-					state = 1;
+-					if (have_trailing_digits) {
+-						entity.Append (number.ToString (CultureInfo.InvariantCulture));
+-						have_trailing_digits = false;
+-					}
+-
+-					output.Append (entity.ToString ());
+-					entity.Length = 0;
+-					entity.Append ('&');
+-					continue;
+-				}
+-
+-				if (state == 1) {
+-					if (c == ';') {
+-						state = 0;
+-						output.Append (entity.ToString ());
+-						output.Append (c);
+-						entity.Length = 0;
+-					} else {
+-						number = 0;
+-						if (c != '#') {
+-							state = 2;
+-						} else {
+-							state = 3;
+-						}
+-						entity.Append (c);
+-					}
+-				} else if (state == 2) {
+-					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 ();
+-
+-						output.Append (key);
+-						state = 0;
+-						entity.Length = 0;
+-					}
+-				} else if (state == 3) {
+-					if (c == ';') {
+-						if (number > 65535) {
+-							output.Append ("&#");
+-							output.Append (number.ToString (CultureInfo.InvariantCulture));
+-							output.Append (";");
+-						} else {
+-							output.Append ((char) number);
+-						}
+-						state = 0;
+-						entity.Length = 0;
+-						have_trailing_digits = false;
+-					} else if (Char.IsDigit (c)) {
+-						number = number * 10 + ((int) c - '0');
+-						have_trailing_digits = true;
+-					} else {
+-						state = 2;
+-						if (have_trailing_digits) {
+-							entity.Append (number.ToString (CultureInfo.InvariantCulture));
+-							have_trailing_digits = false;
+-						}
+-						entity.Append (c);
+-					}
+-				}
+-			}
+-
+-			if (entity.Length > 0) {
+-				output.Append (entity.ToString ());
+-			} else if (have_trailing_digits) {
+-				output.Append (number.ToString (CultureInfo.InvariantCulture));
+-			}
+-			return output.ToString ();
+-		}
+-	
+-		/// <summary>
+-		/// Decodes an HTML-encoded string and sends the resulting output to a TextWriter output stream.
+-		/// </summary>
+-		/// <param name="s">The HTML string to decode</param>
+-		/// <param name="output">The TextWriter output stream containing the decoded string. </param>
+-		public static void HtmlDecode(string s, TextWriter output) 
+-		{
+-			if (s != null)
+-				output.Write (HtmlDecode (s));
+-		}
+-	
+-		/// <summary>
+-		/// HTML-encodes a string and returns the encoded string.
+-		/// </summary>
+-		/// <param name="s">The text string to encode. </param>
+-		/// <returns>The HTML-encoded text.</returns>
+-		public static string HtmlEncode (string s) 
+-		{
+-			if (s == null)
+-				return null;
+-
+-			StringBuilder output = new StringBuilder ();
+-			
+-			foreach (char c in s) 
+-				switch (c) {
+-				case '&' :
+-					output.Append ("&");
+-					break;
+-				case '>' : 
+-					output.Append (">");
+-					break;
+-				case '<' :
+-					output.Append ("<");
+-					break;
+-				case '"' :
+-					output.Append (""");
+-					break;
+-				default:
+-					// MS starts encoding with &# from 160 and stops at 255.
+-					// We don't do that. One reason is the 65308/65310 unicode
+-					// characters that look like '<' and '>'.
+-					if (c > 159) {
+-						output.Append ("&#");
+-						output.Append (((int) c).ToString (CultureInfo.InvariantCulture));
+-						output.Append (";");
+-					} else {
+-						output.Append (c);
+-					}
+-					break;
+-				}
+-			return output.ToString ();
+-		}
+-	
+-		/// <summary>
+-		/// HTML-encodes a string and sends the resulting output to a TextWriter output stream.
+-		/// </summary>
+-		/// <param name="s">The string to encode. </param>
+-		/// <param name="output">The TextWriter output stream containing the encoded string. </param>
+-		public static void HtmlEncode(string s, TextWriter output) 
+-		{
+-			if (s != null)
+-				output.Write (HtmlEncode (s));
+-		}
+-
+-#if NET_1_1
+-		public static string UrlPathEncode (string s)
+-		{
+-			if (s == null || s.Length == 0)
+-				return s;
+-
+-			MemoryStream result = new MemoryStream ();
+-			int length = s.Length;
+-            for (int i = 0; i < length; i++) {
+-				UrlPathEncodeChar (s [i], result);
+-			}
+-			return Encoding.ASCII.GetString (result.ToArray ());
+-		}
+-		
+-		static void UrlPathEncodeChar (char c, Stream result) {
+-			if (c > 127) {
+-				byte [] bIn = Encoding.UTF8.GetBytes (c.ToString ());
+-				for (int i = 0; i < bIn.Length; i++) {
+-					result.WriteByte ((byte) '%');
+-					int idx = ((int) bIn [i]) >> 4;
+-					result.WriteByte ((byte) hexChars [idx]);
+-					idx = ((int) bIn [i]) & 0x0F;
+-					result.WriteByte ((byte) hexChars [idx]);
+-				}
+-			}
+-			else if (c == ' ') {
+-				result.WriteByte ((byte) '%');
+-				result.WriteByte ((byte) '2');
+-				result.WriteByte ((byte) '0');
+-			}
+-			else
+-				result.WriteByte ((byte) c);
+-		}
+-#endif
+-
+-#if NET_2_0
+-		public static NameValueCollection ParseQueryString (string query)
+-		{
+-			return ParseQueryString (query, Encoding.UTF8);
+-		}
+-
+-		public static NameValueCollection ParseQueryString (string query, Encoding encoding)
+-		{
+-			if (query == null)
+-				throw new ArgumentNullException ("query");
+-			if (encoding == null)
+-				throw new ArgumentNullException ("encoding");
+-			if (query.Length == 0 || (query.Length == 1 && query[0] == '?'))
+-				return new NameValueCollection ();
+-			if (query[0] == '?')
+-				query = query.Substring (1);
+-				
+-			NameValueCollection result = new NameValueCollection ();
+-			ParseQueryString (query, encoding, result);
+-			return result;
+-		} 				
+-#endif
+-
+-		internal static void ParseQueryString (string query, Encoding encoding, NameValueCollection result)
+-		{
+-			if (query.Length == 0)
+-				return;
+-
+-			int namePos = 0;
+-			while (namePos <= query.Length) {
+-				int valuePos = -1, valueEnd = -1;
+-				for (int q = namePos; q < query.Length; q++) {
+-					if (valuePos == -1 && query[q] == '=') {
+-						valuePos = q + 1;
+-					} else if (query[q] == '&') {
+-						valueEnd = q;
+-						break;
+-					}
+-				}
+-
+-				string name, value;
+-				if (valuePos == -1) {
+-					name = null;
+-					valuePos = namePos;
+-				} else {
+-					name = UrlDecode (query.Substring (namePos, valuePos - namePos - 1), encoding);
+-				}
+-				if (valueEnd < 0) {
+-					namePos = -1;
+-					valueEnd = query.Length;
+-				} else {
+-					namePos = valueEnd + 1;
+-				}
+-				value = UrlDecode (query.Substring (valuePos, valueEnd - valuePos), encoding);
+-
+-				result.Add (name, value);
+-				if (namePos == -1) break;
+-			}
+-		}
+-		#endregion // Methods
+-	}
++using System.Collections;
++using System.Collections.Specialized;
++using System.Globalization;
++using System.IO;
++using System.Security.Permissions;
++using System.Text;
++using System.Web.Util;
++
++#if NET_2_0
++using System.Collections.Generic;
++#endif
++
++namespace System.Web.Util
++{
++	class Helpers
++	{
++		public static readonly CultureInfo InvariantCulture = CultureInfo.InvariantCulture;
++	}
+ }
+ 
++namespace System.Web {
++
++#if !MONOTOUCH
++	// CAS - no InheritanceDemand here as the class is sealed
++	[AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
++#endif
++
++	public sealed class HttpUtility {
++		#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');
++		}
++
++		public HttpUtility () 
++		{
++		}
++	
++		#endregion // Constructors
++	
++		#region Methods
++	
++		public static void HtmlAttributeEncode (string s, TextWriter output) 
++		{
++			output.Write(HtmlAttributeEncode(s));
++		}
++	
++		public static string HtmlAttributeEncode (string s) 
++		{
++			if (null == s) 
++				return null;
++	
++			bool needEncode = false;
++			for (int i = 0; i < s.Length; i++) {
++				if (s [i] == '&' || s [i] == '"' || s [i] == '<') {
++					needEncode = true;
++					break;
++				}
++			}
++
++			if (!needEncode)
++				return s;
++
++			StringBuilder output = new StringBuilder ();
++			int len = s.Length;
++			for (int i = 0; i < len; i++)
++				switch (s [i]) {
++				case '&' : 
++					output.Append ("&");
++					break;
++				case '"' :
++					output.Append (""");
++					break;
++				case '<':
++					output.Append ("<");
++					break;
++				default:
++					output.Append (s [i]);
++					break;
++				}
++	
++			return output.ToString();
++		}
++	
++		public static string UrlDecode (string str) 
++		{
++			return UrlDecode(str, Encoding.UTF8);
++		}
++	
++		static char [] GetChars (MemoryStream b, Encoding e)
++		{
++			return e.GetChars (b.GetBuffer (), 0, (int) b.Length);
++		}
++
++		static void WriteCharBytes (IList buf, char ch, Encoding e)
++		{
++			if (ch > 255) {
++				foreach (byte b in e.GetBytes (new char[] { ch }))
++					buf.Add (b);
++			} else
++				buf.Add ((byte)ch);
++		}
++		
++		public static string UrlDecode (string s, Encoding e)
++		{
++			if (null == s) 
++				return null;
++
++			if (s.IndexOf ('%') == -1 && s.IndexOf ('+') == -1)
++				return s;
++			
++			if (e == null)
++				e = Encoding.UTF8;
++
++			long len = s.Length;
++#if NET_2_0
++			var bytes = new List <byte> ();
++#else
++			ArrayList bytes = new ArrayList ();
++#endif
++			int xchar;
++			char ch;
++			
++			for (int i = 0; i < len; i++) {
++				ch = s [i];
++				if (ch == '%' && i + 2 < len && s [i + 1] != '%') {
++					if (s [i + 1] == 'u' && i + 5 < len) {
++						// unicode hex sequence
++						xchar = GetChar (s, i + 2, 4);
++						if (xchar != -1) {
++							WriteCharBytes (bytes, (char)xchar, e);
++							i += 5;
++						} else
++							WriteCharBytes (bytes, '%', e);
++					} else if ((xchar = GetChar (s, i + 1, 2)) != -1) {
++						WriteCharBytes (bytes, (char)xchar, e);
++						i += 2;
++					} else {
++						WriteCharBytes (bytes, '%', e);
++					}
++					continue;
++				}
++
++				if (ch == '+')
++					WriteCharBytes (bytes, ' ', e);
++				else
++					WriteCharBytes (bytes, ch, e);
++			}
++			
++#if NET_2_0
++			byte[] buf = bytes.ToArray ();
++#else
++			byte[] buf = (byte[])bytes.ToArray (typeof (byte));
++#endif
++			bytes = null;
++			return e.GetString (buf);
++			
++		}
++	
++		public static string UrlDecode (byte [] bytes, Encoding e)
++		{
++			if (bytes == null)
++				return null;
++
++			return UrlDecode (bytes, 0, bytes.Length, e);
++		}
++
++		static int GetInt (byte b)
++		{
++			char c = (char) b;
++			if (c >= '0' && c <= '9')
++				return c - '0';
++
++			if (c >= 'a' && c <= 'f')
++				return c - 'a' + 10;
++
++			if (c >= 'A' && c <= 'F')
++				return c - 'A' + 10;
++
++			return -1;
++		}
++
++		static int GetChar (byte [] bytes, int offset, int length)
++		{
++			int value = 0;
++			int end = length + offset;
++			for (int i = offset; i < end; i++) {
++				int current = GetInt (bytes [i]);
++				if (current == -1)
++					return -1;
++				value = (value << 4) + current;
++			}
++
++			return value;
++		}
++
++		static int GetChar (string str, int offset, int length)
++		{
++			int val = 0;
++			int end = length + offset;
++			for (int i = offset; i < end; i++) {
++				char c = str [i];
++				if (c > 127)
++					return -1;
++
++				int current = GetInt ((byte) c);
++				if (current == -1)
++					return -1;
++				val = (val << 4) + current;
++			}
++
++			return val;
++		}
++		
++		public static string UrlDecode (byte [] bytes, int offset, int count, Encoding e)
++		{
++			if (bytes == null)
++				return null;
++			if (count == 0)
++				return String.Empty;
++
++			if (bytes == null)
++				throw new ArgumentNullException ("bytes");
++
++			if (offset < 0 || offset > bytes.Length)
++				throw new ArgumentOutOfRangeException ("offset");
++
++			if (count < 0 || offset + count > bytes.Length)
++				throw new ArgumentOutOfRangeException ("count");
++
++			StringBuilder output = new StringBuilder ();
++			MemoryStream acc = new MemoryStream ();
++
++			int end = count + offset;
++			int xchar;
++			for (int i = offset; i < end; i++) {
++				if (bytes [i] == '%' && i + 2 < count && bytes [i + 1] != '%') {
++					if (bytes [i + 1] == (byte) 'u' && i + 5 < end) {
++						if (acc.Length > 0) {
++							output.Append (GetChars (acc, e));
++							acc.SetLength (0);
++						}
++						xchar = GetChar (bytes, i + 2, 4);
++						if (xchar != -1) {
++							output.Append ((char) xchar);
++							i += 5;
++							continue;
++						}
++					} else if ((xchar = GetChar (bytes, i + 1, 2)) != -1) {
++						acc.WriteByte ((byte) xchar);
++						i += 2;
++						continue;
++					}
++				}
++
++				if (acc.Length > 0) {
++					output.Append (GetChars (acc, e));
++					acc.SetLength (0);
++				}
++
++				if (bytes [i] == '+') {
++					output.Append (' ');
++				} else {
++					output.Append ((char) bytes [i]);
++				}
++			}
++
++			if (acc.Length > 0) {
++				output.Append (GetChars (acc, e));
++			}
++			
++			acc = null;
++			return output.ToString ();
++		}
++	
++		public static byte [] UrlDecodeToBytes (byte [] bytes)
++		{
++			if (bytes == null)
++				return null;
++
++			return UrlDecodeToBytes (bytes, 0, bytes.Length);
++		}
++
++		public static byte [] UrlDecodeToBytes (string str)
++		{
++			return UrlDecodeToBytes (str, Encoding.UTF8);
++		}
++
++		public static byte [] UrlDecodeToBytes (string str, Encoding e)
++		{
++			if (str == null)
++				return null;
++
++			if (e == null)
++				throw new ArgumentNullException ("e");
++
++			return UrlDecodeToBytes (e.GetBytes (str));
++		}
++
++		public static byte [] UrlDecodeToBytes (byte [] bytes, int offset, int count)
++		{
++			if (bytes == null)
++				return null;
++			if (count == 0)
++				return new byte [0];
++
++			int len = bytes.Length;
++			if (offset < 0 || offset >= len)
++				throw new ArgumentOutOfRangeException("offset");
++
++			if (count < 0 || offset > len - count)
++				throw new ArgumentOutOfRangeException("count");
++
++			MemoryStream result = new MemoryStream ();
++			int end = offset + count;
++			for (int i = offset; i < end; i++){
++				char c = (char) bytes [i];
++				if (c == '+') {
++					c = ' ';
++				} else if (c == '%' && i < end - 2) {
++					int xchar = GetChar (bytes, i + 1, 2);
++					if (xchar != -1) {
++						c = (char) xchar;
++						i += 2;
++					}
++				}
++				result.WriteByte ((byte) c);
++			}
++
++			return result.ToArray ();
++		}
++
++		public static string UrlEncode(string str) 
++		{
++			return UrlEncode(str, Encoding.UTF8);
++		}
++	
++		public static string UrlEncode (string s, Encoding Enc) 
++		{
++			if (s == null)
++				return null;
++
++			if (s == "")
++				return "";
++
++			bool needEncode = false;
++			int len = s.Length;
++			for (int i = 0; i < len; i++) {
++				char c = s [i];
++				if ((c < '0') || (c < 'A' && c > '9') || (c > 'Z' && c < 'a') || (c > 'z')) {
++					if (NotEncoded (c))
++						continue;
++
++					needEncode = true;
++					break;
++				}
++			}
++
++			if (!needEncode)
++				return s;
++
++			// avoided GetByteCount call
++			byte [] bytes = new byte[Enc.GetMaxByteCount(s.Length)];
++			int realLen = Enc.GetBytes (s, 0, s.Length, bytes, 0);
++			return Encoding.ASCII.GetString (UrlEncodeToBytes (bytes, 0, realLen));
++		}
++	  
++		public static string UrlEncode (byte [] bytes)
++		{
++			if (bytes == null)
++				return null;
++
++			if (bytes.Length == 0)
++				return "";
++
++			return Encoding.ASCII.GetString (UrlEncodeToBytes (bytes, 0, bytes.Length));
++		}
++
++		public static string UrlEncode (byte [] bytes, int offset, int count)
++		{
++			if (bytes == null)
++				return null;
++
++			if (bytes.Length == 0)
++				return "";
++
++			return Encoding.ASCII.GetString (UrlEncodeToBytes (bytes, offset, count));
++		}
++
++		public static byte [] UrlEncodeToBytes (string str)
++		{
++			return UrlEncodeToBytes (str, Encoding.UTF8);
++		}
++
++		public static byte [] UrlEncodeToBytes (string str, Encoding e)
++		{
++			if (str == null)
++				return null;
++
++			if (str == "")
++				return new byte [0];
++
++			byte [] bytes = e.GetBytes (str);
++			return UrlEncodeToBytes (bytes, 0, bytes.Length);
++		}
++
++		public static byte [] UrlEncodeToBytes (byte [] bytes)
++		{
++			if (bytes == null)
++				return null;
++
++			if (bytes.Length == 0)
++				return new byte [0];
++
++			return UrlEncodeToBytes (bytes, 0, bytes.Length);
++		}
++
++		static char [] hexChars = "0123456789abcdef".ToCharArray ();
++
++		static bool NotEncoded (char c)
++		{
++			return (c == '!' || c == '\'' || c == '(' || c == ')' || c == '*' || c == '-' || c == '.' || c == '_');
++		}
++
++		static void UrlEncodeChar (char c, Stream result, bool isUnicode) {
++			if (c > 255) {
++				//FIXME: what happens when there is an internal error?
++				//if (!isUnicode)
++				//	throw new ArgumentOutOfRangeException ("c", c, "c must be less than 256");
++				int idx;
++				int i = (int) c;
++
++				result.WriteByte ((byte)'%');
++				result.WriteByte ((byte)'u');
++				idx = i >> 12;
++				result.WriteByte ((byte)hexChars [idx]);
++				idx = (i >> 8) & 0x0F;
++				result.WriteByte ((byte)hexChars [idx]);
++				idx = (i >> 4) & 0x0F;
++				result.WriteByte ((byte)hexChars [idx]);
++				idx = i & 0x0F;
++				result.WriteByte ((byte)hexChars [idx]);
++				return;
++			}
++			
++			if (c > ' ' && NotEncoded (c)) {
++				result.WriteByte ((byte)c);
++				return;
++			}
++			if (c==' ') {
++				result.WriteByte ((byte)'+');
++				return;
++			}
++			if (	(c < '0') ||
++				(c < 'A' && c > '9') ||
++				(c > 'Z' && c < 'a') ||
++				(c > 'z')) {
++				if (isUnicode && c > 127) {
++					result.WriteByte ((byte)'%');
++					result.WriteByte ((byte)'u');
++					result.WriteByte ((byte)'0');
++					result.WriteByte ((byte)'0');
++				}
++				else
++					result.WriteByte ((byte)'%');
++				
++				int idx = ((int) c) >> 4;
++				result.WriteByte ((byte)hexChars [idx]);
++				idx = ((int) c) & 0x0F;
++				result.WriteByte ((byte)hexChars [idx]);
++			}
++			else
++				result.WriteByte ((byte)c);
++		}
++
++		public static byte [] UrlEncodeToBytes (byte [] bytes, int offset, int count)
++		{
++			if (bytes == null)
++				return null;
++
++			int len = bytes.Length;
++			if (len == 0)
++				return new byte [0];
++
++			if (offset < 0 || offset >= len)
++				throw new ArgumentOutOfRangeException("offset");
++
++			if (count < 0 || count > len - offset)
++				throw new ArgumentOutOfRangeException("count");
++
++			MemoryStream result = new MemoryStream (count);
++			int end = offset + count;
++			for (int i = offset; i < end; i++)
++				UrlEncodeChar ((char)bytes [i], result, false);
++
++			return result.ToArray();
++		}
++
++		public static string UrlEncodeUnicode (string str)
++		{
++			if (str == null)
++				return null;
++
++			return Encoding.ASCII.GetString (UrlEncodeUnicodeToBytes (str));
++		}
++
++		public static byte [] UrlEncodeUnicodeToBytes (string str)
++		{
++			if (str == null)
++				return null;
++
++			if (str == "")
++				return new byte [0];
++
++			MemoryStream result = new MemoryStream (str.Length);
++			foreach (char c in str){
++				UrlEncodeChar (c, result, true);
++			}
++			return result.ToArray ();
++		}
++
++		/// <summary>
++		/// Decodes an HTML-encoded string and returns the decoded string.
++		/// </summary>
++		/// <param name="s">The HTML string to decode. </param>
++		/// <returns>The decoded text.</returns>
++		public static string HtmlDecode (string s) 
++		{
++			if (s == null)
++				throw new ArgumentNullException ("s");
++
++			if (s.IndexOf ('&') == -1)
++				return s;
++
++			StringBuilder entity = new StringBuilder ();
++			StringBuilder output = new StringBuilder ();
++			int len = s.Length;
++			// 0 -> nothing,
++			// 1 -> right after '&'
++			// 2 -> between '&' and ';' but no '#'
++			// 3 -> '#' found after '&' and getting numbers
++			int state = 0;
++			int number = 0;
++			bool have_trailing_digits = false;
++	
++			for (int i = 0; i < len; i++) {
++				char c = s [i];
++				if (state == 0) {
++					if (c == '&') {
++						entity.Append (c);
++						state = 1;
++					} else {
++						output.Append (c);
++					}
++					continue;
++				}
++
++				if (c == '&') {
++					state = 1;
++					if (have_trailing_digits) {
++						entity.Append (number.ToString (Helpers.InvariantCulture));
++						have_trailing_digits = false;
++					}
++
++					output.Append (entity.ToString ());
++					entity.Length = 0;
++					entity.Append ('&');
++					continue;
++				}
++
++				if (state == 1) {
++					if (c == ';') {
++						state = 0;
++						output.Append (entity.ToString ());
++						output.Append (c);
++						entity.Length = 0;
++					} else {
++						number = 0;
++						if (c != '#') {
++							state = 2;
++						} else {
++							state = 3;
++						}
++						entity.Append (c);
++					}
++				} else if (state == 2) {
++					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 ();
++
++						output.Append (key);
++						state = 0;
++						entity.Length = 0;
++					}
++				} else if (state == 3) {
++					if (c == ';') {
++						if (number > 65535) {
++							output.Append ("&#");
++							output.Append (number.ToString (Helpers.InvariantCulture));
++							output.Append (";");
++						} else {
++							output.Append ((char) number);
++						}
++						state = 0;
++						entity.Length = 0;
++						have_trailing_digits = false;
++					} else if (Char.IsDigit (c)) {
++						number = number * 10 + ((int) c - '0');
++						have_trailing_digits = true;
++					} else {
++						state = 2;
++						if (have_trailing_digits) {
++							entity.Append (number.ToString (Helpers.InvariantCulture));
++							have_trailing_digits = false;
++						}
++						entity.Append (c);
++					}
++				}
++			}
++
++			if (entity.Length > 0) {
++				output.Append (entity.ToString ());
++			} else if (have_trailing_digits) {
++				output.Append (number.ToString (Helpers.InvariantCulture));
++			}
++			return output.ToString ();
++		}
++	
++		/// <summary>
++		/// Decodes an HTML-encoded string and sends the resulting output to a TextWriter output stream.
++		/// </summary>
++		/// <param name="s">The HTML string to decode</param>
++		/// <param name="output">The TextWriter output stream containing the decoded string. </param>
++		public static void HtmlDecode(string s, TextWriter output) 
++		{
++			if (s != null)
++				output.Write (HtmlDecode (s));
++		}
++	
++		/// <summary>
++		/// HTML-encodes a string and returns the encoded string.
++		/// </summary>
++		/// <param name="s">The text string to encode. </param>
++		/// <returns>The HTML-encoded text.</returns>
++		public static string HtmlEncode (string s) 
++		{
++			if (s == null)
++				return null;
++
++			bool needEncode = false;
++			for (int i = 0; i < s.Length; i++) {
++				char c = s [i];
++				if (c == '&' || c == '"' || c == '<' || c == '>' || c > 159) {
++					needEncode = true;
++					break;
++				}
++			}
++
++			if (!needEncode)
++				return s;
++
++			StringBuilder output = new StringBuilder ();
++			
++			int len = s.Length;
++			for (int i = 0; i < len; i++) 
++				switch (s [i]) {
++				case '&' :
++					output.Append ("&");
++					break;
++				case '>' : 
++					output.Append (">");
++					break;
++				case '<' :
++					output.Append ("<");
++					break;
++				case '"' :
++					output.Append (""");
++					break;
++				default:
++					// MS starts encoding with &# from 160 and stops at 255.
++					// We don't do that. One reason is the 65308/65310 unicode
++					// characters that look like '<' and '>'.
++#if TARGET_JVM
++					if (s [i] > 159 && s [i] < 256) {
++#else
++					if (s [i] > 159) {
++#endif
++						output.Append ("&#");
++						output.Append (((int) s [i]).ToString (Helpers.InvariantCulture));
++						output.Append (";");
++					} else {
++						output.Append (s [i]);
++					}
++					break;
++				}
++			return output.ToString ();
++		}
++	
++		/// <summary>
++		/// HTML-encodes a string and sends the resulting output to a TextWriter output stream.
++		/// </summary>
++		/// <param name="s">The string to encode. </param>
++		/// <param name="output">The TextWriter output stream containing the encoded string. </param>
++		public static void HtmlEncode(string s, TextWriter output) 
++		{
++			if (s != null)
++				output.Write (HtmlEncode (s));
++		}
++
++#if NET_1_1
++		public static string UrlPathEncode (string s)
++		{
++			if (s == null || s.Length == 0)
++				return s;
++
++			MemoryStream result = new MemoryStream ();
++			int length = s.Length;
++            for (int i = 0; i < length; i++) {
++				UrlPathEncodeChar (s [i], result);
++			}
++			return Encoding.ASCII.GetString (result.ToArray ());
++		}
++		
++		static void UrlPathEncodeChar (char c, Stream result) {
++#if NET_2_0
++			if (c < 33 || c > 126) {
++#else
++			if (c > 127) {
++#endif
++				byte [] bIn = Encoding.UTF8.GetBytes (c.ToString ());
++				for (int i = 0; i < bIn.Length; i++) {
++					result.WriteByte ((byte) '%');
++					int idx = ((int) bIn [i]) >> 4;
++					result.WriteByte ((byte) hexChars [idx]);
++					idx = ((int) bIn [i]) & 0x0F;
++					result.WriteByte ((byte) hexChars [idx]);
++				}
++			}
++			else if (c == ' ') {
++				result.WriteByte ((byte) '%');
++				result.WriteByte ((byte) '2');
++				result.WriteByte ((byte) '0');
++			}
++			else
++				result.WriteByte ((byte) c);
++		}
+ #endif
++
++#if NET_2_0
++		class HttpQSCollection : NameValueCollection {
++			public override string ToString ()
++			{
++				int count = Count;
++				if (count == 0)
++					return "";
++				StringBuilder sb = new StringBuilder ();
++				string [] keys = AllKeys;
++				for (int i = 0; i < count; i++) {
++					sb.AppendFormat ("{0}={1}&", keys [i], this [keys [i]]);
++				}
++				if (sb.Length > 0)
++					sb.Length--;
++				return sb.ToString ();
++			}
++		}
++
++		public static NameValueCollection ParseQueryString (string query)
++		{
++			return ParseQueryString (query, Encoding.UTF8);
++		}
++
++		public static NameValueCollection ParseQueryString (string query, Encoding encoding)
++		{
++			if (query == null)
++				throw new ArgumentNullException ("query");
++			if (encoding == null)
++				throw new ArgumentNullException ("encoding");
++			if (query.Length == 0 || (query.Length == 1 && query[0] == '?'))
++				return new NameValueCollection ();
++			if (query[0] == '?')
++				query = query.Substring (1);
++				
++			NameValueCollection result = new HttpQSCollection ();
++			ParseQueryString (query, encoding, result);
++			return result;
++		} 				
++#endif
++
++		internal static void ParseQueryString (string query, Encoding encoding, NameValueCollection result)
++		{
++			if (query.Length == 0)
++				return;
++
++
++			string decoded = HtmlDecode (query);
++			int decodedLength = decoded.Length;
++			int namePos = 0;
++			bool first = true;
++			while (namePos <= decodedLength) {
++				int valuePos = -1, valueEnd = -1;
++				for (int q = namePos; q < decodedLength; q++) {
++					if (valuePos == -1 && decoded [q] == '=') {
++						valuePos = q + 1;
++					} else if (decoded [q] == '&') {
++						valueEnd = q;
++						break;
++					}
++				}
++
++				if (first) {
++					first = false;
++					if (decoded [namePos] == '?')
++						namePos++;
++				}
++				
++				string name, value;
++				if (valuePos == -1) {
++					name = null;
++					valuePos = namePos;
++				} else {
++					name = UrlDecode (decoded.Substring (namePos, valuePos - namePos - 1), encoding);
++				}
++				if (valueEnd < 0) {
++					namePos = -1;
++					valueEnd = decoded.Length;
++				} else {
++					namePos = valueEnd + 1;
++				}
++				value = UrlDecode (decoded.Substring (valuePos, valueEnd - valuePos), encoding);
++
++				result.Add (name, value);
++				if (namePos == -1)
++					break;
++			}
++		}
++		#endregion // Methods
++	}
++}
++
+Index: gdata-sharp.git/Makefile
+===================================================================
+--- gdata-sharp.git.orig/Makefile	2010-11-13 10:23:59.000000000 +0000
++++ gdata-sharp.git/Makefile	2010-11-13 11:18:07.000000000 +0000
+@@ -32,7 +32,7 @@
+ 	Google.GData.Health.dll \
+ 	Google.GData.Blogger.dll \
+ 
+-FRAMEWORK_REFS = -r:System.dll -r:System.Xml.dll -r:System.Web.dll -r:System.Configuration.dll
++FRAMEWORK_REFS = -r:System.dll -r:System.Xml.dll -r:System.Configuration.dll
+ 
+ PKGCONFIG_FILES = $(patsubst %.pc.in,%.pc,$(wildcard misc/*.pc.in))
+ 
diff --git a/debian/patches/series b/debian/patches/series
index 9bae80c..d86f44e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
+remove-system-web-dep.patch
 00_build-system.patch
 01_pkgconfig-paths.patch
 02_cli-2.0-port.patch

-- 
gdata-sharp



More information about the Pkg-cli-libs-commits mailing list