PrepareStatement(LOGIN_SEL_REALMLIST,"SELECT id, name, address, localAddress, localSubnetMask, port, icon, flag, timezone, allowedSecurityLevel, population, gamebuild FROM realmlist WHERE flag <> 3 ORDER BY name",CONNECTION_SYNCH);
PrepareStatement(LOGIN_DEL_EXPIRED_IP_BANS,"DELETE FROM ip_banned WHERE unbandate<>bandate AND unbandate<=UNIX_TIMESTAMP()",CONNECTION_ASYNC);
PrepareStatement(LOGIN_UPD_EXPIRED_ACCOUNT_BANS,"UPDATE account_banned SET active = 0 WHERE active = 1 AND unbandate<>bandate AND unbandate<=UNIX_TIMESTAMP()",CONNECTION_ASYNC);
PrepareStatement(LOGIN_SEL_IP_BANNED,"SELECT * FROM ip_banned WHERE ip = ?",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_IP_BANNED_ALL,"SELECT ip, bandate, unbandate, bannedby, banreason FROM ip_banned WHERE (bandate = unbandate OR unbandate > UNIX_TIMESTAMP()) ORDER BY unbandate",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_IP_BANNED_BY_IP,"SELECT ip, bandate, unbandate, bannedby, banreason FROM ip_banned WHERE (bandate = unbandate OR unbandate > UNIX_TIMESTAMP()) AND ip LIKE CONCAT('%%', ?, '%%') ORDER BY unbandate",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_ACCOUNT_BANNED,"SELECT bandate, unbandate FROM account_banned WHERE id = ? AND active = 1",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_ACCOUNT_BANNED_ALL,"SELECT account.id, username FROM account, account_banned WHERE account.id = account_banned.id AND active = 1 GROUP BY account.id",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_ACCOUNT_BANNED_BY_USERNAME,"SELECT account.id, username FROM account, account_banned WHERE account.id = account_banned.id AND active = 1 AND username LIKE CONCAT('%%', ?, '%%') GROUP BY account.id",CONNECTION_SYNCH);
PrepareStatement(LOGIN_DEL_ACCOUNT_BANNED,"DELETE FROM account_banned WHERE id = ?",CONNECTION_ASYNC);
PrepareStatement(LOGIN_SEL_SESSIONKEY,"SELECT a.sessionkey, a.id, aa.gmlevel FROM account a LEFT JOIN account_access aa ON (a.id = aa.id) WHERE username = ?",CONNECTION_SYNCH);
PrepareStatement(LOGIN_UPD_VS,"UPDATE account SET v = ?, s = ? WHERE username = ?",CONNECTION_ASYNC);
PrepareStatement(LOGIN_UPD_LOGONPROOF,"UPDATE account SET sessionkey = ?, last_ip = ?, last_login = NOW(), locale = ?, failed_logins = 0, os = ? WHERE username = ?",CONNECTION_ASYNC);
PrepareStatement(LOGIN_SEL_LOGONCHALLENGE,"SELECT a.sha_pass_hash, a.id, a.locked, a.last_ip, aa.gmlevel, a.v, a.s FROM account a LEFT JOIN account_access aa ON (a.id = aa.id) WHERE a.username = ?",CONNECTION_SYNCH);
PrepareStatement(LOGIN_UPD_FAILEDLOGINS,"UPDATE account SET failed_logins = failed_logins + 1 WHERE username = ?",CONNECTION_ASYNC);
PrepareStatement(LOGIN_SEL_FAILEDLOGINS,"SELECT id, failed_logins FROM account WHERE username = ?",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_ACCOUNT_ID_BY_NAME,"SELECT id FROM account WHERE username = ?",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_ACCOUNT_LIST_BY_NAME,"SELECT id, username FROM account WHERE username = ?",CONNECTION_SYNCH);
PrepareStatement(LOGIN_INS_REALM_CHARACTERS_INIT,"INSERT INTO realmcharacters (realmid, acctid, numchars) SELECT realmlist.id, account.id, 0 FROM realmlist, account LEFT JOIN realmcharacters ON acctid=account.id WHERE acctid IS NULL",CONNECTION_ASYNC);
PrepareStatement(LOGIN_UPD_EXPANSION,"UPDATE account SET expansion = ? WHERE id = ?",CONNECTION_ASYNC);
PrepareStatement(LOGIN_UPD_ACCOUNT_LOCK,"UPDATE account SET locked = ? WHERE id = ?",CONNECTION_ASYNC);
PrepareStatement(LOGIN_SEL_PINFO,"SELECT a.username, aa.gmlevel, a.email, a.last_ip, DATE_FORMAT(a.last_login, '%Y-%m-%d %T'), a.mutetime, a.mutereason, a.muteby FROM account a LEFT JOIN account_access aa ON (a.id = aa.id AND (aa.RealmID = ? OR aa.RealmID = -1)) WHERE a.id = ?",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_PINFO_BANS,"SELECT unbandate, bandate = unbandate, bannedby, banreason FROM account_banned WHERE id = ? AND active ORDER BY bandate ASC LIMIT 1",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_GM_ACCOUNTS,"SELECT a.username, aa.gmlevel FROM account a, account_access aa WHERE a.id=aa.id AND aa.gmlevel >= ? AND (aa.realmid = -1 OR aa.realmid = ?)",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_ACCOUNT_INFO,"SELECT a.username, a.last_ip, aa.gmlevel, a.expansion FROM account a LEFT JOIN account_access aa ON (a.id = aa.id) WHERE a.id = ?",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_ACCOUNT_ACCESS_GMLEVEL_TEST,"SELECT 1 FROM account_access WHERE id = ? AND gmlevel > ?",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_ACCOUNT_ACCESS,"SELECT a.id, aa.gmlevel, aa.RealmID FROM account a LEFT JOIN account_access aa ON (a.id = aa.id) WHERE a.username = ?",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_ACCOUNT_RECRUITER,"SELECT 1 FROM account WHERE recruiter = ?",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_BANS,"SELECT 1 FROM account_banned WHERE id = ? AND active = 1 UNION SELECT 1 FROM ip_banned WHERE ip = ?",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_ACCOUNT_WHOIS,"SELECT username, email, last_ip FROM account WHERE id = ?",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_REALMLIST_SECURITY_LEVEL,"SELECT allowedSecurityLevel from realmlist WHERE id = ?",CONNECTION_SYNCH);
PrepareStatement(LOGIN_DEL_ACCOUNT,"DELETE FROM account WHERE id = ?",CONNECTION_ASYNC);
PrepareStatement(LOGIN_SEL_ACCOUNT_ACCESS_BY_ID,"SELECT gmlevel, RealmID FROM account_access WHERE id = ? and (RealmID = ? OR RealmID = -1) ORDER BY gmlevel desc",CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_RBAC_ACCOUNT_GROUPS,"SELECT groupId FROM rbac_account_groups WHERE accountId = ? AND (realmId = ? OR realmId = -1) GROUP BY groupId",CONNECTION_SYNCH);
PrepareStatement(LOGIN_INS_RBAC_ACCOUNT_GROUP,"INSERT INTO rbac_account_groups (accountId, groupId, realmId) VALUES (?, ?, ?)",CONNECTION_ASYNC);
PrepareStatement(LOGIN_DEL_RBAC_ACCOUNT_GROUP,"DELETE FROM rbac_account_groups WHERE accountId = ? AND groupId = ? AND (realmId = ? OR realmId = -1)",CONNECTION_ASYNC);
PrepareStatement(LOGIN_SEL_RBAC_ACCOUNT_ROLES,"SELECT roleId, granted FROM rbac_account_roles WHERE accountId = ? AND (realmId = ? OR realmId = -1) ORDER BY roleId, realmId",CONNECTION_SYNCH);
PrepareStatement(LOGIN_INS_RBAC_ACCOUNT_ROLE,"INSERT INTO rbac_account_roles (accountId, roleId, granted, realmId) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE granted = VALUES(granted)",CONNECTION_ASYNC);
PrepareStatement(LOGIN_DEL_RBAC_ACCOUNT_ROLE,"DELETE FROM rbac_account_roles WHERE accountId = ? AND roleId = ? AND (realmId = ? OR realmId = -1)",CONNECTION_ASYNC);
PrepareStatement(LOGIN_SEL_RBAC_ACCOUNT_PERMISSIONS,"SELECT permissionId, granted FROM rbac_account_permissions WHERE accountId = ? AND (realmId = ? OR realmId = -1) ORDER BY permissionId, realmId",CONNECTION_SYNCH);
PrepareStatement(LOGIN_INS_RBAC_ACCOUNT_PERMISSION,"INSERT INTO rbac_account_permissions (accountId, permissionId, granted, realmId) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE granted = VALUES(granted)",CONNECTION_ASYNC);
PrepareStatement(LOGIN_DEL_RBAC_ACCOUNT_PERMISSION,"DELETE FROM rbac_account_permissions WHERE accountId = ? AND permissionId = ? AND (realmId = ? OR realmId = -1)",CONNECTION_ASYNC);