text: //
  // Autogenerated by Thrift Compiler (0.9.2)
  //
  // DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  //
  
  
  //HELPER FUNCTIONS AND STRUCTURES
  
  AdminService_saveAppInfo_args = function(args) {
    this.appInfo = null;
    if (args) {
      if (args.appInfo !== undefined) {
        this.appInfo = args.appInfo;
      }
    }
  };
  AdminService_saveAppInfo_args.prototype = {};
  AdminService_saveAppInfo_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.appInfo = new AppInfo();
          this.appInfo.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_saveAppInfo_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_saveAppInfo_args');
    if (this.appInfo !== null && this.appInfo !== undefined) {
      output.writeFieldBegin('appInfo', Thrift.Type.STRUCT, 1);
      this.appInfo.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_saveAppInfo_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_saveAppInfo_result.prototype = {};
  AdminService_saveAppInfo_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_saveAppInfo_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_saveAppInfo_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getAppInfo_args = function(args) {
    this.appId = null;
    if (args) {
      if (args.appId !== undefined) {
        this.appId = args.appId;
      }
    }
  };
  AdminService_getAppInfo_args.prototype = {};
  AdminService_getAppInfo_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.appId = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getAppInfo_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getAppInfo_args');
    if (this.appId !== null && this.appId !== undefined) {
      output.writeFieldBegin('appId', Thrift.Type.STRING, 1);
      output.writeString(this.appId);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getAppInfo_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_getAppInfo_result.prototype = {};
  AdminService_getAppInfo_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.STRUCT) {
          this.success = new AppInfo();
          this.success.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getAppInfo_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getAppInfo_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.STRUCT, 0);
      this.success.write(output);
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_findAllApps_args = function(args) {
  };
  AdminService_findAllApps_args.prototype = {};
  AdminService_findAllApps_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      input.skip(ftype);
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_findAllApps_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_findAllApps_args');
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_findAllApps_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_findAllApps_result.prototype = {};
  AdminService_findAllApps_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.LIST) {
          var _size54 = 0;
          var _rtmp358;
          this.success = [];
          var _etype57 = 0;
          _rtmp358 = input.readListBegin();
          _etype57 = _rtmp358.etype;
          _size54 = _rtmp358.size;
          for (var _i59 = 0; _i59 < _size54; ++_i59)
          {
            var elem60 = null;
            elem60 = new AppInfo();
            elem60.read(input);
            this.success.push(elem60);
          }
          input.readListEnd();
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_findAllApps_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_findAllApps_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.LIST, 0);
      output.writeListBegin(Thrift.Type.STRUCT, this.success.length);
      for (var iter61 in this.success)
      {
        if (this.success.hasOwnProperty(iter61))
        {
          iter61 = this.success[iter61];
          iter61.write(output);
        }
      }
      output.writeListEnd();
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_findAllTables_args = function(args) {
  };
  AdminService_findAllTables_args.prototype = {};
  AdminService_findAllTables_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      input.skip(ftype);
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_findAllTables_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_findAllTables_args');
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_findAllTables_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_findAllTables_result.prototype = {};
  AdminService_findAllTables_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.LIST) {
          var _size62 = 0;
          var _rtmp366;
          this.success = [];
          var _etype65 = 0;
          _rtmp366 = input.readListBegin();
          _etype65 = _rtmp366.etype;
          _size62 = _rtmp366.size;
          for (var _i67 = 0; _i67 < _size62; ++_i67)
          {
            var elem68 = null;
            elem68 = new TableInfo();
            elem68.read(input);
            this.success.push(elem68);
          }
          input.readListEnd();
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_findAllTables_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_findAllTables_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.LIST, 0);
      output.writeListBegin(Thrift.Type.STRUCT, this.success.length);
      for (var iter69 in this.success)
      {
        if (this.success.hasOwnProperty(iter69))
        {
          iter69 = this.success[iter69];
          iter69.write(output);
        }
      }
      output.writeListEnd();
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_createTable_args = function(args) {
    this.tableName = null;
    this.tableSpec = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
      if (args.tableSpec !== undefined) {
        this.tableSpec = args.tableSpec;
      }
    }
  };
  AdminService_createTable_args.prototype = {};
  AdminService_createTable_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 2:
        if (ftype == Thrift.Type.STRUCT) {
          this.tableSpec = new TableSpec();
          this.tableSpec.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_createTable_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_createTable_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    if (this.tableSpec !== null && this.tableSpec !== undefined) {
      output.writeFieldBegin('tableSpec', Thrift.Type.STRUCT, 2);
      this.tableSpec.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_createTable_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_createTable_result.prototype = {};
  AdminService_createTable_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.STRUCT) {
          this.success = new TableInfo();
          this.success.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_createTable_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_createTable_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.STRUCT, 0);
      this.success.write(output);
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_dropTable_args = function(args) {
    this.tableName = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
    }
  };
  AdminService_dropTable_args.prototype = {};
  AdminService_dropTable_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_dropTable_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_dropTable_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_dropTable_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_dropTable_result.prototype = {};
  AdminService_dropTable_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_dropTable_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_dropTable_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_alterTable_args = function(args) {
    this.tableName = null;
    this.tableSpec = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
      if (args.tableSpec !== undefined) {
        this.tableSpec = args.tableSpec;
      }
    }
  };
  AdminService_alterTable_args.prototype = {};
  AdminService_alterTable_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 2:
        if (ftype == Thrift.Type.STRUCT) {
          this.tableSpec = new TableSpec();
          this.tableSpec.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_alterTable_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_alterTable_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    if (this.tableSpec !== null && this.tableSpec !== undefined) {
      output.writeFieldBegin('tableSpec', Thrift.Type.STRUCT, 2);
      this.tableSpec.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_alterTable_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_alterTable_result.prototype = {};
  AdminService_alterTable_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_alterTable_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_alterTable_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_cloneTable_args = function(args) {
    this.srcName = null;
    this.destTable = null;
    this.flushTable = null;
    if (args) {
      if (args.srcName !== undefined) {
        this.srcName = args.srcName;
      }
      if (args.destTable !== undefined) {
        this.destTable = args.destTable;
      }
      if (args.flushTable !== undefined) {
        this.flushTable = args.flushTable;
      }
    }
  };
  AdminService_cloneTable_args.prototype = {};
  AdminService_cloneTable_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.srcName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 2:
        if (ftype == Thrift.Type.STRING) {
          this.destTable = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 3:
        if (ftype == Thrift.Type.BOOL) {
          this.flushTable = input.readBool().value;
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_cloneTable_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_cloneTable_args');
    if (this.srcName !== null && this.srcName !== undefined) {
      output.writeFieldBegin('srcName', Thrift.Type.STRING, 1);
      output.writeString(this.srcName);
      output.writeFieldEnd();
    }
    if (this.destTable !== null && this.destTable !== undefined) {
      output.writeFieldBegin('destTable', Thrift.Type.STRING, 2);
      output.writeString(this.destTable);
      output.writeFieldEnd();
    }
    if (this.flushTable !== null && this.flushTable !== undefined) {
      output.writeFieldBegin('flushTable', Thrift.Type.BOOL, 3);
      output.writeBool(this.flushTable);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_cloneTable_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_cloneTable_result.prototype = {};
  AdminService_cloneTable_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_cloneTable_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_cloneTable_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_disableTable_args = function(args) {
    this.tableName = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
    }
  };
  AdminService_disableTable_args.prototype = {};
  AdminService_disableTable_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_disableTable_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_disableTable_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_disableTable_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_disableTable_result.prototype = {};
  AdminService_disableTable_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_disableTable_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_disableTable_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_enableTable_args = function(args) {
    this.tableName = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
    }
  };
  AdminService_enableTable_args.prototype = {};
  AdminService_enableTable_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_enableTable_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_enableTable_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_enableTable_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_enableTable_result.prototype = {};
  AdminService_enableTable_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_enableTable_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_enableTable_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_describeTable_args = function(args) {
    this.tableName = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
    }
  };
  AdminService_describeTable_args.prototype = {};
  AdminService_describeTable_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_describeTable_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_describeTable_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_describeTable_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_describeTable_result.prototype = {};
  AdminService_describeTable_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.STRUCT) {
          this.success = new TableSpec();
          this.success.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_describeTable_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_describeTable_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.STRUCT, 0);
      this.success.write(output);
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getTableStatus_args = function(args) {
    this.tableName = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
    }
  };
  AdminService_getTableStatus_args.prototype = {};
  AdminService_getTableStatus_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getTableStatus_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getTableStatus_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getTableStatus_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_getTableStatus_result.prototype = {};
  AdminService_getTableStatus_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.STRUCT) {
          this.success = new TableStatus();
          this.success.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getTableStatus_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getTableStatus_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.STRUCT, 0);
      this.success.write(output);
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getTableState_args = function(args) {
    this.tableName = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
    }
  };
  AdminService_getTableState_args.prototype = {};
  AdminService_getTableState_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getTableState_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getTableState_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getTableState_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_getTableState_result.prototype = {};
  AdminService_getTableState_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.I32) {
          this.success = input.readI32().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getTableState_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getTableState_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.I32, 0);
      output.writeI32(this.success);
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getTableSplits_args = function(args) {
    this.tableName = null;
    this.startKey = null;
    this.stopKey = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
      if (args.startKey !== undefined) {
        this.startKey = args.startKey;
      }
      if (args.stopKey !== undefined) {
        this.stopKey = args.stopKey;
      }
    }
  };
  AdminService_getTableSplits_args.prototype = {};
  AdminService_getTableSplits_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 2:
        if (ftype == Thrift.Type.MAP) {
          var _size70 = 0;
          var _rtmp374;
          this.startKey = {};
          var _ktype71 = 0;
          var _vtype72 = 0;
          _rtmp374 = input.readMapBegin();
          _ktype71 = _rtmp374.ktype;
          _vtype72 = _rtmp374.vtype;
          _size70 = _rtmp374.size;
          for (var _i75 = 0; _i75 < _size70; ++_i75)
          {
            if (_i75 > 0 ) {
              if (input.rstack.length > input.rpos[input.rpos.length -1] + 1) {
                input.rstack.pop();
              }
            }
            var key76 = null;
            var val77 = null;
            key76 = input.readString().value;
            val77 = new Datum();
            val77.read(input);
            this.startKey[key76] = val77;
          }
          input.readMapEnd();
        } else {
          input.skip(ftype);
        }
        break;
        case 3:
        if (ftype == Thrift.Type.MAP) {
          var _size78 = 0;
          var _rtmp382;
          this.stopKey = {};
          var _ktype79 = 0;
          var _vtype80 = 0;
          _rtmp382 = input.readMapBegin();
          _ktype79 = _rtmp382.ktype;
          _vtype80 = _rtmp382.vtype;
          _size78 = _rtmp382.size;
          for (var _i83 = 0; _i83 < _size78; ++_i83)
          {
            if (_i83 > 0 ) {
              if (input.rstack.length > input.rpos[input.rpos.length -1] + 1) {
                input.rstack.pop();
              }
            }
            var key84 = null;
            var val85 = null;
            key84 = input.readString().value;
            val85 = new Datum();
            val85.read(input);
            this.stopKey[key84] = val85;
          }
          input.readMapEnd();
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getTableSplits_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getTableSplits_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    if (this.startKey !== null && this.startKey !== undefined) {
      output.writeFieldBegin('startKey', Thrift.Type.MAP, 2);
      output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.startKey));
      for (var kiter86 in this.startKey)
      {
        if (this.startKey.hasOwnProperty(kiter86))
        {
          var viter87 = this.startKey[kiter86];
          output.writeString(kiter86);
          viter87.write(output);
        }
      }
      output.writeMapEnd();
      output.writeFieldEnd();
    }
    if (this.stopKey !== null && this.stopKey !== undefined) {
      output.writeFieldBegin('stopKey', Thrift.Type.MAP, 3);
      output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.stopKey));
      for (var kiter88 in this.stopKey)
      {
        if (this.stopKey.hasOwnProperty(kiter88))
        {
          var viter89 = this.stopKey[kiter88];
          output.writeString(kiter88);
          viter89.write(output);
        }
      }
      output.writeMapEnd();
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getTableSplits_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_getTableSplits_result.prototype = {};
  AdminService_getTableSplits_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.LIST) {
          var _size90 = 0;
          var _rtmp394;
          this.success = [];
          var _etype93 = 0;
          _rtmp394 = input.readListBegin();
          _etype93 = _rtmp394.etype;
          _size90 = _rtmp394.size;
          for (var _i95 = 0; _i95 < _size90; ++_i95)
          {
            var elem96 = null;
            elem96 = new TableSplit();
            elem96.read(input);
            this.success.push(elem96);
          }
          input.readListEnd();
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getTableSplits_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getTableSplits_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.LIST, 0);
      output.writeListBegin(Thrift.Type.STRUCT, this.success.length);
      for (var iter97 in this.success)
      {
        if (this.success.hasOwnProperty(iter97))
        {
          iter97 = this.success[iter97];
          iter97.write(output);
        }
      }
      output.writeListEnd();
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_queryMetric_args = function(args) {
    this.query = null;
    if (args) {
      if (args.query !== undefined) {
        this.query = args.query;
      }
    }
  };
  AdminService_queryMetric_args.prototype = {};
  AdminService_queryMetric_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.query = new MetricQueryRequest();
          this.query.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_queryMetric_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_queryMetric_args');
    if (this.query !== null && this.query !== undefined) {
      output.writeFieldBegin('query', Thrift.Type.STRUCT, 1);
      this.query.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_queryMetric_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_queryMetric_result.prototype = {};
  AdminService_queryMetric_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.STRUCT) {
          this.success = new TimeSeriesData();
          this.success.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_queryMetric_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_queryMetric_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.STRUCT, 0);
      this.success.write(output);
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_queryMetrics_args = function(args) {
    this.queries = null;
    if (args) {
      if (args.queries !== undefined) {
        this.queries = args.queries;
      }
    }
  };
  AdminService_queryMetrics_args.prototype = {};
  AdminService_queryMetrics_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.LIST) {
          var _size98 = 0;
          var _rtmp3102;
          this.queries = [];
          var _etype101 = 0;
          _rtmp3102 = input.readListBegin();
          _etype101 = _rtmp3102.etype;
          _size98 = _rtmp3102.size;
          for (var _i103 = 0; _i103 < _size98; ++_i103)
          {
            var elem104 = null;
            elem104 = new MetricQueryRequest();
            elem104.read(input);
            this.queries.push(elem104);
          }
          input.readListEnd();
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_queryMetrics_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_queryMetrics_args');
    if (this.queries !== null && this.queries !== undefined) {
      output.writeFieldBegin('queries', Thrift.Type.LIST, 1);
      output.writeListBegin(Thrift.Type.STRUCT, this.queries.length);
      for (var iter105 in this.queries)
      {
        if (this.queries.hasOwnProperty(iter105))
        {
          iter105 = this.queries[iter105];
          iter105.write(output);
        }
      }
      output.writeListEnd();
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_queryMetrics_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_queryMetrics_result.prototype = {};
  AdminService_queryMetrics_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.LIST) {
          var _size106 = 0;
          var _rtmp3110;
          this.success = [];
          var _etype109 = 0;
          _rtmp3110 = input.readListBegin();
          _etype109 = _rtmp3110.etype;
          _size106 = _rtmp3110.size;
          for (var _i111 = 0; _i111 < _size106; ++_i111)
          {
            var elem112 = null;
            elem112 = new TimeSeriesData();
            elem112.read(input);
            this.success.push(elem112);
          }
          input.readListEnd();
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_queryMetrics_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_queryMetrics_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.LIST, 0);
      output.writeListBegin(Thrift.Type.STRUCT, this.success.length);
      for (var iter113 in this.success)
      {
        if (this.success.hasOwnProperty(iter113))
        {
          iter113 = this.success[iter113];
          iter113.write(output);
        }
      }
      output.writeListEnd();
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_findAllAppInfo_args = function(args) {
  };
  AdminService_findAllAppInfo_args.prototype = {};
  AdminService_findAllAppInfo_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      input.skip(ftype);
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_findAllAppInfo_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_findAllAppInfo_args');
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_findAllAppInfo_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_findAllAppInfo_result.prototype = {};
  AdminService_findAllAppInfo_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.LIST) {
          var _size114 = 0;
          var _rtmp3118;
          this.success = [];
          var _etype117 = 0;
          _rtmp3118 = input.readListBegin();
          _etype117 = _rtmp3118.etype;
          _size114 = _rtmp3118.size;
          for (var _i119 = 0; _i119 < _size114; ++_i119)
          {
            var elem120 = null;
            elem120 = new AppInfo();
            elem120.read(input);
            this.success.push(elem120);
          }
          input.readListEnd();
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_findAllAppInfo_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_findAllAppInfo_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.LIST, 0);
      output.writeListBegin(Thrift.Type.STRUCT, this.success.length);
      for (var iter121 in this.success)
      {
        if (this.success.hasOwnProperty(iter121))
        {
          iter121 = this.success[iter121];
          iter121.write(output);
        }
      }
      output.writeListEnd();
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getTableSize_args = function(args) {
    this.tableName = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
    }
  };
  AdminService_getTableSize_args.prototype = {};
  AdminService_getTableSize_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getTableSize_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getTableSize_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getTableSize_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_getTableSize_result.prototype = {};
  AdminService_getTableSize_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.I64) {
          this.success = input.readI64().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getTableSize_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getTableSize_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.I64, 0);
      output.writeI64(this.success);
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_putClientMetrics_args = function(args) {
    this.clientMetrics = null;
    if (args) {
      if (args.clientMetrics !== undefined) {
        this.clientMetrics = args.clientMetrics;
      }
    }
  };
  AdminService_putClientMetrics_args.prototype = {};
  AdminService_putClientMetrics_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.clientMetrics = new ClientMetrics();
          this.clientMetrics.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_putClientMetrics_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_putClientMetrics_args');
    if (this.clientMetrics !== null && this.clientMetrics !== undefined) {
      output.writeFieldBegin('clientMetrics', Thrift.Type.STRUCT, 1);
      this.clientMetrics.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_putClientMetrics_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_putClientMetrics_result.prototype = {};
  AdminService_putClientMetrics_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_putClientMetrics_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_putClientMetrics_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_subscribePhoneAlert_args = function(args) {
    this.phoneNumber = null;
    if (args) {
      if (args.phoneNumber !== undefined) {
        this.phoneNumber = args.phoneNumber;
      }
    }
  };
  AdminService_subscribePhoneAlert_args.prototype = {};
  AdminService_subscribePhoneAlert_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.phoneNumber = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_subscribePhoneAlert_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_subscribePhoneAlert_args');
    if (this.phoneNumber !== null && this.phoneNumber !== undefined) {
      output.writeFieldBegin('phoneNumber', Thrift.Type.STRING, 1);
      output.writeString(this.phoneNumber);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_subscribePhoneAlert_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_subscribePhoneAlert_result.prototype = {};
  AdminService_subscribePhoneAlert_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_subscribePhoneAlert_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_subscribePhoneAlert_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_unsubscribePhoneAlert_args = function(args) {
    this.phoneNumber = null;
    if (args) {
      if (args.phoneNumber !== undefined) {
        this.phoneNumber = args.phoneNumber;
      }
    }
  };
  AdminService_unsubscribePhoneAlert_args.prototype = {};
  AdminService_unsubscribePhoneAlert_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.phoneNumber = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_unsubscribePhoneAlert_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_unsubscribePhoneAlert_args');
    if (this.phoneNumber !== null && this.phoneNumber !== undefined) {
      output.writeFieldBegin('phoneNumber', Thrift.Type.STRING, 1);
      output.writeString(this.phoneNumber);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_unsubscribePhoneAlert_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_unsubscribePhoneAlert_result.prototype = {};
  AdminService_unsubscribePhoneAlert_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_unsubscribePhoneAlert_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_unsubscribePhoneAlert_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_subscribeEmailAlert_args = function(args) {
    this.email = null;
    if (args) {
      if (args.email !== undefined) {
        this.email = args.email;
      }
    }
  };
  AdminService_subscribeEmailAlert_args.prototype = {};
  AdminService_subscribeEmailAlert_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.email = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_subscribeEmailAlert_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_subscribeEmailAlert_args');
    if (this.email !== null && this.email !== undefined) {
      output.writeFieldBegin('email', Thrift.Type.STRING, 1);
      output.writeString(this.email);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_subscribeEmailAlert_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_subscribeEmailAlert_result.prototype = {};
  AdminService_subscribeEmailAlert_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_subscribeEmailAlert_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_subscribeEmailAlert_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_unsubscribeEmailAlert_args = function(args) {
    this.email = null;
    if (args) {
      if (args.email !== undefined) {
        this.email = args.email;
      }
    }
  };
  AdminService_unsubscribeEmailAlert_args.prototype = {};
  AdminService_unsubscribeEmailAlert_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.email = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_unsubscribeEmailAlert_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_unsubscribeEmailAlert_args');
    if (this.email !== null && this.email !== undefined) {
      output.writeFieldBegin('email', Thrift.Type.STRING, 1);
      output.writeString(this.email);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_unsubscribeEmailAlert_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_unsubscribeEmailAlert_result.prototype = {};
  AdminService_unsubscribeEmailAlert_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_unsubscribeEmailAlert_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_unsubscribeEmailAlert_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_listSubscribedPhone_args = function(args) {
  };
  AdminService_listSubscribedPhone_args.prototype = {};
  AdminService_listSubscribedPhone_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      input.skip(ftype);
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_listSubscribedPhone_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_listSubscribedPhone_args');
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_listSubscribedPhone_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_listSubscribedPhone_result.prototype = {};
  AdminService_listSubscribedPhone_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.LIST) {
          var _size122 = 0;
          var _rtmp3126;
          this.success = [];
          var _etype125 = 0;
          _rtmp3126 = input.readListBegin();
          _etype125 = _rtmp3126.etype;
          _size122 = _rtmp3126.size;
          for (var _i127 = 0; _i127 < _size122; ++_i127)
          {
            var elem128 = null;
            elem128 = input.readString().value;
            this.success.push(elem128);
          }
          input.readListEnd();
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_listSubscribedPhone_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_listSubscribedPhone_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.LIST, 0);
      output.writeListBegin(Thrift.Type.STRING, this.success.length);
      for (var iter129 in this.success)
      {
        if (this.success.hasOwnProperty(iter129))
        {
          iter129 = this.success[iter129];
          output.writeString(iter129);
        }
      }
      output.writeListEnd();
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_listSubscribedEmail_args = function(args) {
  };
  AdminService_listSubscribedEmail_args.prototype = {};
  AdminService_listSubscribedEmail_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      input.skip(ftype);
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_listSubscribedEmail_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_listSubscribedEmail_args');
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_listSubscribedEmail_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_listSubscribedEmail_result.prototype = {};
  AdminService_listSubscribedEmail_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.LIST) {
          var _size130 = 0;
          var _rtmp3134;
          this.success = [];
          var _etype133 = 0;
          _rtmp3134 = input.readListBegin();
          _etype133 = _rtmp3134.etype;
          _size130 = _rtmp3134.size;
          for (var _i135 = 0; _i135 < _size130; ++_i135)
          {
            var elem136 = null;
            elem136 = input.readString().value;
            this.success.push(elem136);
          }
          input.readListEnd();
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_listSubscribedEmail_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_listSubscribedEmail_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.LIST, 0);
      output.writeListBegin(Thrift.Type.STRING, this.success.length);
      for (var iter137 in this.success)
      {
        if (this.success.hasOwnProperty(iter137))
        {
          iter137 = this.success[iter137];
          output.writeString(iter137);
        }
      }
      output.writeListEnd();
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getTableHistorySize_args = function(args) {
    this.tableName = null;
    this.startDate = null;
    this.stopDate = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
      if (args.startDate !== undefined) {
        this.startDate = args.startDate;
      }
      if (args.stopDate !== undefined) {
        this.stopDate = args.stopDate;
      }
    }
  };
  AdminService_getTableHistorySize_args.prototype = {};
  AdminService_getTableHistorySize_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 2:
        if (ftype == Thrift.Type.I64) {
          this.startDate = input.readI64().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 3:
        if (ftype == Thrift.Type.I64) {
          this.stopDate = input.readI64().value;
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getTableHistorySize_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getTableHistorySize_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    if (this.startDate !== null && this.startDate !== undefined) {
      output.writeFieldBegin('startDate', Thrift.Type.I64, 2);
      output.writeI64(this.startDate);
      output.writeFieldEnd();
    }
    if (this.stopDate !== null && this.stopDate !== undefined) {
      output.writeFieldBegin('stopDate', Thrift.Type.I64, 3);
      output.writeI64(this.stopDate);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getTableHistorySize_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_getTableHistorySize_result.prototype = {};
  AdminService_getTableHistorySize_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.MAP) {
          var _size138 = 0;
          var _rtmp3142;
          this.success = {};
          var _ktype139 = 0;
          var _vtype140 = 0;
          _rtmp3142 = input.readMapBegin();
          _ktype139 = _rtmp3142.ktype;
          _vtype140 = _rtmp3142.vtype;
          _size138 = _rtmp3142.size;
          for (var _i143 = 0; _i143 < _size138; ++_i143)
          {
            if (_i143 > 0 ) {
              if (input.rstack.length > input.rpos[input.rpos.length -1] + 1) {
                input.rstack.pop();
              }
            }
            var key144 = null;
            var val145 = null;
            key144 = input.readI64().value;
            val145 = input.readI64().value;
            this.success[key144] = val145;
          }
          input.readMapEnd();
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getTableHistorySize_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getTableHistorySize_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.MAP, 0);
      output.writeMapBegin(Thrift.Type.I64, Thrift.Type.I64, Thrift.objectLength(this.success));
      for (var kiter146 in this.success)
      {
        if (this.success.hasOwnProperty(kiter146))
        {
          var viter147 = this.success[kiter146];
          output.writeI64(kiter146);
          output.writeI64(viter147);
        }
      }
      output.writeMapEnd();
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_renameTable_args = function(args) {
    this.srcName = null;
    this.destName = null;
    if (args) {
      if (args.srcName !== undefined) {
        this.srcName = args.srcName;
      }
      if (args.destName !== undefined) {
        this.destName = args.destName;
      }
    }
  };
  AdminService_renameTable_args.prototype = {};
  AdminService_renameTable_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.srcName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 2:
        if (ftype == Thrift.Type.STRING) {
          this.destName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_renameTable_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_renameTable_args');
    if (this.srcName !== null && this.srcName !== undefined) {
      output.writeFieldBegin('srcName', Thrift.Type.STRING, 1);
      output.writeString(this.srcName);
      output.writeFieldEnd();
    }
    if (this.destName !== null && this.destName !== undefined) {
      output.writeFieldBegin('destName', Thrift.Type.STRING, 2);
      output.writeString(this.destName);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_renameTable_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_renameTable_result.prototype = {};
  AdminService_renameTable_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_renameTable_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_renameTable_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_listSnapshots_args = function(args) {
    this.tableName = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
    }
  };
  AdminService_listSnapshots_args.prototype = {};
  AdminService_listSnapshots_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_listSnapshots_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_listSnapshots_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_listSnapshots_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_listSnapshots_result.prototype = {};
  AdminService_listSnapshots_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.STRUCT) {
          this.success = new TableSnapshots();
          this.success.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_listSnapshots_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_listSnapshots_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.STRUCT, 0);
      this.success.write(output);
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_snapshotTable_args = function(args) {
    this.tableName = null;
    this.snapshotName = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
      if (args.snapshotName !== undefined) {
        this.snapshotName = args.snapshotName;
      }
    }
  };
  AdminService_snapshotTable_args.prototype = {};
  AdminService_snapshotTable_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 2:
        if (ftype == Thrift.Type.STRING) {
          this.snapshotName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_snapshotTable_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_snapshotTable_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    if (this.snapshotName !== null && this.snapshotName !== undefined) {
      output.writeFieldBegin('snapshotName', Thrift.Type.STRING, 2);
      output.writeString(this.snapshotName);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_snapshotTable_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_snapshotTable_result.prototype = {};
  AdminService_snapshotTable_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_snapshotTable_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_snapshotTable_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_deleteSnapshot_args = function(args) {
    this.tableName = null;
    this.snapshotName = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
      if (args.snapshotName !== undefined) {
        this.snapshotName = args.snapshotName;
      }
    }
  };
  AdminService_deleteSnapshot_args.prototype = {};
  AdminService_deleteSnapshot_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 2:
        if (ftype == Thrift.Type.STRING) {
          this.snapshotName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_deleteSnapshot_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_deleteSnapshot_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    if (this.snapshotName !== null && this.snapshotName !== undefined) {
      output.writeFieldBegin('snapshotName', Thrift.Type.STRING, 2);
      output.writeString(this.snapshotName);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_deleteSnapshot_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_deleteSnapshot_result.prototype = {};
  AdminService_deleteSnapshot_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_deleteSnapshot_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_deleteSnapshot_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_restoreSnapshot_args = function(args) {
    this.tableName = null;
    this.snapshotName = null;
    this.destTableName = null;
    this.isSystem = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
      if (args.snapshotName !== undefined) {
        this.snapshotName = args.snapshotName;
      }
      if (args.destTableName !== undefined) {
        this.destTableName = args.destTableName;
      }
      if (args.isSystem !== undefined) {
        this.isSystem = args.isSystem;
      }
    }
  };
  AdminService_restoreSnapshot_args.prototype = {};
  AdminService_restoreSnapshot_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 2:
        if (ftype == Thrift.Type.STRING) {
          this.snapshotName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 3:
        if (ftype == Thrift.Type.STRING) {
          this.destTableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 4:
        if (ftype == Thrift.Type.BOOL) {
          this.isSystem = input.readBool().value;
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_restoreSnapshot_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_restoreSnapshot_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    if (this.snapshotName !== null && this.snapshotName !== undefined) {
      output.writeFieldBegin('snapshotName', Thrift.Type.STRING, 2);
      output.writeString(this.snapshotName);
      output.writeFieldEnd();
    }
    if (this.destTableName !== null && this.destTableName !== undefined) {
      output.writeFieldBegin('destTableName', Thrift.Type.STRING, 3);
      output.writeString(this.destTableName);
      output.writeFieldEnd();
    }
    if (this.isSystem !== null && this.isSystem !== undefined) {
      output.writeFieldBegin('isSystem', Thrift.Type.BOOL, 4);
      output.writeBool(this.isSystem);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_restoreSnapshot_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_restoreSnapshot_result.prototype = {};
  AdminService_restoreSnapshot_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_restoreSnapshot_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_restoreSnapshot_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_listAllSnapshots_args = function(args) {
  };
  AdminService_listAllSnapshots_args.prototype = {};
  AdminService_listAllSnapshots_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      input.skip(ftype);
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_listAllSnapshots_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_listAllSnapshots_args');
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_listAllSnapshots_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_listAllSnapshots_result.prototype = {};
  AdminService_listAllSnapshots_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.LIST) {
          var _size148 = 0;
          var _rtmp3152;
          this.success = [];
          var _etype151 = 0;
          _rtmp3152 = input.readListBegin();
          _etype151 = _rtmp3152.etype;
          _size148 = _rtmp3152.size;
          for (var _i153 = 0; _i153 < _size148; ++_i153)
          {
            var elem154 = null;
            elem154 = new SnapshotTableView();
            elem154.read(input);
            this.success.push(elem154);
          }
          input.readListEnd();
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_listAllSnapshots_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_listAllSnapshots_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.LIST, 0);
      output.writeListBegin(Thrift.Type.STRUCT, this.success.length);
      for (var iter155 in this.success)
      {
        if (this.success.hasOwnProperty(iter155))
        {
          iter155 = this.success[iter155];
          iter155.write(output);
        }
      }
      output.writeListEnd();
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_cancelSnapshotTable_args = function(args) {
    this.tableName = null;
    this.snapshotName = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
      if (args.snapshotName !== undefined) {
        this.snapshotName = args.snapshotName;
      }
    }
  };
  AdminService_cancelSnapshotTable_args.prototype = {};
  AdminService_cancelSnapshotTable_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 2:
        if (ftype == Thrift.Type.STRING) {
          this.snapshotName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_cancelSnapshotTable_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_cancelSnapshotTable_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    if (this.snapshotName !== null && this.snapshotName !== undefined) {
      output.writeFieldBegin('snapshotName', Thrift.Type.STRING, 2);
      output.writeString(this.snapshotName);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_cancelSnapshotTable_result = function(args) {
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_cancelSnapshotTable_result.prototype = {};
  AdminService_cancelSnapshotTable_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 0:
          input.skip(ftype);
          break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_cancelSnapshotTable_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_cancelSnapshotTable_result');
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getSnapshotState_args = function(args) {
    this.tableName = null;
    this.snapshotName = null;
    if (args) {
      if (args.tableName !== undefined) {
        this.tableName = args.tableName;
      }
      if (args.snapshotName !== undefined) {
        this.snapshotName = args.snapshotName;
      }
    }
  };
  AdminService_getSnapshotState_args.prototype = {};
  AdminService_getSnapshotState_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 1:
        if (ftype == Thrift.Type.STRING) {
          this.tableName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 2:
        if (ftype == Thrift.Type.STRING) {
          this.snapshotName = input.readString().value;
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getSnapshotState_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getSnapshotState_args');
    if (this.tableName !== null && this.tableName !== undefined) {
      output.writeFieldBegin('tableName', Thrift.Type.STRING, 1);
      output.writeString(this.tableName);
      output.writeFieldEnd();
    }
    if (this.snapshotName !== null && this.snapshotName !== undefined) {
      output.writeFieldBegin('snapshotName', Thrift.Type.STRING, 2);
      output.writeString(this.snapshotName);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getSnapshotState_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_getSnapshotState_result.prototype = {};
  AdminService_getSnapshotState_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.I32) {
          this.success = input.readI32().value;
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getSnapshotState_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getSnapshotState_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.I32, 0);
      output.writeI32(this.success);
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getQuotaInfo_args = function(args) {
  };
  AdminService_getQuotaInfo_args.prototype = {};
  AdminService_getQuotaInfo_args.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      input.skip(ftype);
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getQuotaInfo_args.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getQuotaInfo_args');
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminService_getQuotaInfo_result = function(args) {
    this.success = null;
    this.se = null;
    if (args instanceof ServiceException) {
      this.se = args;
      return;
    }
    if (args) {
      if (args.success !== undefined) {
        this.success = args.success;
      }
      if (args.se !== undefined) {
        this.se = args.se;
      }
    }
  };
  AdminService_getQuotaInfo_result.prototype = {};
  AdminService_getQuotaInfo_result.prototype.read = function(input) {
    input.readStructBegin();
    while (true)
    {
      var ret = input.readFieldBegin();
      var fname = ret.fname;
      var ftype = ret.ftype;
      var fid = ret.fid;
      if (ftype == Thrift.Type.STOP) {
        break;
      }
      switch (fid)
      {
        case 0:
        if (ftype == Thrift.Type.STRUCT) {
          this.success = new QuotaInfo();
          this.success.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        case 1:
        if (ftype == Thrift.Type.STRUCT) {
          this.se = new ServiceException();
          this.se.read(input);
        } else {
          input.skip(ftype);
        }
        break;
        default:
          input.skip(ftype);
      }
      input.readFieldEnd();
    }
    input.readStructEnd();
    return;
  };
  
  AdminService_getQuotaInfo_result.prototype.write = function(output) {
    output.writeStructBegin('AdminService_getQuotaInfo_result');
    if (this.success !== null && this.success !== undefined) {
      output.writeFieldBegin('success', Thrift.Type.STRUCT, 0);
      this.success.write(output);
      output.writeFieldEnd();
    }
    if (this.se !== null && this.se !== undefined) {
      output.writeFieldBegin('se', Thrift.Type.STRUCT, 1);
      this.se.write(output);
      output.writeFieldEnd();
    }
    output.writeFieldStop();
    output.writeStructEnd();
    return;
  };
  
  AdminServiceClient = function(input, output) {
      this.input = input;
      this.output = (!output) ? input : output;
      this.seqid = 0;
  };
  Thrift.inherits(AdminServiceClient, BaseServiceClient);
  AdminServiceClient.prototype.saveAppInfo = function(appInfo, callback) {
    if (callback === undefined) {
      this.send_saveAppInfo(appInfo);
      this.recv_saveAppInfo();
    } else {
      var postData = this.send_saveAppInfo(appInfo, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_saveAppInfo);
    }
  };
  
  AdminServiceClient.prototype.send_saveAppInfo = function(appInfo, callback) {
    this.output.writeMessageBegin('saveAppInfo', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_saveAppInfo_args();
    args.appInfo = appInfo;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_saveAppInfo = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_saveAppInfo_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.getAppInfo = function(appId, callback) {
    if (callback === undefined) {
      this.send_getAppInfo(appId);
      return this.recv_getAppInfo();
    } else {
      var postData = this.send_getAppInfo(appId, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_getAppInfo);
    }
  };
  
  AdminServiceClient.prototype.send_getAppInfo = function(appId, callback) {
    this.output.writeMessageBegin('getAppInfo', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_getAppInfo_args();
    args.appId = appId;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_getAppInfo = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_getAppInfo_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'getAppInfo failed: unknown result';
  };
  AdminServiceClient.prototype.findAllApps = function(callback) {
    if (callback === undefined) {
      this.send_findAllApps();
      return this.recv_findAllApps();
    } else {
      var postData = this.send_findAllApps(true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_findAllApps);
    }
  };
  
  AdminServiceClient.prototype.send_findAllApps = function(callback) {
    this.output.writeMessageBegin('findAllApps', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_findAllApps_args();
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_findAllApps = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_findAllApps_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'findAllApps failed: unknown result';
  };
  AdminServiceClient.prototype.findAllTables = function(callback) {
    if (callback === undefined) {
      this.send_findAllTables();
      return this.recv_findAllTables();
    } else {
      var postData = this.send_findAllTables(true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_findAllTables);
    }
  };
  
  AdminServiceClient.prototype.send_findAllTables = function(callback) {
    this.output.writeMessageBegin('findAllTables', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_findAllTables_args();
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_findAllTables = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_findAllTables_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'findAllTables failed: unknown result';
  };
  AdminServiceClient.prototype.createTable = function(tableName, tableSpec, callback) {
    if (callback === undefined) {
      this.send_createTable(tableName, tableSpec);
      return this.recv_createTable();
    } else {
      var postData = this.send_createTable(tableName, tableSpec, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_createTable);
    }
  };
  
  AdminServiceClient.prototype.send_createTable = function(tableName, tableSpec, callback) {
    this.output.writeMessageBegin('createTable', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_createTable_args();
    args.tableName = tableName;
    args.tableSpec = tableSpec;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_createTable = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_createTable_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'createTable failed: unknown result';
  };
  AdminServiceClient.prototype.dropTable = function(tableName, callback) {
    if (callback === undefined) {
      this.send_dropTable(tableName);
      this.recv_dropTable();
    } else {
      var postData = this.send_dropTable(tableName, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_dropTable);
    }
  };
  
  AdminServiceClient.prototype.send_dropTable = function(tableName, callback) {
    this.output.writeMessageBegin('dropTable', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_dropTable_args();
    args.tableName = tableName;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_dropTable = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_dropTable_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.alterTable = function(tableName, tableSpec, callback) {
    if (callback === undefined) {
      this.send_alterTable(tableName, tableSpec);
      this.recv_alterTable();
    } else {
      var postData = this.send_alterTable(tableName, tableSpec, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_alterTable);
    }
  };
  
  AdminServiceClient.prototype.send_alterTable = function(tableName, tableSpec, callback) {
    this.output.writeMessageBegin('alterTable', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_alterTable_args();
    args.tableName = tableName;
    args.tableSpec = tableSpec;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_alterTable = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_alterTable_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.cloneTable = function(srcName, destTable, flushTable, callback) {
    if (callback === undefined) {
      this.send_cloneTable(srcName, destTable, flushTable);
      this.recv_cloneTable();
    } else {
      var postData = this.send_cloneTable(srcName, destTable, flushTable, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_cloneTable);
    }
  };
  
  AdminServiceClient.prototype.send_cloneTable = function(srcName, destTable, flushTable, callback) {
    this.output.writeMessageBegin('cloneTable', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_cloneTable_args();
    args.srcName = srcName;
    args.destTable = destTable;
    args.flushTable = flushTable;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_cloneTable = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_cloneTable_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.disableTable = function(tableName, callback) {
    if (callback === undefined) {
      this.send_disableTable(tableName);
      this.recv_disableTable();
    } else {
      var postData = this.send_disableTable(tableName, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_disableTable);
    }
  };
  
  AdminServiceClient.prototype.send_disableTable = function(tableName, callback) {
    this.output.writeMessageBegin('disableTable', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_disableTable_args();
    args.tableName = tableName;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_disableTable = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_disableTable_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.enableTable = function(tableName, callback) {
    if (callback === undefined) {
      this.send_enableTable(tableName);
      this.recv_enableTable();
    } else {
      var postData = this.send_enableTable(tableName, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_enableTable);
    }
  };
  
  AdminServiceClient.prototype.send_enableTable = function(tableName, callback) {
    this.output.writeMessageBegin('enableTable', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_enableTable_args();
    args.tableName = tableName;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_enableTable = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_enableTable_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.describeTable = function(tableName, callback) {
    if (callback === undefined) {
      this.send_describeTable(tableName);
      return this.recv_describeTable();
    } else {
      var postData = this.send_describeTable(tableName, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_describeTable);
    }
  };
  
  AdminServiceClient.prototype.send_describeTable = function(tableName, callback) {
    this.output.writeMessageBegin('describeTable', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_describeTable_args();
    args.tableName = tableName;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_describeTable = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_describeTable_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'describeTable failed: unknown result';
  };
  AdminServiceClient.prototype.getTableStatus = function(tableName, callback) {
    if (callback === undefined) {
      this.send_getTableStatus(tableName);
      return this.recv_getTableStatus();
    } else {
      var postData = this.send_getTableStatus(tableName, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_getTableStatus);
    }
  };
  
  AdminServiceClient.prototype.send_getTableStatus = function(tableName, callback) {
    this.output.writeMessageBegin('getTableStatus', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_getTableStatus_args();
    args.tableName = tableName;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_getTableStatus = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_getTableStatus_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'getTableStatus failed: unknown result';
  };
  AdminServiceClient.prototype.getTableState = function(tableName, callback) {
    if (callback === undefined) {
      this.send_getTableState(tableName);
      return this.recv_getTableState();
    } else {
      var postData = this.send_getTableState(tableName, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_getTableState);
    }
  };
  
  AdminServiceClient.prototype.send_getTableState = function(tableName, callback) {
    this.output.writeMessageBegin('getTableState', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_getTableState_args();
    args.tableName = tableName;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_getTableState = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_getTableState_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'getTableState failed: unknown result';
  };
  AdminServiceClient.prototype.getTableSplits = function(tableName, startKey, stopKey, callback) {
    if (callback === undefined) {
      this.send_getTableSplits(tableName, startKey, stopKey);
      return this.recv_getTableSplits();
    } else {
      var postData = this.send_getTableSplits(tableName, startKey, stopKey, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_getTableSplits);
    }
  };
  
  AdminServiceClient.prototype.send_getTableSplits = function(tableName, startKey, stopKey, callback) {
    this.output.writeMessageBegin('getTableSplits', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_getTableSplits_args();
    args.tableName = tableName;
    args.startKey = startKey;
    args.stopKey = stopKey;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_getTableSplits = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_getTableSplits_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'getTableSplits failed: unknown result';
  };
  AdminServiceClient.prototype.queryMetric = function(query, callback) {
    if (callback === undefined) {
      this.send_queryMetric(query);
      return this.recv_queryMetric();
    } else {
      var postData = this.send_queryMetric(query, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_queryMetric);
    }
  };
  
  AdminServiceClient.prototype.send_queryMetric = function(query, callback) {
    this.output.writeMessageBegin('queryMetric', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_queryMetric_args();
    args.query = query;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_queryMetric = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_queryMetric_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'queryMetric failed: unknown result';
  };
  AdminServiceClient.prototype.queryMetrics = function(queries, callback) {
    if (callback === undefined) {
      this.send_queryMetrics(queries);
      return this.recv_queryMetrics();
    } else {
      var postData = this.send_queryMetrics(queries, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_queryMetrics);
    }
  };
  
  AdminServiceClient.prototype.send_queryMetrics = function(queries, callback) {
    this.output.writeMessageBegin('queryMetrics', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_queryMetrics_args();
    args.queries = queries;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_queryMetrics = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_queryMetrics_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'queryMetrics failed: unknown result';
  };
  AdminServiceClient.prototype.findAllAppInfo = function(callback) {
    if (callback === undefined) {
      this.send_findAllAppInfo();
      return this.recv_findAllAppInfo();
    } else {
      var postData = this.send_findAllAppInfo(true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_findAllAppInfo);
    }
  };
  
  AdminServiceClient.prototype.send_findAllAppInfo = function(callback) {
    this.output.writeMessageBegin('findAllAppInfo', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_findAllAppInfo_args();
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_findAllAppInfo = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_findAllAppInfo_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'findAllAppInfo failed: unknown result';
  };
  AdminServiceClient.prototype.getTableSize = function(tableName, callback) {
    if (callback === undefined) {
      this.send_getTableSize(tableName);
      return this.recv_getTableSize();
    } else {
      var postData = this.send_getTableSize(tableName, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_getTableSize);
    }
  };
  
  AdminServiceClient.prototype.send_getTableSize = function(tableName, callback) {
    this.output.writeMessageBegin('getTableSize', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_getTableSize_args();
    args.tableName = tableName;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_getTableSize = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_getTableSize_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'getTableSize failed: unknown result';
  };
  AdminServiceClient.prototype.putClientMetrics = function(clientMetrics, callback) {
    if (callback === undefined) {
      this.send_putClientMetrics(clientMetrics);
      this.recv_putClientMetrics();
    } else {
      var postData = this.send_putClientMetrics(clientMetrics, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_putClientMetrics);
    }
  };
  
  AdminServiceClient.prototype.send_putClientMetrics = function(clientMetrics, callback) {
    this.output.writeMessageBegin('putClientMetrics', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_putClientMetrics_args();
    args.clientMetrics = clientMetrics;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_putClientMetrics = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_putClientMetrics_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.subscribePhoneAlert = function(phoneNumber, callback) {
    if (callback === undefined) {
      this.send_subscribePhoneAlert(phoneNumber);
      this.recv_subscribePhoneAlert();
    } else {
      var postData = this.send_subscribePhoneAlert(phoneNumber, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_subscribePhoneAlert);
    }
  };
  
  AdminServiceClient.prototype.send_subscribePhoneAlert = function(phoneNumber, callback) {
    this.output.writeMessageBegin('subscribePhoneAlert', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_subscribePhoneAlert_args();
    args.phoneNumber = phoneNumber;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_subscribePhoneAlert = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_subscribePhoneAlert_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.unsubscribePhoneAlert = function(phoneNumber, callback) {
    if (callback === undefined) {
      this.send_unsubscribePhoneAlert(phoneNumber);
      this.recv_unsubscribePhoneAlert();
    } else {
      var postData = this.send_unsubscribePhoneAlert(phoneNumber, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_unsubscribePhoneAlert);
    }
  };
  
  AdminServiceClient.prototype.send_unsubscribePhoneAlert = function(phoneNumber, callback) {
    this.output.writeMessageBegin('unsubscribePhoneAlert', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_unsubscribePhoneAlert_args();
    args.phoneNumber = phoneNumber;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_unsubscribePhoneAlert = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_unsubscribePhoneAlert_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.subscribeEmailAlert = function(email, callback) {
    if (callback === undefined) {
      this.send_subscribeEmailAlert(email);
      this.recv_subscribeEmailAlert();
    } else {
      var postData = this.send_subscribeEmailAlert(email, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_subscribeEmailAlert);
    }
  };
  
  AdminServiceClient.prototype.send_subscribeEmailAlert = function(email, callback) {
    this.output.writeMessageBegin('subscribeEmailAlert', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_subscribeEmailAlert_args();
    args.email = email;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_subscribeEmailAlert = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_subscribeEmailAlert_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.unsubscribeEmailAlert = function(email, callback) {
    if (callback === undefined) {
      this.send_unsubscribeEmailAlert(email);
      this.recv_unsubscribeEmailAlert();
    } else {
      var postData = this.send_unsubscribeEmailAlert(email, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_unsubscribeEmailAlert);
    }
  };
  
  AdminServiceClient.prototype.send_unsubscribeEmailAlert = function(email, callback) {
    this.output.writeMessageBegin('unsubscribeEmailAlert', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_unsubscribeEmailAlert_args();
    args.email = email;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_unsubscribeEmailAlert = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_unsubscribeEmailAlert_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.listSubscribedPhone = function(callback) {
    if (callback === undefined) {
      this.send_listSubscribedPhone();
      return this.recv_listSubscribedPhone();
    } else {
      var postData = this.send_listSubscribedPhone(true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_listSubscribedPhone);
    }
  };
  
  AdminServiceClient.prototype.send_listSubscribedPhone = function(callback) {
    this.output.writeMessageBegin('listSubscribedPhone', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_listSubscribedPhone_args();
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_listSubscribedPhone = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_listSubscribedPhone_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'listSubscribedPhone failed: unknown result';
  };
  AdminServiceClient.prototype.listSubscribedEmail = function(callback) {
    if (callback === undefined) {
      this.send_listSubscribedEmail();
      return this.recv_listSubscribedEmail();
    } else {
      var postData = this.send_listSubscribedEmail(true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_listSubscribedEmail);
    }
  };
  
  AdminServiceClient.prototype.send_listSubscribedEmail = function(callback) {
    this.output.writeMessageBegin('listSubscribedEmail', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_listSubscribedEmail_args();
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_listSubscribedEmail = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_listSubscribedEmail_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'listSubscribedEmail failed: unknown result';
  };
  AdminServiceClient.prototype.getTableHistorySize = function(tableName, startDate, stopDate, callback) {
    if (callback === undefined) {
      this.send_getTableHistorySize(tableName, startDate, stopDate);
      return this.recv_getTableHistorySize();
    } else {
      var postData = this.send_getTableHistorySize(tableName, startDate, stopDate, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_getTableHistorySize);
    }
  };
  
  AdminServiceClient.prototype.send_getTableHistorySize = function(tableName, startDate, stopDate, callback) {
    this.output.writeMessageBegin('getTableHistorySize', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_getTableHistorySize_args();
    args.tableName = tableName;
    args.startDate = startDate;
    args.stopDate = stopDate;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_getTableHistorySize = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_getTableHistorySize_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'getTableHistorySize failed: unknown result';
  };
  AdminServiceClient.prototype.renameTable = function(srcName, destName, callback) {
    if (callback === undefined) {
      this.send_renameTable(srcName, destName);
      this.recv_renameTable();
    } else {
      var postData = this.send_renameTable(srcName, destName, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_renameTable);
    }
  };
  
  AdminServiceClient.prototype.send_renameTable = function(srcName, destName, callback) {
    this.output.writeMessageBegin('renameTable', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_renameTable_args();
    args.srcName = srcName;
    args.destName = destName;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_renameTable = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_renameTable_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.listSnapshots = function(tableName, callback) {
    if (callback === undefined) {
      this.send_listSnapshots(tableName);
      return this.recv_listSnapshots();
    } else {
      var postData = this.send_listSnapshots(tableName, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_listSnapshots);
    }
  };
  
  AdminServiceClient.prototype.send_listSnapshots = function(tableName, callback) {
    this.output.writeMessageBegin('listSnapshots', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_listSnapshots_args();
    args.tableName = tableName;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_listSnapshots = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_listSnapshots_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'listSnapshots failed: unknown result';
  };
  AdminServiceClient.prototype.snapshotTable = function(tableName, snapshotName, callback) {
    if (callback === undefined) {
      this.send_snapshotTable(tableName, snapshotName);
      this.recv_snapshotTable();
    } else {
      var postData = this.send_snapshotTable(tableName, snapshotName, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_snapshotTable);
    }
  };
  
  AdminServiceClient.prototype.send_snapshotTable = function(tableName, snapshotName, callback) {
    this.output.writeMessageBegin('snapshotTable', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_snapshotTable_args();
    args.tableName = tableName;
    args.snapshotName = snapshotName;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_snapshotTable = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_snapshotTable_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.deleteSnapshot = function(tableName, snapshotName, callback) {
    if (callback === undefined) {
      this.send_deleteSnapshot(tableName, snapshotName);
      this.recv_deleteSnapshot();
    } else {
      var postData = this.send_deleteSnapshot(tableName, snapshotName, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_deleteSnapshot);
    }
  };
  
  AdminServiceClient.prototype.send_deleteSnapshot = function(tableName, snapshotName, callback) {
    this.output.writeMessageBegin('deleteSnapshot', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_deleteSnapshot_args();
    args.tableName = tableName;
    args.snapshotName = snapshotName;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_deleteSnapshot = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_deleteSnapshot_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.restoreSnapshot = function(tableName, snapshotName, destTableName, isSystem, callback) {
    if (callback === undefined) {
      this.send_restoreSnapshot(tableName, snapshotName, destTableName, isSystem);
      this.recv_restoreSnapshot();
    } else {
      var postData = this.send_restoreSnapshot(tableName, snapshotName, destTableName, isSystem, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_restoreSnapshot);
    }
  };
  
  AdminServiceClient.prototype.send_restoreSnapshot = function(tableName, snapshotName, destTableName, isSystem, callback) {
    this.output.writeMessageBegin('restoreSnapshot', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_restoreSnapshot_args();
    args.tableName = tableName;
    args.snapshotName = snapshotName;
    args.destTableName = destTableName;
    args.isSystem = isSystem;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_restoreSnapshot = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_restoreSnapshot_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.listAllSnapshots = function(callback) {
    if (callback === undefined) {
      this.send_listAllSnapshots();
      return this.recv_listAllSnapshots();
    } else {
      var postData = this.send_listAllSnapshots(true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_listAllSnapshots);
    }
  };
  
  AdminServiceClient.prototype.send_listAllSnapshots = function(callback) {
    this.output.writeMessageBegin('listAllSnapshots', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_listAllSnapshots_args();
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_listAllSnapshots = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_listAllSnapshots_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'listAllSnapshots failed: unknown result';
  };
  AdminServiceClient.prototype.cancelSnapshotTable = function(tableName, snapshotName, callback) {
    if (callback === undefined) {
      this.send_cancelSnapshotTable(tableName, snapshotName);
      this.recv_cancelSnapshotTable();
    } else {
      var postData = this.send_cancelSnapshotTable(tableName, snapshotName, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_cancelSnapshotTable);
    }
  };
  
  AdminServiceClient.prototype.send_cancelSnapshotTable = function(tableName, snapshotName, callback) {
    this.output.writeMessageBegin('cancelSnapshotTable', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_cancelSnapshotTable_args();
    args.tableName = tableName;
    args.snapshotName = snapshotName;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_cancelSnapshotTable = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_cancelSnapshotTable_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    return;
  };
  AdminServiceClient.prototype.getSnapshotState = function(tableName, snapshotName, callback) {
    if (callback === undefined) {
      this.send_getSnapshotState(tableName, snapshotName);
      return this.recv_getSnapshotState();
    } else {
      var postData = this.send_getSnapshotState(tableName, snapshotName, true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_getSnapshotState);
    }
  };
  
  AdminServiceClient.prototype.send_getSnapshotState = function(tableName, snapshotName, callback) {
    this.output.writeMessageBegin('getSnapshotState', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_getSnapshotState_args();
    args.tableName = tableName;
    args.snapshotName = snapshotName;
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_getSnapshotState = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_getSnapshotState_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'getSnapshotState failed: unknown result';
  };
  AdminServiceClient.prototype.getQuotaInfo = function(callback) {
    if (callback === undefined) {
      this.send_getQuotaInfo();
      return this.recv_getQuotaInfo();
    } else {
      var postData = this.send_getQuotaInfo(true);
      return this.output.getTransport()
        .jqRequest(this, postData, arguments, this.recv_getQuotaInfo);
    }
  };
  
  AdminServiceClient.prototype.send_getQuotaInfo = function(callback) {
    this.output.writeMessageBegin('getQuotaInfo', Thrift.MessageType.CALL, this.seqid);
    var args = new AdminService_getQuotaInfo_args();
    args.write(this.output);
    this.output.writeMessageEnd();
    return this.output.getTransport().flush(callback);
  };
  
  AdminServiceClient.prototype.recv_getQuotaInfo = function() {
    var ret = this.input.readMessageBegin();
    var fname = ret.fname;
    var mtype = ret.mtype;
    var rseqid = ret.rseqid;
    if (mtype == Thrift.MessageType.EXCEPTION) {
      var x = new Thrift.TApplicationException();
      x.read(this.input);
      this.input.readMessageEnd();
      throw x;
    }
    var result = new AdminService_getQuotaInfo_result();
    result.read(this.input);
    this.input.readMessageEnd();
  
    if (null !== result.se) {
      throw result.se;
    }
    if (null !== result.success) {
      return result.success;
    }
    throw 'getQuotaInfo failed: unknown result';
  };
  