-#define MCP_ALLOW_OVB 0x0001 /* allow op, voice, ban manipulation */
-#define MCP_FROM_SERVER 0x0002 /* parse as from a server */
-#define MCP_KEY_FREE 0x0004 /* -k without a key argument */
-#define MC_ANNOUNCE 0x0100 /* send a mod_chanmode() change out */
-#define MC_NOTIFY 0x0200 /* make local callbacks to announce */
+#define MCP_ALLOW_OVB 0x0001 /* allow op, voice, ban manipulation */
+#define MCP_FROM_SERVER 0x0002 /* parse as from a server */
+#define MCP_KEY_FREE 0x0004 /* -k without a key argument */
+#define MCP_REGISTERED 0x0008 /* chan is already registered; do not allow changes to MODE_REGISTERED */
+#define MCP_UPASS_FREE 0x0010 /* -U without a key argument */
+#define MCP_APASS_FREE 0x0020 /* -A without a key argument */
+#define MCP_NO_APASS 0x0040 /* Do not allow +/-A or +/-U */
+#define MCP_IGN_REGISTERED 0x0080 /* chan is already registered; ignore changes to MODE_REGISTERED */
+#define MC_ANNOUNCE 0x0100 /* send a mod_chanmode() change out */
+#define MC_NOTIFY 0x0200 /* make local callbacks to announce */
+#define MCP_OPERMODE 0x0400
+#ifdef NDEBUG
+#define mod_chanmode_init(CHANMODE) do { memset((CHANMODE), 0, sizeof(*CHANMODE)); } while (0)
+#else
+#define mod_chanmode_init(CHANMODE) do { memset((CHANMODE), 0, sizeof(*CHANMODE)); (CHANMODE)->alloc_argc = ArrayLength((CHANMODE)->args); } while (0)
+#endif
+