private static byte[] UrlEncodeNonAscii(byte[] bytes, int offset, int count, bool alwaysCreateNewReturnValue)
        {
            if (!XmlaHttpUtility.ValidateUrlEncodingParameters(bytes, offset, count))
            {
                return(null);
            }
            int num = 0;

            for (int i = 0; i < count; i++)
            {
                if (XmlaHttpUtility.IsNonAsciiByte(bytes[offset + i]))
                {
                    num++;
                }
            }
            if (!alwaysCreateNewReturnValue && num == 0)
            {
                return(bytes);
            }
            byte[] array = new byte[count + num * 2];
            int    num2  = 0;

            for (int j = 0; j < count; j++)
            {
                byte b = bytes[offset + j];
                if (XmlaHttpUtility.IsNonAsciiByte(b))
                {
                    array[num2++] = 37;
                    array[num2++] = (byte)XmlaHttpUtility.IntToHex(b >> 4 & 15);
                    array[num2++] = (byte)XmlaHttpUtility.IntToHex((int)(b & 15));
                }
                else
                {
                    array[num2++] = b;
                }
            }
            return(array);
        }